cmd/internal/obj/arm64: simplify conclass

Reduce repetition by pulling some common conversions into variables.

Change-Id: I8c1cc806236b5ecdadf90f4507923718fa5de9b6
Reviewed-on: https://go-review.googlesource.com/c/go/+/650937
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Joel Sing 2025-02-20 22:54:34 +11:00
parent 0b31e6d4cc
commit c524db9ca8

View File

@ -1904,45 +1904,45 @@ func rclass(r int16) int {
// conclass classifies a constant. // conclass classifies a constant.
func conclass(v int64) int { func conclass(v int64) int {
vbitcon := uint64(v)
vnotcon := ^v
if v == 0 { if v == 0 {
return C_ZCON return C_ZCON
} }
if isaddcon(v) { if isaddcon(v) {
if v <= 0xFFF { if v <= 0xFFF {
if isbitcon(uint64(v)) { if isbitcon(vbitcon) {
return C_ABCON0 return C_ABCON0
} }
return C_ADDCON0 return C_ADDCON0
} }
if isbitcon(uint64(v)) { if isbitcon(vbitcon) {
return C_ABCON return C_ABCON
} }
if movcon(v) >= 0 { if movcon(v) >= 0 {
return C_AMCON return C_AMCON
} }
if movcon(^v) >= 0 { if movcon(vnotcon) >= 0 {
return C_AMCON return C_AMCON
} }
return C_ADDCON return C_ADDCON
} }
t := movcon(v) if t := movcon(v); t >= 0 {
if t >= 0 { if isbitcon(vbitcon) {
if isbitcon(uint64(v)) { return C_MBCON
}
return C_MOVCON
}
if t := movcon(vnotcon); t >= 0 {
if isbitcon(vbitcon) {
return C_MBCON return C_MBCON
} }
return C_MOVCON return C_MOVCON
} }
t = movcon(^v) if isbitcon(vbitcon) {
if t >= 0 {
if isbitcon(uint64(v)) {
return C_MBCON
}
return C_MOVCON
}
if isbitcon(uint64(v)) {
return C_BITCON return C_BITCON
} }