mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
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:
parent
0b31e6d4cc
commit
c524db9ca8
@ -1904,45 +1904,45 @@ func rclass(r int16) int {
|
||||
|
||||
// conclass classifies a constant.
|
||||
func conclass(v int64) int {
|
||||
vbitcon := uint64(v)
|
||||
vnotcon := ^v
|
||||
|
||||
if v == 0 {
|
||||
return C_ZCON
|
||||
}
|
||||
if isaddcon(v) {
|
||||
if v <= 0xFFF {
|
||||
if isbitcon(uint64(v)) {
|
||||
if isbitcon(vbitcon) {
|
||||
return C_ABCON0
|
||||
}
|
||||
return C_ADDCON0
|
||||
}
|
||||
if isbitcon(uint64(v)) {
|
||||
if isbitcon(vbitcon) {
|
||||
return C_ABCON
|
||||
}
|
||||
if movcon(v) >= 0 {
|
||||
return C_AMCON
|
||||
}
|
||||
if movcon(^v) >= 0 {
|
||||
if movcon(vnotcon) >= 0 {
|
||||
return C_AMCON
|
||||
}
|
||||
return C_ADDCON
|
||||
}
|
||||
|
||||
t := movcon(v)
|
||||
if t >= 0 {
|
||||
if isbitcon(uint64(v)) {
|
||||
if t := movcon(v); t >= 0 {
|
||||
if isbitcon(vbitcon) {
|
||||
return C_MBCON
|
||||
}
|
||||
return C_MOVCON
|
||||
}
|
||||
if t := movcon(vnotcon); t >= 0 {
|
||||
if isbitcon(vbitcon) {
|
||||
return C_MBCON
|
||||
}
|
||||
return C_MOVCON
|
||||
}
|
||||
|
||||
t = movcon(^v)
|
||||
if t >= 0 {
|
||||
if isbitcon(uint64(v)) {
|
||||
return C_MBCON
|
||||
}
|
||||
return C_MOVCON
|
||||
}
|
||||
|
||||
if isbitcon(uint64(v)) {
|
||||
if isbitcon(vbitcon) {
|
||||
return C_BITCON
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user