mirror of
https://github.com/golang/go
synced 2024-10-05 19:11:22 -06:00
[dev.ssa] cmd/compile: finish InvertFlags rewrites
Change-Id: I61b2d2be18f905a17e8ee765a4494b763a425c55 Reviewed-on: https://go-review.googlesource.com/12794 Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
3e3d162f50
commit
71a4c4bb8d
@ -180,6 +180,14 @@
|
||||
// reverse ordering of compare instruction
|
||||
(SETL (InvertFlags x)) -> (SETG x)
|
||||
(SETG (InvertFlags x)) -> (SETL x)
|
||||
(SETB (InvertFlags x)) -> (SETA x)
|
||||
(SETA (InvertFlags x)) -> (SETB x)
|
||||
(SETLE (InvertFlags x)) -> (SETGE x)
|
||||
(SETGE (InvertFlags x)) -> (SETLE x)
|
||||
(SETBE (InvertFlags x)) -> (SETAE x)
|
||||
(SETAE (InvertFlags x)) -> (SETBE x)
|
||||
(SETEQ (InvertFlags x)) -> (SETEQ x)
|
||||
(SETNE (InvertFlags x)) -> (SETNE x)
|
||||
|
||||
// sign extended loads
|
||||
(MOVBQSX (MOVBload ptr mem)) -> (MOVBQSXload ptr mem)
|
||||
|
@ -1983,6 +1983,101 @@ func rewriteValueAMD64(v *Value, config *Config) bool {
|
||||
goto end4157ddea9c4f71bfabfd6fa50e1208ed
|
||||
end4157ddea9c4f71bfabfd6fa50e1208ed:
|
||||
;
|
||||
case OpAMD64SETA:
|
||||
// match: (SETA (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETB x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto enda4ac36e94fc279d762b5a6c7c6cc665d
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETB
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto enda4ac36e94fc279d762b5a6c7c6cc665d
|
||||
enda4ac36e94fc279d762b5a6c7c6cc665d:
|
||||
;
|
||||
case OpAMD64SETAE:
|
||||
// match: (SETAE (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETBE x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto end0468f5be6caf682fdea6b91d6648991e
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETBE
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto end0468f5be6caf682fdea6b91d6648991e
|
||||
end0468f5be6caf682fdea6b91d6648991e:
|
||||
;
|
||||
case OpAMD64SETB:
|
||||
// match: (SETB (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETA x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto endc9eba7aa1e54a228570d2f5cc96f3565
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETA
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto endc9eba7aa1e54a228570d2f5cc96f3565
|
||||
endc9eba7aa1e54a228570d2f5cc96f3565:
|
||||
;
|
||||
case OpAMD64SETBE:
|
||||
// match: (SETBE (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETAE x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto end9d9031643469798b14b8cad1f5a7a1ba
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETAE
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto end9d9031643469798b14b8cad1f5a7a1ba
|
||||
end9d9031643469798b14b8cad1f5a7a1ba:
|
||||
;
|
||||
case OpAMD64SETEQ:
|
||||
// match: (SETEQ (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETEQ x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto end5d2039c9368d8c0cfba23b5a85b459e1
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETEQ
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto end5d2039c9368d8c0cfba23b5a85b459e1
|
||||
end5d2039c9368d8c0cfba23b5a85b459e1:
|
||||
;
|
||||
case OpAMD64SETG:
|
||||
// match: (SETG (InvertFlags x))
|
||||
// cond:
|
||||
@ -2002,6 +2097,25 @@ func rewriteValueAMD64(v *Value, config *Config) bool {
|
||||
goto endf7586738694c9cd0b74ae28bbadb649f
|
||||
endf7586738694c9cd0b74ae28bbadb649f:
|
||||
;
|
||||
case OpAMD64SETGE:
|
||||
// match: (SETGE (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETLE x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto end82c11eff6f842159f564f2dad3d2eedc
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETLE
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto end82c11eff6f842159f564f2dad3d2eedc
|
||||
end82c11eff6f842159f564f2dad3d2eedc:
|
||||
;
|
||||
case OpAMD64SETL:
|
||||
// match: (SETL (InvertFlags x))
|
||||
// cond:
|
||||
@ -2021,6 +2135,44 @@ func rewriteValueAMD64(v *Value, config *Config) bool {
|
||||
goto ende33160cd86b9d4d3b77e02fb4658d5d3
|
||||
ende33160cd86b9d4d3b77e02fb4658d5d3:
|
||||
;
|
||||
case OpAMD64SETLE:
|
||||
// match: (SETLE (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETGE x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto end9307d96753efbeb888d1c98a6aba7a29
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETGE
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto end9307d96753efbeb888d1c98a6aba7a29
|
||||
end9307d96753efbeb888d1c98a6aba7a29:
|
||||
;
|
||||
case OpAMD64SETNE:
|
||||
// match: (SETNE (InvertFlags x))
|
||||
// cond:
|
||||
// result: (SETNE x)
|
||||
{
|
||||
if v.Args[0].Op != OpAMD64InvertFlags {
|
||||
goto endbc71811b789475308014550f638026eb
|
||||
}
|
||||
x := v.Args[0].Args[0]
|
||||
v.Op = OpAMD64SETNE
|
||||
v.AuxInt = 0
|
||||
v.Aux = nil
|
||||
v.resetArgs()
|
||||
v.AddArg(x)
|
||||
return true
|
||||
}
|
||||
goto endbc71811b789475308014550f638026eb
|
||||
endbc71811b789475308014550f638026eb:
|
||||
;
|
||||
case OpAMD64SHLQ:
|
||||
// match: (SHLQ x (MOVQconst [c]))
|
||||
// cond:
|
||||
|
Loading…
Reference in New Issue
Block a user