First, renove unnecessary "// cond:" lines from the generated files.
This shaves off about ~7k lines.
Second, join "if cond { break }" statements via "||", which allows us to
deduplicate a large number of them. This shaves off another ~25k lines.
This change is not for readability or simplicity; but rather, to avoid
unnecessary verbosity that makes the generated files larger. All in all,
git reports that the generated files overall weigh ~200KiB less, or
about 2.7% less.
While at it, add a -trace flag to rulegen.
Updates #33644.
Change-Id: I3fac0290a6066070cc62400bf970a4ae0929470a
Reviewed-on: https://go-review.googlesource.com/c/go/+/196498
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
"regexp"
"runtime"
"runtime/pprof"
+ "runtime/trace"
"sort"
"strings"
"sync"
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to `file`")
var memprofile = flag.String("memprofile", "", "write memory profile to `file`")
+var tracefile = flag.String("trace", "", "write trace to `file`")
func main() {
flag.Parse()
}
defer pprof.StopCPUProfile()
}
+ if *tracefile != "" {
+ f, err := os.Create(*tracefile)
+ if err != nil {
+ log.Fatalf("failed to create trace output file: %v", err)
+ }
+ defer func() {
+ if err := f.Close(); err != nil {
+ log.Fatalf("failed to close trace file: %v", err)
+ }
+ }()
+
+ if err := trace.Start(f); err != nil {
+ log.Fatalf("failed to start trace: %v", err)
+ }
+ defer trace.Stop()
+ }
+
sort.Sort(ArchsByName(archs))
// The generate tasks are run concurrently, since they are CPU-intensive
}
case *RuleRewrite:
fmt.Fprintf(w, "// match: %s\n", n.match)
- fmt.Fprintf(w, "// cond: %s\n", n.cond)
+ if n.cond != "" {
+ fmt.Fprintf(w, "// cond: %s\n", n.cond)
+ }
fmt.Fprintf(w, "// result: %s\n", n.result)
if n.checkOp != "" {
fmt.Fprintf(w, "for v.Op == %s {\n", n.checkOp)
canFail bool
}
-func (w *bodyBase) add(nodes ...Statement) {
- w.list = append(w.list, nodes...)
- for _, node := range nodes {
- if _, ok := node.(*CondBreak); ok {
- w.canFail = true
+func (w *bodyBase) add(node Statement) {
+ var last Statement
+ if len(w.list) > 0 {
+ last = w.list[len(w.list)-1]
+ }
+ if node, ok := node.(*CondBreak); ok {
+ w.canFail = true
+ if last, ok := last.(*CondBreak); ok {
+ // Add to the previous "if <cond> { break }" via a
+ // logical OR, which will save verbosity.
+ last.expr = &ast.BinaryExpr{
+ Op: token.LOR,
+ X: last.expr,
+ Y: node.expr,
+ }
+ return
}
}
+
+ w.list = append(w.list, node)
}
// declared reports if the body contains a Declare with the given name.
}
func rewriteValue386_Op386ADCL_0(v *Value) bool {
// match: (ADCL x (MOVLconst [c]) f)
- // cond:
// result: (ADCLconst [c] x f)
for {
f := v.Args[2]
return true
}
// match: (ADCL (MOVLconst [c]) x f)
- // cond:
// result: (ADCLconst [c] x f)
for {
f := v.Args[2]
return true
}
// match: (ADCL (MOVLconst [c]) x f)
- // cond:
// result: (ADCLconst [c] x f)
for {
f := v.Args[2]
return true
}
// match: (ADCL x (MOVLconst [c]) f)
- // cond:
// result: (ADCLconst [c] x f)
for {
f := v.Args[2]
}
func rewriteValue386_Op386ADDL_0(v *Value) bool {
// match: (ADDL x (MOVLconst [c]))
- // cond:
// result: (ADDLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (MOVLconst [c]) x)
- // cond:
// result: (ADDLconst [c] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(Op386ROLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(Op386ROLLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 16 && d == 16-c && t.Size() == 2) {
+ if x != v_1.Args[0] || !(c < 16 && d == 16-c && t.Size() == 2) {
break
}
v.reset(Op386ROLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 16 && d == 16-c && t.Size() == 2) {
+ if x != v_1.Args[0] || !(c < 16 && d == 16-c && t.Size() == 2) {
break
}
v.reset(Op386ROLWconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 8 && d == 8-c && t.Size() == 1) {
+ if x != v_1.Args[0] || !(c < 8 && d == 8-c && t.Size() == 1) {
break
}
v.reset(Op386ROLBconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 8 && d == 8-c && t.Size() == 1) {
+ if x != v_1.Args[0] || !(c < 8 && d == 8-c && t.Size() == 1) {
break
}
v.reset(Op386ROLBconst)
return true
}
// match: (ADDL x (SHLLconst [3] y))
- // cond:
// result: (LEAL8 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 3 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDL (SHLLconst [3] y) x)
- // cond:
// result: (LEAL8 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 3 {
break
}
y := v_0.Args[0]
}
func rewriteValue386_Op386ADDL_10(v *Value) bool {
// match: (ADDL x (SHLLconst [2] y))
- // cond:
// result: (LEAL4 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDL (SHLLconst [2] y) x)
- // cond:
// result: (LEAL4 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 2 {
break
}
y := v_0.Args[0]
return true
}
// match: (ADDL x (SHLLconst [1] y))
- // cond:
// result: (LEAL2 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDL (SHLLconst [1] y) x)
- // cond:
// result: (LEAL2 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 1 {
break
}
y := v_0.Args[0]
return true
}
// match: (ADDL x (ADDL y y))
- // cond:
// result: (LEAL2 x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (ADDL y y) x)
- // cond:
// result: (LEAL2 x y)
for {
x := v.Args[1]
return true
}
// match: (ADDL x (ADDL x y))
- // cond:
// result: (LEAL2 y x)
for {
_ = v.Args[1]
return true
}
// match: (ADDL x (ADDL y x))
- // cond:
// result: (LEAL2 y x)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (ADDL x y) x)
- // cond:
// result: (LEAL2 y x)
for {
x := v.Args[1]
return true
}
// match: (ADDL (ADDL y x) x)
- // cond:
// result: (LEAL2 y x)
for {
x := v.Args[1]
}
func rewriteValue386_Op386ADDL_20(v *Value) bool {
// match: (ADDL (ADDLconst [c] x) y)
- // cond:
// result: (LEAL1 [c] x y)
for {
y := v.Args[1]
return true
}
// match: (ADDL y (ADDLconst [c] x))
- // cond:
// result: (LEAL1 [c] x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDL x (NEGL y))
- // cond:
// result: (SUBL x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (NEGL y) x)
- // cond:
// result: (SUBL x y)
for {
x := v.Args[1]
}
func rewriteValue386_Op386ADDLcarry_0(v *Value) bool {
// match: (ADDLcarry x (MOVLconst [c]))
- // cond:
// result: (ADDLconstcarry [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ADDLcarry (MOVLconst [c]) x)
- // cond:
// result: (ADDLconstcarry [c] x)
for {
x := v.Args[1]
}
func rewriteValue386_Op386ADDLconst_0(v *Value) bool {
// match: (ADDLconst [c] (ADDL x y))
- // cond:
// result: (LEAL1 [c] x y)
for {
c := v.AuxInt
return true
}
// match: (ADDLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [int64(int32(c+d))])
for {
c := v.AuxInt
return true
}
// match: (ADDLconst [c] (ADDLconst [d] x))
- // cond:
// result: (ADDLconst [int64(int32(c+d))] x)
for {
c := v.AuxInt
}
func rewriteValue386_Op386ANDL_0(v *Value) bool {
// match: (ANDL x (MOVLconst [c]))
- // cond:
// result: (ANDLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ANDL (MOVLconst [c]) x)
- // cond:
// result: (ANDLconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (ANDL x x)
- // cond:
// result: x
for {
x := v.Args[1]
}
func rewriteValue386_Op386ANDLconst_0(v *Value) bool {
// match: (ANDLconst [c] (ANDLconst [d] x))
- // cond:
// result: (ANDLconst [c & d] x)
for {
c := v.AuxInt
return true
}
// match: (ANDLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [c&d])
for {
c := v.AuxInt
func rewriteValue386_Op386CMPB_0(v *Value) bool {
b := v.Block
// match: (CMPB x (MOVLconst [c]))
- // cond:
// result: (CMPBconst x [int64(int8(c))])
for {
_ = v.Args[1]
return true
}
// match: (CMPB (MOVLconst [c]) x)
- // cond:
// result: (InvertFlags (CMPBconst x [int64(int8(c))]))
for {
x := v.Args[1]
return true
}
// match: (CMPBconst x [0])
- // cond:
// result: (TESTB x x)
for {
if v.AuxInt != 0 {
func rewriteValue386_Op386CMPL_0(v *Value) bool {
b := v.Block
// match: (CMPL x (MOVLconst [c]))
- // cond:
// result: (CMPLconst x [c])
for {
_ = v.Args[1]
return true
}
// match: (CMPL (MOVLconst [c]) x)
- // cond:
// result: (InvertFlags (CMPLconst x [c]))
for {
x := v.Args[1]
return true
}
// match: (CMPLconst x [0])
- // cond:
// result: (TESTL x x)
for {
if v.AuxInt != 0 {
func rewriteValue386_Op386CMPW_0(v *Value) bool {
b := v.Block
// match: (CMPW x (MOVLconst [c]))
- // cond:
// result: (CMPWconst x [int64(int16(c))])
for {
_ = v.Args[1]
return true
}
// match: (CMPW (MOVLconst [c]) x)
- // cond:
// result: (InvertFlags (CMPWconst x [int64(int16(c))]))
for {
x := v.Args[1]
return true
}
// match: (CMPWconst x [0])
- // cond:
// result: (TESTW x x)
for {
if v.AuxInt != 0 {
return true
}
// match: (LEAL1 [c] {s} x (SHLLconst [1] y))
- // cond:
// result: (LEAL2 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL1 [c] {s} (SHLLconst [1] y) x)
- // cond:
// result: (LEAL2 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 1 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAL1 [c] {s} x (SHLLconst [2] y))
- // cond:
// result: (LEAL4 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL1 [c] {s} (SHLLconst [2] y) x)
- // cond:
// result: (LEAL4 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 2 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAL1 [c] {s} x (SHLLconst [3] y))
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 3 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL1 [c] {s} (SHLLconst [3] y) x)
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 3 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAL2 [c] {s} x (SHLLconst [1] y))
- // cond:
// result: (LEAL4 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL2 [c] {s} x (SHLLconst [2] y))
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL4 [c] {s} x (SHLLconst [1] y))
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (MOVBLZX (ANDLconst [c] x))
- // cond:
// result: (ANDLconst [c & 0xff] x)
for {
v_0 := v.Args[0]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(Op386MOVLconst)
}
func rewriteValue386_Op386MOVBloadidx1_0(v *Value) bool {
// match: (MOVBloadidx1 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVBloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVBloadidx1 [c] {sym} idx (ADDLconst [d] ptr) mem)
- // cond:
// result: (MOVBloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVBloadidx1 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVBloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVBloadidx1 [c] {sym} (ADDLconst [d] idx) ptr mem)
- // cond:
// result: (MOVBloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
b := v.Block
config := b.Func.Config
// match: (MOVBstore [off] {sym} ptr (MOVBLSX x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBLZX x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHRWconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != Op386SHRWconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != Op386MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHRLconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != Op386SHRLconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != Op386MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstore)
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != Op386MOVBstore {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstore || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != Op386SHRWconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != Op386SHRWconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstore)
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != Op386MOVBstore {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstore || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != Op386SHRLconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != Op386SHRLconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != Op386MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstore)
return true
}
// match: (MOVBstoreconst [x] {sym} (ADDL ptr idx) mem)
- // cond:
// result: (MOVBstoreconstidx1 [x] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(Op386MOVWstoreconst)
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(Op386MOVWstoreconst)
}
func rewriteValue386_Op386MOVBstoreconstidx1_0(v *Value) bool {
// match: (MOVBstoreconstidx1 [x] {sym} (ADDLconst [c] ptr) idx mem)
- // cond:
// result: (MOVBstoreconstidx1 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
return true
}
// match: (MOVBstoreconstidx1 [x] {sym} ptr (ADDLconst [c] idx) mem)
- // cond:
// result: (MOVBstoreconstidx1 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(Op386MOVWstoreconstidx1)
}
func rewriteValue386_Op386MOVBstoreidx1_0(v *Value) bool {
// match: (MOVBstoreidx1 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVBstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVBstoreidx1 [c] {sym} idx (ADDLconst [d] ptr) val mem)
- // cond:
// result: (MOVBstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVBstoreidx1 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVBstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVBstoreidx1 [c] {sym} (ADDLconst [d] idx) ptr val mem)
- // cond:
// result: (MOVBstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != Op386SHRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRLconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRLconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRLconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRLconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRLconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRLconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRLconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRLconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != Op386SHRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != Op386SHRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVWstoreidx1)
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(Op386MOVLconst)
}
func rewriteValue386_Op386MOVLloadidx1_0(v *Value) bool {
// match: (MOVLloadidx1 [c] {sym} ptr (SHLLconst [2] idx) mem)
- // cond:
// result: (MOVLloadidx4 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVLloadidx1 [c] {sym} (SHLLconst [2] idx) ptr mem)
- // cond:
// result: (MOVLloadidx4 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVLloadidx1 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVLloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLloadidx1 [c] {sym} idx (ADDLconst [d] ptr) mem)
- // cond:
// result: (MOVLloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLloadidx1 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVLloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLloadidx1 [c] {sym} (ADDLconst [d] idx) ptr mem)
- // cond:
// result: (MOVLloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVLloadidx4_0(v *Value) bool {
// match: (MOVLloadidx4 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVLloadidx4 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLloadidx4 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVLloadidx4 [int64(int32(c+4*d))] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != Op386ADDLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386ADDLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386ADDLmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != Op386ANDLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386ANDLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386ANDLmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != Op386ORLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386ORLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386ORLmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != Op386XORLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386XORLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386XORLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ADDLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ADDLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386SUBLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ANDLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLload {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
- break
- }
- _ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ _ = l.Args[1]
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ANDLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ORLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ORLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386XORLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386XORLmodify)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386ADDLconstmodify)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386ANDLconstmodify)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386ORLconstmodify)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386XORLconstmodify)
return true
}
// match: (MOVLstoreconst [x] {sym} (ADDL ptr idx) mem)
- // cond:
// result: (MOVLstoreconstidx1 [x] {sym} ptr idx mem)
for {
x := v.AuxInt
}
func rewriteValue386_Op386MOVLstoreconstidx1_0(v *Value) bool {
// match: (MOVLstoreconstidx1 [c] {sym} ptr (SHLLconst [2] idx) mem)
- // cond:
// result: (MOVLstoreconstidx4 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVLstoreconstidx1 [x] {sym} (ADDLconst [c] ptr) idx mem)
- // cond:
// result: (MOVLstoreconstidx1 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
return true
}
// match: (MOVLstoreconstidx1 [x] {sym} ptr (ADDLconst [c] idx) mem)
- // cond:
// result: (MOVLstoreconstidx1 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
}
func rewriteValue386_Op386MOVLstoreconstidx4_0(v *Value) bool {
// match: (MOVLstoreconstidx4 [x] {sym} (ADDLconst [c] ptr) idx mem)
- // cond:
// result: (MOVLstoreconstidx4 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
return true
}
// match: (MOVLstoreconstidx4 [x] {sym} ptr (ADDLconst [c] idx) mem)
- // cond:
// result: (MOVLstoreconstidx4 [ValAndOff(x).add(4*c)] {sym} ptr idx mem)
for {
x := v.AuxInt
}
func rewriteValue386_Op386MOVLstoreidx1_0(v *Value) bool {
// match: (MOVLstoreidx1 [c] {sym} ptr (SHLLconst [2] idx) val mem)
- // cond:
// result: (MOVLstoreidx4 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVLstoreidx1 [c] {sym} (SHLLconst [2] idx) ptr val mem)
- // cond:
// result: (MOVLstoreidx4 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[3]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVLstoreidx1 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVLstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLstoreidx1 [c] {sym} idx (ADDLconst [d] ptr) val mem)
- // cond:
// result: (MOVLstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLstoreidx1 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVLstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLstoreidx1 [c] {sym} (ADDLconst [d] idx) ptr val mem)
- // cond:
// result: (MOVLstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVLstoreidx4_0(v *Value) bool {
// match: (MOVLstoreidx4 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVLstoreidx4 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVLstoreidx4 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVLstoreidx4 [int64(int32(c+4*d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
ptr := v.Args[0]
idx := v.Args[1]
y := v.Args[2]
- if y.Op != Op386ADDLloadidx4 {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386ADDLloadidx4 || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[3]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if idx != y.Args[2] {
- break
- }
- if mem != y.Args[3] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || idx != y.Args[2] || mem != y.Args[3] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386ADDLmodifyidx4)
ptr := v.Args[0]
idx := v.Args[1]
y := v.Args[2]
- if y.Op != Op386ANDLloadidx4 {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386ANDLloadidx4 || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[3]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if idx != y.Args[2] {
- break
- }
- if mem != y.Args[3] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || idx != y.Args[2] || mem != y.Args[3] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386ANDLmodifyidx4)
ptr := v.Args[0]
idx := v.Args[1]
y := v.Args[2]
- if y.Op != Op386ORLloadidx4 {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386ORLloadidx4 || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[3]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if idx != y.Args[2] {
- break
- }
- if mem != y.Args[3] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || idx != y.Args[2] || mem != y.Args[3] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386ORLmodifyidx4)
ptr := v.Args[0]
idx := v.Args[1]
y := v.Args[2]
- if y.Op != Op386XORLloadidx4 {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != Op386XORLloadidx4 || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[3]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if idx != y.Args[2] {
- break
- }
- if mem != y.Args[3] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || idx != y.Args[2] || mem != y.Args[3] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(Op386XORLmodifyidx4)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ADDLmodifyidx4)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ADDLmodifyidx4)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386SUBLmodifyidx4)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ANDLmodifyidx4)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ANDLmodifyidx4)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ORLmodifyidx4)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386ORLmodifyidx4)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386XORLmodifyidx4)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(Op386XORLmodifyidx4)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386ADDLconstmodifyidx4)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386ANDLconstmodifyidx4)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386ORLconstmodifyidx4)
}
c := y.AuxInt
l := y.Args[0]
- if l.Op != Op386MOVLloadidx4 {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != Op386MOVLloadidx4 || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[2]
- if ptr != l.Args[0] {
- break
- }
- if idx != l.Args[1] {
- break
- }
- if mem != l.Args[2] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
+ if ptr != l.Args[0] || idx != l.Args[1] || mem != l.Args[2] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l) && validValAndOff(c, off)) {
break
}
v.reset(Op386XORLconstmodifyidx4)
}
func rewriteValue386_Op386MOVSDloadidx1_0(v *Value) bool {
// match: (MOVSDloadidx1 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVSDloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSDloadidx1 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVSDloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVSDloadidx8_0(v *Value) bool {
// match: (MOVSDloadidx8 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVSDloadidx8 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSDloadidx8 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVSDloadidx8 [int64(int32(c+8*d))] {sym} ptr idx mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVSDstoreidx1_0(v *Value) bool {
// match: (MOVSDstoreidx1 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVSDstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSDstoreidx1 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVSDstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVSDstoreidx8_0(v *Value) bool {
// match: (MOVSDstoreidx8 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVSDstoreidx8 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSDstoreidx8 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVSDstoreidx8 [int64(int32(c+8*d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVSSloadidx1_0(v *Value) bool {
// match: (MOVSSloadidx1 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVSSloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSSloadidx1 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVSSloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVSSloadidx4_0(v *Value) bool {
// match: (MOVSSloadidx4 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVSSloadidx4 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSSloadidx4 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVSSloadidx4 [int64(int32(c+4*d))] {sym} ptr idx mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVSSstoreidx1_0(v *Value) bool {
// match: (MOVSSstoreidx1 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVSSstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSSstoreidx1 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVSSstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVSSstoreidx4_0(v *Value) bool {
// match: (MOVSSstoreidx4 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVSSstoreidx4 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVSSstoreidx4 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVSSstoreidx4 [int64(int32(c+4*d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWLZX (ANDLconst [c] x))
- // cond:
// result: (ANDLconst [c & 0xffff] x)
for {
v_0 := v.Args[0]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(Op386MOVLconst)
}
func rewriteValue386_Op386MOVWloadidx1_0(v *Value) bool {
// match: (MOVWloadidx1 [c] {sym} ptr (SHLLconst [1] idx) mem)
- // cond:
// result: (MOVWloadidx2 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWloadidx1 [c] {sym} (SHLLconst [1] idx) ptr mem)
- // cond:
// result: (MOVWloadidx2 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVWloadidx1 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVWloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWloadidx1 [c] {sym} idx (ADDLconst [d] ptr) mem)
- // cond:
// result: (MOVWloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWloadidx1 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVWloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWloadidx1 [c] {sym} (ADDLconst [d] idx) ptr mem)
- // cond:
// result: (MOVWloadidx1 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
}
func rewriteValue386_Op386MOVWloadidx2_0(v *Value) bool {
// match: (MOVWloadidx2 [c] {sym} (ADDLconst [d] ptr) idx mem)
- // cond:
// result: (MOVWloadidx2 [int64(int32(c+d))] {sym} ptr idx mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWloadidx2 [c] {sym} ptr (ADDLconst [d] idx) mem)
- // cond:
// result: (MOVWloadidx2 [int64(int32(c+2*d))] {sym} ptr idx mem)
for {
c := v.AuxInt
b := v.Block
config := b.Func.Config
// match: (MOVWstore [off] {sym} ptr (MOVWLSX x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWLZX x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != Op386SHRLconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != Op386MOVWstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != Op386MOVWstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstore)
return true
}
// match: (MOVWstoreconst [x] {sym} (ADDL ptr idx) mem)
- // cond:
// result: (MOVWstoreconstidx1 [x] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(Op386MOVLstoreconst)
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(Op386MOVLstoreconst)
}
func rewriteValue386_Op386MOVWstoreconstidx1_0(v *Value) bool {
// match: (MOVWstoreconstidx1 [c] {sym} ptr (SHLLconst [1] idx) mem)
- // cond:
// result: (MOVWstoreconstidx2 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWstoreconstidx1 [x] {sym} (ADDLconst [c] ptr) idx mem)
- // cond:
// result: (MOVWstoreconstidx1 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
return true
}
// match: (MOVWstoreconstidx1 [x] {sym} ptr (ADDLconst [c] idx) mem)
- // cond:
// result: (MOVWstoreconstidx1 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(Op386MOVLstoreconstidx1)
func rewriteValue386_Op386MOVWstoreconstidx2_0(v *Value) bool {
b := v.Block
// match: (MOVWstoreconstidx2 [x] {sym} (ADDLconst [c] ptr) idx mem)
- // cond:
// result: (MOVWstoreconstidx2 [ValAndOff(x).add(c)] {sym} ptr idx mem)
for {
x := v.AuxInt
return true
}
// match: (MOVWstoreconstidx2 [x] {sym} ptr (ADDLconst [c] idx) mem)
- // cond:
// result: (MOVWstoreconstidx2 [ValAndOff(x).add(2*c)] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(Op386MOVLstoreconstidx1)
}
func rewriteValue386_Op386MOVWstoreidx1_0(v *Value) bool {
// match: (MOVWstoreidx1 [c] {sym} ptr (SHLLconst [1] idx) val mem)
- // cond:
// result: (MOVWstoreidx2 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != Op386SHLLconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWstoreidx1 [c] {sym} (SHLLconst [1] idx) ptr val mem)
- // cond:
// result: (MOVWstoreidx2 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[3]
v_0 := v.Args[0]
- if v_0.Op != Op386SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != Op386SHLLconst || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVWstoreidx1 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVWstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWstoreidx1 [c] {sym} idx (ADDLconst [d] ptr) val mem)
- // cond:
// result: (MOVWstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWstoreidx1 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVWstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWstoreidx1 [c] {sym} (ADDLconst [d] idx) ptr val mem)
- // cond:
// result: (MOVWstoreidx1 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
func rewriteValue386_Op386MOVWstoreidx2_0(v *Value) bool {
b := v.Block
// match: (MOVWstoreidx2 [c] {sym} (ADDLconst [d] ptr) idx val mem)
- // cond:
// result: (MOVWstoreidx2 [int64(int32(c+d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
return true
}
// match: (MOVWstoreidx2 [c] {sym} ptr (ADDLconst [d] idx) val mem)
- // cond:
// result: (MOVWstoreidx2 [int64(int32(c+2*d))] {sym} ptr idx val mem)
for {
c := v.AuxInt
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != Op386SHRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != Op386SHRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx2 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx2 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != Op386MOVWstoreidx2 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != Op386MOVWstoreidx2 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != Op386SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != Op386SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(Op386MOVLstoreidx1)
}
func rewriteValue386_Op386MULL_0(v *Value) bool {
// match: (MULL x (MOVLconst [c]))
- // cond:
// result: (MULLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (MULL (MOVLconst [c]) x)
- // cond:
// result: (MULLconst [c] x)
for {
x := v.Args[1]
func rewriteValue386_Op386MULLconst_0(v *Value) bool {
b := v.Block
// match: (MULLconst [c] (MULLconst [d] x))
- // cond:
// result: (MULLconst [int64(int32(c * d))] x)
for {
c := v.AuxInt
return true
}
// match: (MULLconst [-9] x)
- // cond:
// result: (NEGL (LEAL8 <v.Type> x x))
for {
if v.AuxInt != -9 {
return true
}
// match: (MULLconst [-5] x)
- // cond:
// result: (NEGL (LEAL4 <v.Type> x x))
for {
if v.AuxInt != -5 {
return true
}
// match: (MULLconst [-3] x)
- // cond:
// result: (NEGL (LEAL2 <v.Type> x x))
for {
if v.AuxInt != -3 {
return true
}
// match: (MULLconst [-1] x)
- // cond:
// result: (NEGL x)
for {
if v.AuxInt != -1 {
return true
}
// match: (MULLconst [0] _)
- // cond:
// result: (MOVLconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (MULLconst [1] x)
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (MULLconst [3] x)
- // cond:
// result: (LEAL2 x x)
for {
if v.AuxInt != 3 {
return true
}
// match: (MULLconst [5] x)
- // cond:
// result: (LEAL4 x x)
for {
if v.AuxInt != 5 {
return true
}
// match: (MULLconst [7] x)
- // cond:
// result: (LEAL2 x (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 7 {
func rewriteValue386_Op386MULLconst_10(v *Value) bool {
b := v.Block
// match: (MULLconst [9] x)
- // cond:
// result: (LEAL8 x x)
for {
if v.AuxInt != 9 {
return true
}
// match: (MULLconst [11] x)
- // cond:
// result: (LEAL2 x (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 11 {
return true
}
// match: (MULLconst [13] x)
- // cond:
// result: (LEAL4 x (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 13 {
return true
}
// match: (MULLconst [19] x)
- // cond:
// result: (LEAL2 x (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 19 {
return true
}
// match: (MULLconst [21] x)
- // cond:
// result: (LEAL4 x (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 21 {
return true
}
// match: (MULLconst [25] x)
- // cond:
// result: (LEAL8 x (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 25 {
return true
}
// match: (MULLconst [27] x)
- // cond:
// result: (LEAL8 (LEAL2 <v.Type> x x) (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 27 {
return true
}
// match: (MULLconst [37] x)
- // cond:
// result: (LEAL4 x (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 37 {
return true
}
// match: (MULLconst [41] x)
- // cond:
// result: (LEAL8 x (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 41 {
return true
}
// match: (MULLconst [45] x)
- // cond:
// result: (LEAL8 (LEAL4 <v.Type> x x) (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 45 {
func rewriteValue386_Op386MULLconst_20(v *Value) bool {
b := v.Block
// match: (MULLconst [73] x)
- // cond:
// result: (LEAL8 x (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 73 {
return true
}
// match: (MULLconst [81] x)
- // cond:
// result: (LEAL8 (LEAL8 <v.Type> x x) (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 81 {
}
func rewriteValue386_Op386MULLconst_30(v *Value) bool {
// match: (MULLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [int64(int32(c*d))])
for {
c := v.AuxInt
}
func rewriteValue386_Op386NEGL_0(v *Value) bool {
// match: (NEGL (MOVLconst [c]))
- // cond:
// result: (MOVLconst [int64(int32(-c))])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386NOTL_0(v *Value) bool {
// match: (NOTL (MOVLconst [c]))
- // cond:
// result: (MOVLconst [^c])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386ORL_0(v *Value) bool {
// match: (ORL x (MOVLconst [c]))
- // cond:
// result: (ORLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ORL (MOVLconst [c]) x)
- // cond:
// result: (ORLconst [c] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(Op386ROLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(Op386ROLLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 16 && d == 16-c && t.Size() == 2) {
+ if x != v_1.Args[0] || !(c < 16 && d == 16-c && t.Size() == 2) {
break
}
v.reset(Op386ROLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 16 && d == 16-c && t.Size() == 2) {
+ if x != v_1.Args[0] || !(c < 16 && d == 16-c && t.Size() == 2) {
break
}
v.reset(Op386ROLWconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 8 && d == 8-c && t.Size() == 1) {
+ if x != v_1.Args[0] || !(c < 8 && d == 8-c && t.Size() == 1) {
break
}
v.reset(Op386ROLBconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 8 && d == 8-c && t.Size() == 1) {
+ if x != v_1.Args[0] || !(c < 8 && d == 8-c && t.Size() == 1) {
break
}
v.reset(Op386ROLBconst)
return true
}
// match: (ORL x x)
- // cond:
// result: x
for {
x := v.Args[1]
mem := x0.Args[1]
p := x0.Args[0]
s0 := v.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
p := x0.Args[0]
idx := x0.Args[1]
s0 := v.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
s0 := v.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
s0 := v.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
s0 := v.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
idx := x0.Args[0]
p := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
p := x0.Args[0]
idx := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
idx := x0.Args[0]
p := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
p := x0.Args[0]
idx := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
idx := x0.Args[0]
p := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
p := x0.Args[0]
idx := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
idx := x0.Args[0]
p := x0.Args[1]
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s1 := v.Args[1]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[2]
- if idx != x2.Args[0] {
- break
- }
- if p != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x2.Args[0] || p != x2.Args[1] || mem != x2.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
- if x1.Op != Op386MOVBloadidx1 {
- break
- }
- i2 := x1.AuxInt
- if x1.Aux != s {
- break
- }
- _ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
+ if x1.Op != Op386MOVBloadidx1 {
break
}
- if mem != x1.Args[2] {
+ i2 := x1.AuxInt
+ if x1.Aux != s {
break
}
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ _ = x1.Args[2]
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] {
break
}
s0 := o0.Args[1]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
for {
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != Op386SHLLconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != Op386SHLLconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != Op386SHLLconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != Op386SHLLconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
return true
}
// match: (ORLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [c|d])
for {
c := v.AuxInt
}
func rewriteValue386_Op386ROLBconst_0(v *Value) bool {
// match: (ROLBconst [c] (ROLBconst [d] x))
- // cond:
// result: (ROLBconst [(c+d)& 7] x)
for {
c := v.AuxInt
return true
}
// match: (ROLBconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValue386_Op386ROLLconst_0(v *Value) bool {
// match: (ROLLconst [c] (ROLLconst [d] x))
- // cond:
// result: (ROLLconst [(c+d)&31] x)
for {
c := v.AuxInt
return true
}
// match: (ROLLconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValue386_Op386ROLWconst_0(v *Value) bool {
// match: (ROLWconst [c] (ROLWconst [d] x))
- // cond:
// result: (ROLWconst [(c+d)&15] x)
for {
c := v.AuxInt
return true
}
// match: (ROLWconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValue386_Op386SARB_0(v *Value) bool {
// match: (SARB x (MOVLconst [c]))
- // cond:
// result: (SARBconst [min(c&31,7)] x)
for {
_ = v.Args[1]
}
func rewriteValue386_Op386SARBconst_0(v *Value) bool {
// match: (SARBconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SARBconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [d>>uint64(c)])
for {
c := v.AuxInt
}
func rewriteValue386_Op386SARL_0(v *Value) bool {
// match: (SARL x (MOVLconst [c]))
- // cond:
// result: (SARLconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (SARL x (ANDLconst [31] y))
- // cond:
// result: (SARL x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386ANDLconst {
- break
- }
- if v_1.AuxInt != 31 {
+ if v_1.Op != Op386ANDLconst || v_1.AuxInt != 31 {
break
}
y := v_1.Args[0]
}
func rewriteValue386_Op386SARLconst_0(v *Value) bool {
// match: (SARLconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SARLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [d>>uint64(c)])
for {
c := v.AuxInt
}
func rewriteValue386_Op386SARW_0(v *Value) bool {
// match: (SARW x (MOVLconst [c]))
- // cond:
// result: (SARWconst [min(c&31,15)] x)
for {
_ = v.Args[1]
}
func rewriteValue386_Op386SARWconst_0(v *Value) bool {
// match: (SARWconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SARWconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [d>>uint64(c)])
for {
c := v.AuxInt
}
func rewriteValue386_Op386SBBL_0(v *Value) bool {
// match: (SBBL x (MOVLconst [c]) f)
- // cond:
// result: (SBBLconst [c] x f)
for {
f := v.Args[2]
}
func rewriteValue386_Op386SBBLcarrymask_0(v *Value) bool {
// match: (SBBLcarrymask (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagLT_ULT))
- // cond:
// result: (MOVLconst [-1])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagGT_ULT))
- // cond:
// result: (MOVLconst [-1])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETA_0(v *Value) bool {
// match: (SETA (InvertFlags x))
- // cond:
// result: (SETB x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETAE_0(v *Value) bool {
// match: (SETAE (InvertFlags x))
- // cond:
// result: (SETBE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETB_0(v *Value) bool {
// match: (SETB (InvertFlags x))
- // cond:
// result: (SETA x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETBE_0(v *Value) bool {
// match: (SETBE (InvertFlags x))
- // cond:
// result: (SETAE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETEQ_0(v *Value) bool {
// match: (SETEQ (InvertFlags x))
- // cond:
// result: (SETEQ x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETG_0(v *Value) bool {
// match: (SETG (InvertFlags x))
- // cond:
// result: (SETL x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETGE_0(v *Value) bool {
// match: (SETGE (InvertFlags x))
- // cond:
// result: (SETLE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETL_0(v *Value) bool {
// match: (SETL (InvertFlags x))
- // cond:
// result: (SETG x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETLE_0(v *Value) bool {
// match: (SETLE (InvertFlags x))
- // cond:
// result: (SETGE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SETNE_0(v *Value) bool {
// match: (SETNE (InvertFlags x))
- // cond:
// result: (SETNE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
func rewriteValue386_Op386SHLL_0(v *Value) bool {
// match: (SHLL x (MOVLconst [c]))
- // cond:
// result: (SHLLconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (SHLL x (ANDLconst [31] y))
- // cond:
// result: (SHLL x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386ANDLconst {
- break
- }
- if v_1.AuxInt != 31 {
+ if v_1.Op != Op386ANDLconst || v_1.AuxInt != 31 {
break
}
y := v_1.Args[0]
}
func rewriteValue386_Op386SHLLconst_0(v *Value) bool {
// match: (SHLLconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValue386_Op386SHRBconst_0(v *Value) bool {
// match: (SHRBconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValue386_Op386SHRL_0(v *Value) bool {
// match: (SHRL x (MOVLconst [c]))
- // cond:
// result: (SHRLconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (SHRL x (ANDLconst [31] y))
- // cond:
// result: (SHRL x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386ANDLconst {
- break
- }
- if v_1.AuxInt != 31 {
+ if v_1.Op != Op386ANDLconst || v_1.AuxInt != 31 {
break
}
y := v_1.Args[0]
}
func rewriteValue386_Op386SHRLconst_0(v *Value) bool {
// match: (SHRLconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValue386_Op386SHRWconst_0(v *Value) bool {
// match: (SHRWconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
func rewriteValue386_Op386SUBL_0(v *Value) bool {
b := v.Block
// match: (SUBL x (MOVLconst [c]))
- // cond:
// result: (SUBLconst x [c])
for {
_ = v.Args[1]
return true
}
// match: (SUBL (MOVLconst [c]) x)
- // cond:
// result: (NEGL (SUBLconst <v.Type> x [c]))
for {
x := v.Args[1]
return true
}
// match: (SUBL x x)
- // cond:
// result: (MOVLconst [0])
for {
x := v.Args[1]
}
func rewriteValue386_Op386SUBLcarry_0(v *Value) bool {
// match: (SUBLcarry x (MOVLconst [c]))
- // cond:
// result: (SUBLconstcarry [c] x)
for {
_ = v.Args[1]
return true
}
// match: (SUBLconst [c] x)
- // cond:
// result: (ADDLconst [int64(int32(-c))] x)
for {
c := v.AuxInt
}
func rewriteValue386_Op386XORL_0(v *Value) bool {
// match: (XORL x (MOVLconst [c]))
- // cond:
// result: (XORLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (XORL (MOVLconst [c]) x)
- // cond:
// result: (XORLconst [c] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(Op386ROLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(Op386ROLLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 16 && d == 16-c && t.Size() == 2) {
+ if x != v_1.Args[0] || !(c < 16 && d == 16-c && t.Size() == 2) {
break
}
v.reset(Op386ROLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 16 && d == 16-c && t.Size() == 2) {
+ if x != v_1.Args[0] || !(c < 16 && d == 16-c && t.Size() == 2) {
break
}
v.reset(Op386ROLWconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 8 && d == 8-c && t.Size() == 1) {
+ if x != v_1.Args[0] || !(c < 8 && d == 8-c && t.Size() == 1) {
break
}
v.reset(Op386ROLBconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c < 8 && d == 8-c && t.Size() == 1) {
+ if x != v_1.Args[0] || !(c < 8 && d == 8-c && t.Size() == 1) {
break
}
v.reset(Op386ROLBconst)
return true
}
// match: (XORL x x)
- // cond:
// result: (MOVLconst [0])
for {
x := v.Args[1]
}
func rewriteValue386_Op386XORLconst_0(v *Value) bool {
// match: (XORLconst [c] (XORLconst [d] x))
- // cond:
// result: (XORLconst [c ^ d] x)
for {
c := v.AuxInt
return true
}
// match: (XORLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [c^d])
for {
c := v.AuxInt
}
func rewriteValue386_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (ADDSS x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAdd32carry_0(v *Value) bool {
// match: (Add32carry x y)
- // cond:
// result: (ADDLcarry x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAdd32withcarry_0(v *Value) bool {
// match: (Add32withcarry x y c)
- // cond:
// result: (ADCL x y c)
for {
c := v.Args[2]
}
func rewriteValue386_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (ADDSD x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (ADDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (LEAL {sym} base)
for {
sym := v.Aux
}
func rewriteValue386_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpAvg32u_0(v *Value) bool {
// match: (Avg32u x y)
- // cond:
// result: (AVGLU x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpBswap32_0(v *Value) bool {
// match: (Bswap32 x)
- // cond:
// result: (BSWAPL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
}
func rewriteValue386_OpCom16_0(v *Value) bool {
// match: (Com16 x)
- // cond:
// result: (NOTL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCom32_0(v *Value) bool {
// match: (Com32 x)
- // cond:
// result: (NOTL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCom8_0(v *Value) bool {
// match: (Com8 x)
- // cond:
// result: (NOTL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVLconst [val])
for {
val := v.AuxInt
}
func rewriteValue386_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVLconst [val])
for {
val := v.AuxInt
}
func rewriteValue386_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (MOVSSconst [val])
for {
val := v.AuxInt
}
func rewriteValue386_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (MOVSDconst [val])
for {
val := v.AuxInt
}
func rewriteValue386_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVLconst [val])
for {
val := v.AuxInt
}
func rewriteValue386_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVLconst [b])
for {
b := v.AuxInt
}
func rewriteValue386_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (MOVLconst [0])
for {
v.reset(Op386MOVLconst)
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz16 x)
- // cond:
// result: (BSFL (ORLconst <typ.UInt32> [0x10000] x))
for {
x := v.Args[0]
}
func rewriteValue386_OpCtz16NonZero_0(v *Value) bool {
// match: (Ctz16NonZero x)
- // cond:
// result: (BSFL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (CVTTSS2SL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (CVTSS2SD x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F x)
- // cond:
// result: (CVTSL2SS x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F x)
- // cond:
// result: (CVTSL2SD x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (CVTTSD2SL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (CVTSD2SS x)
for {
x := v.Args[0]
}
func rewriteValue386_OpDiv16_0(v *Value) bool {
// match: (Div16 [a] x y)
- // cond:
// result: (DIVW [a] x y)
for {
a := v.AuxInt
}
func rewriteValue386_OpDiv16u_0(v *Value) bool {
// match: (Div16u x y)
- // cond:
// result: (DIVWU x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpDiv32_0(v *Value) bool {
// match: (Div32 [a] x y)
- // cond:
// result: (DIVL [a] x y)
for {
a := v.AuxInt
}
func rewriteValue386_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (DIVSS x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpDiv32u_0(v *Value) bool {
// match: (Div32u x y)
- // cond:
// result: (DIVLU x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (DIVSD x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (DIVW (SignExt8to16 x) (SignExt8to16 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (DIVWU (ZeroExt8to16 x) (ZeroExt8to16 y))
for {
y := v.Args[1]
func rewriteValue386_OpEq16_0(v *Value) bool {
b := v.Block
// match: (Eq16 x y)
- // cond:
// result: (SETEQ (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpEq32_0(v *Value) bool {
b := v.Block
// match: (Eq32 x y)
- // cond:
// result: (SETEQ (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpEq32F_0(v *Value) bool {
b := v.Block
// match: (Eq32F x y)
- // cond:
// result: (SETEQF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValue386_OpEq64F_0(v *Value) bool {
b := v.Block
// match: (Eq64F x y)
- // cond:
// result: (SETEQF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValue386_OpEq8_0(v *Value) bool {
b := v.Block
// match: (Eq8 x y)
- // cond:
// result: (SETEQ (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpEqB_0(v *Value) bool {
b := v.Block
// match: (EqB x y)
- // cond:
// result: (SETEQ (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpEqPtr_0(v *Value) bool {
b := v.Block
// match: (EqPtr x y)
- // cond:
// result: (SETEQ (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq16_0(v *Value) bool {
b := v.Block
// match: (Geq16 x y)
- // cond:
// result: (SETGE (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq16U_0(v *Value) bool {
b := v.Block
// match: (Geq16U x y)
- // cond:
// result: (SETAE (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq32_0(v *Value) bool {
b := v.Block
// match: (Geq32 x y)
- // cond:
// result: (SETGE (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq32F_0(v *Value) bool {
b := v.Block
// match: (Geq32F x y)
- // cond:
// result: (SETGEF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq32U_0(v *Value) bool {
b := v.Block
// match: (Geq32U x y)
- // cond:
// result: (SETAE (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq64F_0(v *Value) bool {
b := v.Block
// match: (Geq64F x y)
- // cond:
// result: (SETGEF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq8_0(v *Value) bool {
b := v.Block
// match: (Geq8 x y)
- // cond:
// result: (SETGE (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpGeq8U_0(v *Value) bool {
b := v.Block
// match: (Geq8U x y)
- // cond:
// result: (SETAE (CMPB x y))
for {
y := v.Args[1]
}
func rewriteValue386_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(Op386LoweredGetCallerPC)
}
func rewriteValue386_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(Op386LoweredGetCallerSP)
}
func rewriteValue386_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(Op386LoweredGetClosurePtr)
}
func rewriteValue386_OpGetG_0(v *Value) bool {
// match: (GetG mem)
- // cond:
// result: (LoweredGetG mem)
for {
mem := v.Args[0]
func rewriteValue386_OpGreater16_0(v *Value) bool {
b := v.Block
// match: (Greater16 x y)
- // cond:
// result: (SETG (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpGreater16U_0(v *Value) bool {
b := v.Block
// match: (Greater16U x y)
- // cond:
// result: (SETA (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpGreater32_0(v *Value) bool {
b := v.Block
// match: (Greater32 x y)
- // cond:
// result: (SETG (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpGreater32F_0(v *Value) bool {
b := v.Block
// match: (Greater32F x y)
- // cond:
// result: (SETGF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValue386_OpGreater32U_0(v *Value) bool {
b := v.Block
// match: (Greater32U x y)
- // cond:
// result: (SETA (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpGreater64F_0(v *Value) bool {
b := v.Block
// match: (Greater64F x y)
- // cond:
// result: (SETGF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValue386_OpGreater8_0(v *Value) bool {
b := v.Block
// match: (Greater8 x y)
- // cond:
// result: (SETG (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpGreater8U_0(v *Value) bool {
b := v.Block
// match: (Greater8U x y)
- // cond:
// result: (SETA (CMPB x y))
for {
y := v.Args[1]
}
func rewriteValue386_OpHmul32_0(v *Value) bool {
// match: (Hmul32 x y)
- // cond:
// result: (HMULL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpHmul32u_0(v *Value) bool {
// match: (Hmul32u x y)
- // cond:
// result: (HMULLU x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
func rewriteValue386_OpIsInBounds_0(v *Value) bool {
b := v.Block
// match: (IsInBounds idx len)
- // cond:
// result: (SETB (CMPL idx len))
for {
len := v.Args[1]
func rewriteValue386_OpIsNonNil_0(v *Value) bool {
b := v.Block
// match: (IsNonNil p)
- // cond:
// result: (SETNE (TESTL p p))
for {
p := v.Args[0]
func rewriteValue386_OpIsSliceInBounds_0(v *Value) bool {
b := v.Block
// match: (IsSliceInBounds idx len)
- // cond:
// result: (SETBE (CMPL idx len))
for {
len := v.Args[1]
func rewriteValue386_OpLeq16_0(v *Value) bool {
b := v.Block
// match: (Leq16 x y)
- // cond:
// result: (SETLE (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpLeq16U_0(v *Value) bool {
b := v.Block
// match: (Leq16U x y)
- // cond:
// result: (SETBE (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpLeq32_0(v *Value) bool {
b := v.Block
// match: (Leq32 x y)
- // cond:
// result: (SETLE (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpLeq32F_0(v *Value) bool {
b := v.Block
// match: (Leq32F x y)
- // cond:
// result: (SETGEF (UCOMISS y x))
for {
y := v.Args[1]
func rewriteValue386_OpLeq32U_0(v *Value) bool {
b := v.Block
// match: (Leq32U x y)
- // cond:
// result: (SETBE (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpLeq64F_0(v *Value) bool {
b := v.Block
// match: (Leq64F x y)
- // cond:
// result: (SETGEF (UCOMISD y x))
for {
y := v.Args[1]
func rewriteValue386_OpLeq8_0(v *Value) bool {
b := v.Block
// match: (Leq8 x y)
- // cond:
// result: (SETLE (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpLeq8U_0(v *Value) bool {
b := v.Block
// match: (Leq8U x y)
- // cond:
// result: (SETBE (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpLess16_0(v *Value) bool {
b := v.Block
// match: (Less16 x y)
- // cond:
// result: (SETL (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpLess16U_0(v *Value) bool {
b := v.Block
// match: (Less16U x y)
- // cond:
// result: (SETB (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpLess32_0(v *Value) bool {
b := v.Block
// match: (Less32 x y)
- // cond:
// result: (SETL (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpLess32F_0(v *Value) bool {
b := v.Block
// match: (Less32F x y)
- // cond:
// result: (SETGF (UCOMISS y x))
for {
y := v.Args[1]
func rewriteValue386_OpLess32U_0(v *Value) bool {
b := v.Block
// match: (Less32U x y)
- // cond:
// result: (SETB (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpLess64F_0(v *Value) bool {
b := v.Block
// match: (Less64F x y)
- // cond:
// result: (SETGF (UCOMISD y x))
for {
y := v.Args[1]
func rewriteValue386_OpLess8_0(v *Value) bool {
b := v.Block
// match: (Less8 x y)
- // cond:
// result: (SETL (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpLess8U_0(v *Value) bool {
b := v.Block
// match: (Less8U x y)
- // cond:
// result: (SETB (CMPB x y))
for {
y := v.Args[1]
}
func rewriteValue386_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (LEAL {sym} base)
for {
sym := v.Aux
func rewriteValue386_OpLsh16x16_0(v *Value) bool {
b := v.Block
// match: (Lsh16x16 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPWconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh16x32_0(v *Value) bool {
b := v.Block
// match: (Lsh16x32 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPLconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh16x8_0(v *Value) bool {
b := v.Block
// match: (Lsh16x8 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPBconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh32x16_0(v *Value) bool {
b := v.Block
// match: (Lsh32x16 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPWconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh32x32_0(v *Value) bool {
b := v.Block
// match: (Lsh32x32 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPLconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh32x8_0(v *Value) bool {
b := v.Block
// match: (Lsh32x8 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPBconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh8x16_0(v *Value) bool {
b := v.Block
// match: (Lsh8x16 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPWconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh8x32_0(v *Value) bool {
b := v.Block
// match: (Lsh8x32 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPLconst y [32])))
for {
t := v.Type
func rewriteValue386_OpLsh8x8_0(v *Value) bool {
b := v.Block
// match: (Lsh8x8 <t> x y)
- // cond:
// result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPBconst y [32])))
for {
t := v.Type
}
func rewriteValue386_OpMod16_0(v *Value) bool {
// match: (Mod16 [a] x y)
- // cond:
// result: (MODW [a] x y)
for {
a := v.AuxInt
}
func rewriteValue386_OpMod16u_0(v *Value) bool {
// match: (Mod16u x y)
- // cond:
// result: (MODWU x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpMod32_0(v *Value) bool {
// match: (Mod32 [a] x y)
- // cond:
// result: (MODL [a] x y)
for {
a := v.AuxInt
}
func rewriteValue386_OpMod32u_0(v *Value) bool {
// match: (Mod32u x y)
- // cond:
// result: (MODLU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (MODW (SignExt8to16 x) (SignExt8to16 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (MODWU (ZeroExt8to16 x) (ZeroExt8to16 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVWstore dst (MOVWload src mem) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVLstore dst (MOVLload src mem) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBload [2] src mem) (MOVWstore dst (MOVWload src mem) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Move [5] dst src mem)
- // cond:
// result: (MOVBstore [4] dst (MOVBload [4] src mem) (MOVLstore dst (MOVLload src mem) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Move [6] dst src mem)
- // cond:
// result: (MOVWstore [4] dst (MOVWload [4] src mem) (MOVLstore dst (MOVLload src mem) mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Move [7] dst src mem)
- // cond:
// result: (MOVLstore [3] dst (MOVLload [3] src mem) (MOVLstore dst (MOVLload src mem) mem))
for {
if v.AuxInt != 7 {
return true
}
// match: (Move [8] dst src mem)
- // cond:
// result: (MOVLstore [4] dst (MOVLload [4] src mem) (MOVLstore dst (MOVLload src mem) mem))
for {
if v.AuxInt != 8 {
}
func rewriteValue386_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (MULL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (MULL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (MULSS x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpMul32uhilo_0(v *Value) bool {
// match: (Mul32uhilo x y)
- // cond:
// result: (MULLQU x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (MULSD x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (MULL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (NEGL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (NEGL x)
for {
x := v.Args[0]
}
func rewriteValue386_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (NEGL x)
for {
x := v.Args[0]
func rewriteValue386_OpNeq16_0(v *Value) bool {
b := v.Block
// match: (Neq16 x y)
- // cond:
// result: (SETNE (CMPW x y))
for {
y := v.Args[1]
func rewriteValue386_OpNeq32_0(v *Value) bool {
b := v.Block
// match: (Neq32 x y)
- // cond:
// result: (SETNE (CMPL x y))
for {
y := v.Args[1]
func rewriteValue386_OpNeq32F_0(v *Value) bool {
b := v.Block
// match: (Neq32F x y)
- // cond:
// result: (SETNEF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValue386_OpNeq64F_0(v *Value) bool {
b := v.Block
// match: (Neq64F x y)
- // cond:
// result: (SETNEF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValue386_OpNeq8_0(v *Value) bool {
b := v.Block
// match: (Neq8 x y)
- // cond:
// result: (SETNE (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpNeqB_0(v *Value) bool {
b := v.Block
// match: (NeqB x y)
- // cond:
// result: (SETNE (CMPB x y))
for {
y := v.Args[1]
func rewriteValue386_OpNeqPtr_0(v *Value) bool {
b := v.Block
// match: (NeqPtr x y)
- // cond:
// result: (SETNE (CMPL x y))
for {
y := v.Args[1]
}
func rewriteValue386_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValue386_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (XORLconst [1] x)
for {
x := v.Args[0]
}
func rewriteValue386_OpOffPtr_0(v *Value) bool {
// match: (OffPtr [off] ptr)
- // cond:
// result: (ADDLconst [off] ptr)
for {
off := v.AuxInt
}
func rewriteValue386_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpRotateLeft16_0(v *Value) bool {
// match: (RotateLeft16 x (MOVLconst [c]))
- // cond:
// result: (ROLWconst [c&15] x)
for {
_ = v.Args[1]
}
func rewriteValue386_OpRotateLeft32_0(v *Value) bool {
// match: (RotateLeft32 x (MOVLconst [c]))
- // cond:
// result: (ROLLconst [c&31] x)
for {
_ = v.Args[1]
}
func rewriteValue386_OpRotateLeft8_0(v *Value) bool {
// match: (RotateLeft8 x (MOVLconst [c]))
- // cond:
// result: (ROLBconst [c&7] x)
for {
_ = v.Args[1]
}
func rewriteValue386_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValue386_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: x
for {
x := v.Args[0]
func rewriteValue386_OpRsh16Ux16_0(v *Value) bool {
b := v.Block
// match: (Rsh16Ux16 <t> x y)
- // cond:
// result: (ANDL (SHRW <t> x y) (SBBLcarrymask <t> (CMPWconst y [16])))
for {
t := v.Type
func rewriteValue386_OpRsh16Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh16Ux32 <t> x y)
- // cond:
// result: (ANDL (SHRW <t> x y) (SBBLcarrymask <t> (CMPLconst y [16])))
for {
t := v.Type
func rewriteValue386_OpRsh16Ux8_0(v *Value) bool {
b := v.Block
// match: (Rsh16Ux8 <t> x y)
- // cond:
// result: (ANDL (SHRW <t> x y) (SBBLcarrymask <t> (CMPBconst y [16])))
for {
t := v.Type
func rewriteValue386_OpRsh16x16_0(v *Value) bool {
b := v.Block
// match: (Rsh16x16 <t> x y)
- // cond:
// result: (SARW <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPWconst y [16])))))
for {
t := v.Type
func rewriteValue386_OpRsh16x32_0(v *Value) bool {
b := v.Block
// match: (Rsh16x32 <t> x y)
- // cond:
// result: (SARW <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPLconst y [16])))))
for {
t := v.Type
func rewriteValue386_OpRsh16x8_0(v *Value) bool {
b := v.Block
// match: (Rsh16x8 <t> x y)
- // cond:
// result: (SARW <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPBconst y [16])))))
for {
t := v.Type
func rewriteValue386_OpRsh32Ux16_0(v *Value) bool {
b := v.Block
// match: (Rsh32Ux16 <t> x y)
- // cond:
// result: (ANDL (SHRL <t> x y) (SBBLcarrymask <t> (CMPWconst y [32])))
for {
t := v.Type
func rewriteValue386_OpRsh32Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh32Ux32 <t> x y)
- // cond:
// result: (ANDL (SHRL <t> x y) (SBBLcarrymask <t> (CMPLconst y [32])))
for {
t := v.Type
func rewriteValue386_OpRsh32Ux8_0(v *Value) bool {
b := v.Block
// match: (Rsh32Ux8 <t> x y)
- // cond:
// result: (ANDL (SHRL <t> x y) (SBBLcarrymask <t> (CMPBconst y [32])))
for {
t := v.Type
func rewriteValue386_OpRsh32x16_0(v *Value) bool {
b := v.Block
// match: (Rsh32x16 <t> x y)
- // cond:
// result: (SARL <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPWconst y [32])))))
for {
t := v.Type
func rewriteValue386_OpRsh32x32_0(v *Value) bool {
b := v.Block
// match: (Rsh32x32 <t> x y)
- // cond:
// result: (SARL <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPLconst y [32])))))
for {
t := v.Type
func rewriteValue386_OpRsh32x8_0(v *Value) bool {
b := v.Block
// match: (Rsh32x8 <t> x y)
- // cond:
// result: (SARL <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPBconst y [32])))))
for {
t := v.Type
func rewriteValue386_OpRsh8Ux16_0(v *Value) bool {
b := v.Block
// match: (Rsh8Ux16 <t> x y)
- // cond:
// result: (ANDL (SHRB <t> x y) (SBBLcarrymask <t> (CMPWconst y [8])))
for {
t := v.Type
func rewriteValue386_OpRsh8Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh8Ux32 <t> x y)
- // cond:
// result: (ANDL (SHRB <t> x y) (SBBLcarrymask <t> (CMPLconst y [8])))
for {
t := v.Type
func rewriteValue386_OpRsh8Ux8_0(v *Value) bool {
b := v.Block
// match: (Rsh8Ux8 <t> x y)
- // cond:
// result: (ANDL (SHRB <t> x y) (SBBLcarrymask <t> (CMPBconst y [8])))
for {
t := v.Type
func rewriteValue386_OpRsh8x16_0(v *Value) bool {
b := v.Block
// match: (Rsh8x16 <t> x y)
- // cond:
// result: (SARB <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPWconst y [8])))))
for {
t := v.Type
func rewriteValue386_OpRsh8x32_0(v *Value) bool {
b := v.Block
// match: (Rsh8x32 <t> x y)
- // cond:
// result: (SARB <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPLconst y [8])))))
for {
t := v.Type
func rewriteValue386_OpRsh8x8_0(v *Value) bool {
b := v.Block
// match: (Rsh8x8 <t> x y)
- // cond:
// result: (SARB <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPBconst y [8])))))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Select0 (Mul32uover x y))
- // cond:
// result: (Select0 <typ.UInt32> (MULLU x y))
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select1 (Mul32uover x y))
- // cond:
// result: (SETO (Select1 <types.TypeFlags> (MULLU x y)))
for {
v_0 := v.Args[0]
}
func rewriteValue386_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVWLSX x)
for {
x := v.Args[0]
}
func rewriteValue386_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBLSX x)
for {
x := v.Args[0]
}
func rewriteValue386_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBLSX x)
for {
x := v.Args[0]
}
func rewriteValue386_OpSignmask_0(v *Value) bool {
// match: (Signmask x)
- // cond:
// result: (SARLconst x [31])
for {
x := v.Args[0]
func rewriteValue386_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SARLconst (NEGL <t> x) [31])
for {
t := v.Type
}
func rewriteValue386_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (SQRTSD x)
for {
x := v.Args[0]
}
func rewriteValue386_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValue386_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUBL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUBL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (SUBSS x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpSub32carry_0(v *Value) bool {
// match: (Sub32carry x y)
- // cond:
// result: (SUBLcarry x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpSub32withcarry_0(v *Value) bool {
// match: (Sub32withcarry x y c)
- // cond:
// result: (SBBL x y c)
for {
c := v.Args[2]
}
func rewriteValue386_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (SUBSD x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUBL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (SUBL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValue386_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValue386_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValue386_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValue386_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XORL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XORL x y)
for {
y := v.Args[1]
}
func rewriteValue386_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XORL x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] destptr mem)
- // cond:
// result: (MOVBstoreconst [0] destptr mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] destptr mem)
- // cond:
// result: (MOVWstoreconst [0] destptr mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] destptr mem)
- // cond:
// result: (MOVLstoreconst [0] destptr mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [3] destptr mem)
- // cond:
// result: (MOVBstoreconst [makeValAndOff(0,2)] destptr (MOVWstoreconst [0] destptr mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Zero [5] destptr mem)
- // cond:
// result: (MOVBstoreconst [makeValAndOff(0,4)] destptr (MOVLstoreconst [0] destptr mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Zero [6] destptr mem)
- // cond:
// result: (MOVWstoreconst [makeValAndOff(0,4)] destptr (MOVLstoreconst [0] destptr mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Zero [7] destptr mem)
- // cond:
// result: (MOVLstoreconst [makeValAndOff(0,3)] destptr (MOVLstoreconst [0] destptr mem))
for {
if v.AuxInt != 7 {
return true
}
// match: (Zero [8] destptr mem)
- // cond:
// result: (MOVLstoreconst [makeValAndOff(0,4)] destptr (MOVLstoreconst [0] destptr mem))
for {
if v.AuxInt != 8 {
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Zero [12] destptr mem)
- // cond:
// result: (MOVLstoreconst [makeValAndOff(0,8)] destptr (MOVLstoreconst [makeValAndOff(0,4)] destptr (MOVLstoreconst [0] destptr mem)))
for {
if v.AuxInt != 12 {
return true
}
// match: (Zero [16] destptr mem)
- // cond:
// result: (MOVLstoreconst [makeValAndOff(0,12)] destptr (MOVLstoreconst [makeValAndOff(0,8)] destptr (MOVLstoreconst [makeValAndOff(0,4)] destptr (MOVLstoreconst [0] destptr mem))))
for {
if v.AuxInt != 16 {
}
func rewriteValue386_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVWLZX x)
for {
x := v.Args[0]
}
func rewriteValue386_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBLZX x)
for {
x := v.Args[0]
}
func rewriteValue386_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBLZX x)
for {
x := v.Args[0]
func rewriteValue386_OpZeromask_0(v *Value) bool {
b := v.Block
// match: (Zeromask <t> x)
- // cond:
// result: (XORLconst [-1] (SBBLcarrymask <t> (CMPLconst x [1])))
for {
t := v.Type
switch b.Kind {
case Block386EQ:
// match: (EQ (InvertFlags cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (EQ (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386GE:
// match: (GE (InvertFlags cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386GT:
// match: (GT (InvertFlags cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockIf:
// match: (If (SETL cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == Op386SETL {
cmp := v.Args[0]
return true
}
// match: (If (SETLE cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == Op386SETLE {
cmp := v.Args[0]
return true
}
// match: (If (SETG cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == Op386SETG {
cmp := v.Args[0]
return true
}
// match: (If (SETGE cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == Op386SETGE {
cmp := v.Args[0]
return true
}
// match: (If (SETEQ cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == Op386SETEQ {
cmp := v.Args[0]
return true
}
// match: (If (SETNE cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == Op386SETNE {
cmp := v.Args[0]
return true
}
// match: (If (SETB cmp) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == Op386SETB {
cmp := v.Args[0]
return true
}
// match: (If (SETBE cmp) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == Op386SETBE {
cmp := v.Args[0]
return true
}
// match: (If (SETA cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == Op386SETA {
cmp := v.Args[0]
return true
}
// match: (If (SETAE cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == Op386SETAE {
cmp := v.Args[0]
return true
}
// match: (If (SETO cmp) yes no)
- // cond:
// result: (OS cmp yes no)
for v.Op == Op386SETO {
cmp := v.Args[0]
return true
}
// match: (If (SETGF cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == Op386SETGF {
cmp := v.Args[0]
return true
}
// match: (If (SETGEF cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == Op386SETGEF {
cmp := v.Args[0]
return true
}
// match: (If (SETEQF cmp) yes no)
- // cond:
// result: (EQF cmp yes no)
for v.Op == Op386SETEQF {
cmp := v.Args[0]
return true
}
// match: (If (SETNEF cmp) yes no)
- // cond:
// result: (NEF cmp yes no)
for v.Op == Op386SETNEF {
cmp := v.Args[0]
return true
}
// match: (If cond yes no)
- // cond:
// result: (NE (TESTB cond cond) yes no)
for {
cond := b.Control
}
case Block386LE:
// match: (LE (InvertFlags cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (LE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386LT:
// match: (LT (InvertFlags cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (LT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386NE:
// match: (NE (TESTB (SETL cmp) (SETL cmp)) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETL {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETL || cmp != v_1.Args[0] {
break
}
b.Kind = Block386LT
return true
}
// match: (NE (TESTB (SETL cmp) (SETL cmp)) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETL {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETL || cmp != v_1.Args[0] {
break
}
b.Kind = Block386LT
return true
}
// match: (NE (TESTB (SETLE cmp) (SETLE cmp)) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETLE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETLE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386LE
return true
}
// match: (NE (TESTB (SETLE cmp) (SETLE cmp)) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETLE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETLE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386LE
return true
}
// match: (NE (TESTB (SETG cmp) (SETG cmp)) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETG {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETG || cmp != v_1.Args[0] {
break
}
b.Kind = Block386GT
return true
}
// match: (NE (TESTB (SETG cmp) (SETG cmp)) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETG {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETG || cmp != v_1.Args[0] {
break
}
b.Kind = Block386GT
return true
}
// match: (NE (TESTB (SETGE cmp) (SETGE cmp)) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETGE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETGE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386GE
return true
}
// match: (NE (TESTB (SETGE cmp) (SETGE cmp)) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETGE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETGE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386GE
return true
}
// match: (NE (TESTB (SETEQ cmp) (SETEQ cmp)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETEQ {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETEQ || cmp != v_1.Args[0] {
break
}
b.Kind = Block386EQ
return true
}
// match: (NE (TESTB (SETEQ cmp) (SETEQ cmp)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETEQ {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETEQ || cmp != v_1.Args[0] {
break
}
b.Kind = Block386EQ
return true
}
// match: (NE (TESTB (SETNE cmp) (SETNE cmp)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETNE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETNE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386NE
return true
}
// match: (NE (TESTB (SETNE cmp) (SETNE cmp)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETNE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETNE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386NE
return true
}
// match: (NE (TESTB (SETB cmp) (SETB cmp)) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETB {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETB || cmp != v_1.Args[0] {
break
}
b.Kind = Block386ULT
return true
}
// match: (NE (TESTB (SETB cmp) (SETB cmp)) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETB {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETB || cmp != v_1.Args[0] {
break
}
b.Kind = Block386ULT
return true
}
// match: (NE (TESTB (SETBE cmp) (SETBE cmp)) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETBE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETBE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386ULE
return true
}
// match: (NE (TESTB (SETBE cmp) (SETBE cmp)) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETBE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETBE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386ULE
return true
}
// match: (NE (TESTB (SETA cmp) (SETA cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETA {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETA || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGT
return true
}
// match: (NE (TESTB (SETA cmp) (SETA cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETA {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETA || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGT
return true
}
// match: (NE (TESTB (SETAE cmp) (SETAE cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETAE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETAE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGE
return true
}
// match: (NE (TESTB (SETAE cmp) (SETAE cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETAE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETAE || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGE
return true
}
// match: (NE (TESTB (SETO cmp) (SETO cmp)) yes no)
- // cond:
// result: (OS cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETO {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETO || cmp != v_1.Args[0] {
break
}
b.Kind = Block386OS
return true
}
// match: (NE (TESTB (SETO cmp) (SETO cmp)) yes no)
- // cond:
// result: (OS cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETO {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETO || cmp != v_1.Args[0] {
break
}
b.Kind = Block386OS
return true
}
// match: (NE (TESTB (SETGF cmp) (SETGF cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETGF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETGF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGT
return true
}
// match: (NE (TESTB (SETGF cmp) (SETGF cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETGF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETGF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGT
return true
}
// match: (NE (TESTB (SETGEF cmp) (SETGEF cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETGEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETGEF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGE
return true
}
// match: (NE (TESTB (SETGEF cmp) (SETGEF cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETGEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETGEF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386UGE
return true
}
// match: (NE (TESTB (SETEQF cmp) (SETEQF cmp)) yes no)
- // cond:
// result: (EQF cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETEQF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETEQF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386EQF
return true
}
// match: (NE (TESTB (SETEQF cmp) (SETEQF cmp)) yes no)
- // cond:
// result: (EQF cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETEQF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETEQF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386EQF
return true
}
// match: (NE (TESTB (SETNEF cmp) (SETNEF cmp)) yes no)
- // cond:
// result: (NEF cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETNEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETNEF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386NEF
return true
}
// match: (NE (TESTB (SETNEF cmp) (SETNEF cmp)) yes no)
- // cond:
// result: (NEF cmp yes no)
for v.Op == Op386TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != Op386SETNEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != Op386SETNEF || cmp != v_1.Args[0] {
break
}
b.Kind = Block386NEF
return true
}
// match: (NE (InvertFlags cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (NE (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386UGE:
// match: (UGE (InvertFlags cmp) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (UGE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386UGT:
// match: (UGT (InvertFlags cmp) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (UGT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386ULE:
// match: (ULE (InvertFlags cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (ULE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
}
case Block386ULT:
// match: (ULT (InvertFlags cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == Op386InvertFlags {
cmp := v.Args[0]
return true
}
// match: (ULT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == Op386FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == Op386FlagGT_UGT {
b.Kind = BlockFirst
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPBconstload {sym} [vo] ptr mem)
- // cond:
// result: (CMPBconst (MOVBload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])
for {
vo := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPBload {sym} [off] ptr x mem)
- // cond:
// result: (CMPB (MOVBload {sym} [off] ptr mem) x)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPLconstload {sym} [vo] ptr mem)
- // cond:
// result: (CMPLconst (MOVLload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])
for {
vo := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPLload {sym} [off] ptr x mem)
- // cond:
// result: (CMPL (MOVLload {sym} [off] ptr mem) x)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPWconstload {sym} [vo] ptr mem)
- // cond:
// result: (CMPWconst (MOVWload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])
for {
vo := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPWload {sym} [off] ptr x mem)
- // cond:
// result: (CMPW (MOVWload {sym} [off] ptr mem) x)
for {
off := v.AuxInt
return true
}
// match: (ADCQ x y (FlagEQ))
- // cond:
// result: (ADDQcarry x y)
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64ADCQconst_0(v *Value) bool {
// match: (ADCQconst x [c] (FlagEQ))
- // cond:
// result: (ADDQconstcarry x [c])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64ADDL_0(v *Value) bool {
// match: (ADDL x (MOVLconst [c]))
- // cond:
// result: (ADDLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (MOVLconst [c]) x)
- // cond:
// result: (ADDLconst [c] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpAMD64ROLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpAMD64ROLLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 16-c && c < 16 && t.Size() == 2) {
+ if x != v_1.Args[0] || !(d == 16-c && c < 16 && t.Size() == 2) {
break
}
v.reset(OpAMD64ROLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 16-c && c < 16 && t.Size() == 2) {
+ if x != v_1.Args[0] || !(d == 16-c && c < 16 && t.Size() == 2) {
break
}
v.reset(OpAMD64ROLWconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 8-c && c < 8 && t.Size() == 1) {
+ if x != v_1.Args[0] || !(d == 8-c && c < 8 && t.Size() == 1) {
break
}
v.reset(OpAMD64ROLBconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 8-c && c < 8 && t.Size() == 1) {
+ if x != v_1.Args[0] || !(d == 8-c && c < 8 && t.Size() == 1) {
break
}
v.reset(OpAMD64ROLBconst)
return true
}
// match: (ADDL x (SHLLconst [3] y))
- // cond:
// result: (LEAL8 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 3 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDL (SHLLconst [3] y) x)
- // cond:
// result: (LEAL8 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 3 {
break
}
y := v_0.Args[0]
}
func rewriteValueAMD64_OpAMD64ADDL_10(v *Value) bool {
// match: (ADDL x (SHLLconst [2] y))
- // cond:
// result: (LEAL4 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDL (SHLLconst [2] y) x)
- // cond:
// result: (LEAL4 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 2 {
break
}
y := v_0.Args[0]
return true
}
// match: (ADDL x (SHLLconst [1] y))
- // cond:
// result: (LEAL2 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDL (SHLLconst [1] y) x)
- // cond:
// result: (LEAL2 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 1 {
break
}
y := v_0.Args[0]
return true
}
// match: (ADDL x (ADDL y y))
- // cond:
// result: (LEAL2 x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (ADDL y y) x)
- // cond:
// result: (LEAL2 x y)
for {
x := v.Args[1]
return true
}
// match: (ADDL x (ADDL x y))
- // cond:
// result: (LEAL2 y x)
for {
_ = v.Args[1]
return true
}
// match: (ADDL x (ADDL y x))
- // cond:
// result: (LEAL2 y x)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (ADDL x y) x)
- // cond:
// result: (LEAL2 y x)
for {
x := v.Args[1]
return true
}
// match: (ADDL (ADDL y x) x)
- // cond:
// result: (LEAL2 y x)
for {
x := v.Args[1]
}
func rewriteValueAMD64_OpAMD64ADDL_20(v *Value) bool {
// match: (ADDL (ADDLconst [c] x) y)
- // cond:
// result: (LEAL1 [c] x y)
for {
y := v.Args[1]
return true
}
// match: (ADDL y (ADDLconst [c] x))
- // cond:
// result: (LEAL1 [c] x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDL x (NEGL y))
- // cond:
// result: (SUBL x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDL (NEGL y) x)
- // cond:
// result: (SUBL x y)
for {
x := v.Args[1]
}
func rewriteValueAMD64_OpAMD64ADDLconst_0(v *Value) bool {
// match: (ADDLconst [c] (ADDL x y))
- // cond:
// result: (LEAL1 [c] x y)
for {
c := v.AuxInt
return true
}
// match: (ADDLconst [c] (SHLLconst [1] x))
- // cond:
// result: (LEAL1 [c] x x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 1 {
break
}
x := v_0.Args[0]
return true
}
// match: (ADDLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [int64(int32(c+d))])
for {
c := v.AuxInt
return true
}
// match: (ADDLconst [c] (ADDLconst [d] x))
- // cond:
// result: (ADDLconst [int64(int32(c+d))] x)
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64ADDLconst_10(v *Value) bool {
// match: (ADDLconst [off] x:(SP))
- // cond:
// result: (LEAL [off] x)
for {
off := v.AuxInt
return true
}
// match: (ADDLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
- // cond:
// result: (ADDL x (MOVLf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSSstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpAMD64ROLQconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpAMD64ROLQconst)
return true
}
// match: (ADDQ x (SHLQconst [3] y))
- // cond:
// result: (LEAQ8 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDQ (SHLQconst [3] y) x)
- // cond:
// result: (LEAQ8 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 3 {
break
}
y := v_0.Args[0]
return true
}
// match: (ADDQ x (SHLQconst [2] y))
- // cond:
// result: (LEAQ4 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDQ (SHLQconst [2] y) x)
- // cond:
// result: (LEAQ4 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 2 {
break
}
y := v_0.Args[0]
return true
}
// match: (ADDQ x (SHLQconst [1] y))
- // cond:
// result: (LEAQ2 x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADDQ (SHLQconst [1] y) x)
- // cond:
// result: (LEAQ2 x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 1 {
break
}
y := v_0.Args[0]
}
func rewriteValueAMD64_OpAMD64ADDQ_10(v *Value) bool {
// match: (ADDQ x (ADDQ y y))
- // cond:
// result: (LEAQ2 x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDQ (ADDQ y y) x)
- // cond:
// result: (LEAQ2 x y)
for {
x := v.Args[1]
return true
}
// match: (ADDQ x (ADDQ x y))
- // cond:
// result: (LEAQ2 y x)
for {
_ = v.Args[1]
return true
}
// match: (ADDQ x (ADDQ y x))
- // cond:
// result: (LEAQ2 y x)
for {
_ = v.Args[1]
return true
}
// match: (ADDQ (ADDQ x y) x)
- // cond:
// result: (LEAQ2 y x)
for {
x := v.Args[1]
return true
}
// match: (ADDQ (ADDQ y x) x)
- // cond:
// result: (LEAQ2 y x)
for {
x := v.Args[1]
return true
}
// match: (ADDQ (ADDQconst [c] x) y)
- // cond:
// result: (LEAQ1 [c] x y)
for {
y := v.Args[1]
return true
}
// match: (ADDQ y (ADDQconst [c] x))
- // cond:
// result: (LEAQ1 [c] x y)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64ADDQ_20(v *Value) bool {
// match: (ADDQ x (NEGQ y))
- // cond:
// result: (SUBQ x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDQ (NEGQ y) x)
- // cond:
// result: (SUBQ x y)
for {
x := v.Args[1]
}
func rewriteValueAMD64_OpAMD64ADDQconst_0(v *Value) bool {
// match: (ADDQconst [c] (ADDQ x y))
- // cond:
// result: (LEAQ1 [c] x y)
for {
c := v.AuxInt
return true
}
// match: (ADDQconst [c] (SHLQconst [1] x))
- // cond:
// result: (LEAQ1 [c] x x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 1 {
break
}
x := v_0.Args[0]
return true
}
// match: (ADDQconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ADDQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [c+d])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64ADDQconst_10(v *Value) bool {
// match: (ADDQconst [off] x:(SP))
- // cond:
// result: (LEAQ [off] x)
for {
off := v.AuxInt
return true
}
// match: (ADDQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
- // cond:
// result: (ADDQ x (MOVQf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (ADDSDload x [off] {sym} ptr (MOVQstore [off] {sym} ptr y _))
- // cond:
// result: (ADDSD x (MOVQi2f y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVQstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVQstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (ADDSSload x [off] {sym} ptr (MOVLstore [off] {sym} ptr y _))
- // cond:
// result: (ADDSS x (MOVLi2f y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVLstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVLstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
y := v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0_0.Op != OpAMD64MOVLconst || v_0_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTRL)
}
y := v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0_0.Op != OpAMD64MOVLconst || v_1_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTRL)
return true
}
// match: (ANDL x (MOVLconst [c]))
- // cond:
// result: (ANDLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ANDL (MOVLconst [c]) x)
- // cond:
// result: (ANDLconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (ANDL x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (ANDLconst [c] (ANDLconst [d] x))
- // cond:
// result: (ANDLconst [c & d] x)
for {
c := v.AuxInt
return true
}
// match: (ANDLconst [c] (BTRLconst [d] x))
- // cond:
// result: (ANDLconst [c &^ (1<<uint32(d))] x)
for {
c := v.AuxInt
return true
}
// match: (ANDLconst [ 0xFF] x)
- // cond:
// result: (MOVBQZX x)
for {
if v.AuxInt != 0xFF {
return true
}
// match: (ANDLconst [0xFFFF] x)
- // cond:
// result: (MOVWQZX x)
for {
if v.AuxInt != 0xFFFF {
return true
}
// match: (ANDLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [c&d])
for {
c := v.AuxInt
return true
}
// match: (ANDLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
- // cond:
// result: (ANDL x (MOVLf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSSstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
y := v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0_0.Op != OpAMD64MOVQconst || v_0_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTRQ)
}
y := v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0_0.Op != OpAMD64MOVQconst || v_1_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTRQ)
return true
}
// match: (ANDQ x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (ANDQconst [c] (ANDQconst [d] x))
- // cond:
// result: (ANDQconst [c & d] x)
for {
c := v.AuxInt
return true
}
// match: (ANDQconst [c] (BTRQconst [d] x))
- // cond:
// result: (ANDQconst [c &^ (1<<uint32(d))] x)
for {
c := v.AuxInt
return true
}
// match: (ANDQconst [ 0xFF] x)
- // cond:
// result: (MOVBQZX x)
for {
if v.AuxInt != 0xFF {
return true
}
// match: (ANDQconst [0xFFFF] x)
- // cond:
// result: (MOVWQZX x)
for {
if v.AuxInt != 0xFFFF {
return true
}
// match: (ANDQconst [0xFFFFFFFF] x)
- // cond:
// result: (MOVLQZX x)
for {
if v.AuxInt != 0xFFFFFFFF {
return true
}
// match: (ANDQconst [0] _)
- // cond:
// result: (MOVQconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ANDQconst [-1] x)
- // cond:
// result: x
for {
if v.AuxInt != -1 {
return true
}
// match: (ANDQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [c&d])
for {
c := v.AuxInt
return true
}
// match: (ANDQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
- // cond:
// result: (ANDQ x (MOVQf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
func rewriteValueAMD64_OpAMD64BSFQ_0(v *Value) bool {
b := v.Block
// match: (BSFQ (ORQconst <t> [1<<8] (MOVBQZX x)))
- // cond:
// result: (BSFQ (ORQconst <t> [1<<8] x))
for {
v_0 := v.Args[0]
return true
}
// match: (BSFQ (ORQconst <t> [1<<16] (MOVWQZX x)))
- // cond:
// result: (BSFQ (ORQconst <t> [1<<16] x))
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64BTCLconst_0(v *Value) bool {
// match: (BTCLconst [c] (XORLconst [d] x))
- // cond:
// result: (XORLconst [d ^ 1<<uint32(c)] x)
for {
c := v.AuxInt
return true
}
// match: (BTCLconst [c] (BTCLconst [d] x))
- // cond:
// result: (XORLconst [1<<uint32(c) ^ 1<<uint32(d)] x)
for {
c := v.AuxInt
return true
}
// match: (BTCLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [d^(1<<uint32(c))])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64BTCQconst_0(v *Value) bool {
// match: (BTCQconst [c] (XORQconst [d] x))
- // cond:
// result: (XORQconst [d ^ 1<<uint32(c)] x)
for {
c := v.AuxInt
return true
}
// match: (BTCQconst [c] (BTCQconst [d] x))
- // cond:
// result: (XORQconst [1<<uint32(c) ^ 1<<uint32(d)] x)
for {
c := v.AuxInt
return true
}
// match: (BTCQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [d^(1<<uint32(c))])
for {
c := v.AuxInt
return true
}
// match: (BTLconst [0] s:(SHRQ x y))
- // cond:
// result: (BTQ y x)
for {
if v.AuxInt != 0 {
return true
}
// match: (BTLconst [0] s:(SHRL x y))
- // cond:
// result: (BTL y x)
for {
if v.AuxInt != 0 {
return true
}
// match: (BTQconst [0] s:(SHRQ x y))
- // cond:
// result: (BTQ y x)
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64BTRLconst_0(v *Value) bool {
// match: (BTRLconst [c] (BTSLconst [c] x))
- // cond:
// result: (BTRLconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTSLconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTSLconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTRLconst [c] (BTCLconst [c] x))
- // cond:
// result: (BTRLconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTCLconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTCLconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTRLconst [c] (ANDLconst [d] x))
- // cond:
// result: (ANDLconst [d &^ (1<<uint32(c))] x)
for {
c := v.AuxInt
return true
}
// match: (BTRLconst [c] (BTRLconst [d] x))
- // cond:
// result: (ANDLconst [^(1<<uint32(c) | 1<<uint32(d))] x)
for {
c := v.AuxInt
return true
}
// match: (BTRLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [d&^(1<<uint32(c))])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64BTRQconst_0(v *Value) bool {
// match: (BTRQconst [c] (BTSQconst [c] x))
- // cond:
// result: (BTRQconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTSQconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTSQconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTRQconst [c] (BTCQconst [c] x))
- // cond:
// result: (BTRQconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTCQconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTCQconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTRQconst [c] (ANDQconst [d] x))
- // cond:
// result: (ANDQconst [d &^ (1<<uint32(c))] x)
for {
c := v.AuxInt
return true
}
// match: (BTRQconst [c] (BTRQconst [d] x))
- // cond:
// result: (ANDQconst [^(1<<uint32(c) | 1<<uint32(d))] x)
for {
c := v.AuxInt
return true
}
// match: (BTRQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [d&^(1<<uint32(c))])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64BTSLconst_0(v *Value) bool {
// match: (BTSLconst [c] (BTRLconst [c] x))
- // cond:
// result: (BTSLconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTRLconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTRLconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTSLconst [c] (BTCLconst [c] x))
- // cond:
// result: (BTSLconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTCLconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTCLconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTSLconst [c] (ORLconst [d] x))
- // cond:
// result: (ORLconst [d | 1<<uint32(c)] x)
for {
c := v.AuxInt
return true
}
// match: (BTSLconst [c] (BTSLconst [d] x))
- // cond:
// result: (ORLconst [1<<uint32(d) | 1<<uint32(c)] x)
for {
c := v.AuxInt
return true
}
// match: (BTSLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [d|(1<<uint32(c))])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64BTSQconst_0(v *Value) bool {
// match: (BTSQconst [c] (BTRQconst [c] x))
- // cond:
// result: (BTSQconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTRQconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTRQconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTSQconst [c] (BTCQconst [c] x))
- // cond:
// result: (BTSQconst [c] x)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64BTCQconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpAMD64BTCQconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (BTSQconst [c] (ORQconst [d] x))
- // cond:
// result: (ORQconst [d | 1<<uint32(c)] x)
for {
c := v.AuxInt
return true
}
// match: (BTSQconst [c] (BTSQconst [d] x))
- // cond:
// result: (ORQconst [1<<uint32(d) | 1<<uint32(c)] x)
for {
c := v.AuxInt
return true
}
// match: (BTSQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [d|(1<<uint32(c))])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64CMOVLCC_0(v *Value) bool {
// match: (CMOVLCC x y (InvertFlags cond))
- // cond:
// result: (CMOVLLS x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCC _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCC _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCC y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCC y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCC _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLCS_0(v *Value) bool {
// match: (CMOVLCS x y (InvertFlags cond))
- // cond:
// result: (CMOVLHI x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCS y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCS y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCS _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCS _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLCS y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLEQ_0(v *Value) bool {
// match: (CMOVLEQ x y (InvertFlags cond))
- // cond:
// result: (CMOVLEQ x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLEQ _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLEQ y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLEQ y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLEQ y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLEQ y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLGE_0(v *Value) bool {
// match: (CMOVLGE x y (InvertFlags cond))
- // cond:
// result: (CMOVLLE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGE _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGE _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGE y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGE y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLGT_0(v *Value) bool {
// match: (CMOVLGT x y (InvertFlags cond))
- // cond:
// result: (CMOVLLT x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGT _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGT _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGT y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLGT y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLHI_0(v *Value) bool {
// match: (CMOVLHI x y (InvertFlags cond))
- // cond:
// result: (CMOVLCS x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLHI y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLHI _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLHI y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLHI y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLHI _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLLE_0(v *Value) bool {
// match: (CMOVLLE x y (InvertFlags cond))
- // cond:
// result: (CMOVLGE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLE y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLE y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLE _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLE _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLLS_0(v *Value) bool {
// match: (CMOVLLS x y (InvertFlags cond))
- // cond:
// result: (CMOVLCC x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLS _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLS y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLS _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLS _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLS y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLLT_0(v *Value) bool {
// match: (CMOVLLT x y (InvertFlags cond))
- // cond:
// result: (CMOVLGT x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLT y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLT y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLT _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLLT _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVLNE_0(v *Value) bool {
// match: (CMOVLNE x y (InvertFlags cond))
- // cond:
// result: (CMOVLNE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVLNE y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVLNE _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLNE _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLNE _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVLNE _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQCC_0(v *Value) bool {
// match: (CMOVQCC x y (InvertFlags cond))
- // cond:
// result: (CMOVQLS x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCC _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCC _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCC y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCC y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCC _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQCS_0(v *Value) bool {
// match: (CMOVQCS x y (InvertFlags cond))
- // cond:
// result: (CMOVQHI x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCS y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCS y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCS _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCS _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQCS y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQEQ_0(v *Value) bool {
// match: (CMOVQEQ x y (InvertFlags cond))
- // cond:
// result: (CMOVQEQ x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQEQ _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQEQ y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQEQ y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQEQ y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQEQ y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQGE_0(v *Value) bool {
// match: (CMOVQGE x y (InvertFlags cond))
- // cond:
// result: (CMOVQLE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGE _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGE _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGE y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGE y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQGT_0(v *Value) bool {
// match: (CMOVQGT x y (InvertFlags cond))
- // cond:
// result: (CMOVQLT x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGT _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGT _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGT y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQGT y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQHI_0(v *Value) bool {
// match: (CMOVQHI x y (InvertFlags cond))
- // cond:
// result: (CMOVQCS x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQHI y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQHI _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQHI y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQHI y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQHI _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQLE_0(v *Value) bool {
// match: (CMOVQLE x y (InvertFlags cond))
- // cond:
// result: (CMOVQGE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLE y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLE y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLE _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLE _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQLS_0(v *Value) bool {
// match: (CMOVQLS x y (InvertFlags cond))
- // cond:
// result: (CMOVQCC x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLS _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLS y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLS _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLS _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLS y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQLT_0(v *Value) bool {
// match: (CMOVQLT x y (InvertFlags cond))
- // cond:
// result: (CMOVQGT x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLT y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLT y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLT _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQLT _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVQNE_0(v *Value) bool {
// match: (CMOVQNE x y (InvertFlags cond))
- // cond:
// result: (CMOVQNE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVQNE y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVQNE _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQNE _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQNE _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVQNE _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWCC_0(v *Value) bool {
// match: (CMOVWCC x y (InvertFlags cond))
- // cond:
// result: (CMOVWLS x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCC _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCC _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCC y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCC y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCC _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWCS_0(v *Value) bool {
// match: (CMOVWCS x y (InvertFlags cond))
- // cond:
// result: (CMOVWHI x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCS y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCS y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCS _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCS _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWCS y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWEQ_0(v *Value) bool {
// match: (CMOVWEQ x y (InvertFlags cond))
- // cond:
// result: (CMOVWEQ x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWEQ _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWEQ y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWEQ y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWEQ y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWEQ y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWGE_0(v *Value) bool {
// match: (CMOVWGE x y (InvertFlags cond))
- // cond:
// result: (CMOVWLE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGE _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGE _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGE y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGE y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWGT_0(v *Value) bool {
// match: (CMOVWGT x y (InvertFlags cond))
- // cond:
// result: (CMOVWLT x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGT _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGT _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGT y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWGT y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWHI_0(v *Value) bool {
// match: (CMOVWHI x y (InvertFlags cond))
- // cond:
// result: (CMOVWCS x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWHI y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWHI _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWHI y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWHI y _ (FlagLT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWHI _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWLE_0(v *Value) bool {
// match: (CMOVWLE x y (InvertFlags cond))
- // cond:
// result: (CMOVWGE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLE y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLE y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLE _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLE _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWLS_0(v *Value) bool {
// match: (CMOVWLS x y (InvertFlags cond))
- // cond:
// result: (CMOVWCC x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLS _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLS y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLS _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLS _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLS y _ (FlagLT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWLT_0(v *Value) bool {
// match: (CMOVWLT x y (InvertFlags cond))
- // cond:
// result: (CMOVWGT x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLT y _ (FlagGT_UGT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLT y _ (FlagGT_ULT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLT _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWLT _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64CMOVWNE_0(v *Value) bool {
// match: (CMOVWNE x y (InvertFlags cond))
- // cond:
// result: (CMOVWNE x y cond)
for {
_ = v.Args[2]
return true
}
// match: (CMOVWNE y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (CMOVWNE _ x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWNE _ x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWNE _ x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (CMOVWNE _ x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[2]
func rewriteValueAMD64_OpAMD64CMPB_0(v *Value) bool {
b := v.Block
// match: (CMPB x (MOVLconst [c]))
- // cond:
// result: (CMPBconst x [int64(int8(c))])
for {
_ = v.Args[1]
return true
}
// match: (CMPB (MOVLconst [c]) x)
- // cond:
// result: (InvertFlags (CMPBconst x [int64(int8(c))]))
for {
x := v.Args[1]
return true
}
// match: (CMPBconst (ANDL x y) [0])
- // cond:
// result: (TESTB x y)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPBconst (ANDLconst [c] x) [0])
- // cond:
// result: (TESTBconst [int64(int8(c))] x)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPBconst x [0])
- // cond:
// result: (TESTB x x)
for {
if v.AuxInt != 0 {
func rewriteValueAMD64_OpAMD64CMPL_0(v *Value) bool {
b := v.Block
// match: (CMPL x (MOVLconst [c]))
- // cond:
// result: (CMPLconst x [c])
for {
_ = v.Args[1]
return true
}
// match: (CMPL (MOVLconst [c]) x)
- // cond:
// result: (InvertFlags (CMPLconst x [c]))
for {
x := v.Args[1]
return true
}
// match: (CMPLconst (ANDL x y) [0])
- // cond:
// result: (TESTL x y)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPLconst (ANDLconst [c] x) [0])
- // cond:
// result: (TESTLconst [c] x)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPLconst x [0])
- // cond:
// result: (TESTL x x)
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64CMPQconst_0(v *Value) bool {
// match: (CMPQconst (NEGQ (ADDQconst [-16] (ANDQconst [15] _))) [32])
- // cond:
// result: (FlagLT_ULT)
for {
if v.AuxInt != 32 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0.AuxInt != -16 {
+ if v_0_0.Op != OpAMD64ADDQconst || v_0_0.AuxInt != -16 {
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0.AuxInt != 15 {
+ if v_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0.AuxInt != 15 {
break
}
v.reset(OpAMD64FlagLT_ULT)
return true
}
// match: (CMPQconst (NEGQ (ADDQconst [ -8] (ANDQconst [7] _))) [32])
- // cond:
// result: (FlagLT_ULT)
for {
if v.AuxInt != 32 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0.AuxInt != -8 {
+ if v_0_0.Op != OpAMD64ADDQconst || v_0_0.AuxInt != -8 {
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0.AuxInt != 7 {
+ if v_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0.AuxInt != 7 {
break
}
v.reset(OpAMD64FlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64MOVBQZX {
- break
- }
- if !(0xFF < c) {
+ if v_0.Op != OpAMD64MOVBQZX || !(0xFF < c) {
break
}
v.reset(OpAMD64FlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64MOVWQZX {
- break
- }
- if !(0xFFFF < c) {
+ if v_0.Op != OpAMD64MOVWQZX || !(0xFFFF < c) {
break
}
v.reset(OpAMD64FlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpAMD64MOVLQZX {
- break
- }
- if !(0xFFFFFFFF < c) {
+ if v_0.Op != OpAMD64MOVLQZX || !(0xFFFFFFFF < c) {
break
}
v.reset(OpAMD64FlagLT_ULT)
return true
}
// match: (CMPQconst (ANDQ x y) [0])
- // cond:
// result: (TESTQ x y)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPQconst (ANDQconst [c] x) [0])
- // cond:
// result: (TESTQconst [c] x)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPQconst x [0])
- // cond:
// result: (TESTQ x x)
for {
if v.AuxInt != 0 {
func rewriteValueAMD64_OpAMD64CMPW_0(v *Value) bool {
b := v.Block
// match: (CMPW x (MOVLconst [c]))
- // cond:
// result: (CMPWconst x [int64(int16(c))])
for {
_ = v.Args[1]
return true
}
// match: (CMPW (MOVLconst [c]) x)
- // cond:
// result: (InvertFlags (CMPWconst x [int64(int16(c))]))
for {
x := v.Args[1]
return true
}
// match: (CMPWconst (ANDL x y) [0])
- // cond:
// result: (TESTW x y)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPWconst (ANDLconst [c] x) [0])
- // cond:
// result: (TESTWconst [int64(int16(c))] x)
for {
if v.AuxInt != 0 {
return true
}
// match: (CMPWconst x [0])
- // cond:
// result: (TESTW x x)
for {
if v.AuxInt != 0 {
return true
}
// match: (LEAL1 [c] {s} x (SHLLconst [1] y))
- // cond:
// result: (LEAL2 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL1 [c] {s} (SHLLconst [1] y) x)
- // cond:
// result: (LEAL2 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 1 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAL1 [c] {s} x (SHLLconst [2] y))
- // cond:
// result: (LEAL4 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL1 [c] {s} (SHLLconst [2] y) x)
- // cond:
// result: (LEAL4 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 2 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAL1 [c] {s} x (SHLLconst [3] y))
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 3 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL1 [c] {s} (SHLLconst [3] y) x)
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 3 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAL2 [c] {s} x (SHLLconst [1] y))
- // cond:
// result: (LEAL4 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL2 [c] {s} x (SHLLconst [2] y))
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAL4 [c] {s} x (SHLLconst [1] y))
- // cond:
// result: (LEAL8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLLconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAQ1 [c] {s} x (SHLQconst [1] y))
- // cond:
// result: (LEAQ2 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAQ1 [c] {s} (SHLQconst [1] y) x)
- // cond:
// result: (LEAQ2 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 1 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAQ1 [c] {s} x (SHLQconst [2] y))
- // cond:
// result: (LEAQ4 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAQ1 [c] {s} (SHLQconst [2] y) x)
- // cond:
// result: (LEAQ4 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 2 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAQ1 [c] {s} x (SHLQconst [3] y))
- // cond:
// result: (LEAQ8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAQ1 [c] {s} (SHLQconst [3] y) x)
- // cond:
// result: (LEAQ8 [c] {s} x y)
for {
c := v.AuxInt
s := v.Aux
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 3 {
break
}
y := v_0.Args[0]
return true
}
// match: (LEAQ2 [c] {s} x (SHLQconst [1] y))
- // cond:
// result: (LEAQ4 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAQ2 [c] {s} x (SHLQconst [2] y))
- // cond:
// result: (LEAQ8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
y := v_1.Args[0]
return true
}
// match: (LEAQ4 [c] {s} x (SHLQconst [1] y))
- // cond:
// result: (LEAQ8 [c] {s} x y)
for {
c := v.AuxInt
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (MOVBQSX (MOVBQSX x))
- // cond:
// result: (MOVBQSX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBQZX (ANDLconst [c] x))
- // cond:
// result: (ANDLconst [c & 0xff] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBQZX (MOVBQZX x))
- // cond:
// result: (MOVBQZX x)
for {
v_0 := v.Args[0]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpAMD64MOVLconst)
func rewriteValueAMD64_OpAMD64MOVBstore_10(v *Value) bool {
b := v.Block
// match: (MOVBstore [off] {sym} ptr (MOVBQSX x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBQZX x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
p := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpAMD64MOVBstore {
- break
- }
- if x0.AuxInt != i-1 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpAMD64MOVBstore || x0.AuxInt != i-1 || x0.Aux != s {
break
}
mem := x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpAMD64SHRWconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
- break
- }
- if !(x0.Uses == 1 && clobber(x0)) {
+ if x0_1.Op != OpAMD64SHRWconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] || !(x0.Uses == 1 && clobber(x0)) {
break
}
v.reset(OpAMD64MOVWstore)
p := v.Args[0]
w := v.Args[1]
x2 := v.Args[2]
- if x2.Op != OpAMD64MOVBstore {
- break
- }
- if x2.AuxInt != i-1 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpAMD64MOVBstore || x2.AuxInt != i-1 || x2.Aux != s {
break
}
_ = x2.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpAMD64SHRLconst {
- break
- }
- if x2_1.AuxInt != 8 {
- break
- }
- if w != x2_1.Args[0] {
+ if x2_1.Op != OpAMD64SHRLconst || x2_1.AuxInt != 8 || w != x2_1.Args[0] {
break
}
x1 := x2.Args[2]
- if x1.Op != OpAMD64MOVBstore {
- break
- }
- if x1.AuxInt != i-2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpAMD64MOVBstore || x1.AuxInt != i-2 || x1.Aux != s {
break
}
_ = x1.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpAMD64SHRLconst {
- break
- }
- if x1_1.AuxInt != 16 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpAMD64SHRLconst || x1_1.AuxInt != 16 || w != x1_1.Args[0] {
break
}
x0 := x1.Args[2]
- if x0.Op != OpAMD64MOVBstore {
- break
- }
- if x0.AuxInt != i-3 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpAMD64MOVBstore || x0.AuxInt != i-3 || x0.Aux != s {
break
}
mem := x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpAMD64SHRLconst {
- break
- }
- if x0_1.AuxInt != 24 {
- break
- }
- if w != x0_1.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x0_1.Op != OpAMD64SHRLconst || x0_1.AuxInt != 24 || w != x0_1.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpAMD64MOVLstore)
p := v.Args[0]
w := v.Args[1]
x6 := v.Args[2]
- if x6.Op != OpAMD64MOVBstore {
- break
- }
- if x6.AuxInt != i-1 {
- break
- }
- if x6.Aux != s {
+ if x6.Op != OpAMD64MOVBstore || x6.AuxInt != i-1 || x6.Aux != s {
break
}
_ = x6.Args[2]
break
}
x6_1 := x6.Args[1]
- if x6_1.Op != OpAMD64SHRQconst {
- break
- }
- if x6_1.AuxInt != 8 {
- break
- }
- if w != x6_1.Args[0] {
+ if x6_1.Op != OpAMD64SHRQconst || x6_1.AuxInt != 8 || w != x6_1.Args[0] {
break
}
x5 := x6.Args[2]
- if x5.Op != OpAMD64MOVBstore {
- break
- }
- if x5.AuxInt != i-2 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpAMD64MOVBstore || x5.AuxInt != i-2 || x5.Aux != s {
break
}
_ = x5.Args[2]
break
}
x5_1 := x5.Args[1]
- if x5_1.Op != OpAMD64SHRQconst {
- break
- }
- if x5_1.AuxInt != 16 {
- break
- }
- if w != x5_1.Args[0] {
+ if x5_1.Op != OpAMD64SHRQconst || x5_1.AuxInt != 16 || w != x5_1.Args[0] {
break
}
x4 := x5.Args[2]
- if x4.Op != OpAMD64MOVBstore {
- break
- }
- if x4.AuxInt != i-3 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpAMD64MOVBstore || x4.AuxInt != i-3 || x4.Aux != s {
break
}
_ = x4.Args[2]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpAMD64SHRQconst {
- break
- }
- if x4_1.AuxInt != 24 {
- break
- }
- if w != x4_1.Args[0] {
+ if x4_1.Op != OpAMD64SHRQconst || x4_1.AuxInt != 24 || w != x4_1.Args[0] {
break
}
x3 := x4.Args[2]
- if x3.Op != OpAMD64MOVBstore {
- break
- }
- if x3.AuxInt != i-4 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpAMD64MOVBstore || x3.AuxInt != i-4 || x3.Aux != s {
break
}
_ = x3.Args[2]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpAMD64SHRQconst {
- break
- }
- if x3_1.AuxInt != 32 {
- break
- }
- if w != x3_1.Args[0] {
+ if x3_1.Op != OpAMD64SHRQconst || x3_1.AuxInt != 32 || w != x3_1.Args[0] {
break
}
x2 := x3.Args[2]
- if x2.Op != OpAMD64MOVBstore {
- break
- }
- if x2.AuxInt != i-5 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpAMD64MOVBstore || x2.AuxInt != i-5 || x2.Aux != s {
break
}
_ = x2.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpAMD64SHRQconst {
- break
- }
- if x2_1.AuxInt != 40 {
- break
- }
- if w != x2_1.Args[0] {
+ if x2_1.Op != OpAMD64SHRQconst || x2_1.AuxInt != 40 || w != x2_1.Args[0] {
break
}
x1 := x2.Args[2]
- if x1.Op != OpAMD64MOVBstore {
- break
- }
- if x1.AuxInt != i-6 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpAMD64MOVBstore || x1.AuxInt != i-6 || x1.Aux != s {
break
}
_ = x1.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpAMD64SHRQconst {
- break
- }
- if x1_1.AuxInt != 48 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpAMD64SHRQconst || x1_1.AuxInt != 48 || w != x1_1.Args[0] {
break
}
x0 := x1.Args[2]
- if x0.Op != OpAMD64MOVBstore {
- break
- }
- if x0.AuxInt != i-7 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpAMD64MOVBstore || x0.AuxInt != i-7 || x0.Aux != s {
break
}
mem := x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpAMD64SHRQconst {
- break
- }
- if x0_1.AuxInt != 56 {
- break
- }
- if w != x0_1.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
+ if x0_1.Op != OpAMD64SHRQconst || x0_1.AuxInt != 56 || w != x0_1.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
break
}
v.reset(OpAMD64MOVQstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHRWconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpAMD64SHRWconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHRLconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpAMD64SHRLconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHRQconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpAMD64SHRQconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpAMD64SHRWconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpAMD64SHRWconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpAMD64SHRLconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpAMD64SHRLconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i+1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i+1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpAMD64SHRQconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpAMD64SHRQconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpAMD64SHRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstore)
mem := x1.Args[1]
p2 := x1.Args[0]
mem2 := v.Args[2]
- if mem2.Op != OpAMD64MOVBstore {
- break
- }
- if mem2.AuxInt != i-1 {
- break
- }
- if mem2.Aux != s {
+ if mem2.Op != OpAMD64MOVBstore || mem2.AuxInt != i-1 || mem2.Aux != s {
break
}
_ = mem2.Args[2]
break
}
x2 := mem2.Args[1]
- if x2.Op != OpAMD64MOVBload {
- break
- }
- if x2.AuxInt != j-1 {
- break
- }
- if x2.Aux != s2 {
+ if x2.Op != OpAMD64MOVBload || x2.AuxInt != j-1 || x2.Aux != s2 {
break
}
_ = x2.Args[1]
- if p2 != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if mem != mem2.Args[2] {
- break
- }
- if !(x1.Uses == 1 && x2.Uses == 1 && mem2.Uses == 1 && clobber(x1) && clobber(x2) && clobber(mem2)) {
+ if p2 != x2.Args[0] || mem != x2.Args[1] || mem != mem2.Args[2] || !(x1.Uses == 1 && x2.Uses == 1 && mem2.Uses == 1 && clobber(x1) && clobber(x2) && clobber(mem2)) {
break
}
v.reset(OpAMD64MOVWstore)
return true
}
// match: (MOVBstoreconst [x] {sym} (ADDQ ptr idx) mem)
- // cond:
// result: (MOVBstoreconstidx1 [x] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreconst)
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreconst)
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreconstidx1)
idx := v.Args[1]
w := v.Args[2]
x0 := v.Args[3]
- if x0.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x0.AuxInt != i-1 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpAMD64MOVBstoreidx1 || x0.AuxInt != i-1 || x0.Aux != s {
break
}
mem := x0.Args[3]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
+ if p != x0.Args[0] || idx != x0.Args[1] {
break
}
x0_2 := x0.Args[2]
- if x0_2.Op != OpAMD64SHRWconst {
- break
- }
- if x0_2.AuxInt != 8 {
- break
- }
- if w != x0_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && clobber(x0)) {
+ if x0_2.Op != OpAMD64SHRWconst || x0_2.AuxInt != 8 || w != x0_2.Args[0] || !(x0.Uses == 1 && clobber(x0)) {
break
}
v.reset(OpAMD64MOVWstoreidx1)
idx := v.Args[1]
w := v.Args[2]
x2 := v.Args[3]
- if x2.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x2.AuxInt != i-1 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpAMD64MOVBstoreidx1 || x2.AuxInt != i-1 || x2.Aux != s {
break
}
_ = x2.Args[3]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
+ if p != x2.Args[0] || idx != x2.Args[1] {
break
}
x2_2 := x2.Args[2]
- if x2_2.Op != OpAMD64SHRLconst {
- break
- }
- if x2_2.AuxInt != 8 {
- break
- }
- if w != x2_2.Args[0] {
+ if x2_2.Op != OpAMD64SHRLconst || x2_2.AuxInt != 8 || w != x2_2.Args[0] {
break
}
x1 := x2.Args[3]
- if x1.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x1.AuxInt != i-2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpAMD64MOVBstoreidx1 || x1.AuxInt != i-2 || x1.Aux != s {
break
}
_ = x1.Args[3]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
+ if p != x1.Args[0] || idx != x1.Args[1] {
break
}
x1_2 := x1.Args[2]
- if x1_2.Op != OpAMD64SHRLconst {
- break
- }
- if x1_2.AuxInt != 16 {
- break
- }
- if w != x1_2.Args[0] {
+ if x1_2.Op != OpAMD64SHRLconst || x1_2.AuxInt != 16 || w != x1_2.Args[0] {
break
}
x0 := x1.Args[3]
- if x0.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x0.AuxInt != i-3 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpAMD64MOVBstoreidx1 || x0.AuxInt != i-3 || x0.Aux != s {
break
}
mem := x0.Args[3]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
+ if p != x0.Args[0] || idx != x0.Args[1] {
break
}
x0_2 := x0.Args[2]
- if x0_2.Op != OpAMD64SHRLconst {
- break
- }
- if x0_2.AuxInt != 24 {
- break
- }
- if w != x0_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x0_2.Op != OpAMD64SHRLconst || x0_2.AuxInt != 24 || w != x0_2.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
idx := v.Args[1]
w := v.Args[2]
x6 := v.Args[3]
- if x6.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x6.AuxInt != i-1 {
- break
- }
- if x6.Aux != s {
+ if x6.Op != OpAMD64MOVBstoreidx1 || x6.AuxInt != i-1 || x6.Aux != s {
break
}
_ = x6.Args[3]
- if p != x6.Args[0] {
- break
- }
- if idx != x6.Args[1] {
+ if p != x6.Args[0] || idx != x6.Args[1] {
break
}
x6_2 := x6.Args[2]
- if x6_2.Op != OpAMD64SHRQconst {
- break
- }
- if x6_2.AuxInt != 8 {
- break
- }
- if w != x6_2.Args[0] {
+ if x6_2.Op != OpAMD64SHRQconst || x6_2.AuxInt != 8 || w != x6_2.Args[0] {
break
}
x5 := x6.Args[3]
- if x5.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x5.AuxInt != i-2 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpAMD64MOVBstoreidx1 || x5.AuxInt != i-2 || x5.Aux != s {
break
}
_ = x5.Args[3]
- if p != x5.Args[0] {
- break
- }
- if idx != x5.Args[1] {
+ if p != x5.Args[0] || idx != x5.Args[1] {
break
}
x5_2 := x5.Args[2]
- if x5_2.Op != OpAMD64SHRQconst {
- break
- }
- if x5_2.AuxInt != 16 {
- break
- }
- if w != x5_2.Args[0] {
+ if x5_2.Op != OpAMD64SHRQconst || x5_2.AuxInt != 16 || w != x5_2.Args[0] {
break
}
x4 := x5.Args[3]
- if x4.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x4.AuxInt != i-3 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpAMD64MOVBstoreidx1 || x4.AuxInt != i-3 || x4.Aux != s {
break
}
_ = x4.Args[3]
- if p != x4.Args[0] {
- break
- }
- if idx != x4.Args[1] {
+ if p != x4.Args[0] || idx != x4.Args[1] {
break
}
x4_2 := x4.Args[2]
- if x4_2.Op != OpAMD64SHRQconst {
- break
- }
- if x4_2.AuxInt != 24 {
- break
- }
- if w != x4_2.Args[0] {
+ if x4_2.Op != OpAMD64SHRQconst || x4_2.AuxInt != 24 || w != x4_2.Args[0] {
break
}
x3 := x4.Args[3]
- if x3.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x3.AuxInt != i-4 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpAMD64MOVBstoreidx1 || x3.AuxInt != i-4 || x3.Aux != s {
break
}
_ = x3.Args[3]
- if p != x3.Args[0] {
- break
- }
- if idx != x3.Args[1] {
+ if p != x3.Args[0] || idx != x3.Args[1] {
break
}
x3_2 := x3.Args[2]
- if x3_2.Op != OpAMD64SHRQconst {
- break
- }
- if x3_2.AuxInt != 32 {
- break
- }
- if w != x3_2.Args[0] {
+ if x3_2.Op != OpAMD64SHRQconst || x3_2.AuxInt != 32 || w != x3_2.Args[0] {
break
}
x2 := x3.Args[3]
- if x2.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x2.AuxInt != i-5 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpAMD64MOVBstoreidx1 || x2.AuxInt != i-5 || x2.Aux != s {
break
}
_ = x2.Args[3]
- if p != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
+ if p != x2.Args[0] || idx != x2.Args[1] {
break
}
x2_2 := x2.Args[2]
- if x2_2.Op != OpAMD64SHRQconst {
- break
- }
- if x2_2.AuxInt != 40 {
- break
- }
- if w != x2_2.Args[0] {
+ if x2_2.Op != OpAMD64SHRQconst || x2_2.AuxInt != 40 || w != x2_2.Args[0] {
break
}
x1 := x2.Args[3]
- if x1.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x1.AuxInt != i-6 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpAMD64MOVBstoreidx1 || x1.AuxInt != i-6 || x1.Aux != s {
break
}
_ = x1.Args[3]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
+ if p != x1.Args[0] || idx != x1.Args[1] {
break
}
x1_2 := x1.Args[2]
- if x1_2.Op != OpAMD64SHRQconst {
- break
- }
- if x1_2.AuxInt != 48 {
- break
- }
- if w != x1_2.Args[0] {
+ if x1_2.Op != OpAMD64SHRQconst || x1_2.AuxInt != 48 || w != x1_2.Args[0] {
break
}
x0 := x1.Args[3]
- if x0.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x0.AuxInt != i-7 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpAMD64MOVBstoreidx1 || x0.AuxInt != i-7 || x0.Aux != s {
break
}
mem := x0.Args[3]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
+ if p != x0.Args[0] || idx != x0.Args[1] {
break
}
x0_2 := x0.Args[2]
- if x0_2.Op != OpAMD64SHRQconst {
- break
- }
- if x0_2.AuxInt != 56 {
- break
- }
- if w != x0_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
+ if x0_2.Op != OpAMD64SHRQconst || x0_2.AuxInt != 56 || w != x0_2.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
break
}
v.reset(OpAMD64MOVQstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpAMD64SHRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRLconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpAMD64SHRLconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRQconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpAMD64SHRQconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpAMD64SHRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVBstoreidx1 {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVBstoreidx1 || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVWstoreidx1)
return true
}
// match: (MOVLQSX (MOVLQSX x))
- // cond:
// result: (MOVLQSX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVLQSX (MOVWQSX x))
- // cond:
// result: (MOVWQSX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVLQSX (MOVBQSX x))
- // cond:
// result: (MOVBQSX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVLQZX (ANDLconst [c] x))
- // cond:
// result: (ANDLconst [c] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVLQZX (MOVLQZX x))
- // cond:
// result: (MOVLQZX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVLQZX (MOVWQZX x))
- // cond:
// result: (MOVWQZX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVLQZX (MOVBQZX x))
- // cond:
// result: (MOVBQZX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVLload [off] {sym} ptr (MOVSSstore [off] {sym} ptr val _))
- // cond:
// result: (MOVLf2i val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64MOVSSstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpAMD64MOVSSstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpAMD64MOVQconst)
}
func rewriteValueAMD64_OpAMD64MOVLloadidx1_0(v *Value) bool {
// match: (MOVLloadidx1 [c] {sym} ptr (SHLQconst [2] idx) mem)
- // cond:
// result: (MOVLloadidx4 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVLloadidx1 [c] {sym} (SHLQconst [2] idx) ptr mem)
- // cond:
// result: (MOVLloadidx4 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVLloadidx1 [c] {sym} ptr (SHLQconst [3] idx) mem)
- // cond:
// result: (MOVLloadidx8 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVLloadidx1 [c] {sym} (SHLQconst [3] idx) ptr mem)
- // cond:
// result: (MOVLloadidx8 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[0]
}
func rewriteValueAMD64_OpAMD64MOVLstore_0(v *Value) bool {
// match: (MOVLstore [off] {sym} ptr (MOVLQSX x) mem)
- // cond:
// result: (MOVLstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVLstore [off] {sym} ptr (MOVLQZX x) mem)
- // cond:
// result: (MOVLstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHRQconst {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpAMD64SHRQconst || v_1.AuxInt != 32 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVLstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVLstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVLstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVLstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstore)
mem := x1.Args[1]
p2 := x1.Args[0]
mem2 := v.Args[2]
- if mem2.Op != OpAMD64MOVLstore {
- break
- }
- if mem2.AuxInt != i-4 {
- break
- }
- if mem2.Aux != s {
+ if mem2.Op != OpAMD64MOVLstore || mem2.AuxInt != i-4 || mem2.Aux != s {
break
}
_ = mem2.Args[2]
break
}
x2 := mem2.Args[1]
- if x2.Op != OpAMD64MOVLload {
- break
- }
- if x2.AuxInt != j-4 {
- break
- }
- if x2.Aux != s2 {
+ if x2.Op != OpAMD64MOVLload || x2.AuxInt != j-4 || x2.Aux != s2 {
break
}
_ = x2.Args[1]
- if p2 != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if mem != mem2.Args[2] {
- break
- }
- if !(x1.Uses == 1 && x2.Uses == 1 && mem2.Uses == 1 && clobber(x1) && clobber(x2) && clobber(mem2)) {
+ if p2 != x2.Args[0] || mem != x2.Args[1] || mem != mem2.Args[2] || !(x1.Uses == 1 && x2.Uses == 1 && mem2.Uses == 1 && clobber(x1) && clobber(x2) && clobber(mem2)) {
break
}
v.reset(OpAMD64MOVQstore)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64ADDLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64ADDLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64ADDLmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64ANDLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64ANDLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64ANDLmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64ORLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64ORLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64ORLmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64XORLload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64XORLload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64XORLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ADDLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ADDLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64SUBLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ANDLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ANDLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ORLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ORLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64XORLmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64XORLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64BTCLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64BTRLmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64BTSLmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64ADDLconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64ANDLconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64ORLconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64XORLconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64BTCLconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64BTRLconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVLload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVLload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64BTSLconstmodify)
return true
}
// match: (MOVLstore [off] {sym} ptr (MOVLf2i val) mem)
- // cond:
// result: (MOVSSstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
return true
}
// match: (MOVLstoreconst [x] {sym} (ADDQ ptr idx) mem)
- // cond:
// result: (MOVLstoreconstidx1 [x] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstore)
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstore)
b := v.Block
typ := &b.Func.Config.Types
// match: (MOVLstoreconstidx1 [c] {sym} ptr (SHLQconst [2] idx) mem)
- // cond:
// result: (MOVLstoreconstidx4 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstoreidx1)
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstoreidx1)
}
func rewriteValueAMD64_OpAMD64MOVLstoreidx1_0(v *Value) bool {
// match: (MOVLstoreidx1 [c] {sym} ptr (SHLQconst [2] idx) val mem)
- // cond:
// result: (MOVLstoreidx4 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVLstoreidx1 [c] {sym} ptr (SHLQconst [3] idx) val mem)
- // cond:
// result: (MOVLstoreidx8 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRQconst {
- break
- }
- if v_2.AuxInt != 32 {
+ if v_2.Op != OpAMD64SHRQconst || v_2.AuxInt != 32 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVLstoreidx1 {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVLstoreidx1 || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVLstoreidx1 {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVLstoreidx1 || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRQconst {
- break
- }
- if v_2.AuxInt != 32 {
+ if v_2.Op != OpAMD64SHRQconst || v_2.AuxInt != 32 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVLstoreidx4 {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVLstoreidx4 || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVLstoreidx4 {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVLstoreidx4 || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVQstoreidx1)
return true
}
// match: (MOVQload [off] {sym} ptr (MOVSDstore [off] {sym} ptr val _))
- // cond:
// result: (MOVQf2i val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64MOVSDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpAMD64MOVSDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpAMD64MOVQconst)
}
func rewriteValueAMD64_OpAMD64MOVQloadidx1_0(v *Value) bool {
// match: (MOVQloadidx1 [c] {sym} ptr (SHLQconst [3] idx) mem)
- // cond:
// result: (MOVQloadidx8 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVQloadidx1 [c] {sym} (SHLQconst [3] idx) ptr mem)
- // cond:
// result: (MOVQloadidx8 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[0]
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64ADDQload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64ADDQload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64ADDQmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64ANDQload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64ANDQload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64ANDQmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64ORQload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64ORQload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64ORQmodify)
mem := v.Args[2]
ptr := v.Args[0]
y := v.Args[1]
- if y.Op != OpAMD64XORQload {
- break
- }
- if y.AuxInt != off {
- break
- }
- if y.Aux != sym {
+ if y.Op != OpAMD64XORQload || y.AuxInt != off || y.Aux != sym {
break
}
_ = y.Args[2]
x := y.Args[0]
- if ptr != y.Args[1] {
- break
- }
- if mem != y.Args[2] {
- break
- }
- if !(y.Uses == 1 && clobber(y)) {
+ if ptr != y.Args[1] || mem != y.Args[2] || !(y.Uses == 1 && clobber(y)) {
break
}
v.reset(OpAMD64XORQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ADDQmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ADDQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64SUBQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ANDQmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ANDQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ORQmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64ORQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64XORQmodify)
_ = y.Args[1]
x := y.Args[0]
l := y.Args[1]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64XORQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64BTCQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64BTRQmodify)
}
x := y.Args[1]
l := y.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
- if ptr != l.Args[0] {
- break
- }
- if mem != l.Args[1] {
- break
- }
- if !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
+ if ptr != l.Args[0] || mem != l.Args[1] || !(y.Uses == 1 && l.Uses == 1 && clobber(y) && clobber(l)) {
break
}
v.reset(OpAMD64BTSQmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64ADDQconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64ANDQconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64ORQconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64XORQconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64BTCQconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64BTRQconstmodify)
}
c := a.AuxInt
l := a.Args[0]
- if l.Op != OpAMD64MOVQload {
- break
- }
- if l.AuxInt != off {
- break
- }
- if l.Aux != sym {
+ if l.Op != OpAMD64MOVQload || l.AuxInt != off || l.Aux != sym {
break
}
_ = l.Args[1]
ptr2 := l.Args[0]
- if mem != l.Args[1] {
- break
- }
- if !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
+ if mem != l.Args[1] || !(isSamePtr(ptr, ptr2) && a.Uses == 1 && l.Uses == 1 && validValAndOff(c, off) && clobber(l) && clobber(a)) {
break
}
v.reset(OpAMD64BTSQconstmodify)
return true
}
// match: (MOVQstore [off] {sym} ptr (MOVQf2i val) mem)
- // cond:
// result: (MOVSDstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
return true
}
// match: (MOVQstoreconst [x] {sym} (ADDQ ptr idx) mem)
- // cond:
// result: (MOVQstoreconstidx1 [x] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(config.useSSE && x.Uses == 1 && ValAndOff(c2).Off()+8 == ValAndOff(c).Off() && ValAndOff(c).Val() == 0 && ValAndOff(c2).Val() == 0 && clobber(x)) {
+ if p != x.Args[0] || !(config.useSSE && x.Uses == 1 && ValAndOff(c2).Off()+8 == ValAndOff(c).Off() && ValAndOff(c).Val() == 0 && ValAndOff(c2).Val() == 0 && clobber(x)) {
break
}
v.reset(OpAMD64MOVOstore)
}
func rewriteValueAMD64_OpAMD64MOVQstoreconstidx1_0(v *Value) bool {
// match: (MOVQstoreconstidx1 [c] {sym} ptr (SHLQconst [3] idx) mem)
- // cond:
// result: (MOVQstoreconstidx8 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
}
func rewriteValueAMD64_OpAMD64MOVQstoreidx1_0(v *Value) bool {
// match: (MOVQstoreidx1 [c] {sym} ptr (SHLQconst [3] idx) val mem)
- // cond:
// result: (MOVQstoreidx8 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVSDload [off] {sym} ptr (MOVQstore [off] {sym} ptr val _))
- // cond:
// result: (MOVQi2f val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64MOVQstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpAMD64MOVQstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
}
func rewriteValueAMD64_OpAMD64MOVSDloadidx1_0(v *Value) bool {
// match: (MOVSDloadidx1 [c] {sym} ptr (SHLQconst [3] idx) mem)
- // cond:
// result: (MOVSDloadidx8 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVSDstore [off] {sym} ptr (MOVQi2f val) mem)
- // cond:
// result: (MOVQstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
}
func rewriteValueAMD64_OpAMD64MOVSDstoreidx1_0(v *Value) bool {
// match: (MOVSDstoreidx1 [c] {sym} ptr (SHLQconst [3] idx) val mem)
- // cond:
// result: (MOVSDstoreidx8 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVSSload [off] {sym} ptr (MOVLstore [off] {sym} ptr val _))
- // cond:
// result: (MOVLi2f val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64MOVLstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpAMD64MOVLstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
}
func rewriteValueAMD64_OpAMD64MOVSSloadidx1_0(v *Value) bool {
// match: (MOVSSloadidx1 [c] {sym} ptr (SHLQconst [2] idx) mem)
- // cond:
// result: (MOVSSloadidx4 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVSSstore [off] {sym} ptr (MOVLi2f val) mem)
- // cond:
// result: (MOVLstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
}
func rewriteValueAMD64_OpAMD64MOVSSstoreidx1_0(v *Value) bool {
// match: (MOVSSstoreidx1 [c] {sym} ptr (SHLQconst [2] idx) val mem)
- // cond:
// result: (MOVSSstoreidx4 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWQSX (MOVWQSX x))
- // cond:
// result: (MOVWQSX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWQSX (MOVBQSX x))
- // cond:
// result: (MOVBQSX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWQZX (ANDLconst [c] x))
- // cond:
// result: (ANDLconst [c & 0xffff] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWQZX (MOVWQZX x))
- // cond:
// result: (MOVWQZX x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWQZX (MOVBQZX x))
- // cond:
// result: (MOVBQZX x)
for {
v_0 := v.Args[0]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpAMD64MOVLconst)
}
func rewriteValueAMD64_OpAMD64MOVWloadidx1_0(v *Value) bool {
// match: (MOVWloadidx1 [c] {sym} ptr (SHLQconst [1] idx) mem)
- // cond:
// result: (MOVWloadidx2 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWloadidx1 [c] {sym} (SHLQconst [1] idx) ptr mem)
- // cond:
// result: (MOVWloadidx2 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[0]
}
func rewriteValueAMD64_OpAMD64MOVWstore_0(v *Value) bool {
// match: (MOVWstore [off] {sym} ptr (MOVWQSX x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWQZX x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpAMD64SHRLconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVWstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHRQconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpAMD64SHRQconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVWstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVWstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpAMD64SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpAMD64MOVWstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstore)
mem := x1.Args[1]
p2 := x1.Args[0]
mem2 := v.Args[2]
- if mem2.Op != OpAMD64MOVWstore {
- break
- }
- if mem2.AuxInt != i-2 {
- break
- }
- if mem2.Aux != s {
+ if mem2.Op != OpAMD64MOVWstore || mem2.AuxInt != i-2 || mem2.Aux != s {
break
}
_ = mem2.Args[2]
break
}
x2 := mem2.Args[1]
- if x2.Op != OpAMD64MOVWload {
- break
- }
- if x2.AuxInt != j-2 {
- break
- }
- if x2.Aux != s2 {
+ if x2.Op != OpAMD64MOVWload || x2.AuxInt != j-2 || x2.Aux != s2 {
break
}
_ = x2.Args[1]
- if p2 != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if mem != mem2.Args[2] {
- break
- }
- if !(x1.Uses == 1 && x2.Uses == 1 && mem2.Uses == 1 && clobber(x1) && clobber(x2) && clobber(mem2)) {
+ if p2 != x2.Args[0] || mem != x2.Args[1] || mem != mem2.Args[2] || !(x1.Uses == 1 && x2.Uses == 1 && mem2.Uses == 1 && clobber(x1) && clobber(x2) && clobber(mem2)) {
break
}
v.reset(OpAMD64MOVLstore)
return true
}
// match: (MOVWstoreconst [x] {sym} (ADDQ ptr idx) mem)
- // cond:
// result: (MOVWstoreconstidx1 [x] {sym} ptr idx mem)
for {
x := v.AuxInt
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreconst)
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreconst)
}
func rewriteValueAMD64_OpAMD64MOVWstoreconstidx1_0(v *Value) bool {
// match: (MOVWstoreconstidx1 [c] {sym} ptr (SHLQconst [1] idx) mem)
- // cond:
// result: (MOVWstoreconstidx2 [c] {sym} ptr idx mem)
for {
c := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreconstidx1)
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if i != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || i != x.Args[1] || !(x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreconstidx1)
}
func rewriteValueAMD64_OpAMD64MOVWstoreidx1_0(v *Value) bool {
// match: (MOVWstoreidx1 [c] {sym} ptr (SHLQconst [1] idx) val mem)
- // cond:
// result: (MOVWstoreidx2 [c] {sym} ptr idx val mem)
for {
c := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SHLQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64SHLQconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpAMD64SHRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRQconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpAMD64SHRQconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpAMD64SHRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVWstoreidx1 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstoreidx1 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpAMD64SHRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVWstoreidx2 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstoreidx2 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64SHRQconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpAMD64SHRQconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVWstoreidx2 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstoreidx2 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpAMD64MOVWstoreidx2 {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpAMD64MOVWstoreidx2 || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpAMD64SHRQconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpAMD64SHRQconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpAMD64MOVLstoreidx1)
}
func rewriteValueAMD64_OpAMD64MULL_0(v *Value) bool {
// match: (MULL x (MOVLconst [c]))
- // cond:
// result: (MULLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (MULL (MOVLconst [c]) x)
- // cond:
// result: (MULLconst [c] x)
for {
x := v.Args[1]
func rewriteValueAMD64_OpAMD64MULLconst_0(v *Value) bool {
b := v.Block
// match: (MULLconst [c] (MULLconst [d] x))
- // cond:
// result: (MULLconst [int64(int32(c * d))] x)
for {
c := v.AuxInt
return true
}
// match: (MULLconst [-9] x)
- // cond:
// result: (NEGL (LEAL8 <v.Type> x x))
for {
if v.AuxInt != -9 {
return true
}
// match: (MULLconst [-5] x)
- // cond:
// result: (NEGL (LEAL4 <v.Type> x x))
for {
if v.AuxInt != -5 {
return true
}
// match: (MULLconst [-3] x)
- // cond:
// result: (NEGL (LEAL2 <v.Type> x x))
for {
if v.AuxInt != -3 {
return true
}
// match: (MULLconst [-1] x)
- // cond:
// result: (NEGL x)
for {
if v.AuxInt != -1 {
return true
}
// match: (MULLconst [ 0] _)
- // cond:
// result: (MOVLconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (MULLconst [ 1] x)
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (MULLconst [ 3] x)
- // cond:
// result: (LEAL2 x x)
for {
if v.AuxInt != 3 {
return true
}
// match: (MULLconst [ 5] x)
- // cond:
// result: (LEAL4 x x)
for {
if v.AuxInt != 5 {
return true
}
// match: (MULLconst [ 7] x)
- // cond:
// result: (LEAL2 x (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 7 {
func rewriteValueAMD64_OpAMD64MULLconst_10(v *Value) bool {
b := v.Block
// match: (MULLconst [ 9] x)
- // cond:
// result: (LEAL8 x x)
for {
if v.AuxInt != 9 {
return true
}
// match: (MULLconst [11] x)
- // cond:
// result: (LEAL2 x (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 11 {
return true
}
// match: (MULLconst [13] x)
- // cond:
// result: (LEAL4 x (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 13 {
return true
}
// match: (MULLconst [19] x)
- // cond:
// result: (LEAL2 x (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 19 {
return true
}
// match: (MULLconst [21] x)
- // cond:
// result: (LEAL4 x (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 21 {
return true
}
// match: (MULLconst [25] x)
- // cond:
// result: (LEAL8 x (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 25 {
return true
}
// match: (MULLconst [27] x)
- // cond:
// result: (LEAL8 (LEAL2 <v.Type> x x) (LEAL2 <v.Type> x x))
for {
if v.AuxInt != 27 {
return true
}
// match: (MULLconst [37] x)
- // cond:
// result: (LEAL4 x (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 37 {
return true
}
// match: (MULLconst [41] x)
- // cond:
// result: (LEAL8 x (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 41 {
return true
}
// match: (MULLconst [45] x)
- // cond:
// result: (LEAL8 (LEAL4 <v.Type> x x) (LEAL4 <v.Type> x x))
for {
if v.AuxInt != 45 {
func rewriteValueAMD64_OpAMD64MULLconst_20(v *Value) bool {
b := v.Block
// match: (MULLconst [73] x)
- // cond:
// result: (LEAL8 x (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 73 {
return true
}
// match: (MULLconst [81] x)
- // cond:
// result: (LEAL8 (LEAL8 <v.Type> x x) (LEAL8 <v.Type> x x))
for {
if v.AuxInt != 81 {
}
func rewriteValueAMD64_OpAMD64MULLconst_30(v *Value) bool {
// match: (MULLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [int64(int32(c*d))])
for {
c := v.AuxInt
return true
}
// match: (MULQconst [-9] x)
- // cond:
// result: (NEGQ (LEAQ8 <v.Type> x x))
for {
if v.AuxInt != -9 {
return true
}
// match: (MULQconst [-5] x)
- // cond:
// result: (NEGQ (LEAQ4 <v.Type> x x))
for {
if v.AuxInt != -5 {
return true
}
// match: (MULQconst [-3] x)
- // cond:
// result: (NEGQ (LEAQ2 <v.Type> x x))
for {
if v.AuxInt != -3 {
return true
}
// match: (MULQconst [-1] x)
- // cond:
// result: (NEGQ x)
for {
if v.AuxInt != -1 {
return true
}
// match: (MULQconst [ 0] _)
- // cond:
// result: (MOVQconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (MULQconst [ 1] x)
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (MULQconst [ 3] x)
- // cond:
// result: (LEAQ2 x x)
for {
if v.AuxInt != 3 {
return true
}
// match: (MULQconst [ 5] x)
- // cond:
// result: (LEAQ4 x x)
for {
if v.AuxInt != 5 {
return true
}
// match: (MULQconst [ 7] x)
- // cond:
// result: (LEAQ2 x (LEAQ2 <v.Type> x x))
for {
if v.AuxInt != 7 {
func rewriteValueAMD64_OpAMD64MULQconst_10(v *Value) bool {
b := v.Block
// match: (MULQconst [ 9] x)
- // cond:
// result: (LEAQ8 x x)
for {
if v.AuxInt != 9 {
return true
}
// match: (MULQconst [11] x)
- // cond:
// result: (LEAQ2 x (LEAQ4 <v.Type> x x))
for {
if v.AuxInt != 11 {
return true
}
// match: (MULQconst [13] x)
- // cond:
// result: (LEAQ4 x (LEAQ2 <v.Type> x x))
for {
if v.AuxInt != 13 {
return true
}
// match: (MULQconst [19] x)
- // cond:
// result: (LEAQ2 x (LEAQ8 <v.Type> x x))
for {
if v.AuxInt != 19 {
return true
}
// match: (MULQconst [21] x)
- // cond:
// result: (LEAQ4 x (LEAQ4 <v.Type> x x))
for {
if v.AuxInt != 21 {
return true
}
// match: (MULQconst [25] x)
- // cond:
// result: (LEAQ8 x (LEAQ2 <v.Type> x x))
for {
if v.AuxInt != 25 {
return true
}
// match: (MULQconst [27] x)
- // cond:
// result: (LEAQ8 (LEAQ2 <v.Type> x x) (LEAQ2 <v.Type> x x))
for {
if v.AuxInt != 27 {
return true
}
// match: (MULQconst [37] x)
- // cond:
// result: (LEAQ4 x (LEAQ8 <v.Type> x x))
for {
if v.AuxInt != 37 {
return true
}
// match: (MULQconst [41] x)
- // cond:
// result: (LEAQ8 x (LEAQ4 <v.Type> x x))
for {
if v.AuxInt != 41 {
return true
}
// match: (MULQconst [45] x)
- // cond:
// result: (LEAQ8 (LEAQ4 <v.Type> x x) (LEAQ4 <v.Type> x x))
for {
if v.AuxInt != 45 {
func rewriteValueAMD64_OpAMD64MULQconst_20(v *Value) bool {
b := v.Block
// match: (MULQconst [73] x)
- // cond:
// result: (LEAQ8 x (LEAQ8 <v.Type> x x))
for {
if v.AuxInt != 73 {
return true
}
// match: (MULQconst [81] x)
- // cond:
// result: (LEAQ8 (LEAQ8 <v.Type> x x) (LEAQ8 <v.Type> x x))
for {
if v.AuxInt != 81 {
}
func rewriteValueAMD64_OpAMD64MULQconst_30(v *Value) bool {
// match: (MULQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [c*d])
for {
c := v.AuxInt
return true
}
// match: (MULSDload x [off] {sym} ptr (MOVQstore [off] {sym} ptr y _))
- // cond:
// result: (MULSD x (MOVQi2f y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVQstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVQstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (MULSSload x [off] {sym} ptr (MOVLstore [off] {sym} ptr y _))
- // cond:
// result: (MULSS x (MOVLi2f y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVLstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVLstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
func rewriteValueAMD64_OpAMD64NEGL_0(v *Value) bool {
// match: (NEGL (NEGL x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (NEGL (MOVLconst [c]))
- // cond:
// result: (MOVLconst [int64(int32(-c))])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64NEGQ_0(v *Value) bool {
// match: (NEGQ (NEGQ x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (NEGQ (MOVQconst [c]))
- // cond:
// result: (MOVQconst [-c])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64NOTL_0(v *Value) bool {
// match: (NOTL (MOVLconst [c]))
- // cond:
// result: (MOVLconst [^c])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64NOTQ_0(v *Value) bool {
// match: (NOTQ (MOVQconst [c]))
- // cond:
// result: (MOVQconst [^c])
for {
v_0 := v.Args[0]
}
y := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVLconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTSL)
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVLconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTSL)
return true
}
// match: (ORL x (MOVLconst [c]))
- // cond:
// result: (ORLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ORL (MOVLconst [c]) x)
- // cond:
// result: (ORLconst [c] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpAMD64ROLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpAMD64ROLLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 16-c && c < 16 && t.Size() == 2) {
+ if x != v_1.Args[0] || !(d == 16-c && c < 16 && t.Size() == 2) {
break
}
v.reset(OpAMD64ROLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 16-c && c < 16 && t.Size() == 2) {
+ if x != v_1.Args[0] || !(d == 16-c && c < 16 && t.Size() == 2) {
break
}
v.reset(OpAMD64ROLWconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 8-c && c < 8 && t.Size() == 1) {
+ if x != v_1.Args[0] || !(d == 8-c && c < 8 && t.Size() == 1) {
break
}
v.reset(OpAMD64ROLBconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 8-c && c < 8 && t.Size() == 1) {
+ if x != v_1.Args[0] || !(d == 8-c && c < 8 && t.Size() == 1) {
break
}
v.reset(OpAMD64ROLBconst)
return true
}
// match: (ORL (SHLL x y) (ANDL (SHRL x (NEGQ y)) (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32]))))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGQ || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_1_0.AuxInt != 32 {
+ if v_1_1_0.Op != OpAMD64CMPQconst || v_1_1_0.AuxInt != 32 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -32 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDQconst || v_1_1_0_0_0.AuxInt != -32 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0_0_0.AuxInt != 31 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64ROLL)
return true
}
// match: (ORL (SHLL x y) (ANDL (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32])) (SHRL x (NEGQ y))))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_0_0.AuxInt != 32 {
+ if v_1_0_0.Op != OpAMD64CMPQconst || v_1_0_0.AuxInt != 32 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -32 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDQconst || v_1_0_0_0_0.AuxInt != -32 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst || v_1_0_0_0_0_0.AuxInt != 31 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGQ || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64ROLL)
return true
}
// match: (ORL (ANDL (SHRL x (NEGQ y)) (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32]))) (SHLL x y))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_1_0.AuxInt != 32 {
+ if v_0_1_0.Op != OpAMD64CMPQconst || v_0_1_0.AuxInt != 32 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -32 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDQconst || v_0_1_0_0_0.AuxInt != -32 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0_0_0.AuxInt != 31 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLL)
return true
}
// match: (ORL (ANDL (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32])) (SHRL x (NEGQ y))) (SHLL x y))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_0_0.AuxInt != 32 {
+ if v_0_0_0.Op != OpAMD64CMPQconst || v_0_0_0.AuxInt != 32 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -32 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDQconst || v_0_0_0_0_0.AuxInt != -32 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 31 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0_0_0_0.AuxInt != 31 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGQ || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLL)
return true
}
// match: (ORL (SHLL x y) (ANDL (SHRL x (NEGL y)) (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32]))))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGL || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_1_0.AuxInt != 32 {
+ if v_1_1_0.Op != OpAMD64CMPLconst || v_1_1_0.AuxInt != 32 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -32 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDLconst || v_1_1_0_0_0.AuxInt != -32 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0_0_0.AuxInt != 31 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64ROLL)
return true
}
// match: (ORL (SHLL x y) (ANDL (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32])) (SHRL x (NEGL y))))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_0_0.AuxInt != 32 {
+ if v_1_0_0.Op != OpAMD64CMPLconst || v_1_0_0.AuxInt != 32 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -32 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDLconst || v_1_0_0_0_0.AuxInt != -32 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst || v_1_0_0_0_0_0.AuxInt != 31 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGL || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64ROLL)
return true
}
// match: (ORL (ANDL (SHRL x (NEGL y)) (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32]))) (SHLL x y))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_1_0.AuxInt != 32 {
+ if v_0_1_0.Op != OpAMD64CMPLconst || v_0_1_0.AuxInt != 32 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -32 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDLconst || v_0_1_0_0_0.AuxInt != -32 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0_0_0.AuxInt != 31 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLL)
return true
}
// match: (ORL (ANDL (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32])) (SHRL x (NEGL y))) (SHLL x y))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_0_0.AuxInt != 32 {
+ if v_0_0_0.Op != OpAMD64CMPLconst || v_0_0_0.AuxInt != 32 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -32 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDLconst || v_0_0_0_0_0.AuxInt != -32 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 31 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst || v_0_0_0_0_0_0.AuxInt != 31 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGL || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLL)
}
func rewriteValueAMD64_OpAMD64ORL_20(v *Value) bool {
// match: (ORL (SHRL x y) (ANDL (SHLL x (NEGQ y)) (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32]))))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGQ || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_1_0.AuxInt != 32 {
+ if v_1_1_0.Op != OpAMD64CMPQconst || v_1_1_0.AuxInt != 32 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -32 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDQconst || v_1_1_0_0_0.AuxInt != -32 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0_0_0.AuxInt != 31 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64RORL)
return true
}
// match: (ORL (SHRL x y) (ANDL (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32])) (SHLL x (NEGQ y))))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_0_0.AuxInt != 32 {
+ if v_1_0_0.Op != OpAMD64CMPQconst || v_1_0_0.AuxInt != 32 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -32 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDQconst || v_1_0_0_0_0.AuxInt != -32 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst || v_1_0_0_0_0_0.AuxInt != 31 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGQ || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64RORL)
return true
}
// match: (ORL (ANDL (SHLL x (NEGQ y)) (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32]))) (SHRL x y))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_1_0.AuxInt != 32 {
+ if v_0_1_0.Op != OpAMD64CMPQconst || v_0_1_0.AuxInt != 32 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -32 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDQconst || v_0_1_0_0_0.AuxInt != -32 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0_0_0.AuxInt != 31 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORL)
return true
}
// match: (ORL (ANDL (SBBLcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [31]) [-32])) [32])) (SHLL x (NEGQ y))) (SHRL x y))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_0_0.AuxInt != 32 {
+ if v_0_0_0.Op != OpAMD64CMPQconst || v_0_0_0.AuxInt != 32 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -32 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDQconst || v_0_0_0_0_0.AuxInt != -32 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 31 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0_0_0_0.AuxInt != 31 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGQ || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORL)
return true
}
// match: (ORL (SHRL x y) (ANDL (SHLL x (NEGL y)) (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32]))))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGL || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_1_0.AuxInt != 32 {
+ if v_1_1_0.Op != OpAMD64CMPLconst || v_1_1_0.AuxInt != 32 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -32 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDLconst || v_1_1_0_0_0.AuxInt != -32 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0_0_0.AuxInt != 31 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64RORL)
return true
}
// match: (ORL (SHRL x y) (ANDL (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32])) (SHLL x (NEGL y))))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_0_0.AuxInt != 32 {
+ if v_1_0_0.Op != OpAMD64CMPLconst || v_1_0_0.AuxInt != 32 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -32 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDLconst || v_1_0_0_0_0.AuxInt != -32 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst || v_1_0_0_0_0_0.AuxInt != 31 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGL || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64RORL)
return true
}
// match: (ORL (ANDL (SHLL x (NEGL y)) (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32]))) (SHRL x y))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_1_0.AuxInt != 32 {
+ if v_0_1_0.Op != OpAMD64CMPLconst || v_0_1_0.AuxInt != 32 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -32 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDLconst || v_0_1_0_0_0.AuxInt != -32 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0_0_0.AuxInt != 31 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORL)
return true
}
// match: (ORL (ANDL (SBBLcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [31]) [-32])) [32])) (SHLL x (NEGL y))) (SHRL x y))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_0_0.AuxInt != 32 {
+ if v_0_0_0.Op != OpAMD64CMPLconst || v_0_0_0.AuxInt != 32 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -32 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDLconst || v_0_0_0_0_0.AuxInt != -32 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 31 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst || v_0_0_0_0_0_0.AuxInt != 31 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGL || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORL)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1.AuxInt != 15 {
+ if v_0_1.Op != OpAMD64ANDQconst || v_0_1.AuxInt != 15 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_1_0.AuxInt != -16 {
+ if v_1_0_1_0.Op != OpAMD64ADDQconst || v_1_0_1_0.AuxInt != -16 {
break
}
v_1_0_1_0_0 := v_1_0_1_0.Args[0]
- if v_1_0_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_0_1_0_0.Args[0] {
+ if v_1_0_1_0_0.Op != OpAMD64ANDQconst || v_1_0_1_0_0.AuxInt != 15 || y != v_1_0_1_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_1_0.AuxInt != 16 {
+ if v_1_1_0.Op != OpAMD64CMPQconst || v_1_1_0.AuxInt != 16 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -16 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDQconst || v_1_1_0_0_0.AuxInt != -16 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0_0_0.AuxInt != 15 || y != v_1_1_0_0_0_0.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1.AuxInt != 15 {
+ if v_0_1.Op != OpAMD64ANDQconst || v_0_1.AuxInt != 15 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_0_0.AuxInt != 16 {
+ if v_1_0_0.Op != OpAMD64CMPQconst || v_1_0_0.AuxInt != 16 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -16 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDQconst || v_1_0_0_0_0.AuxInt != -16 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst || v_1_0_0_0_0_0.AuxInt != 15 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_1_0.AuxInt != -16 {
+ if v_1_1_1_0.Op != OpAMD64ADDQconst || v_1_1_1_0.AuxInt != -16 {
break
}
v_1_1_1_0_0 := v_1_1_1_0.Args[0]
- if v_1_1_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1_1_0_0.Op != OpAMD64ANDQconst || v_1_1_1_0_0.AuxInt != 15 || y != v_1_1_1_0_0.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
break
}
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_1_0.AuxInt != -16 {
+ if v_0_0_1_0.Op != OpAMD64ADDQconst || v_0_0_1_0.AuxInt != -16 {
break
}
v_0_0_1_0_0 := v_0_0_1_0.Args[0]
- if v_0_0_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_1_0_0.AuxInt != 15 {
+ if v_0_0_1_0_0.Op != OpAMD64ANDQconst || v_0_0_1_0_0.AuxInt != 15 {
break
}
y := v_0_0_1_0_0.Args[0]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_1_0.AuxInt != 16 {
+ if v_0_1_0.Op != OpAMD64CMPQconst || v_0_1_0.AuxInt != 16 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -16 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDQconst || v_0_1_0_0_0.AuxInt != -16 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 15 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0_0_0.AuxInt != 15 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1.AuxInt != 15 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1.Op != OpAMD64ANDQconst || v_1_1.AuxInt != 15 || y != v_1_1.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_0_0.AuxInt != 16 {
+ if v_0_0_0.Op != OpAMD64CMPQconst || v_0_0_0.AuxInt != 16 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -16 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDQconst || v_0_0_0_0_0.AuxInt != -16 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 15 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0_0_0_0.AuxInt != 15 {
break
}
y := v_0_0_0_0_0_0.Args[0]
break
}
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_1_0.AuxInt != -16 {
+ if v_0_1_1_0.Op != OpAMD64ADDQconst || v_0_1_1_0.AuxInt != -16 {
break
}
v_0_1_1_0_0 := v_0_1_1_0.Args[0]
- if v_0_1_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_0_1_1_0_0.Args[0] {
+ if v_0_1_1_0_0.Op != OpAMD64ANDQconst || v_0_1_1_0_0.AuxInt != 15 || y != v_0_1_1_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1.AuxInt != 15 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1.Op != OpAMD64ANDQconst || v_1_1.AuxInt != 15 || y != v_1_1.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1.AuxInt != 15 {
+ if v_0_1.Op != OpAMD64ANDLconst || v_0_1.AuxInt != 15 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_1_0.AuxInt != -16 {
+ if v_1_0_1_0.Op != OpAMD64ADDLconst || v_1_0_1_0.AuxInt != -16 {
break
}
v_1_0_1_0_0 := v_1_0_1_0.Args[0]
- if v_1_0_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_0_1_0_0.Args[0] {
+ if v_1_0_1_0_0.Op != OpAMD64ANDLconst || v_1_0_1_0_0.AuxInt != 15 || y != v_1_0_1_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_1_0.AuxInt != 16 {
+ if v_1_1_0.Op != OpAMD64CMPLconst || v_1_1_0.AuxInt != 16 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -16 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDLconst || v_1_1_0_0_0.AuxInt != -16 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0_0_0.AuxInt != 15 || y != v_1_1_0_0_0_0.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1.AuxInt != 15 {
+ if v_0_1.Op != OpAMD64ANDLconst || v_0_1.AuxInt != 15 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_0_0.AuxInt != 16 {
+ if v_1_0_0.Op != OpAMD64CMPLconst || v_1_0_0.AuxInt != 16 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -16 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDLconst || v_1_0_0_0_0.AuxInt != -16 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst || v_1_0_0_0_0_0.AuxInt != 15 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_1_0.AuxInt != -16 {
+ if v_1_1_1_0.Op != OpAMD64ADDLconst || v_1_1_1_0.AuxInt != -16 {
break
}
v_1_1_1_0_0 := v_1_1_1_0.Args[0]
- if v_1_1_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1_1_0_0.Op != OpAMD64ANDLconst || v_1_1_1_0_0.AuxInt != 15 || y != v_1_1_1_0_0.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
break
}
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_1_0.AuxInt != -16 {
+ if v_0_0_1_0.Op != OpAMD64ADDLconst || v_0_0_1_0.AuxInt != -16 {
break
}
v_0_0_1_0_0 := v_0_0_1_0.Args[0]
- if v_0_0_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_1_0_0.AuxInt != 15 {
+ if v_0_0_1_0_0.Op != OpAMD64ANDLconst || v_0_0_1_0_0.AuxInt != 15 {
break
}
y := v_0_0_1_0_0.Args[0]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_1_0.AuxInt != 16 {
+ if v_0_1_0.Op != OpAMD64CMPLconst || v_0_1_0.AuxInt != 16 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -16 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDLconst || v_0_1_0_0_0.AuxInt != -16 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 15 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0_0_0.AuxInt != 15 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1.AuxInt != 15 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1.Op != OpAMD64ANDLconst || v_1_1.AuxInt != 15 || y != v_1_1.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_0_0.AuxInt != 16 {
+ if v_0_0_0.Op != OpAMD64CMPLconst || v_0_0_0.AuxInt != 16 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -16 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDLconst || v_0_0_0_0_0.AuxInt != -16 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 15 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst || v_0_0_0_0_0_0.AuxInt != 15 {
break
}
y := v_0_0_0_0_0_0.Args[0]
break
}
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_1_0.AuxInt != -16 {
+ if v_0_1_1_0.Op != OpAMD64ADDLconst || v_0_1_1_0.AuxInt != -16 {
break
}
v_0_1_1_0_0 := v_0_1_1_0.Args[0]
- if v_0_1_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_0_1_1_0_0.Args[0] {
+ if v_0_1_1_0_0.Op != OpAMD64ANDLconst || v_0_1_1_0_0.AuxInt != 15 || y != v_0_1_1_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1.AuxInt != 15 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1.Op != OpAMD64ANDLconst || v_1_1.AuxInt != 15 || y != v_1_1.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64ROLW)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1.AuxInt != 15 {
+ if v_0_1.Op != OpAMD64ANDQconst || v_0_1.AuxInt != 15 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0.AuxInt != -16 {
+ if v_1_1_0.Op != OpAMD64ADDQconst || v_1_1_0.AuxInt != -16 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0.AuxInt != 15 || y != v_1_1_0_0.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64RORW)
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0.AuxInt != -16 {
+ if v_0_1_0.Op != OpAMD64ADDQconst || v_0_1_0.AuxInt != -16 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0.AuxInt != 15 {
+ if v_0_1_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0.AuxInt != 15 {
break
}
y := v_0_1_0_0.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1.AuxInt != 15 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1.Op != OpAMD64ANDQconst || v_1_1.AuxInt != 15 || y != v_1_1.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64RORW)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1.AuxInt != 15 {
+ if v_0_1.Op != OpAMD64ANDLconst || v_0_1.AuxInt != 15 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0.AuxInt != -16 {
+ if v_1_1_0.Op != OpAMD64ADDLconst || v_1_1_0.AuxInt != -16 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0.AuxInt != 15 {
- break
- }
- if y != v_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0.AuxInt != 15 || y != v_1_1_0_0.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64RORW)
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0.AuxInt != -16 {
+ if v_0_1_0.Op != OpAMD64ADDLconst || v_0_1_0.AuxInt != -16 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0.AuxInt != 15 {
+ if v_0_1_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0.AuxInt != 15 {
break
}
y := v_0_1_0_0.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1.AuxInt != 15 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 2) {
+ if v_1_1.Op != OpAMD64ANDLconst || v_1_1.AuxInt != 15 || y != v_1_1.Args[0] || !(v.Type.Size() == 2) {
break
}
v.reset(OpAMD64RORW)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1.AuxInt != 7 {
+ if v_0_1.Op != OpAMD64ANDQconst || v_0_1.AuxInt != 7 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_1_0.AuxInt != -8 {
+ if v_1_0_1_0.Op != OpAMD64ADDQconst || v_1_0_1_0.AuxInt != -8 {
break
}
v_1_0_1_0_0 := v_1_0_1_0.Args[0]
- if v_1_0_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_0_1_0_0.Args[0] {
+ if v_1_0_1_0_0.Op != OpAMD64ANDQconst || v_1_0_1_0_0.AuxInt != 7 || y != v_1_0_1_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_1_0.AuxInt != 8 {
+ if v_1_1_0.Op != OpAMD64CMPQconst || v_1_1_0.AuxInt != 8 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -8 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDQconst || v_1_1_0_0_0.AuxInt != -8 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0_0_0.AuxInt != 7 || y != v_1_1_0_0_0_0.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1.AuxInt != 7 {
+ if v_0_1.Op != OpAMD64ANDQconst || v_0_1.AuxInt != 7 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_0_0.AuxInt != 8 {
+ if v_1_0_0.Op != OpAMD64CMPQconst || v_1_0_0.AuxInt != 8 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -8 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDQconst || v_1_0_0_0_0.AuxInt != -8 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst || v_1_0_0_0_0_0.AuxInt != 7 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_1_0.AuxInt != -8 {
+ if v_1_1_1_0.Op != OpAMD64ADDQconst || v_1_1_1_0.AuxInt != -8 {
break
}
v_1_1_1_0_0 := v_1_1_1_0.Args[0]
- if v_1_1_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1_1_0_0.Op != OpAMD64ANDQconst || v_1_1_1_0_0.AuxInt != 7 || y != v_1_1_1_0_0.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
break
}
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_1_0.AuxInt != -8 {
+ if v_0_0_1_0.Op != OpAMD64ADDQconst || v_0_0_1_0.AuxInt != -8 {
break
}
v_0_0_1_0_0 := v_0_0_1_0.Args[0]
- if v_0_0_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_1_0_0.AuxInt != 7 {
+ if v_0_0_1_0_0.Op != OpAMD64ANDQconst || v_0_0_1_0_0.AuxInt != 7 {
break
}
y := v_0_0_1_0_0.Args[0]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_1_0.AuxInt != 8 {
+ if v_0_1_0.Op != OpAMD64CMPQconst || v_0_1_0.AuxInt != 8 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -8 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDQconst || v_0_1_0_0_0.AuxInt != -8 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 7 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0_0_0.AuxInt != 7 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1.AuxInt != 7 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1.Op != OpAMD64ANDQconst || v_1_1.AuxInt != 7 || y != v_1_1.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_0_0.AuxInt != 8 {
+ if v_0_0_0.Op != OpAMD64CMPQconst || v_0_0_0.AuxInt != 8 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -8 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDQconst || v_0_0_0_0_0.AuxInt != -8 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 7 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0_0_0_0.AuxInt != 7 {
break
}
y := v_0_0_0_0_0_0.Args[0]
break
}
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_1_0.AuxInt != -8 {
+ if v_0_1_1_0.Op != OpAMD64ADDQconst || v_0_1_1_0.AuxInt != -8 {
break
}
v_0_1_1_0_0 := v_0_1_1_0.Args[0]
- if v_0_1_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_0_1_1_0_0.Args[0] {
+ if v_0_1_1_0_0.Op != OpAMD64ANDQconst || v_0_1_1_0_0.AuxInt != 7 || y != v_0_1_1_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1.AuxInt != 7 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1.Op != OpAMD64ANDQconst || v_1_1.AuxInt != 7 || y != v_1_1.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1.AuxInt != 7 {
+ if v_0_1.Op != OpAMD64ANDLconst || v_0_1.AuxInt != 7 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_1_0.AuxInt != -8 {
+ if v_1_0_1_0.Op != OpAMD64ADDLconst || v_1_0_1_0.AuxInt != -8 {
break
}
v_1_0_1_0_0 := v_1_0_1_0.Args[0]
- if v_1_0_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_0_1_0_0.Args[0] {
+ if v_1_0_1_0_0.Op != OpAMD64ANDLconst || v_1_0_1_0_0.AuxInt != 7 || y != v_1_0_1_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_1_0.AuxInt != 8 {
+ if v_1_1_0.Op != OpAMD64CMPLconst || v_1_1_0.AuxInt != 8 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -8 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDLconst || v_1_1_0_0_0.AuxInt != -8 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0_0_0.AuxInt != 7 || y != v_1_1_0_0_0_0.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1.AuxInt != 7 {
+ if v_0_1.Op != OpAMD64ANDLconst || v_0_1.AuxInt != 7 {
break
}
y := v_0_1.Args[0]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_0_0.AuxInt != 8 {
+ if v_1_0_0.Op != OpAMD64CMPLconst || v_1_0_0.AuxInt != 8 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -8 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDLconst || v_1_0_0_0_0.AuxInt != -8 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst || v_1_0_0_0_0_0.AuxInt != 7 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_1_0.AuxInt != -8 {
+ if v_1_1_1_0.Op != OpAMD64ADDLconst || v_1_1_1_0.AuxInt != -8 {
break
}
v_1_1_1_0_0 := v_1_1_1_0.Args[0]
- if v_1_1_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1_1_0_0.Op != OpAMD64ANDLconst || v_1_1_1_0_0.AuxInt != 7 || y != v_1_1_1_0_0.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
break
}
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_1_0.AuxInt != -8 {
+ if v_0_0_1_0.Op != OpAMD64ADDLconst || v_0_0_1_0.AuxInt != -8 {
break
}
v_0_0_1_0_0 := v_0_0_1_0.Args[0]
- if v_0_0_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_1_0_0.AuxInt != 7 {
+ if v_0_0_1_0_0.Op != OpAMD64ANDLconst || v_0_0_1_0_0.AuxInt != 7 {
break
}
y := v_0_0_1_0_0.Args[0]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_1_0.AuxInt != 8 {
+ if v_0_1_0.Op != OpAMD64CMPLconst || v_0_1_0.AuxInt != 8 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -8 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDLconst || v_0_1_0_0_0.AuxInt != -8 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 7 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0_0_0.AuxInt != 7 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1.AuxInt != 7 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1.Op != OpAMD64ANDLconst || v_1_1.AuxInt != 7 || y != v_1_1.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_0_0.AuxInt != 8 {
+ if v_0_0_0.Op != OpAMD64CMPLconst || v_0_0_0.AuxInt != 8 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -8 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDLconst || v_0_0_0_0_0.AuxInt != -8 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 7 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst || v_0_0_0_0_0_0.AuxInt != 7 {
break
}
y := v_0_0_0_0_0_0.Args[0]
break
}
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_1_0.AuxInt != -8 {
+ if v_0_1_1_0.Op != OpAMD64ADDLconst || v_0_1_1_0.AuxInt != -8 {
break
}
v_0_1_1_0_0 := v_0_1_1_0.Args[0]
- if v_0_1_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_0_1_1_0_0.Args[0] {
+ if v_0_1_1_0_0.Op != OpAMD64ANDLconst || v_0_1_1_0_0.AuxInt != 7 || y != v_0_1_1_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1.AuxInt != 7 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1.Op != OpAMD64ANDLconst || v_1_1.AuxInt != 7 || y != v_1_1.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64ROLB)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1.AuxInt != 7 {
+ if v_0_1.Op != OpAMD64ANDQconst || v_0_1.AuxInt != 7 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0.AuxInt != -8 {
+ if v_1_1_0.Op != OpAMD64ADDQconst || v_1_1_0.AuxInt != -8 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0.AuxInt != 7 || y != v_1_1_0_0.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64RORB)
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0.AuxInt != -8 {
+ if v_0_1_0.Op != OpAMD64ADDQconst || v_0_1_0.AuxInt != -8 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0.AuxInt != 7 {
+ if v_0_1_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0.AuxInt != 7 {
break
}
y := v_0_1_0_0.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1.AuxInt != 7 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1.Op != OpAMD64ANDQconst || v_1_1.AuxInt != 7 || y != v_1_1.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64RORB)
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1.AuxInt != 7 {
+ if v_0_1.Op != OpAMD64ANDLconst || v_0_1.AuxInt != 7 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0.AuxInt != -8 {
+ if v_1_1_0.Op != OpAMD64ADDLconst || v_1_1_0.AuxInt != -8 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0.AuxInt != 7 {
- break
- }
- if y != v_1_1_0_0.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0.AuxInt != 7 || y != v_1_1_0_0.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64RORB)
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0.AuxInt != -8 {
+ if v_0_1_0.Op != OpAMD64ADDLconst || v_0_1_0.AuxInt != -8 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0.AuxInt != 7 {
+ if v_0_1_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0.AuxInt != 7 {
break
}
y := v_0_1_0_0.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1.AuxInt != 7 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(v.Type.Size() == 1) {
+ if v_1_1.Op != OpAMD64ANDLconst || v_1_1.AuxInt != 7 || y != v_1_1.Args[0] || !(v.Type.Size() == 1) {
break
}
v.reset(OpAMD64RORB)
return true
}
// match: (ORL x x)
- // cond:
// result: x
for {
x := v.Args[1]
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
if or.Op != OpAMD64ORL {
break
}
- y := or.Args[1]
- s0 := or.Args[0]
- if s0.Op != OpAMD64SHLLconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
- v1.AuxInt = j0
- v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
- v2.AuxInt = i0
- v2.Aux = s
- v2.AddArg(p)
- v2.AddArg(idx)
- v2.AddArg(mem)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y))
- // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
- for {
- _ = v.Args[1]
- s1 := v.Args[0]
- if s1.Op != OpAMD64SHLLconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- p := x1.Args[0]
- idx := x1.Args[1]
- or := v.Args[1]
- if or.Op != OpAMD64ORL {
- break
- }
- y := or.Args[1]
- s0 := or.Args[0]
- if s0.Op != OpAMD64SHLLconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
- v1.AuxInt = j0
- v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
- v2.AuxInt = i0
- v2.Aux = s
- v2.AddArg(p)
- v2.AddArg(idx)
- v2.AddArg(mem)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- return false
-}
-func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool {
- b := v.Block
- typ := &b.Func.Config.Types
- // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y))
- // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
- for {
- _ = v.Args[1]
- s1 := v.Args[0]
- if s1.Op != OpAMD64SHLLconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- idx := x1.Args[0]
- p := x1.Args[1]
- or := v.Args[1]
- if or.Op != OpAMD64ORL {
- break
- }
- y := or.Args[1]
- s0 := or.Args[0]
- if s0.Op != OpAMD64SHLLconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
- v1.AuxInt = j0
- v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
- v2.AuxInt = i0
- v2.Aux = s
- v2.AddArg(p)
- v2.AddArg(idx)
- v2.AddArg(mem)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))))
- // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
- for {
- _ = v.Args[1]
- s1 := v.Args[0]
- if s1.Op != OpAMD64SHLLconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- p := x1.Args[0]
- idx := x1.Args[1]
- or := v.Args[1]
- if or.Op != OpAMD64ORL {
- break
- }
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
- if s0.Op != OpAMD64SHLLconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
- v1.AuxInt = j0
- v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
- v2.AuxInt = i0
- v2.Aux = s
- v2.AddArg(p)
- v2.AddArg(idx)
- v2.AddArg(mem)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))))
- // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
- for {
- _ = v.Args[1]
- s1 := v.Args[0]
- if s1.Op != OpAMD64SHLLconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- idx := x1.Args[0]
- p := x1.Args[1]
- or := v.Args[1]
- if or.Op != OpAMD64ORL {
- break
- }
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
+ y := or.Args[1]
+ s0 := or.Args[0]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))))
+ // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
if or.Op != OpAMD64ORL {
break
}
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
+ y := or.Args[1]
+ s0 := or.Args[0]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))))
+ return false
+}
+func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool {
+ b := v.Block
+ typ := &b.Func.Config.Types
+ // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
if or.Op != OpAMD64ORL {
break
}
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
+ y := or.Args[1]
+ s0 := or.Args[0]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
+ // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
_ = v.Args[1]
- or := v.Args[0]
+ s1 := v.Args[0]
+ if s1.Op != OpAMD64SHLLconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i1 := x1.AuxInt
+ s := x1.Aux
+ mem := x1.Args[2]
+ p := x1.Args[0]
+ idx := x1.Args[1]
+ or := v.Args[1]
if or.Op != OpAMD64ORL {
break
}
- y := or.Args[1]
- s0 := or.Args[0]
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
i0 := x0.AuxInt
- s := x0.Aux
- mem := x0.Args[2]
- p := x0.Args[0]
- idx := x0.Args[1]
- s1 := v.Args[1]
+ if x0.Aux != s {
+ break
+ }
+ _ = x0.Args[2]
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ break
+ }
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
+ v1.AuxInt = j0
+ v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
+ v2.AuxInt = i0
+ v2.Aux = s
+ v2.AddArg(p)
+ v2.AddArg(idx)
+ v2.AddArg(mem)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))))
+ // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
+ for {
+ _ = v.Args[1]
+ s1 := v.Args[0]
if s1.Op != OpAMD64SHLLconst {
break
}
break
}
i1 := x1.AuxInt
- if x1.Aux != s {
+ s := x1.Aux
+ mem := x1.Args[2]
+ idx := x1.Args[0]
+ p := x1.Args[1]
+ or := v.Args[1]
+ if or.Op != OpAMD64ORL {
break
}
- _ = x1.Args[2]
- if p != x1.Args[0] {
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
+ if s0.Op != OpAMD64SHLLconst {
break
}
- if idx != x1.Args[1] {
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpAMD64MOVBloadidx1 {
break
}
- if mem != x1.Args[2] {
+ i0 := x0.AuxInt
+ if x0.Aux != s {
break
}
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ _ = x0.Args[2]
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
+ // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
_ = v.Args[1]
- or := v.Args[0]
+ s1 := v.Args[0]
+ if s1.Op != OpAMD64SHLLconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i1 := x1.AuxInt
+ s := x1.Aux
+ mem := x1.Args[2]
+ p := x1.Args[0]
+ idx := x1.Args[1]
+ or := v.Args[1]
if or.Op != OpAMD64ORL {
break
}
- y := or.Args[1]
- s0 := or.Args[0]
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
i0 := x0.AuxInt
- s := x0.Aux
- mem := x0.Args[2]
- idx := x0.Args[0]
- p := x0.Args[1]
- s1 := v.Args[1]
+ if x0.Aux != s {
+ break
+ }
+ _ = x0.Args[2]
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ break
+ }
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
+ v1.AuxInt = j0
+ v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
+ v2.AuxInt = i0
+ v2.Aux = s
+ v2.AddArg(p)
+ v2.AddArg(idx)
+ v2.AddArg(mem)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))))
+ // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
+ for {
+ _ = v.Args[1]
+ s1 := v.Args[0]
if s1.Op != OpAMD64SHLLconst {
break
}
break
}
i1 := x1.AuxInt
- if x1.Aux != s {
+ s := x1.Aux
+ mem := x1.Args[2]
+ idx := x1.Args[0]
+ p := x1.Args[1]
+ or := v.Args[1]
+ if or.Op != OpAMD64ORL {
break
}
- _ = x1.Args[2]
- if p != x1.Args[0] {
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
+ if s0.Op != OpAMD64SHLLconst {
break
}
- if idx != x1.Args[1] {
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpAMD64MOVBloadidx1 {
break
}
- if mem != x1.Args[2] {
+ i0 := x0.AuxInt
+ if x0.Aux != s {
break
}
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ _ = x0.Args[2]
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
+ // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
if or.Op != OpAMD64ORL {
break
}
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
+ y := or.Args[1]
+ s0 := or.Args[0]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
+ // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
if or.Op != OpAMD64ORL {
break
}
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
+ y := or.Args[1]
+ s0 := or.Args[0]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
+ // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
if or.Op != OpAMD64ORL {
break
}
- y := or.Args[1]
- s0 := or.Args[0]
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- return false
-}
-func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool {
- b := v.Block
- typ := &b.Func.Config.Types
- // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
+ // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
if or.Op != OpAMD64ORL {
break
}
- y := or.Args[1]
- s0 := or.Args[0]
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
+ // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
if or.Op != OpAMD64ORL {
break
}
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
+ y := or.Args[1]
+ s0 := or.Args[0]
if s0.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
- if p != x1.Args[1] {
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
+ v1.AuxInt = j0
+ v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
+ v2.AuxInt = i0
+ v2.Aux = s
+ v2.AddArg(p)
+ v2.AddArg(idx)
+ v2.AddArg(mem)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ return false
+}
+func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool {
+ b := v.Block
+ typ := &b.Func.Config.Types
+ // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
+ // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpAMD64ORL {
+ break
+ }
+ y := or.Args[1]
+ s0 := or.Args[0]
+ if s0.Op != OpAMD64SHLLconst {
break
}
- if mem != x1.Args[2] {
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpAMD64MOVBloadidx1 {
break
}
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ i0 := x0.AuxInt
+ s := x0.Aux
+ mem := x0.Args[2]
+ idx := x0.Args[0]
+ p := x0.Args[1]
+ s1 := v.Args[1]
+ if s1.Op != OpAMD64SHLLconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i1 := x1.AuxInt
+ if x1.Aux != s {
+ break
+ }
+ _ = x1.Args[2]
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
+ // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
// cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
for {
i0 := x0.AuxInt
s := x0.Aux
mem := x0.Args[2]
- idx := x0.Args[0]
- p := x0.Args[1]
+ p := x0.Args[0]
+ idx := x0.Args[1]
s1 := v.Args[1]
if s1.Op != OpAMD64SHLLconst {
break
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ break
+ }
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
+ v1.AuxInt = j0
+ v2 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
+ v2.AuxInt = i0
+ v2.Aux = s
+ v2.AddArg(p)
+ v2.AddArg(idx)
+ v2.AddArg(mem)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))
+ // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpAMD64ORL {
+ break
+ }
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
+ if s0.Op != OpAMD64SHLLconst {
+ break
+ }
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpAMD64MOVBloadidx1 {
break
}
- if p != x1.Args[1] {
+ i0 := x0.AuxInt
+ s := x0.Aux
+ mem := x0.Args[2]
+ idx := x0.Args[0]
+ p := x0.Args[1]
+ s1 := v.Args[1]
+ if s1.Op != OpAMD64SHLLconst {
break
}
- if mem != x1.Args[2] {
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i1 := x1.AuxInt
+ if x1.Aux != s {
break
}
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ _ = x1.Args[2]
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
p := x0.Args[0]
idx := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
idx := x0.Args[0]
p := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
p := x0.Args[0]
idx := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLLconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLLconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
idx := x0.Args[0]
p := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
- v1.AuxInt = j1
- v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
- v2.AuxInt = 8
- v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
- v3.AuxInt = i0
- v3.Aux = s
- v3.AddArg(p)
- v3.AddArg(idx)
- v3.AddArg(mem)
- v2.AddArg(v3)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
- // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
- for {
- _ = v.Args[1]
- or := v.Args[0]
- if or.Op != OpAMD64ORL {
- break
- }
- y := or.Args[1]
- s1 := or.Args[0]
- if s1.Op != OpAMD64SHLLconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- p := x1.Args[0]
- idx := x1.Args[1]
- s0 := v.Args[1]
- if s0.Op != OpAMD64SHLLconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
- v1.AuxInt = j1
- v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
- v2.AuxInt = 8
- v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
- v3.AuxInt = i0
- v3.Aux = s
- v3.AddArg(p)
- v3.AddArg(idx)
- v3.AddArg(mem)
- v2.AddArg(v3)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
- // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
- for {
- _ = v.Args[1]
- or := v.Args[0]
- if or.Op != OpAMD64ORL {
- break
- }
- y := or.Args[1]
- s1 := or.Args[0]
- if s1.Op != OpAMD64SHLLconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- idx := x1.Args[0]
- p := x1.Args[1]
- s0 := v.Args[1]
- if s0.Op != OpAMD64SHLLconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
+ // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
// cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
for {
if or.Op != OpAMD64ORL {
break
}
- _ = or.Args[1]
- y := or.Args[0]
- s1 := or.Args[1]
+ y := or.Args[1]
+ s1 := or.Args[0]
if s1.Op != OpAMD64SHLLconst {
break
}
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
- if idx != x0.Args[1] {
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
+ v1.AuxInt = j1
+ v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
+ v2.AuxInt = 8
+ v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
+ v3.AuxInt = i0
+ v3.Aux = s
+ v3.AddArg(p)
+ v3.AddArg(idx)
+ v3.AddArg(mem)
+ v2.AddArg(v3)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
+ // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpAMD64ORL {
+ break
+ }
+ y := or.Args[1]
+ s1 := or.Args[0]
+ if s1.Op != OpAMD64SHLLconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i1 := x1.AuxInt
+ s := x1.Aux
+ mem := x1.Args[2]
+ idx := x1.Args[0]
+ p := x1.Args[1]
+ s0 := v.Args[1]
+ if s0.Op != OpAMD64SHLLconst {
+ break
+ }
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpAMD64MOVBloadidx1 {
break
}
- if mem != x0.Args[2] {
+ i0 := x0.AuxInt
+ if x0.Aux != s {
break
}
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ _ = x0.Args[2]
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
+ // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
// cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
for {
i1 := x1.AuxInt
s := x1.Aux
mem := x1.Args[2]
- idx := x1.Args[0]
- p := x1.Args[1]
+ p := x1.Args[0]
+ idx := x1.Args[1]
s0 := v.Args[1]
if s0.Op != OpAMD64SHLLconst {
break
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
- if idx != x0.Args[1] {
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpAMD64SHLLconst, v.Type)
+ v1.AuxInt = j1
+ v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
+ v2.AuxInt = 8
+ v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
+ v3.AuxInt = i0
+ v3.Aux = s
+ v3.AddArg(p)
+ v3.AddArg(idx)
+ v3.AddArg(mem)
+ v2.AddArg(v3)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))
+ // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (ORL <v.Type> (SHLLconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpAMD64ORL {
break
}
- if mem != x0.Args[2] {
+ _ = or.Args[1]
+ y := or.Args[0]
+ s1 := or.Args[1]
+ if s1.Op != OpAMD64SHLLconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i1 := x1.AuxInt
+ s := x1.Aux
+ mem := x1.Args[2]
+ idx := x1.Args[0]
+ p := x1.Args[1]
+ s0 := v.Args[1]
+ if s0.Op != OpAMD64SHLLconst {
break
}
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i0 := x0.AuxInt
+ if x0.Aux != s {
+ break
+ }
+ _ = x0.Args[2]
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
return true
}
// match: (ORLconst [c] (ORLconst [d] x))
- // cond:
// result: (ORLconst [c | d] x)
for {
c := v.AuxInt
return true
}
// match: (ORLconst [c] (BTSLconst [d] x))
- // cond:
// result: (ORLconst [c | 1<<uint32(d)] x)
for {
c := v.AuxInt
return true
}
// match: (ORLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [c|d])
for {
c := v.AuxInt
return true
}
// match: (ORLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
- // cond:
// result: ( ORL x (MOVLf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSSstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
y := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVQconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTSQ)
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVQconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTSQ)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpAMD64ROLQconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpAMD64ROLQconst)
return true
}
// match: (ORQ (SHLQ x y) (ANDQ (SHRQ x (NEGQ y)) (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64]))))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGQ || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_1_0.AuxInt != 64 {
+ if v_1_1_0.Op != OpAMD64CMPQconst || v_1_1_0.AuxInt != 64 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -64 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDQconst || v_1_1_0_0_0.AuxInt != -64 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0_0_0.AuxInt != 63 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64ROLQ)
return true
}
// match: (ORQ (SHLQ x y) (ANDQ (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64])) (SHRQ x (NEGQ y))))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_0_0.AuxInt != 64 {
+ if v_1_0_0.Op != OpAMD64CMPQconst || v_1_0_0.AuxInt != 64 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -64 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDQconst || v_1_0_0_0_0.AuxInt != -64 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst || v_1_0_0_0_0_0.AuxInt != 63 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGQ || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64ROLQ)
}
func rewriteValueAMD64_OpAMD64ORQ_10(v *Value) bool {
// match: (ORQ (ANDQ (SHRQ x (NEGQ y)) (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64]))) (SHLQ x y))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_1_0.AuxInt != 64 {
+ if v_0_1_0.Op != OpAMD64CMPQconst || v_0_1_0.AuxInt != 64 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -64 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDQconst || v_0_1_0_0_0.AuxInt != -64 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0_0_0.AuxInt != 63 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLQ)
return true
}
// match: (ORQ (ANDQ (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64])) (SHRQ x (NEGQ y))) (SHLQ x y))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_0_0.AuxInt != 64 {
+ if v_0_0_0.Op != OpAMD64CMPQconst || v_0_0_0.AuxInt != 64 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -64 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDQconst || v_0_0_0_0_0.AuxInt != -64 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 63 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0_0_0_0.AuxInt != 63 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGQ || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLQ)
return true
}
// match: (ORQ (SHLQ x y) (ANDQ (SHRQ x (NEGL y)) (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64]))))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGL || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_1_0.AuxInt != 64 {
+ if v_1_1_0.Op != OpAMD64CMPLconst || v_1_1_0.AuxInt != 64 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -64 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDLconst || v_1_1_0_0_0.AuxInt != -64 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0_0_0.AuxInt != 63 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64ROLQ)
return true
}
// match: (ORQ (SHLQ x y) (ANDQ (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64])) (SHRQ x (NEGL y))))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_0_0.AuxInt != 64 {
+ if v_1_0_0.Op != OpAMD64CMPLconst || v_1_0_0.AuxInt != 64 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -64 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDLconst || v_1_0_0_0_0.AuxInt != -64 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst || v_1_0_0_0_0_0.AuxInt != 63 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGL || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64ROLQ)
return true
}
// match: (ORQ (ANDQ (SHRQ x (NEGL y)) (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64]))) (SHLQ x y))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_1_0.AuxInt != 64 {
+ if v_0_1_0.Op != OpAMD64CMPLconst || v_0_1_0.AuxInt != 64 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -64 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDLconst || v_0_1_0_0_0.AuxInt != -64 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0_0_0.AuxInt != 63 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLQ)
return true
}
// match: (ORQ (ANDQ (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64])) (SHRQ x (NEGL y))) (SHLQ x y))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_0_0.AuxInt != 64 {
+ if v_0_0_0.Op != OpAMD64CMPLconst || v_0_0_0.AuxInt != 64 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -64 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDLconst || v_0_0_0_0_0.AuxInt != -64 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 63 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst || v_0_0_0_0_0_0.AuxInt != 63 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGL || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64ROLQ)
return true
}
// match: (ORQ (SHRQ x y) (ANDQ (SHLQ x (NEGQ y)) (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64]))))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGQ || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_1_0.AuxInt != 64 {
+ if v_1_1_0.Op != OpAMD64CMPQconst || v_1_1_0.AuxInt != 64 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -64 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDQconst || v_1_1_0_0_0.AuxInt != -64 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDQconst || v_1_1_0_0_0_0.AuxInt != 63 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64RORQ)
return true
}
// match: (ORQ (SHRQ x y) (ANDQ (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64])) (SHLQ x (NEGQ y))))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_1_0_0.AuxInt != 64 {
+ if v_1_0_0.Op != OpAMD64CMPQconst || v_1_0_0.AuxInt != 64 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -64 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDQconst || v_1_0_0_0_0.AuxInt != -64 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDQconst || v_1_0_0_0_0_0.AuxInt != 63 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGQ || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64RORQ)
return true
}
// match: (ORQ (ANDQ (SHLQ x (NEGQ y)) (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64]))) (SHRQ x y))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_1_0.AuxInt != 64 {
+ if v_0_1_0.Op != OpAMD64CMPQconst || v_0_1_0.AuxInt != 64 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -64 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDQconst || v_0_1_0_0_0.AuxInt != -64 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDQconst || v_0_1_0_0_0_0.AuxInt != 63 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORQ)
return true
}
// match: (ORQ (ANDQ (SBBQcarrymask (CMPQconst (NEGQ (ADDQconst (ANDQconst y [63]) [-64])) [64])) (SHLQ x (NEGQ y))) (SHRQ x y))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0_0_0.AuxInt != 64 {
+ if v_0_0_0.Op != OpAMD64CMPQconst || v_0_0_0.AuxInt != 64 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDQconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -64 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDQconst || v_0_0_0_0_0.AuxInt != -64 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 63 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDQconst || v_0_0_0_0_0_0.AuxInt != 63 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGQ {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGQ || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORQ)
b := v.Block
typ := &b.Func.Config.Types
// match: (ORQ (SHRQ x y) (ANDQ (SHLQ x (NEGL y)) (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64]))))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_0_1.Args[0] {
+ if v_1_0_1.Op != OpAMD64NEGL || y != v_1_0_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_1_0.AuxInt != 64 {
+ if v_1_1_0.Op != OpAMD64CMPLconst || v_1_1_0.AuxInt != 64 {
break
}
v_1_1_0_0 := v_1_1_0.Args[0]
break
}
v_1_1_0_0_0 := v_1_1_0_0.Args[0]
- if v_1_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_1_0_0_0.AuxInt != -64 {
+ if v_1_1_0_0_0.Op != OpAMD64ADDLconst || v_1_1_0_0_0.AuxInt != -64 {
break
}
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpAMD64ANDLconst || v_1_1_0_0_0_0.AuxInt != 63 || y != v_1_1_0_0_0_0.Args[0] {
break
}
v.reset(OpAMD64RORQ)
return true
}
// match: (ORQ (SHRQ x y) (ANDQ (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64])) (SHLQ x (NEGL y))))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_1_0_0.AuxInt != 64 {
+ if v_1_0_0.Op != OpAMD64CMPLconst || v_1_0_0.AuxInt != 64 {
break
}
v_1_0_0_0 := v_1_0_0.Args[0]
break
}
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_1_0_0_0_0.AuxInt != -64 {
+ if v_1_0_0_0_0.Op != OpAMD64ADDLconst || v_1_0_0_0_0.AuxInt != -64 {
break
}
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_1_0_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpAMD64ANDLconst || v_1_0_0_0_0_0.AuxInt != 63 || y != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpAMD64NEGL || y != v_1_1_1.Args[0] {
break
}
v.reset(OpAMD64RORQ)
return true
}
// match: (ORQ (ANDQ (SHLQ x (NEGL y)) (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64]))) (SHRQ x y))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_1_0.AuxInt != 64 {
+ if v_0_1_0.Op != OpAMD64CMPLconst || v_0_1_0.AuxInt != 64 {
break
}
v_0_1_0_0 := v_0_1_0.Args[0]
break
}
v_0_1_0_0_0 := v_0_1_0_0.Args[0]
- if v_0_1_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_1_0_0_0.AuxInt != -64 {
+ if v_0_1_0_0_0.Op != OpAMD64ADDLconst || v_0_1_0_0_0.AuxInt != -64 {
break
}
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_1_0_0_0_0.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpAMD64ANDLconst || v_0_1_0_0_0_0.AuxInt != 63 || y != v_0_1_0_0_0_0.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORQ)
return true
}
// match: (ORQ (ANDQ (SBBQcarrymask (CMPLconst (NEGL (ADDLconst (ANDLconst y [63]) [-64])) [64])) (SHLQ x (NEGL y))) (SHRQ x y))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
break
}
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0_0_0.AuxInt != 64 {
+ if v_0_0_0.Op != OpAMD64CMPLconst || v_0_0_0.AuxInt != 64 {
break
}
v_0_0_0_0 := v_0_0_0.Args[0]
break
}
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpAMD64ADDLconst {
- break
- }
- if v_0_0_0_0_0.AuxInt != -64 {
+ if v_0_0_0_0_0.Op != OpAMD64ADDLconst || v_0_0_0_0_0.AuxInt != -64 {
break
}
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst {
- break
- }
- if v_0_0_0_0_0_0.AuxInt != 63 {
+ if v_0_0_0_0_0_0.Op != OpAMD64ANDLconst || v_0_0_0_0_0_0.AuxInt != 63 {
break
}
y := v_0_0_0_0_0_0.Args[0]
_ = v_0_1.Args[1]
x := v_0_1.Args[0]
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpAMD64NEGL {
- break
- }
- if y != v_0_1_1.Args[0] {
+ if v_0_1_1.Op != OpAMD64NEGL || y != v_0_1_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
_ = v_1.Args[1]
- if x != v_1.Args[0] {
- break
- }
- if y != v_1.Args[1] {
+ if x != v_1.Args[0] || y != v_1.Args[1] {
break
}
v.reset(OpAMD64RORQ)
return true
}
// match: (ORQ x x)
- // cond:
// result: x
for {
x := v.Args[1]
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
r1 := v.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
p := x0.Args[0]
idx := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
idx := x0.Args[0]
p := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
p := x0.Args[0]
idx := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 16 {
break
}
r0 := sh.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
idx := x0.Args[0]
p := x0.Args[1]
r1 := v.Args[1]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpAMD64SHLQconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpAMD64SHLQconst || sh.AuxInt != 32 {
break
}
r0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
i1 := x1.AuxInt
s := x1.Aux
mem := x1.Args[2]
- p := x1.Args[0]
- idx := x1.Args[1]
- s0 := v.Args[1]
- if s0.Op != OpAMD64SHLQconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
- v1.AuxInt = j1
- v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
- v2.AuxInt = 8
- v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
- v3.AuxInt = i0
- v3.Aux = s
- v3.AddArg(p)
- v3.AddArg(idx)
- v3.AddArg(mem)
- v2.AddArg(v3)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (ORQ or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)))
- // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (ORQ <v.Type> (SHLQconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
- for {
- _ = v.Args[1]
- or := v.Args[0]
- if or.Op != OpAMD64ORQ {
- break
- }
- y := or.Args[1]
- s1 := or.Args[0]
- if s1.Op != OpAMD64SHLQconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpAMD64MOVBloadidx1 {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- idx := x1.Args[0]
- p := x1.Args[1]
+ p := x1.Args[0]
+ idx := x1.Args[1]
s0 := v.Args[1]
if s0.Op != OpAMD64SHLQconst {
break
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
- if p != x0.Args[1] {
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpAMD64SHLQconst, v.Type)
+ v1.AuxInt = j1
+ v2 := b.NewValue0(v.Pos, OpAMD64ROLWconst, typ.UInt16)
+ v2.AuxInt = 8
+ v3 := b.NewValue0(v.Pos, OpAMD64MOVWloadidx1, typ.UInt16)
+ v3.AuxInt = i0
+ v3.Aux = s
+ v3.AddArg(p)
+ v3.AddArg(idx)
+ v3.AddArg(mem)
+ v2.AddArg(v3)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (ORQ or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)))
+ // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (ORQ <v.Type> (SHLQconst <v.Type> [j1] (ROLWconst <typ.UInt16> [8] (MOVWloadidx1 [i0] {s} p idx mem))) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpAMD64ORQ {
break
}
- if mem != x0.Args[2] {
+ y := or.Args[1]
+ s1 := or.Args[0]
+ if s1.Op != OpAMD64SHLQconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i1 := x1.AuxInt
+ s := x1.Aux
+ mem := x1.Args[2]
+ idx := x1.Args[0]
+ p := x1.Args[1]
+ s0 := v.Args[1]
+ if s0.Op != OpAMD64SHLQconst {
+ break
+ }
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpAMD64MOVBloadidx1 {
+ break
+ }
+ i0 := x0.AuxInt
+ if x0.Aux != s {
break
}
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ _ = x0.Args[2]
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
j1 := s1.AuxInt
r1 := s1.Args[0]
- if r1.Op != OpAMD64ROLWconst {
- break
- }
- if r1.AuxInt != 8 {
+ if r1.Op != OpAMD64ROLWconst || r1.AuxInt != 8 {
break
}
x1 := r1.Args[0]
}
j0 := s0.AuxInt
r0 := s0.Args[0]
- if r0.Op != OpAMD64ROLWconst {
- break
- }
- if r0.AuxInt != 8 {
+ if r0.Op != OpAMD64ROLWconst || r0.AuxInt != 8 {
break
}
x0 := r0.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
return true
}
// match: (ORQconst [c] (ORQconst [d] x))
- // cond:
// result: (ORQconst [c | d] x)
for {
c := v.AuxInt
return true
}
// match: (ORQconst [c] (BTSQconst [d] x))
- // cond:
// result: (ORQconst [c | 1<<uint32(d)] x)
for {
c := v.AuxInt
return true
}
// match: (ORQconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ORQconst [-1] _)
- // cond:
// result: (MOVQconst [-1])
for {
if v.AuxInt != -1 {
return true
}
// match: (ORQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [c|d])
for {
c := v.AuxInt
return true
}
// match: (ORQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
- // cond:
// result: ( ORQ x (MOVQf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
func rewriteValueAMD64_OpAMD64ROLB_0(v *Value) bool {
// match: (ROLB x (NEGQ y))
- // cond:
// result: (RORB x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLB x (NEGL y))
- // cond:
// result: (RORB x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLB x (MOVQconst [c]))
- // cond:
// result: (ROLBconst [c&7 ] x)
for {
_ = v.Args[1]
return true
}
// match: (ROLB x (MOVLconst [c]))
- // cond:
// result: (ROLBconst [c&7 ] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64ROLBconst_0(v *Value) bool {
// match: (ROLBconst [c] (ROLBconst [d] x))
- // cond:
// result: (ROLBconst [(c+d)& 7] x)
for {
c := v.AuxInt
return true
}
// match: (ROLBconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64ROLL_0(v *Value) bool {
// match: (ROLL x (NEGQ y))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLL x (NEGL y))
- // cond:
// result: (RORL x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLL x (MOVQconst [c]))
- // cond:
// result: (ROLLconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (ROLL x (MOVLconst [c]))
- // cond:
// result: (ROLLconst [c&31] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64ROLLconst_0(v *Value) bool {
// match: (ROLLconst [c] (ROLLconst [d] x))
- // cond:
// result: (ROLLconst [(c+d)&31] x)
for {
c := v.AuxInt
return true
}
// match: (ROLLconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64ROLQ_0(v *Value) bool {
// match: (ROLQ x (NEGQ y))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLQ x (NEGL y))
- // cond:
// result: (RORQ x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLQ x (MOVQconst [c]))
- // cond:
// result: (ROLQconst [c&63] x)
for {
_ = v.Args[1]
return true
}
// match: (ROLQ x (MOVLconst [c]))
- // cond:
// result: (ROLQconst [c&63] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64ROLQconst_0(v *Value) bool {
// match: (ROLQconst [c] (ROLQconst [d] x))
- // cond:
// result: (ROLQconst [(c+d)&63] x)
for {
c := v.AuxInt
return true
}
// match: (ROLQconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64ROLW_0(v *Value) bool {
// match: (ROLW x (NEGQ y))
- // cond:
// result: (RORW x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLW x (NEGL y))
- // cond:
// result: (RORW x y)
for {
_ = v.Args[1]
return true
}
// match: (ROLW x (MOVQconst [c]))
- // cond:
// result: (ROLWconst [c&15] x)
for {
_ = v.Args[1]
return true
}
// match: (ROLW x (MOVLconst [c]))
- // cond:
// result: (ROLWconst [c&15] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64ROLWconst_0(v *Value) bool {
// match: (ROLWconst [c] (ROLWconst [d] x))
- // cond:
// result: (ROLWconst [(c+d)&15] x)
for {
c := v.AuxInt
return true
}
// match: (ROLWconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64RORB_0(v *Value) bool {
// match: (RORB x (NEGQ y))
- // cond:
// result: (ROLB x y)
for {
_ = v.Args[1]
return true
}
// match: (RORB x (NEGL y))
- // cond:
// result: (ROLB x y)
for {
_ = v.Args[1]
return true
}
// match: (RORB x (MOVQconst [c]))
- // cond:
// result: (ROLBconst [(-c)&7 ] x)
for {
_ = v.Args[1]
return true
}
// match: (RORB x (MOVLconst [c]))
- // cond:
// result: (ROLBconst [(-c)&7 ] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64RORL_0(v *Value) bool {
// match: (RORL x (NEGQ y))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
return true
}
// match: (RORL x (NEGL y))
- // cond:
// result: (ROLL x y)
for {
_ = v.Args[1]
return true
}
// match: (RORL x (MOVQconst [c]))
- // cond:
// result: (ROLLconst [(-c)&31] x)
for {
_ = v.Args[1]
return true
}
// match: (RORL x (MOVLconst [c]))
- // cond:
// result: (ROLLconst [(-c)&31] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64RORQ_0(v *Value) bool {
// match: (RORQ x (NEGQ y))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
return true
}
// match: (RORQ x (NEGL y))
- // cond:
// result: (ROLQ x y)
for {
_ = v.Args[1]
return true
}
// match: (RORQ x (MOVQconst [c]))
- // cond:
// result: (ROLQconst [(-c)&63] x)
for {
_ = v.Args[1]
return true
}
// match: (RORQ x (MOVLconst [c]))
- // cond:
// result: (ROLQconst [(-c)&63] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64RORW_0(v *Value) bool {
// match: (RORW x (NEGQ y))
- // cond:
// result: (ROLW x y)
for {
_ = v.Args[1]
return true
}
// match: (RORW x (NEGL y))
- // cond:
// result: (ROLW x y)
for {
_ = v.Args[1]
return true
}
// match: (RORW x (MOVQconst [c]))
- // cond:
// result: (ROLWconst [(-c)&15] x)
for {
_ = v.Args[1]
return true
}
// match: (RORW x (MOVLconst [c]))
- // cond:
// result: (ROLWconst [(-c)&15] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64SARB_0(v *Value) bool {
// match: (SARB x (MOVQconst [c]))
- // cond:
// result: (SARBconst [min(c&31,7)] x)
for {
_ = v.Args[1]
return true
}
// match: (SARB x (MOVLconst [c]))
- // cond:
// result: (SARBconst [min(c&31,7)] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64SARBconst_0(v *Value) bool {
// match: (SARBconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SARBconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [int64(int8(d))>>uint64(c)])
for {
c := v.AuxInt
func rewriteValueAMD64_OpAMD64SARL_0(v *Value) bool {
b := v.Block
// match: (SARL x (MOVQconst [c]))
- // cond:
// result: (SARLconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (SARL x (MOVLconst [c]))
- // cond:
// result: (SARLconst [c&31] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64SARLconst_0(v *Value) bool {
// match: (SARLconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SARLconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [int64(int32(d))>>uint64(c)])
for {
c := v.AuxInt
func rewriteValueAMD64_OpAMD64SARQ_0(v *Value) bool {
b := v.Block
// match: (SARQ x (MOVQconst [c]))
- // cond:
// result: (SARQconst [c&63] x)
for {
_ = v.Args[1]
return true
}
// match: (SARQ x (MOVLconst [c]))
- // cond:
// result: (SARQconst [c&63] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64SARQconst_0(v *Value) bool {
// match: (SARQconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SARQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [d>>uint64(c)])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64SARW_0(v *Value) bool {
// match: (SARW x (MOVQconst [c]))
- // cond:
// result: (SARWconst [min(c&31,15)] x)
for {
_ = v.Args[1]
return true
}
// match: (SARW x (MOVLconst [c]))
- // cond:
// result: (SARWconst [min(c&31,15)] x)
for {
_ = v.Args[1]
}
func rewriteValueAMD64_OpAMD64SARWconst_0(v *Value) bool {
// match: (SARWconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SARWconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [int64(int16(d))>>uint64(c)])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64SBBLcarrymask_0(v *Value) bool {
// match: (SBBLcarrymask (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagLT_ULT))
- // cond:
// result: (MOVLconst [-1])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagGT_ULT))
- // cond:
// result: (MOVLconst [-1])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBLcarrymask (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBQ x y (FlagEQ))
- // cond:
// result: (SUBQborrow x y)
for {
_ = v.Args[2]
}
func rewriteValueAMD64_OpAMD64SBBQcarrymask_0(v *Value) bool {
// match: (SBBQcarrymask (FlagEQ))
- // cond:
// result: (MOVQconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBQcarrymask (FlagLT_ULT))
- // cond:
// result: (MOVQconst [-1])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBQcarrymask (FlagLT_UGT))
- // cond:
// result: (MOVQconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBQcarrymask (FlagGT_ULT))
- // cond:
// result: (MOVQconst [-1])
for {
v_0 := v.Args[0]
return true
}
// match: (SBBQcarrymask (FlagGT_UGT))
- // cond:
// result: (MOVQconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64SBBQconst_0(v *Value) bool {
// match: (SBBQconst x [c] (FlagEQ))
- // cond:
// result: (SUBQconstborrow x [c])
for {
c := v.AuxInt
}
func rewriteValueAMD64_OpAMD64SETA_0(v *Value) bool {
// match: (SETA (InvertFlags x))
- // cond:
// result: (SETB x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETA (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64SETAE_0(v *Value) bool {
// match: (SETAE (InvertFlags x))
- // cond:
// result: (SETBE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETAE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SETAEstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETBEstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETAEstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAEstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAEstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAEstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAEstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (SETAstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETAstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETAstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
}
func rewriteValueAMD64_OpAMD64SETB_0(v *Value) bool {
// match: (SETB (InvertFlags x))
- // cond:
// result: (SETA x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETB (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64SETBE_0(v *Value) bool {
// match: (SETBE (InvertFlags x))
- // cond:
// result: (SETAE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETBE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SETBEstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETAEstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETBEstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBEstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBEstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBEstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBEstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (SETBstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETAstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETBstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETBstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
}
x := v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0_0.Op != OpAMD64MOVLconst || v_0_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAE)
}
x := v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_1_0.Op != OpAMD64MOVLconst || v_0_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAE)
}
x := v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0_0.Op != OpAMD64MOVQconst || v_0_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAE)
}
x := v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_1_0.Op != OpAMD64MOVQconst || v_0_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAE)
return true
}
// match: (SETEQ (CMPLconst [1] s:(ANDLconst [1] _)))
- // cond:
// result: (SETNE (CMPLconst [0] s))
for {
v_0 := v.Args[0]
- if v_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64CMPLconst || v_0.AuxInt != 1 {
break
}
s := v_0.Args[0]
- if s.Op != OpAMD64ANDLconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDLconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETNE)
return true
}
// match: (SETEQ (CMPQconst [1] s:(ANDQconst [1] _)))
- // cond:
// result: (SETNE (CMPQconst [0] s))
for {
v_0 := v.Args[0]
- if v_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64CMPQconst || v_0.AuxInt != 1 {
break
}
s := v_0.Args[0]
- if s.Op != OpAMD64ANDQconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDQconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETNE)
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
return true
}
// match: (SETEQ (InvertFlags x))
- // cond:
// result: (SETEQ x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETEQ (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
x := v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0_0.Op != OpAMD64MOVLconst || v_1_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAEstore)
}
x := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_1_0.Op != OpAMD64MOVLconst || v_1_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAEstore)
}
x := v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0_0.Op != OpAMD64MOVQconst || v_1_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAEstore)
}
x := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_1_0.Op != OpAMD64MOVQconst || v_1_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETAEstore)
return true
}
// match: (SETEQstore [off] {sym} ptr (CMPLconst [1] s:(ANDLconst [1] _)) mem)
- // cond:
// result: (SETNEstore [off] {sym} ptr (CMPLconst [0] s) mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64CMPLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64CMPLconst || v_1.AuxInt != 1 {
break
}
s := v_1.Args[0]
- if s.Op != OpAMD64ANDLconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDLconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETNEstore)
return true
}
// match: (SETEQstore [off] {sym} ptr (CMPQconst [1] s:(ANDQconst [1] _)) mem)
- // cond:
// result: (SETNEstore [off] {sym} ptr (CMPQconst [0] s) mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64CMPQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64CMPQconst || v_1.AuxInt != 1 {
break
}
s := v_1.Args[0]
- if s.Op != OpAMD64ANDQconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDQconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETNEstore)
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
return true
}
// match: (SETEQstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETEQstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETEQstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETEQstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETEQstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETEQstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETEQstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
}
func rewriteValueAMD64_OpAMD64SETG_0(v *Value) bool {
// match: (SETG (InvertFlags x))
- // cond:
// result: (SETL x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETG (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64SETGE_0(v *Value) bool {
// match: (SETGE (InvertFlags x))
- // cond:
// result: (SETLE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETGE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SETGEstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETLEstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETGEstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGEstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGEstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGEstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGEstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (SETGstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETLstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETGstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETGstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
}
func rewriteValueAMD64_OpAMD64SETL_0(v *Value) bool {
// match: (SETL (InvertFlags x))
- // cond:
// result: (SETG x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETL (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpAMD64SETLE_0(v *Value) bool {
// match: (SETLE (InvertFlags x))
- // cond:
// result: (SETGE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagEQ))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETLE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SETLEstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETGEstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETLEstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLEstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLEstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLEstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLEstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (SETLstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETGstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETLstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETLstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
}
x := v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0_0.Op != OpAMD64MOVLconst || v_0_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETB)
}
x := v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_1_0.Op != OpAMD64MOVLconst || v_0_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETB)
}
x := v_0_0.Args[1]
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0_0.Op != OpAMD64MOVQconst || v_0_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETB)
}
x := v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_1_0.Op != OpAMD64MOVQconst || v_0_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETB)
return true
}
// match: (SETNE (CMPLconst [1] s:(ANDLconst [1] _)))
- // cond:
// result: (SETEQ (CMPLconst [0] s))
for {
v_0 := v.Args[0]
- if v_0.Op != OpAMD64CMPLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64CMPLconst || v_0.AuxInt != 1 {
break
}
s := v_0.Args[0]
- if s.Op != OpAMD64ANDLconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDLconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETEQ)
return true
}
// match: (SETNE (CMPQconst [1] s:(ANDQconst [1] _)))
- // cond:
// result: (SETEQ (CMPQconst [0] s))
for {
v_0 := v.Args[0]
- if v_0.Op != OpAMD64CMPQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64CMPQconst || v_0.AuxInt != 1 {
break
}
s := v_0.Args[0]
- if s.Op != OpAMD64ANDQconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDQconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETEQ)
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
}
z2 := v_0.Args[1]
z1 := v_0.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
_ = v_0.Args[1]
z2 := v_0.Args[0]
z1 := v_0.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
return true
}
// match: (SETNE (InvertFlags x))
- // cond:
// result: (SETNE x)
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagEQ))
- // cond:
// result: (MOVLconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagLT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagLT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagGT_ULT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (SETNE (FlagGT_UGT))
- // cond:
// result: (MOVLconst [1])
for {
v_0 := v.Args[0]
}
x := v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0_0.Op != OpAMD64MOVLconst || v_1_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETBstore)
}
x := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_1_0.Op != OpAMD64MOVLconst || v_1_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETBstore)
}
x := v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0_0.Op != OpAMD64MOVQconst || v_1_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETBstore)
}
x := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_1_0.Op != OpAMD64MOVQconst || v_1_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64SETBstore)
return true
}
// match: (SETNEstore [off] {sym} ptr (CMPLconst [1] s:(ANDLconst [1] _)) mem)
- // cond:
// result: (SETEQstore [off] {sym} ptr (CMPLconst [0] s) mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64CMPLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64CMPLconst || v_1.AuxInt != 1 {
break
}
s := v_1.Args[0]
- if s.Op != OpAMD64ANDLconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDLconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETEQstore)
return true
}
// match: (SETNEstore [off] {sym} ptr (CMPQconst [1] s:(ANDQconst [1] _)) mem)
- // cond:
// result: (SETEQstore [off] {sym} ptr (CMPQconst [0] s) mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64CMPQconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpAMD64CMPQconst || v_1.AuxInt != 1 {
break
}
s := v_1.Args[0]
- if s.Op != OpAMD64ANDQconst {
- break
- }
- if s.AuxInt != 1 {
+ if s.Op != OpAMD64ANDQconst || s.AuxInt != 1 {
break
}
v.reset(OpAMD64SETEQstore)
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
}
z2 := v_1.Args[1]
z1 := v_1.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
_ = v_1.Args[1]
z2 := v_1.Args[0]
z1 := v_1.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
return true
}
// match: (SETNEstore [off] {sym} ptr (InvertFlags x) mem)
- // cond:
// result: (SETNEstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (SETNEstore [off] {sym} ptr (FlagEQ) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [0]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETNEstore [off] {sym} ptr (FlagLT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETNEstore [off] {sym} ptr (FlagLT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETNEstore [off] {sym} ptr (FlagGT_ULT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
return true
}
// match: (SETNEstore [off] {sym} ptr (FlagGT_UGT) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr (MOVLconst <typ.UInt8> [1]) mem)
for {
off := v.AuxInt
func rewriteValueAMD64_OpAMD64SHLL_0(v *Value) bool {
b := v.Block
// match: (SHLL x (MOVQconst [c]))
- // cond:
// result: (SHLLconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (SHLL x (MOVLconst [c]))
- // cond:
// result: (SHLLconst [c&31] x)
for {
_ = v.Args[1]
break
}
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHRLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHRLconst || v_0.AuxInt != 1 {
break
}
x := v_0.Args[0]
return true
}
// match: (SHLLconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
func rewriteValueAMD64_OpAMD64SHLQ_0(v *Value) bool {
b := v.Block
// match: (SHLQ x (MOVQconst [c]))
- // cond:
// result: (SHLQconst [c&63] x)
for {
_ = v.Args[1]
return true
}
// match: (SHLQ x (MOVLconst [c]))
- // cond:
// result: (SHLQconst [c&63] x)
for {
_ = v.Args[1]
break
}
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHRQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHRQconst || v_0.AuxInt != 1 {
break
}
x := v_0.Args[0]
return true
}
// match: (SHLQconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64SHRBconst_0(v *Value) bool {
// match: (SHRBconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
func rewriteValueAMD64_OpAMD64SHRL_0(v *Value) bool {
b := v.Block
// match: (SHRL x (MOVQconst [c]))
- // cond:
// result: (SHRLconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (SHRL x (MOVLconst [c]))
- // cond:
// result: (SHRLconst [c&31] x)
for {
_ = v.Args[1]
break
}
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLLconst || v_0.AuxInt != 1 {
break
}
x := v_0.Args[0]
return true
}
// match: (SHRLconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
func rewriteValueAMD64_OpAMD64SHRQ_0(v *Value) bool {
b := v.Block
// match: (SHRQ x (MOVQconst [c]))
- // cond:
// result: (SHRQconst [c&63] x)
for {
_ = v.Args[1]
return true
}
// match: (SHRQ x (MOVLconst [c]))
- // cond:
// result: (SHRQconst [c&63] x)
for {
_ = v.Args[1]
break
}
v_0 := v.Args[0]
- if v_0.Op != OpAMD64SHLQconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpAMD64SHLQconst || v_0.AuxInt != 1 {
break
}
x := v_0.Args[0]
return true
}
// match: (SHRQconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValueAMD64_OpAMD64SHRWconst_0(v *Value) bool {
// match: (SHRWconst x [0])
- // cond:
// result: x
for {
if v.AuxInt != 0 {
func rewriteValueAMD64_OpAMD64SUBL_0(v *Value) bool {
b := v.Block
// match: (SUBL x (MOVLconst [c]))
- // cond:
// result: (SUBLconst x [c])
for {
_ = v.Args[1]
return true
}
// match: (SUBL (MOVLconst [c]) x)
- // cond:
// result: (NEGL (SUBLconst <v.Type> x [c]))
for {
x := v.Args[1]
return true
}
// match: (SUBL x x)
- // cond:
// result: (MOVLconst [0])
for {
x := v.Args[1]
return true
}
// match: (SUBLconst [c] x)
- // cond:
// result: (ADDLconst [int64(int32(-c))] x)
for {
c := v.AuxInt
return true
}
// match: (SUBLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
- // cond:
// result: (SUBL x (MOVLf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSSstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (SUBQ x x)
- // cond:
// result: (MOVQconst [0])
for {
x := v.Args[1]
}
func rewriteValueAMD64_OpAMD64SUBQconst_0(v *Value) bool {
// match: (SUBQconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SUBQconst (MOVQconst [d]) [c])
- // cond:
// result: (MOVQconst [d-c])
for {
c := v.AuxInt
return true
}
// match: (SUBQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
- // cond:
// result: (SUBQ x (MOVQf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (SUBSDload x [off] {sym} ptr (MOVQstore [off] {sym} ptr y _))
- // cond:
// result: (SUBSD x (MOVQi2f y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVQstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVQstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (SUBSSload x [off] {sym} ptr (MOVLstore [off] {sym} ptr y _))
- // cond:
// result: (SUBSS x (MOVLi2f y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVLstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVLstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
func rewriteValueAMD64_OpAMD64TESTB_0(v *Value) bool {
b := v.Block
// match: (TESTB (MOVLconst [c]) x)
- // cond:
// result: (TESTBconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (TESTB x (MOVLconst [c]))
- // cond:
// result: (TESTBconst [c] x)
for {
_ = v.Args[1]
func rewriteValueAMD64_OpAMD64TESTL_0(v *Value) bool {
b := v.Block
// match: (TESTL (MOVLconst [c]) x)
- // cond:
// result: (TESTLconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (TESTL x (MOVLconst [c]))
- // cond:
// result: (TESTLconst [c] x)
for {
_ = v.Args[1]
func rewriteValueAMD64_OpAMD64TESTW_0(v *Value) bool {
b := v.Block
// match: (TESTW (MOVLconst [c]) x)
- // cond:
// result: (TESTWconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (TESTW x (MOVLconst [c]))
- // cond:
// result: (TESTWconst [c] x)
for {
_ = v.Args[1]
}
y := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVLconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTCL)
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVLconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTCL)
return true
}
// match: (XORL x (MOVLconst [c]))
- // cond:
// result: (XORLconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (XORL (MOVLconst [c]) x)
- // cond:
// result: (XORLconst [c] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpAMD64ROLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpAMD64ROLLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 16-c && c < 16 && t.Size() == 2) {
+ if x != v_1.Args[0] || !(d == 16-c && c < 16 && t.Size() == 2) {
break
}
v.reset(OpAMD64ROLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 16-c && c < 16 && t.Size() == 2) {
+ if x != v_1.Args[0] || !(d == 16-c && c < 16 && t.Size() == 2) {
break
}
v.reset(OpAMD64ROLWconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 8-c && c < 8 && t.Size() == 1) {
+ if x != v_1.Args[0] || !(d == 8-c && c < 8 && t.Size() == 1) {
break
}
v.reset(OpAMD64ROLBconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 8-c && c < 8 && t.Size() == 1) {
+ if x != v_1.Args[0] || !(d == 8-c && c < 8 && t.Size() == 1) {
break
}
v.reset(OpAMD64ROLBconst)
return true
}
// match: (XORL x x)
- // cond:
// result: (MOVLconst [0])
for {
x := v.Args[1]
return true
}
// match: (XORLconst [1] (SETNE x))
- // cond:
// result: (SETEQ x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETEQ x))
- // cond:
// result: (SETNE x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETL x))
- // cond:
// result: (SETGE x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETGE x))
- // cond:
// result: (SETL x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETLE x))
- // cond:
// result: (SETG x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETG x))
- // cond:
// result: (SETLE x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETB x))
- // cond:
// result: (SETAE x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETAE x))
- // cond:
// result: (SETB x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [1] (SETBE x))
- // cond:
// result: (SETA x)
for {
if v.AuxInt != 1 {
}
func rewriteValueAMD64_OpAMD64XORLconst_10(v *Value) bool {
// match: (XORLconst [1] (SETA x))
- // cond:
// result: (SETBE x)
for {
if v.AuxInt != 1 {
return true
}
// match: (XORLconst [c] (XORLconst [d] x))
- // cond:
// result: (XORLconst [c ^ d] x)
for {
c := v.AuxInt
return true
}
// match: (XORLconst [c] (BTCLconst [d] x))
- // cond:
// result: (XORLconst [c ^ 1<<uint32(d)] x)
for {
c := v.AuxInt
return true
}
// match: (XORLconst [c] (MOVLconst [d]))
- // cond:
// result: (MOVLconst [c^d])
for {
c := v.AuxInt
return true
}
// match: (XORLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
- // cond:
// result: (XORL x (MOVLf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSSstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSSstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
y := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVQconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTCQ)
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVQconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
v.reset(OpAMD64BTCQ)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpAMD64ROLQconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpAMD64ROLQconst)
return true
}
// match: (XORQ x x)
- // cond:
// result: (MOVQconst [0])
for {
x := v.Args[1]
return true
}
// match: (XORQconst [c] (XORQconst [d] x))
- // cond:
// result: (XORQconst [c ^ d] x)
for {
c := v.AuxInt
return true
}
// match: (XORQconst [c] (BTCQconst [d] x))
- // cond:
// result: (XORQconst [c ^ 1<<uint32(d)] x)
for {
c := v.AuxInt
return true
}
// match: (XORQconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (XORQconst [c] (MOVQconst [d]))
- // cond:
// result: (MOVQconst [c^d])
for {
c := v.AuxInt
return true
}
// match: (XORQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
- // cond:
// result: (XORQ x (MOVQf2i y))
for {
off := v.AuxInt
x := v.Args[0]
ptr := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpAMD64MOVSDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpAMD64MOVSDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
func rewriteValueAMD64_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADDL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADDL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (ADDSS x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAdd64_0(v *Value) bool {
// match: (Add64 x y)
- // cond:
// result: (ADDQ x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (ADDSD x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADDL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAnd64_0(v *Value) bool {
// match: (And64 x y)
- // cond:
// result: (ANDQ x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (ANDL x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicAdd32 ptr val mem)
- // cond:
// result: (AddTupleFirst32 val (XADDLlock val ptr mem))
for {
mem := v.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicAdd64 ptr val mem)
- // cond:
// result: (AddTupleFirst64 val (XADDQlock val ptr mem))
for {
mem := v.Args[2]
}
func rewriteValueAMD64_OpAtomicAnd8_0(v *Value) bool {
// match: (AtomicAnd8 ptr val mem)
- // cond:
// result: (ANDBlock ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueAMD64_OpAtomicCompareAndSwap32_0(v *Value) bool {
// match: (AtomicCompareAndSwap32 ptr old new_ mem)
- // cond:
// result: (CMPXCHGLlock ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueAMD64_OpAtomicCompareAndSwap64_0(v *Value) bool {
// match: (AtomicCompareAndSwap64 ptr old new_ mem)
- // cond:
// result: (CMPXCHGQlock ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueAMD64_OpAtomicExchange32_0(v *Value) bool {
// match: (AtomicExchange32 ptr val mem)
- // cond:
// result: (XCHGL val ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueAMD64_OpAtomicExchange64_0(v *Value) bool {
// match: (AtomicExchange64 ptr val mem)
- // cond:
// result: (XCHGQ val ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueAMD64_OpAtomicLoad32_0(v *Value) bool {
// match: (AtomicLoad32 ptr mem)
- // cond:
// result: (MOVLatomicload ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueAMD64_OpAtomicLoad64_0(v *Value) bool {
// match: (AtomicLoad64 ptr mem)
- // cond:
// result: (MOVQatomicload ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueAMD64_OpAtomicLoad8_0(v *Value) bool {
// match: (AtomicLoad8 ptr mem)
- // cond:
// result: (MOVBatomicload ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueAMD64_OpAtomicOr8_0(v *Value) bool {
// match: (AtomicOr8 ptr val mem)
- // cond:
// result: (ORBlock ptr val mem)
for {
mem := v.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicStore32 ptr val mem)
- // cond:
// result: (Select1 (XCHGL <types.NewTuple(typ.UInt32,types.TypeMem)> val ptr mem))
for {
mem := v.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicStore64 ptr val mem)
- // cond:
// result: (Select1 (XCHGQ <types.NewTuple(typ.UInt64,types.TypeMem)> val ptr mem))
for {
mem := v.Args[2]
}
func rewriteValueAMD64_OpAvg64u_0(v *Value) bool {
// match: (Avg64u x y)
- // cond:
// result: (AVGQU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen16 x)
- // cond:
// result: (BSRL (LEAL1 <typ.UInt32> [1] (MOVWQZX <typ.UInt32> x) (MOVWQZX <typ.UInt32> x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen32 x)
- // cond:
// result: (Select0 (BSRQ (LEAQ1 <typ.UInt64> [1] (MOVLQZX <typ.UInt64> x) (MOVLQZX <typ.UInt64> x))))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen64 <t> x)
- // cond:
// result: (ADDQconst [1] (CMOVQEQ <t> (Select0 <t> (BSRQ x)) (MOVQconst <t> [-1]) (Select1 <types.TypeFlags> (BSRQ x))))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen8 x)
- // cond:
// result: (BSRL (LEAL1 <typ.UInt32> [1] (MOVBQZX <typ.UInt32> x) (MOVBQZX <typ.UInt32> x)))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpBswap32_0(v *Value) bool {
// match: (Bswap32 x)
- // cond:
// result: (BSWAPL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpBswap64_0(v *Value) bool {
// match: (Bswap64 x)
- // cond:
// result: (BSWAPQ x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCeil_0(v *Value) bool {
// match: (Ceil x)
- // cond:
// result: (ROUNDSD [2] x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
}
func rewriteValueAMD64_OpCom16_0(v *Value) bool {
// match: (Com16 x)
- // cond:
// result: (NOTL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCom32_0(v *Value) bool {
// match: (Com32 x)
- // cond:
// result: (NOTL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCom64_0(v *Value) bool {
// match: (Com64 x)
- // cond:
// result: (NOTQ x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCom8_0(v *Value) bool {
// match: (Com8 x)
- // cond:
// result: (NOTL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVLconst [val])
for {
val := v.AuxInt
}
func rewriteValueAMD64_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVLconst [val])
for {
val := v.AuxInt
}
func rewriteValueAMD64_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (MOVSSconst [val])
for {
val := v.AuxInt
}
func rewriteValueAMD64_OpConst64_0(v *Value) bool {
// match: (Const64 [val])
- // cond:
// result: (MOVQconst [val])
for {
val := v.AuxInt
}
func rewriteValueAMD64_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (MOVSDconst [val])
for {
val := v.AuxInt
}
func rewriteValueAMD64_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVLconst [val])
for {
val := v.AuxInt
}
func rewriteValueAMD64_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVLconst [b])
for {
b := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz16 x)
- // cond:
// result: (BSFL (BTSLconst <typ.UInt32> [16] x))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCtz16NonZero_0(v *Value) bool {
// match: (Ctz16NonZero x)
- // cond:
// result: (BSFL x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz32 x)
- // cond:
// result: (Select0 (BSFQ (BTSQconst <typ.UInt64> [32] x)))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCtz32NonZero_0(v *Value) bool {
// match: (Ctz32NonZero x)
- // cond:
// result: (BSFL x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz64 <t> x)
- // cond:
// result: (CMOVQEQ (Select0 <t> (BSFQ x)) (MOVQconst <t> [64]) (Select1 <types.TypeFlags> (BSFQ x)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz64NonZero x)
- // cond:
// result: (Select0 (BSFQ x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz8 x)
- // cond:
// result: (BSFL (BTSLconst <typ.UInt32> [ 8] x))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCtz8NonZero_0(v *Value) bool {
// match: (Ctz8NonZero x)
- // cond:
// result: (BSFL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (CVTTSS2SL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt32Fto64_0(v *Value) bool {
// match: (Cvt32Fto64 x)
- // cond:
// result: (CVTTSS2SQ x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (CVTSS2SD x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F x)
- // cond:
// result: (CVTSL2SS x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F x)
- // cond:
// result: (CVTSL2SD x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (CVTTSD2SL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (CVTSD2SS x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt64Fto64_0(v *Value) bool {
// match: (Cvt64Fto64 x)
- // cond:
// result: (CVTTSD2SQ x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt64to32F_0(v *Value) bool {
// match: (Cvt64to32F x)
- // cond:
// result: (CVTSQ2SS x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpCvt64to64F_0(v *Value) bool {
// match: (Cvt64to64F x)
- // cond:
// result: (CVTSQ2SD x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpDiv128u_0(v *Value) bool {
// match: (Div128u xhi xlo y)
- // cond:
// result: (DIVQU2 xhi xlo y)
for {
y := v.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 [a] x y)
- // cond:
// result: (Select0 (DIVW [a] x y))
for {
a := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (Select0 (DIVWU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32 [a] x y)
- // cond:
// result: (Select0 (DIVL [a] x y))
for {
a := v.AuxInt
}
func rewriteValueAMD64_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (DIVSS x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32u x y)
- // cond:
// result: (Select0 (DIVLU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div64 [a] x y)
- // cond:
// result: (Select0 (DIVQ [a] x y))
for {
a := v.AuxInt
}
func rewriteValueAMD64_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (DIVSD x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div64u x y)
- // cond:
// result: (Select0 (DIVQU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (Select0 (DIVW (SignExt8to16 x) (SignExt8to16 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (Select0 (DIVWU (ZeroExt8to16 x) (ZeroExt8to16 y)))
for {
y := v.Args[1]
func rewriteValueAMD64_OpEq16_0(v *Value) bool {
b := v.Block
// match: (Eq16 x y)
- // cond:
// result: (SETEQ (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpEq32_0(v *Value) bool {
b := v.Block
// match: (Eq32 x y)
- // cond:
// result: (SETEQ (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpEq32F_0(v *Value) bool {
b := v.Block
// match: (Eq32F x y)
- // cond:
// result: (SETEQF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpEq64_0(v *Value) bool {
b := v.Block
// match: (Eq64 x y)
- // cond:
// result: (SETEQ (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpEq64F_0(v *Value) bool {
b := v.Block
// match: (Eq64F x y)
- // cond:
// result: (SETEQF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpEq8_0(v *Value) bool {
b := v.Block
// match: (Eq8 x y)
- // cond:
// result: (SETEQ (CMPB x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpEqB_0(v *Value) bool {
b := v.Block
// match: (EqB x y)
- // cond:
// result: (SETEQ (CMPB x y))
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpFloor_0(v *Value) bool {
// match: (Floor x)
- // cond:
// result: (ROUNDSD [1] x)
for {
x := v.Args[0]
func rewriteValueAMD64_OpGeq16_0(v *Value) bool {
b := v.Block
// match: (Geq16 x y)
- // cond:
// result: (SETGE (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq16U_0(v *Value) bool {
b := v.Block
// match: (Geq16U x y)
- // cond:
// result: (SETAE (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq32_0(v *Value) bool {
b := v.Block
// match: (Geq32 x y)
- // cond:
// result: (SETGE (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq32F_0(v *Value) bool {
b := v.Block
// match: (Geq32F x y)
- // cond:
// result: (SETGEF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq32U_0(v *Value) bool {
b := v.Block
// match: (Geq32U x y)
- // cond:
// result: (SETAE (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq64_0(v *Value) bool {
b := v.Block
// match: (Geq64 x y)
- // cond:
// result: (SETGE (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq64F_0(v *Value) bool {
b := v.Block
// match: (Geq64F x y)
- // cond:
// result: (SETGEF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq64U_0(v *Value) bool {
b := v.Block
// match: (Geq64U x y)
- // cond:
// result: (SETAE (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq8_0(v *Value) bool {
b := v.Block
// match: (Geq8 x y)
- // cond:
// result: (SETGE (CMPB x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGeq8U_0(v *Value) bool {
b := v.Block
// match: (Geq8U x y)
- // cond:
// result: (SETAE (CMPB x y))
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpAMD64LoweredGetCallerPC)
}
func rewriteValueAMD64_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpAMD64LoweredGetCallerSP)
}
func rewriteValueAMD64_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpAMD64LoweredGetClosurePtr)
}
func rewriteValueAMD64_OpGetG_0(v *Value) bool {
// match: (GetG mem)
- // cond:
// result: (LoweredGetG mem)
for {
mem := v.Args[0]
func rewriteValueAMD64_OpGreater16_0(v *Value) bool {
b := v.Block
// match: (Greater16 x y)
- // cond:
// result: (SETG (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater16U_0(v *Value) bool {
b := v.Block
// match: (Greater16U x y)
- // cond:
// result: (SETA (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater32_0(v *Value) bool {
b := v.Block
// match: (Greater32 x y)
- // cond:
// result: (SETG (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater32F_0(v *Value) bool {
b := v.Block
// match: (Greater32F x y)
- // cond:
// result: (SETGF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater32U_0(v *Value) bool {
b := v.Block
// match: (Greater32U x y)
- // cond:
// result: (SETA (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater64_0(v *Value) bool {
b := v.Block
// match: (Greater64 x y)
- // cond:
// result: (SETG (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater64F_0(v *Value) bool {
b := v.Block
// match: (Greater64F x y)
- // cond:
// result: (SETGF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater64U_0(v *Value) bool {
b := v.Block
// match: (Greater64U x y)
- // cond:
// result: (SETA (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater8_0(v *Value) bool {
b := v.Block
// match: (Greater8 x y)
- // cond:
// result: (SETG (CMPB x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpGreater8U_0(v *Value) bool {
b := v.Block
// match: (Greater8U x y)
- // cond:
// result: (SETA (CMPB x y))
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpHmul32_0(v *Value) bool {
// match: (Hmul32 x y)
- // cond:
// result: (HMULL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpHmul32u_0(v *Value) bool {
// match: (Hmul32u x y)
- // cond:
// result: (HMULLU x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpHmul64_0(v *Value) bool {
// match: (Hmul64 x y)
- // cond:
// result: (HMULQ x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpHmul64u_0(v *Value) bool {
// match: (Hmul64u x y)
- // cond:
// result: (HMULQU x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpInt64Hi_0(v *Value) bool {
// match: (Int64Hi x)
- // cond:
// result: (SHRQconst [32] x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpInt64Lo_0(v *Value) bool {
// match: (Int64Lo x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
func rewriteValueAMD64_OpLeq16_0(v *Value) bool {
b := v.Block
// match: (Leq16 x y)
- // cond:
// result: (SETLE (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq16U_0(v *Value) bool {
b := v.Block
// match: (Leq16U x y)
- // cond:
// result: (SETBE (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq32_0(v *Value) bool {
b := v.Block
// match: (Leq32 x y)
- // cond:
// result: (SETLE (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq32F_0(v *Value) bool {
b := v.Block
// match: (Leq32F x y)
- // cond:
// result: (SETGEF (UCOMISS y x))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq32U_0(v *Value) bool {
b := v.Block
// match: (Leq32U x y)
- // cond:
// result: (SETBE (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq64_0(v *Value) bool {
b := v.Block
// match: (Leq64 x y)
- // cond:
// result: (SETLE (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq64F_0(v *Value) bool {
b := v.Block
// match: (Leq64F x y)
- // cond:
// result: (SETGEF (UCOMISD y x))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq64U_0(v *Value) bool {
b := v.Block
// match: (Leq64U x y)
- // cond:
// result: (SETBE (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq8_0(v *Value) bool {
b := v.Block
// match: (Leq8 x y)
- // cond:
// result: (SETLE (CMPB x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLeq8U_0(v *Value) bool {
b := v.Block
// match: (Leq8U x y)
- // cond:
// result: (SETBE (CMPB x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess16_0(v *Value) bool {
b := v.Block
// match: (Less16 x y)
- // cond:
// result: (SETL (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess16U_0(v *Value) bool {
b := v.Block
// match: (Less16U x y)
- // cond:
// result: (SETB (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess32_0(v *Value) bool {
b := v.Block
// match: (Less32 x y)
- // cond:
// result: (SETL (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess32F_0(v *Value) bool {
b := v.Block
// match: (Less32F x y)
- // cond:
// result: (SETGF (UCOMISS y x))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess32U_0(v *Value) bool {
b := v.Block
// match: (Less32U x y)
- // cond:
// result: (SETB (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess64_0(v *Value) bool {
b := v.Block
// match: (Less64 x y)
- // cond:
// result: (SETL (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess64F_0(v *Value) bool {
b := v.Block
// match: (Less64F x y)
- // cond:
// result: (SETGF (UCOMISD y x))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess64U_0(v *Value) bool {
b := v.Block
// match: (Less64U x y)
- // cond:
// result: (SETB (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess8_0(v *Value) bool {
b := v.Block
// match: (Less8 x y)
- // cond:
// result: (SETL (CMPB x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpLess8U_0(v *Value) bool {
b := v.Block
// match: (Less8U x y)
- // cond:
// result: (SETB (CMPB x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 [a] x y)
- // cond:
// result: (Select1 (DIVW [a] x y))
for {
a := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (Select1 (DIVWU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32 [a] x y)
- // cond:
// result: (Select1 (DIVL [a] x y))
for {
a := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32u x y)
- // cond:
// result: (Select1 (DIVLU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod64 [a] x y)
- // cond:
// result: (Select1 (DIVQ [a] x y))
for {
a := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod64u x y)
- // cond:
// result: (Select1 (DIVQU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (Select1 (DIVW (SignExt8to16 x) (SignExt8to16 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (Select1 (DIVWU (ZeroExt8to16 x) (ZeroExt8to16 y)))
for {
y := v.Args[1]
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVWstore dst (MOVWload src mem) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVLstore dst (MOVLload src mem) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [8] dst src mem)
- // cond:
// result: (MOVQstore dst (MOVQload src mem) mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Move [32] dst src mem)
- // cond:
// result: (Move [16] (OffPtr <dst.Type> dst [16]) (OffPtr <src.Type> src [16]) (Move [16] dst src mem))
for {
if v.AuxInt != 32 {
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBload [2] src mem) (MOVWstore dst (MOVWload src mem) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Move [5] dst src mem)
- // cond:
// result: (MOVBstore [4] dst (MOVBload [4] src mem) (MOVLstore dst (MOVLload src mem) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Move [6] dst src mem)
- // cond:
// result: (MOVWstore [4] dst (MOVWload [4] src mem) (MOVLstore dst (MOVLload src mem) mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Move [7] dst src mem)
- // cond:
// result: (MOVLstore [3] dst (MOVLload [3] src mem) (MOVLstore dst (MOVLload src mem) mem))
for {
if v.AuxInt != 7 {
return true
}
// match: (Move [9] dst src mem)
- // cond:
// result: (MOVBstore [8] dst (MOVBload [8] src mem) (MOVQstore dst (MOVQload src mem) mem))
for {
if v.AuxInt != 9 {
return true
}
// match: (Move [10] dst src mem)
- // cond:
// result: (MOVWstore [8] dst (MOVWload [8] src mem) (MOVQstore dst (MOVQload src mem) mem))
for {
if v.AuxInt != 10 {
return true
}
// match: (Move [12] dst src mem)
- // cond:
// result: (MOVLstore [8] dst (MOVLload [8] src mem) (MOVQstore dst (MOVQload src mem) mem))
for {
if v.AuxInt != 12 {
}
func rewriteValueAMD64_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (MULL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (MULL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (MULSS x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpMul64_0(v *Value) bool {
// match: (Mul64 x y)
- // cond:
// result: (MULQ x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (MULSD x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpMul64uhilo_0(v *Value) bool {
// match: (Mul64uhilo x y)
- // cond:
// result: (MULQU2 x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (MULL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (NEGL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (NEGL x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neg32F x)
- // cond:
// result: (PXOR x (MOVSSconst <typ.Float32> [auxFrom32F(float32(math.Copysign(0, -1)))]))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpNeg64_0(v *Value) bool {
// match: (Neg64 x)
- // cond:
// result: (NEGQ x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neg64F x)
- // cond:
// result: (PXOR x (MOVSDconst <typ.Float64> [auxFrom64F(math.Copysign(0, -1))]))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (NEGL x)
for {
x := v.Args[0]
func rewriteValueAMD64_OpNeq16_0(v *Value) bool {
b := v.Block
// match: (Neq16 x y)
- // cond:
// result: (SETNE (CMPW x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpNeq32_0(v *Value) bool {
b := v.Block
// match: (Neq32 x y)
- // cond:
// result: (SETNE (CMPL x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpNeq32F_0(v *Value) bool {
b := v.Block
// match: (Neq32F x y)
- // cond:
// result: (SETNEF (UCOMISS x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpNeq64_0(v *Value) bool {
b := v.Block
// match: (Neq64 x y)
- // cond:
// result: (SETNE (CMPQ x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpNeq64F_0(v *Value) bool {
b := v.Block
// match: (Neq64F x y)
- // cond:
// result: (SETNEF (UCOMISD x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpNeq8_0(v *Value) bool {
b := v.Block
// match: (Neq8 x y)
- // cond:
// result: (SETNE (CMPB x y))
for {
y := v.Args[1]
func rewriteValueAMD64_OpNeqB_0(v *Value) bool {
b := v.Block
// match: (NeqB x y)
- // cond:
// result: (SETNE (CMPB x y))
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueAMD64_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (XORLconst [1] x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpOr64_0(v *Value) bool {
// match: (Or64 x y)
- // cond:
// result: (ORQ x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (ORL x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount16 x)
- // cond:
// result: (POPCNTL (MOVWQZX <typ.UInt32> x))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpPopCount32_0(v *Value) bool {
// match: (PopCount32 x)
- // cond:
// result: (POPCNTL x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpPopCount64_0(v *Value) bool {
// match: (PopCount64 x)
- // cond:
// result: (POPCNTQ x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount8 x)
- // cond:
// result: (POPCNTL (MOVBQZX <typ.UInt32> x))
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpRotateLeft16_0(v *Value) bool {
// match: (RotateLeft16 a b)
- // cond:
// result: (ROLW a b)
for {
b := v.Args[1]
}
func rewriteValueAMD64_OpRotateLeft32_0(v *Value) bool {
// match: (RotateLeft32 a b)
- // cond:
// result: (ROLL a b)
for {
b := v.Args[1]
}
func rewriteValueAMD64_OpRotateLeft64_0(v *Value) bool {
// match: (RotateLeft64 a b)
- // cond:
// result: (ROLQ a b)
for {
b := v.Args[1]
}
func rewriteValueAMD64_OpRotateLeft8_0(v *Value) bool {
// match: (RotateLeft8 a b)
- // cond:
// result: (ROLB a b)
for {
b := v.Args[1]
}
func rewriteValueAMD64_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpRoundToEven_0(v *Value) bool {
// match: (RoundToEven x)
- // cond:
// result: (ROUNDSD [0] x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select0 (Mul64uover x y))
- // cond:
// result: (Select0 <typ.UInt64> (MULQU x y))
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (Mul32uover x y))
- // cond:
// result: (Select0 <typ.UInt32> (MULLU x y))
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (Add64carry x y c))
- // cond:
// result: (Select0 <typ.UInt64> (ADCQ x y (Select1 <types.TypeFlags> (NEGLflags c))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (Sub64borrow x y c))
- // cond:
// result: (Select0 <typ.UInt64> (SBBQ x y (Select1 <types.TypeFlags> (NEGLflags c))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 <t> (AddTupleFirst32 val tuple))
- // cond:
// result: (ADDL val (Select0 <t> tuple))
for {
t := v.Type
return true
}
// match: (Select0 <t> (AddTupleFirst64 val tuple))
- // cond:
// result: (ADDQ val (Select0 <t> tuple))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Select1 (Mul64uover x y))
- // cond:
// result: (SETO (Select1 <types.TypeFlags> (MULQU x y)))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (Mul32uover x y))
- // cond:
// result: (SETO (Select1 <types.TypeFlags> (MULLU x y)))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (Add64carry x y c))
- // cond:
// result: (NEGQ <typ.UInt64> (SBBQcarrymask <typ.UInt64> (Select1 <types.TypeFlags> (ADCQ x y (Select1 <types.TypeFlags> (NEGLflags c))))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (Sub64borrow x y c))
- // cond:
// result: (NEGQ <typ.UInt64> (SBBQcarrymask <typ.UInt64> (Select1 <types.TypeFlags> (SBBQ x y (Select1 <types.TypeFlags> (NEGLflags c))))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (NEGLflags (MOVQconst [0])))
- // cond:
// result: (FlagEQ)
for {
v_0 := v.Args[0]
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpAMD64MOVQconst || v_0_0.AuxInt != 0 {
break
}
v.reset(OpAMD64FlagEQ)
return true
}
// match: (Select1 (NEGLflags (NEGQ (SBBQcarrymask x))))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (AddTupleFirst32 _ tuple))
- // cond:
// result: (Select1 tuple)
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (AddTupleFirst64 _ tuple))
- // cond:
// result: (Select1 tuple)
for {
v_0 := v.Args[0]
}
func rewriteValueAMD64_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVWQSX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpSignExt16to64_0(v *Value) bool {
// match: (SignExt16to64 x)
- // cond:
// result: (MOVWQSX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpSignExt32to64_0(v *Value) bool {
// match: (SignExt32to64 x)
- // cond:
// result: (MOVLQSX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBQSX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBQSX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpSignExt8to64_0(v *Value) bool {
// match: (SignExt8to64 x)
- // cond:
// result: (MOVBQSX x)
for {
x := v.Args[0]
func rewriteValueAMD64_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SARQconst (NEGQ <t> x) [63])
for {
t := v.Type
}
func rewriteValueAMD64_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (SQRTSD x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValueAMD64_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUBL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUBL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (SUBSS x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpSub64_0(v *Value) bool {
// match: (Sub64 x y)
- // cond:
// result: (SUBQ x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (SUBSD x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUBL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpTrunc_0(v *Value) bool {
// match: (Trunc x)
- // cond:
// result: (ROUNDSD [3] x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpTrunc64to16_0(v *Value) bool {
// match: (Trunc64to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpTrunc64to32_0(v *Value) bool {
// match: (Trunc64to32 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpTrunc64to8_0(v *Value) bool {
// match: (Trunc64to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValueAMD64_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XORL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XORL x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpXor64_0(v *Value) bool {
// match: (Xor64 x y)
- // cond:
// result: (XORQ x y)
for {
y := v.Args[1]
}
func rewriteValueAMD64_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XORL x y)
for {
y := v.Args[1]
b := v.Block
config := b.Func.Config
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] destptr mem)
- // cond:
// result: (MOVBstoreconst [0] destptr mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] destptr mem)
- // cond:
// result: (MOVWstoreconst [0] destptr mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] destptr mem)
- // cond:
// result: (MOVLstoreconst [0] destptr mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [8] destptr mem)
- // cond:
// result: (MOVQstoreconst [0] destptr mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Zero [3] destptr mem)
- // cond:
// result: (MOVBstoreconst [makeValAndOff(0,2)] destptr (MOVWstoreconst [0] destptr mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Zero [5] destptr mem)
- // cond:
// result: (MOVBstoreconst [makeValAndOff(0,4)] destptr (MOVLstoreconst [0] destptr mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Zero [6] destptr mem)
- // cond:
// result: (MOVWstoreconst [makeValAndOff(0,4)] destptr (MOVLstoreconst [0] destptr mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Zero [7] destptr mem)
- // cond:
// result: (MOVLstoreconst [makeValAndOff(0,3)] destptr (MOVLstoreconst [0] destptr mem))
for {
if v.AuxInt != 7 {
}
func rewriteValueAMD64_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVWQZX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpZeroExt16to64_0(v *Value) bool {
// match: (ZeroExt16to64 x)
- // cond:
// result: (MOVWQZX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpZeroExt32to64_0(v *Value) bool {
// match: (ZeroExt32to64 x)
- // cond:
// result: (MOVLQZX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBQZX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBQZX x)
for {
x := v.Args[0]
}
func rewriteValueAMD64_OpZeroExt8to64_0(v *Value) bool {
// match: (ZeroExt8to64 x)
- // cond:
// result: (MOVBQZX x)
for {
x := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVLconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64UGE
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVLconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64UGE
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVQconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64UGE
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVQconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64UGE
for v.Op == OpAMD64TESTQ {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTL {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTQ {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTL {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTQ {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
for v.Op == OpAMD64TESTL {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
return true
}
// match: (EQ (InvertFlags cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (EQ (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64GE:
// match: (GE (InvertFlags cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64GT:
// match: (GT (InvertFlags cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockIf:
// match: (If (SETL cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpAMD64SETL {
cmp := v.Args[0]
return true
}
// match: (If (SETLE cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpAMD64SETLE {
cmp := v.Args[0]
return true
}
// match: (If (SETG cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpAMD64SETG {
cmp := v.Args[0]
return true
}
// match: (If (SETGE cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpAMD64SETGE {
cmp := v.Args[0]
return true
}
// match: (If (SETEQ cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpAMD64SETEQ {
cmp := v.Args[0]
return true
}
// match: (If (SETNE cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpAMD64SETNE {
cmp := v.Args[0]
return true
}
// match: (If (SETB cmp) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == OpAMD64SETB {
cmp := v.Args[0]
return true
}
// match: (If (SETBE cmp) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == OpAMD64SETBE {
cmp := v.Args[0]
return true
}
// match: (If (SETA cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpAMD64SETA {
cmp := v.Args[0]
return true
}
// match: (If (SETAE cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpAMD64SETAE {
cmp := v.Args[0]
return true
}
// match: (If (SETO cmp) yes no)
- // cond:
// result: (OS cmp yes no)
for v.Op == OpAMD64SETO {
cmp := v.Args[0]
return true
}
// match: (If (SETGF cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpAMD64SETGF {
cmp := v.Args[0]
return true
}
// match: (If (SETGEF cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpAMD64SETGEF {
cmp := v.Args[0]
return true
}
// match: (If (SETEQF cmp) yes no)
- // cond:
// result: (EQF cmp yes no)
for v.Op == OpAMD64SETEQF {
cmp := v.Args[0]
return true
}
// match: (If (SETNEF cmp) yes no)
- // cond:
// result: (NEF cmp yes no)
for v.Op == OpAMD64SETNEF {
cmp := v.Args[0]
return true
}
// match: (If cond yes no)
- // cond:
// result: (NE (TESTB cond cond) yes no)
for {
cond := b.Control
}
case BlockAMD64LE:
// match: (LE (InvertFlags cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (LE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64LT:
// match: (LT (InvertFlags cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (LT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64NE:
// match: (NE (TESTB (SETL cmp) (SETL cmp)) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETL {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETL || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64LT
return true
}
// match: (NE (TESTB (SETL cmp) (SETL cmp)) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETL {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETL || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64LT
return true
}
// match: (NE (TESTB (SETLE cmp) (SETLE cmp)) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETLE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETLE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64LE
return true
}
// match: (NE (TESTB (SETLE cmp) (SETLE cmp)) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETLE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETLE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64LE
return true
}
// match: (NE (TESTB (SETG cmp) (SETG cmp)) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETG {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETG || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64GT
return true
}
// match: (NE (TESTB (SETG cmp) (SETG cmp)) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETG {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETG || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64GT
return true
}
// match: (NE (TESTB (SETGE cmp) (SETGE cmp)) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETGE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETGE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64GE
return true
}
// match: (NE (TESTB (SETGE cmp) (SETGE cmp)) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETGE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETGE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64GE
return true
}
// match: (NE (TESTB (SETEQ cmp) (SETEQ cmp)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETEQ {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETEQ || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64EQ
return true
}
// match: (NE (TESTB (SETEQ cmp) (SETEQ cmp)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETEQ {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETEQ || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64EQ
return true
}
// match: (NE (TESTB (SETNE cmp) (SETNE cmp)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETNE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETNE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64NE
return true
}
// match: (NE (TESTB (SETNE cmp) (SETNE cmp)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETNE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETNE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64NE
return true
}
// match: (NE (TESTB (SETB cmp) (SETB cmp)) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETB {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETB || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64ULT
return true
}
// match: (NE (TESTB (SETB cmp) (SETB cmp)) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETB {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETB || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64ULT
return true
}
// match: (NE (TESTB (SETBE cmp) (SETBE cmp)) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETBE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETBE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64ULE
return true
}
// match: (NE (TESTB (SETBE cmp) (SETBE cmp)) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETBE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETBE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64ULE
return true
}
// match: (NE (TESTB (SETA cmp) (SETA cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETA {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETA || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGT
return true
}
// match: (NE (TESTB (SETA cmp) (SETA cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETA {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETA || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGT
return true
}
// match: (NE (TESTB (SETAE cmp) (SETAE cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETAE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETAE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGE
return true
}
// match: (NE (TESTB (SETAE cmp) (SETAE cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETAE {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETAE || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGE
return true
}
// match: (NE (TESTB (SETO cmp) (SETO cmp)) yes no)
- // cond:
// result: (OS cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETO {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETO || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64OS
return true
}
// match: (NE (TESTB (SETO cmp) (SETO cmp)) yes no)
- // cond:
// result: (OS cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETO {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETO || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64OS
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVLconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64ULT
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVLconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVLconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64ULT
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_0_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_0_0.Op != OpAMD64MOVQconst || v_0_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64ULT
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpAMD64MOVQconst {
- break
- }
- if v_1_0.AuxInt != 1 {
- break
- }
- if !(!config.nacl) {
+ if v_1_0.Op != OpAMD64MOVQconst || v_1_0.AuxInt != 1 || !(!config.nacl) {
break
}
b.Kind = BlockAMD64ULT
for v.Op == OpAMD64TESTQ {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHLQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHLQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTL {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHLLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHLLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHRQconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHRQconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTQ {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLQconst {
- break
- }
- if z1_0.AuxInt != 63 {
+ if z1_0.Op != OpAMD64SHLQconst || z1_0.AuxInt != 63 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTL {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
z1_0 := z1.Args[0]
- if z1_0.Op != OpAMD64SHLLconst {
- break
- }
- if z1_0.AuxInt != 31 {
+ if z1_0.Op != OpAMD64SHLLconst || z1_0.AuxInt != 31 {
break
}
x := z1_0.Args[0]
for v.Op == OpAMD64TESTQ {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRQconst {
- break
- }
- if z1.AuxInt != 63 {
+ if z1.Op != OpAMD64SHRQconst || z1.AuxInt != 63 {
break
}
x := z1.Args[0]
for v.Op == OpAMD64TESTL {
z2 := v.Args[1]
z1 := v.Args[0]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
_ = v.Args[1]
z2 := v.Args[0]
z1 := v.Args[1]
- if z1.Op != OpAMD64SHRLconst {
- break
- }
- if z1.AuxInt != 31 {
+ if z1.Op != OpAMD64SHRLconst || z1.AuxInt != 31 {
break
}
x := z1.Args[0]
return true
}
// match: (NE (TESTB (SETGF cmp) (SETGF cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETGF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETGF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGT
return true
}
// match: (NE (TESTB (SETGF cmp) (SETGF cmp)) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETGF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETGF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGT
return true
}
// match: (NE (TESTB (SETGEF cmp) (SETGEF cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETGEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETGEF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGE
return true
}
// match: (NE (TESTB (SETGEF cmp) (SETGEF cmp)) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETGEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETGEF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64UGE
return true
}
// match: (NE (TESTB (SETEQF cmp) (SETEQF cmp)) yes no)
- // cond:
// result: (EQF cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETEQF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETEQF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64EQF
return true
}
// match: (NE (TESTB (SETEQF cmp) (SETEQF cmp)) yes no)
- // cond:
// result: (EQF cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETEQF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETEQF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64EQF
return true
}
// match: (NE (TESTB (SETNEF cmp) (SETNEF cmp)) yes no)
- // cond:
// result: (NEF cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETNEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETNEF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64NEF
return true
}
// match: (NE (TESTB (SETNEF cmp) (SETNEF cmp)) yes no)
- // cond:
// result: (NEF cmp yes no)
for v.Op == OpAMD64TESTB {
_ = v.Args[1]
}
cmp := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpAMD64SETNEF {
- break
- }
- if cmp != v_1.Args[0] {
+ if v_1.Op != OpAMD64SETNEF || cmp != v_1.Args[0] {
break
}
b.Kind = BlockAMD64NEF
return true
}
// match: (NE (InvertFlags cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (NE (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64UGE:
// match: (UGE (InvertFlags cmp) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (UGE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64UGT:
// match: (UGT (InvertFlags cmp) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (UGT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64ULE:
// match: (ULE (InvertFlags cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (ULE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
}
case BlockAMD64ULT:
// match: (ULT (InvertFlags cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpAMD64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (ULT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpAMD64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpAMD64FlagGT_UGT {
b.Kind = BlockFirst
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPBconstload {sym} [vo] ptr mem)
- // cond:
// result: (CMPBconst (MOVBload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])
for {
vo := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPBload {sym} [off] ptr x mem)
- // cond:
// result: (CMPB (MOVBload {sym} [off] ptr mem) x)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPLconstload {sym} [vo] ptr mem)
- // cond:
// result: (CMPLconst (MOVLload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])
for {
vo := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPLload {sym} [off] ptr x mem)
- // cond:
// result: (CMPL (MOVLload {sym} [off] ptr mem) x)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPQconstload {sym} [vo] ptr mem)
- // cond:
// result: (CMPQconst (MOVQload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])
for {
vo := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPQload {sym} [off] ptr x mem)
- // cond:
// result: (CMPQ (MOVQload {sym} [off] ptr mem) x)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPWconstload {sym} [vo] ptr mem)
- // cond:
// result: (CMPWconst (MOVWload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])
for {
vo := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPWload {sym} [off] ptr x mem)
- // cond:
// result: (CMPW (MOVWload {sym} [off] ptr mem) x)
for {
off := v.AuxInt
}
func rewriteValueARM_OpARMADC_0(v *Value) bool {
// match: (ADC (MOVWconst [c]) x flags)
- // cond:
// result: (ADCconst [c] x flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (MOVWconst [c]) flags)
- // cond:
// result: (ADCconst [c] x flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (MOVWconst [c]) flags)
- // cond:
// result: (ADCconst [c] x flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (MOVWconst [c]) x flags)
- // cond:
// result: (ADCconst [c] x flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SLLconst [c] y) flags)
- // cond:
// result: (ADCshiftLL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SLLconst [c] y) x flags)
- // cond:
// result: (ADCshiftLL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SLLconst [c] y) x flags)
- // cond:
// result: (ADCshiftLL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SLLconst [c] y) flags)
- // cond:
// result: (ADCshiftLL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SRLconst [c] y) flags)
- // cond:
// result: (ADCshiftRL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SRLconst [c] y) x flags)
- // cond:
// result: (ADCshiftRL x y [c] flags)
for {
flags := v.Args[2]
}
func rewriteValueARM_OpARMADC_10(v *Value) bool {
// match: (ADC (SRLconst [c] y) x flags)
- // cond:
// result: (ADCshiftRL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SRLconst [c] y) flags)
- // cond:
// result: (ADCshiftRL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SRAconst [c] y) flags)
- // cond:
// result: (ADCshiftRA x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SRAconst [c] y) x flags)
- // cond:
// result: (ADCshiftRA x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SRAconst [c] y) x flags)
- // cond:
// result: (ADCshiftRA x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SRAconst [c] y) flags)
- // cond:
// result: (ADCshiftRA x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SLL y z) flags)
- // cond:
// result: (ADCshiftLLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SLL y z) x flags)
- // cond:
// result: (ADCshiftLLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SLL y z) x flags)
- // cond:
// result: (ADCshiftLLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SLL y z) flags)
- // cond:
// result: (ADCshiftLLreg x y z flags)
for {
flags := v.Args[2]
}
func rewriteValueARM_OpARMADC_20(v *Value) bool {
// match: (ADC x (SRL y z) flags)
- // cond:
// result: (ADCshiftRLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SRL y z) x flags)
- // cond:
// result: (ADCshiftRLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SRL y z) x flags)
- // cond:
// result: (ADCshiftRLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SRL y z) flags)
- // cond:
// result: (ADCshiftRLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SRA y z) flags)
- // cond:
// result: (ADCshiftRAreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SRA y z) x flags)
- // cond:
// result: (ADCshiftRAreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC (SRA y z) x flags)
- // cond:
// result: (ADCshiftRAreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (ADC x (SRA y z) flags)
- // cond:
// result: (ADCshiftRAreg x y z flags)
for {
flags := v.Args[2]
}
func rewriteValueARM_OpARMADCconst_0(v *Value) bool {
// match: (ADCconst [c] (ADDconst [d] x) flags)
- // cond:
// result: (ADCconst [int64(int32(c+d))] x flags)
for {
c := v.AuxInt
return true
}
// match: (ADCconst [c] (SUBconst [d] x) flags)
- // cond:
// result: (ADCconst [int64(int32(c-d))] x flags)
for {
c := v.AuxInt
func rewriteValueARM_OpARMADCshiftLL_0(v *Value) bool {
b := v.Block
// match: (ADCshiftLL (MOVWconst [c]) x [d] flags)
- // cond:
// result: (ADCconst [c] (SLLconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (ADCshiftLL x (MOVWconst [c]) [d] flags)
- // cond:
// result: (ADCconst x [int64(int32(uint32(c)<<uint64(d)))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMADCshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (ADCshiftLLreg (MOVWconst [c]) x y flags)
- // cond:
// result: (ADCconst [c] (SLL <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (ADCshiftLLreg x y (MOVWconst [c]) flags)
- // cond:
// result: (ADCshiftLL x y [c] flags)
for {
flags := v.Args[3]
func rewriteValueARM_OpARMADCshiftRA_0(v *Value) bool {
b := v.Block
// match: (ADCshiftRA (MOVWconst [c]) x [d] flags)
- // cond:
// result: (ADCconst [c] (SRAconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (ADCshiftRA x (MOVWconst [c]) [d] flags)
- // cond:
// result: (ADCconst x [int64(int32(c)>>uint64(d))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMADCshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (ADCshiftRAreg (MOVWconst [c]) x y flags)
- // cond:
// result: (ADCconst [c] (SRA <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (ADCshiftRAreg x y (MOVWconst [c]) flags)
- // cond:
// result: (ADCshiftRA x y [c] flags)
for {
flags := v.Args[3]
func rewriteValueARM_OpARMADCshiftRL_0(v *Value) bool {
b := v.Block
// match: (ADCshiftRL (MOVWconst [c]) x [d] flags)
- // cond:
// result: (ADCconst [c] (SRLconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (ADCshiftRL x (MOVWconst [c]) [d] flags)
- // cond:
// result: (ADCconst x [int64(int32(uint32(c)>>uint64(d)))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMADCshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (ADCshiftRLreg (MOVWconst [c]) x y flags)
- // cond:
// result: (ADCconst [c] (SRL <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (ADCshiftRLreg x y (MOVWconst [c]) flags)
- // cond:
// result: (ADCshiftRL x y [c] flags)
for {
flags := v.Args[3]
}
func rewriteValueARM_OpARMADD_0(v *Value) bool {
// match: (ADD x (MOVWconst [c]))
- // cond:
// result: (ADDconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ADD (MOVWconst [c]) x)
- // cond:
// result: (ADDconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (ADD x (SLLconst [c] y))
- // cond:
// result: (ADDshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (ADD (SLLconst [c] y) x)
- // cond:
// result: (ADDshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (ADD x (SRLconst [c] y))
- // cond:
// result: (ADDshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (ADD (SRLconst [c] y) x)
- // cond:
// result: (ADDshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (ADD x (SRAconst [c] y))
- // cond:
// result: (ADDshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (ADD (SRAconst [c] y) x)
- // cond:
// result: (ADDshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (ADD x (SLL y z))
- // cond:
// result: (ADDshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (ADD (SLL y z) x)
- // cond:
// result: (ADDshiftLLreg x y z)
for {
x := v.Args[1]
func rewriteValueARM_OpARMADD_10(v *Value) bool {
b := v.Block
// match: (ADD x (SRL y z))
- // cond:
// result: (ADDshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (ADD (SRL y z) x)
- // cond:
// result: (ADDshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (ADD x (SRA y z))
- // cond:
// result: (ADDshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (ADD (SRA y z) x)
- // cond:
// result: (ADDshiftRAreg x y z)
for {
x := v.Args[1]
return true
}
// match: (ADD x (RSBconst [0] y))
- // cond:
// result: (SUB x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMRSBconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMRSBconst || v_1.AuxInt != 0 {
break
}
y := v_1.Args[0]
return true
}
// match: (ADD (RSBconst [0] y) x)
- // cond:
// result: (SUB x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMRSBconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARMRSBconst || v_0.AuxInt != 0 {
break
}
y := v_0.Args[0]
return true
}
// match: (ADD <t> (RSBconst [c] x) (RSBconst [d] y))
- // cond:
// result: (RSBconst [c+d] (ADD <t> x y))
for {
t := v.Type
return true
}
// match: (ADD <t> (RSBconst [d] y) (RSBconst [c] x))
- // cond:
// result: (RSBconst [c+d] (ADD <t> x y))
for {
t := v.Type
return true
}
// match: (ADD (MUL x y) a)
- // cond:
// result: (MULA x y a)
for {
a := v.Args[1]
return true
}
// match: (ADD a (MUL x y))
- // cond:
// result: (MULA x y a)
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMADDS_0(v *Value) bool {
// match: (ADDS x (MOVWconst [c]))
- // cond:
// result: (ADDSconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ADDS (MOVWconst [c]) x)
- // cond:
// result: (ADDSconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (ADDS x (SLLconst [c] y))
- // cond:
// result: (ADDSshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (ADDS (SLLconst [c] y) x)
- // cond:
// result: (ADDSshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (ADDS x (SRLconst [c] y))
- // cond:
// result: (ADDSshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (ADDS (SRLconst [c] y) x)
- // cond:
// result: (ADDSshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (ADDS x (SRAconst [c] y))
- // cond:
// result: (ADDSshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (ADDS (SRAconst [c] y) x)
- // cond:
// result: (ADDSshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (ADDS x (SLL y z))
- // cond:
// result: (ADDSshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (ADDS (SLL y z) x)
- // cond:
// result: (ADDSshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMADDS_10(v *Value) bool {
// match: (ADDS x (SRL y z))
- // cond:
// result: (ADDSshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (ADDS (SRL y z) x)
- // cond:
// result: (ADDSshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (ADDS x (SRA y z))
- // cond:
// result: (ADDSshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (ADDS (SRA y z) x)
- // cond:
// result: (ADDSshiftRAreg x y z)
for {
x := v.Args[1]
func rewriteValueARM_OpARMADDSshiftLL_0(v *Value) bool {
b := v.Block
// match: (ADDSshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (ADDSconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDSshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (ADDSconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMADDSshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (ADDSshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (ADDSconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ADDSshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (ADDSshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMADDSshiftRA_0(v *Value) bool {
b := v.Block
// match: (ADDSshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (ADDSconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDSshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (ADDSconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMADDSshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (ADDSshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (ADDSconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ADDSshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (ADDSshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMADDSshiftRL_0(v *Value) bool {
b := v.Block
// match: (ADDSshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (ADDSconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDSshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (ADDSconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMADDSshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (ADDSshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (ADDSconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ADDSshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (ADDSshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMADDconst_0(v *Value) bool {
// match: (ADDconst [off1] (MOVWaddr [off2] {sym} ptr))
- // cond:
// result: (MOVWaddr [off1+off2] {sym} ptr)
for {
off1 := v.AuxInt
return true
}
// match: (ADDconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ADDconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(c+d))])
for {
c := v.AuxInt
return true
}
// match: (ADDconst [c] (ADDconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(c+d))] x)
for {
c := v.AuxInt
return true
}
// match: (ADDconst [c] (SUBconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(c-d))] x)
for {
c := v.AuxInt
return true
}
// match: (ADDconst [c] (RSBconst [d] x))
- // cond:
// result: (RSBconst [int64(int32(c+d))] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (ADDshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (ADDconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (ADDconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
return true
}
// match: (ADDshiftLL [c] (SRLconst x [32-c]) x)
- // cond:
// result: (SRRconst [32-c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSRLconst {
- break
- }
- if v_0.AuxInt != 32-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMSRLconst || v_0.AuxInt != 32-c || x != v_0.Args[0] {
break
}
v.reset(OpARMSRRconst)
return true
}
// match: (ADDshiftLL <typ.UInt16> [8] (BFXU <typ.UInt16> [armBFAuxInt(8, 8)] x) x)
- // cond:
// result: (REV16 x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMBFXU {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMBFXU || v_0.Type != typ.UInt16 || v_0.AuxInt != armBFAuxInt(8, 8) || x != v_0.Args[0] {
break
}
v.reset(OpARMREV16)
// cond: objabi.GOARM>=6
// result: (REV16 x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSRLconst {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != 24 {
+ if v_0.Op != OpARMSRLconst || v_0.Type != typ.UInt16 || v_0.AuxInt != 24 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARMSLLconst {
- break
- }
- if v_0_0.AuxInt != 16 {
- break
- }
- if x != v_0_0.Args[0] {
- break
- }
- if !(objabi.GOARM >= 6) {
+ if v_0_0.Op != OpARMSLLconst || v_0_0.AuxInt != 16 || x != v_0_0.Args[0] || !(objabi.GOARM >= 6) {
break
}
v.reset(OpARMREV16)
func rewriteValueARM_OpARMADDshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (ADDshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (ADDconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ADDshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (ADDshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMADDshiftRA_0(v *Value) bool {
b := v.Block
// match: (ADDshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (ADDconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (ADDconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMADDshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (ADDshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (ADDconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ADDshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (ADDshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMADDshiftRL_0(v *Value) bool {
b := v.Block
// match: (ADDshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (ADDconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (ADDconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
return true
}
// match: (ADDshiftRL [c] (SLLconst x [32-c]) x)
- // cond:
// result: (SRRconst [ c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSLLconst {
- break
- }
- if v_0.AuxInt != 32-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMSLLconst || v_0.AuxInt != 32-c || x != v_0.Args[0] {
break
}
v.reset(OpARMSRRconst)
func rewriteValueARM_OpARMADDshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (ADDshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (ADDconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ADDshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (ADDshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMAND_0(v *Value) bool {
// match: (AND x (MOVWconst [c]))
- // cond:
// result: (ANDconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (AND (MOVWconst [c]) x)
- // cond:
// result: (ANDconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (AND x (SLLconst [c] y))
- // cond:
// result: (ANDshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (AND (SLLconst [c] y) x)
- // cond:
// result: (ANDshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (AND x (SRLconst [c] y))
- // cond:
// result: (ANDshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (AND (SRLconst [c] y) x)
- // cond:
// result: (ANDshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (AND x (SRAconst [c] y))
- // cond:
// result: (ANDshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (AND (SRAconst [c] y) x)
- // cond:
// result: (ANDshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (AND x (SLL y z))
- // cond:
// result: (ANDshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (AND (SLL y z) x)
- // cond:
// result: (ANDshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMAND_10(v *Value) bool {
// match: (AND x (SRL y z))
- // cond:
// result: (ANDshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (AND (SRL y z) x)
- // cond:
// result: (ANDshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (AND x (SRA y z))
- // cond:
// result: (ANDshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (AND (SRA y z) x)
- // cond:
// result: (ANDshiftRAreg x y z)
for {
x := v.Args[1]
return true
}
// match: (AND x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (AND x (MVN y))
- // cond:
// result: (BIC x y)
for {
_ = v.Args[1]
return true
}
// match: (AND (MVN y) x)
- // cond:
// result: (BIC x y)
for {
x := v.Args[1]
return true
}
// match: (AND x (MVNshiftLL y [c]))
- // cond:
// result: (BICshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (AND (MVNshiftLL y [c]) x)
- // cond:
// result: (BICshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (AND x (MVNshiftRL y [c]))
- // cond:
// result: (BICshiftRL x y [c])
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMAND_20(v *Value) bool {
// match: (AND (MVNshiftRL y [c]) x)
- // cond:
// result: (BICshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (AND x (MVNshiftRA y [c]))
- // cond:
// result: (BICshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (AND (MVNshiftRA y [c]) x)
- // cond:
// result: (BICshiftRA x y [c])
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMANDconst_0(v *Value) bool {
// match: (ANDconst [0] _)
- // cond:
// result: (MOVWconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ANDconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [c&d])
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (ANDconst [d] x))
- // cond:
// result: (ANDconst [c&d] x)
for {
c := v.AuxInt
func rewriteValueARM_OpARMANDshiftLL_0(v *Value) bool {
b := v.Block
// match: (ANDshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (ANDconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ANDshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (ANDconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM_OpARMANDshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (ANDshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (ANDconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ANDshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (ANDshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMANDshiftRA_0(v *Value) bool {
b := v.Block
// match: (ANDshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (ANDconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ANDshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (ANDconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM_OpARMANDshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (ANDshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (ANDconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ANDshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (ANDshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMANDshiftRL_0(v *Value) bool {
b := v.Block
// match: (ANDshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (ANDconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ANDshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (ANDconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM_OpARMANDshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (ANDshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (ANDconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ANDshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (ANDshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMBFX_0(v *Value) bool {
// match: (BFX [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(d)<<(32-uint32(c&0xff)-uint32(c>>8))>>(32-uint32(c>>8)))])
for {
c := v.AuxInt
}
func rewriteValueARM_OpARMBFXU_0(v *Value) bool {
// match: (BFXU [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(uint32(d)<<(32-uint32(c&0xff)-uint32(c>>8))>>(32-uint32(c>>8))))])
for {
c := v.AuxInt
}
func rewriteValueARM_OpARMBIC_0(v *Value) bool {
// match: (BIC x (MOVWconst [c]))
- // cond:
// result: (BICconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (BIC x (SLLconst [c] y))
- // cond:
// result: (BICshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (BIC x (SRLconst [c] y))
- // cond:
// result: (BICshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (BIC x (SRAconst [c] y))
- // cond:
// result: (BICshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (BIC x (SLL y z))
- // cond:
// result: (BICshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (BIC x (SRL y z))
- // cond:
// result: (BICshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (BIC x (SRA y z))
- // cond:
// result: (BICshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (BIC x x)
- // cond:
// result: (MOVWconst [0])
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMBICconst_0(v *Value) bool {
// match: (BICconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (BICconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [d&^c])
for {
c := v.AuxInt
return true
}
// match: (BICconst [c] (BICconst [d] x))
- // cond:
// result: (BICconst [int64(int32(c|d))] x)
for {
c := v.AuxInt
}
func rewriteValueARM_OpARMBICshiftLL_0(v *Value) bool {
// match: (BICshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (BICconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
}
func rewriteValueARM_OpARMBICshiftLLreg_0(v *Value) bool {
// match: (BICshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (BICshiftLL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMBICshiftRA_0(v *Value) bool {
// match: (BICshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (BICconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
}
func rewriteValueARM_OpARMBICshiftRAreg_0(v *Value) bool {
// match: (BICshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (BICshiftRA x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMBICshiftRL_0(v *Value) bool {
// match: (BICshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (BICconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
}
func rewriteValueARM_OpARMBICshiftRLreg_0(v *Value) bool {
// match: (BICshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (BICshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMCMN_0(v *Value) bool {
// match: (CMN x (MOVWconst [c]))
- // cond:
// result: (CMNconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (CMN (MOVWconst [c]) x)
- // cond:
// result: (CMNconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (CMN x (SLLconst [c] y))
- // cond:
// result: (CMNshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (CMN (SLLconst [c] y) x)
- // cond:
// result: (CMNshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (CMN x (SRLconst [c] y))
- // cond:
// result: (CMNshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (CMN (SRLconst [c] y) x)
- // cond:
// result: (CMNshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (CMN x (SRAconst [c] y))
- // cond:
// result: (CMNshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (CMN (SRAconst [c] y) x)
- // cond:
// result: (CMNshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (CMN x (SLL y z))
- // cond:
// result: (CMNshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (CMN (SLL y z) x)
- // cond:
// result: (CMNshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMCMN_10(v *Value) bool {
// match: (CMN x (SRL y z))
- // cond:
// result: (CMNshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (CMN (SRL y z) x)
- // cond:
// result: (CMNshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (CMN x (SRA y z))
- // cond:
// result: (CMNshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (CMN (SRA y z) x)
- // cond:
// result: (CMNshiftRAreg x y z)
for {
x := v.Args[1]
return true
}
// match: (CMN x (RSBconst [0] y))
- // cond:
// result: (CMP x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMRSBconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMRSBconst || v_1.AuxInt != 0 {
break
}
y := v_1.Args[0]
return true
}
// match: (CMN (RSBconst [0] y) x)
- // cond:
// result: (CMP x y)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMRSBconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARMRSBconst || v_0.AuxInt != 0 {
break
}
y := v_0.Args[0]
func rewriteValueARM_OpARMCMNshiftLL_0(v *Value) bool {
b := v.Block
// match: (CMNshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (CMNconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (CMNshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (CMNconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMCMNshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (CMNshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (CMNconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (CMNshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (CMNshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMCMNshiftRA_0(v *Value) bool {
b := v.Block
// match: (CMNshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (CMNconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (CMNshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (CMNconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMCMNshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (CMNshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (CMNconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (CMNshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (CMNshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMCMNshiftRL_0(v *Value) bool {
b := v.Block
// match: (CMNshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (CMNconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (CMNshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (CMNconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMCMNshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (CMNshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (CMNconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (CMNshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (CMNshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMCMOVWHSconst_0(v *Value) bool {
// match: (CMOVWHSconst _ (FlagEQ) [c])
- // cond:
// result: (MOVWconst [c])
for {
c := v.AuxInt
return true
}
// match: (CMOVWHSconst x (FlagLT_ULT))
- // cond:
// result: x
for {
_ = v.Args[1]
return true
}
// match: (CMOVWHSconst _ (FlagLT_UGT) [c])
- // cond:
// result: (MOVWconst [c])
for {
c := v.AuxInt
return true
}
// match: (CMOVWHSconst x (FlagGT_ULT))
- // cond:
// result: x
for {
_ = v.Args[1]
return true
}
// match: (CMOVWHSconst _ (FlagGT_UGT) [c])
- // cond:
// result: (MOVWconst [c])
for {
c := v.AuxInt
return true
}
// match: (CMOVWHSconst x (InvertFlags flags) [c])
- // cond:
// result: (CMOVWLSconst x flags [c])
for {
c := v.AuxInt
}
func rewriteValueARM_OpARMCMOVWLSconst_0(v *Value) bool {
// match: (CMOVWLSconst _ (FlagEQ) [c])
- // cond:
// result: (MOVWconst [c])
for {
c := v.AuxInt
return true
}
// match: (CMOVWLSconst _ (FlagLT_ULT) [c])
- // cond:
// result: (MOVWconst [c])
for {
c := v.AuxInt
return true
}
// match: (CMOVWLSconst x (FlagLT_UGT))
- // cond:
// result: x
for {
_ = v.Args[1]
return true
}
// match: (CMOVWLSconst _ (FlagGT_ULT) [c])
- // cond:
// result: (MOVWconst [c])
for {
c := v.AuxInt
return true
}
// match: (CMOVWLSconst x (FlagGT_UGT))
- // cond:
// result: x
for {
_ = v.Args[1]
return true
}
// match: (CMOVWLSconst x (InvertFlags flags) [c])
- // cond:
// result: (CMOVWHSconst x flags [c])
for {
c := v.AuxInt
func rewriteValueARM_OpARMCMP_0(v *Value) bool {
b := v.Block
// match: (CMP x (MOVWconst [c]))
- // cond:
// result: (CMPconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (CMP (MOVWconst [c]) x)
- // cond:
// result: (InvertFlags (CMPconst [c] x))
for {
x := v.Args[1]
return true
}
// match: (CMP x (SLLconst [c] y))
- // cond:
// result: (CMPshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (CMP (SLLconst [c] y) x)
- // cond:
// result: (InvertFlags (CMPshiftLL x y [c]))
for {
x := v.Args[1]
return true
}
// match: (CMP x (SRLconst [c] y))
- // cond:
// result: (CMPshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (CMP (SRLconst [c] y) x)
- // cond:
// result: (InvertFlags (CMPshiftRL x y [c]))
for {
x := v.Args[1]
return true
}
// match: (CMP x (SRAconst [c] y))
- // cond:
// result: (CMPshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (CMP (SRAconst [c] y) x)
- // cond:
// result: (InvertFlags (CMPshiftRA x y [c]))
for {
x := v.Args[1]
return true
}
// match: (CMP x (SLL y z))
- // cond:
// result: (CMPshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (CMP (SLL y z) x)
- // cond:
// result: (InvertFlags (CMPshiftLLreg x y z))
for {
x := v.Args[1]
func rewriteValueARM_OpARMCMP_10(v *Value) bool {
b := v.Block
// match: (CMP x (SRL y z))
- // cond:
// result: (CMPshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (CMP (SRL y z) x)
- // cond:
// result: (InvertFlags (CMPshiftRLreg x y z))
for {
x := v.Args[1]
return true
}
// match: (CMP x (SRA y z))
- // cond:
// result: (CMPshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (CMP (SRA y z) x)
- // cond:
// result: (InvertFlags (CMPshiftRAreg x y z))
for {
x := v.Args[1]
return true
}
// match: (CMP x (RSBconst [0] y))
- // cond:
// result: (CMN x y)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMRSBconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMRSBconst || v_1.AuxInt != 0 {
break
}
y := v_1.Args[0]
}
func rewriteValueARM_OpARMCMPD_0(v *Value) bool {
// match: (CMPD x (MOVDconst [0]))
- // cond:
// result: (CMPD0 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMMOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARMCMPD0)
}
func rewriteValueARM_OpARMCMPF_0(v *Value) bool {
// match: (CMPF x (MOVFconst [0]))
- // cond:
// result: (CMPF0 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVFconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMMOVFconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARMCMPF0)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVBUreg {
- break
- }
- if !(0xff < c) {
+ if v_0.Op != OpARMMOVBUreg || !(0xff < c) {
break
}
v.reset(OpARMFlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVHUreg {
- break
- }
- if !(0xffff < c) {
+ if v_0.Op != OpARMMOVHUreg || !(0xffff < c) {
break
}
v.reset(OpARMFlagLT_ULT)
func rewriteValueARM_OpARMCMPshiftLL_0(v *Value) bool {
b := v.Block
// match: (CMPshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (InvertFlags (CMPconst [c] (SLLconst <x.Type> x [d])))
for {
d := v.AuxInt
return true
}
// match: (CMPshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (CMPconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMCMPshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (CMPshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (InvertFlags (CMPconst [c] (SLL <x.Type> x y)))
for {
y := v.Args[2]
return true
}
// match: (CMPshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (CMPshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMCMPshiftRA_0(v *Value) bool {
b := v.Block
// match: (CMPshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (InvertFlags (CMPconst [c] (SRAconst <x.Type> x [d])))
for {
d := v.AuxInt
return true
}
// match: (CMPshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (CMPconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMCMPshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (CMPshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (InvertFlags (CMPconst [c] (SRA <x.Type> x y)))
for {
y := v.Args[2]
return true
}
// match: (CMPshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (CMPshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMCMPshiftRL_0(v *Value) bool {
b := v.Block
// match: (CMPshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (InvertFlags (CMPconst [c] (SRLconst <x.Type> x [d])))
for {
d := v.AuxInt
return true
}
// match: (CMPshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (CMPconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMCMPshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (CMPshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (InvertFlags (CMPconst [c] (SRL <x.Type> x y)))
for {
y := v.Args[2]
return true
}
// match: (CMPshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (CMPshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMEqual_0(v *Value) bool {
// match: (Equal (FlagEQ))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagLT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagLT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagGT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagGT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (InvertFlags x))
- // cond:
// result: (Equal x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMGreaterEqual_0(v *Value) bool {
// match: (GreaterEqual (FlagEQ))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagLT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagLT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagGT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagGT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (InvertFlags x))
- // cond:
// result: (LessEqual x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMGreaterEqualU_0(v *Value) bool {
// match: (GreaterEqualU (FlagEQ))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagLT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagLT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagGT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagGT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (InvertFlags x))
- // cond:
// result: (LessEqualU x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMGreaterThan_0(v *Value) bool {
// match: (GreaterThan (FlagEQ))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagLT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagLT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagGT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagGT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (InvertFlags x))
- // cond:
// result: (LessThan x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMGreaterThanU_0(v *Value) bool {
// match: (GreaterThanU (FlagEQ))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagLT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagLT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagGT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagGT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (InvertFlags x))
- // cond:
// result: (LessThanU x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMLessEqual_0(v *Value) bool {
// match: (LessEqual (FlagEQ))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagLT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagLT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagGT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagGT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (InvertFlags x))
- // cond:
// result: (GreaterEqual x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMLessEqualU_0(v *Value) bool {
// match: (LessEqualU (FlagEQ))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagLT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagLT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagGT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagGT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (InvertFlags x))
- // cond:
// result: (GreaterEqualU x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMLessThan_0(v *Value) bool {
// match: (LessThan (FlagEQ))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagLT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagLT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagGT_ULT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagGT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (InvertFlags x))
- // cond:
// result: (GreaterThan x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMLessThanU_0(v *Value) bool {
// match: (LessThanU (FlagEQ))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagLT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagLT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagGT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagGT_UGT))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (InvertFlags x))
- // cond:
// result: (GreaterThanU x)
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVBUload [off1] {sym} (ADDconst [off2] ptr) mem)
- // cond:
// result: (MOVBUload [off1+off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVBUload [off1] {sym} (SUBconst [off2] ptr) mem)
- // cond:
// result: (MOVBUload [off1-off2] {sym} ptr mem)
for {
off1 := v.AuxInt
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpARMMOVWconst)
return true
}
// match: (MOVBUloadidx ptr (MOVWconst [c]) mem)
- // cond:
// result: (MOVBUload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVBUloadidx (MOVWconst [c]) ptr mem)
- // cond:
// result: (MOVBUload [c] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM_OpARMMOVBUreg_0(v *Value) bool {
// match: (MOVBUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg (ANDconst [c] x))
- // cond:
// result: (ANDconst [c&0xff] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBUreg x:(MOVBUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(uint8(c))])
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVBload [off1] {sym} (ADDconst [off2] ptr) mem)
- // cond:
// result: (MOVBload [off1+off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVBload [off1] {sym} (SUBconst [off2] ptr) mem)
- // cond:
// result: (MOVBload [off1-off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVBloadidx ptr (MOVWconst [c]) mem)
- // cond:
// result: (MOVBload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVBloadidx (MOVWconst [c]) ptr mem)
- // cond:
// result: (MOVBload [c] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM_OpARMMOVBreg_0(v *Value) bool {
// match: (MOVBreg x:(MOVBload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg x:(MOVBreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(int8(c))])
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVBstore [off1] {sym} (ADDconst [off2] ptr) val mem)
- // cond:
// result: (MOVBstore [off1+off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVBstore [off1] {sym} (SUBconst [off2] ptr) val mem)
- // cond:
// result: (MOVBstore [off1-off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
}
func rewriteValueARM_OpARMMOVBstoreidx_0(v *Value) bool {
// match: (MOVBstoreidx ptr (MOVWconst [c]) val mem)
- // cond:
// result: (MOVBstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx (MOVWconst [c]) ptr val mem)
- // cond:
// result: (MOVBstore [c] ptr val mem)
for {
mem := v.Args[3]
}
func rewriteValueARM_OpARMMOVDload_0(v *Value) bool {
// match: (MOVDload [off1] {sym} (ADDconst [off2] ptr) mem)
- // cond:
// result: (MOVDload [off1+off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVDload [off1] {sym} (SUBconst [off2] ptr) mem)
- // cond:
// result: (MOVDload [off1-off2] {sym} ptr mem)
for {
off1 := v.AuxInt
}
func rewriteValueARM_OpARMMOVDstore_0(v *Value) bool {
// match: (MOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem)
- // cond:
// result: (MOVDstore [off1+off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVDstore [off1] {sym} (SUBconst [off2] ptr) val mem)
- // cond:
// result: (MOVDstore [off1-off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
}
func rewriteValueARM_OpARMMOVFload_0(v *Value) bool {
// match: (MOVFload [off1] {sym} (ADDconst [off2] ptr) mem)
- // cond:
// result: (MOVFload [off1+off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVFload [off1] {sym} (SUBconst [off2] ptr) mem)
- // cond:
// result: (MOVFload [off1-off2] {sym} ptr mem)
for {
off1 := v.AuxInt
}
func rewriteValueARM_OpARMMOVFstore_0(v *Value) bool {
// match: (MOVFstore [off1] {sym} (ADDconst [off2] ptr) val mem)
- // cond:
// result: (MOVFstore [off1+off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVFstore [off1] {sym} (SUBconst [off2] ptr) val mem)
- // cond:
// result: (MOVFstore [off1-off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
b := v.Block
config := b.Func.Config
// match: (MOVHUload [off1] {sym} (ADDconst [off2] ptr) mem)
- // cond:
// result: (MOVHUload [off1+off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVHUload [off1] {sym} (SUBconst [off2] ptr) mem)
- // cond:
// result: (MOVHUload [off1-off2] {sym} ptr mem)
for {
off1 := v.AuxInt
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpARMMOVWconst)
return true
}
// match: (MOVHUloadidx ptr (MOVWconst [c]) mem)
- // cond:
// result: (MOVHUload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHUloadidx (MOVWconst [c]) ptr mem)
- // cond:
// result: (MOVHUload [c] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM_OpARMMOVHUreg_0(v *Value) bool {
// match: (MOVHUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg (ANDconst [c] x))
- // cond:
// result: (ANDconst [c&0xffff] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVBUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(uint16(c))])
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVHload [off1] {sym} (ADDconst [off2] ptr) mem)
- // cond:
// result: (MOVHload [off1+off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVHload [off1] {sym} (SUBconst [off2] ptr) mem)
- // cond:
// result: (MOVHload [off1-off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVHloadidx ptr (MOVWconst [c]) mem)
- // cond:
// result: (MOVHload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHloadidx (MOVWconst [c]) ptr mem)
- // cond:
// result: (MOVHload [c] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM_OpARMMOVHreg_0(v *Value) bool {
// match: (MOVHreg x:(MOVBload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(int16(c))])
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVHstore [off1] {sym} (ADDconst [off2] ptr) val mem)
- // cond:
// result: (MOVHstore [off1+off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVHstore [off1] {sym} (SUBconst [off2] ptr) val mem)
- // cond:
// result: (MOVHstore [off1-off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
}
func rewriteValueARM_OpARMMOVHstoreidx_0(v *Value) bool {
// match: (MOVHstoreidx ptr (MOVWconst [c]) val mem)
- // cond:
// result: (MOVHstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx (MOVWconst [c]) ptr val mem)
- // cond:
// result: (MOVHstore [c] ptr val mem)
for {
mem := v.Args[3]
b := v.Block
config := b.Func.Config
// match: (MOVWload [off1] {sym} (ADDconst [off2] ptr) mem)
- // cond:
// result: (MOVWload [off1+off2] {sym} ptr mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVWload [off1] {sym} (SUBconst [off2] ptr) mem)
- // cond:
// result: (MOVWload [off1-off2] {sym} ptr mem)
for {
off1 := v.AuxInt
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpARMMOVWconst)
return true
}
// match: (MOVWloadidx ptr (MOVWconst [c]) mem)
- // cond:
// result: (MOVWload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx (MOVWconst [c]) ptr mem)
- // cond:
// result: (MOVWload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx ptr (SLLconst idx [c]) mem)
- // cond:
// result: (MOVWloadshiftLL ptr idx [c] mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx (SLLconst idx [c]) ptr mem)
- // cond:
// result: (MOVWloadshiftLL ptr idx [c] mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx ptr (SRLconst idx [c]) mem)
- // cond:
// result: (MOVWloadshiftRL ptr idx [c] mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx (SRLconst idx [c]) ptr mem)
- // cond:
// result: (MOVWloadshiftRL ptr idx [c] mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx ptr (SRAconst idx [c]) mem)
- // cond:
// result: (MOVWloadshiftRA ptr idx [c] mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx (SRAconst idx [c]) ptr mem)
- // cond:
// result: (MOVWloadshiftRA ptr idx [c] mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadshiftLL ptr (MOVWconst [c]) [d] mem)
- // cond:
// result: (MOVWload [int64(uint32(c)<<uint64(d))] ptr mem)
for {
d := v.AuxInt
return true
}
// match: (MOVWloadshiftRA ptr (MOVWconst [c]) [d] mem)
- // cond:
// result: (MOVWload [int64(int32(c)>>uint64(d))] ptr mem)
for {
d := v.AuxInt
return true
}
// match: (MOVWloadshiftRL ptr (MOVWconst [c]) [d] mem)
- // cond:
// result: (MOVWload [int64(uint32(c)>>uint64(d))] ptr mem)
for {
d := v.AuxInt
return true
}
// match: (MOVWreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [c])
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVWstore [off1] {sym} (ADDconst [off2] ptr) val mem)
- // cond:
// result: (MOVWstore [off1+off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
return true
}
// match: (MOVWstore [off1] {sym} (SUBconst [off2] ptr) val mem)
- // cond:
// result: (MOVWstore [off1-off2] {sym} ptr val mem)
for {
off1 := v.AuxInt
}
func rewriteValueARM_OpARMMOVWstoreidx_0(v *Value) bool {
// match: (MOVWstoreidx ptr (MOVWconst [c]) val mem)
- // cond:
// result: (MOVWstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx (MOVWconst [c]) ptr val mem)
- // cond:
// result: (MOVWstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx ptr (SLLconst idx [c]) val mem)
- // cond:
// result: (MOVWstoreshiftLL ptr idx [c] val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx (SLLconst idx [c]) ptr val mem)
- // cond:
// result: (MOVWstoreshiftLL ptr idx [c] val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx ptr (SRLconst idx [c]) val mem)
- // cond:
// result: (MOVWstoreshiftRL ptr idx [c] val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx (SRLconst idx [c]) ptr val mem)
- // cond:
// result: (MOVWstoreshiftRL ptr idx [c] val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx ptr (SRAconst idx [c]) val mem)
- // cond:
// result: (MOVWstoreshiftRA ptr idx [c] val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx (SRAconst idx [c]) ptr val mem)
- // cond:
// result: (MOVWstoreshiftRA ptr idx [c] val mem)
for {
mem := v.Args[3]
}
func rewriteValueARM_OpARMMOVWstoreshiftLL_0(v *Value) bool {
// match: (MOVWstoreshiftLL ptr (MOVWconst [c]) [d] val mem)
- // cond:
// result: (MOVWstore [int64(uint32(c)<<uint64(d))] ptr val mem)
for {
d := v.AuxInt
}
func rewriteValueARM_OpARMMOVWstoreshiftRA_0(v *Value) bool {
// match: (MOVWstoreshiftRA ptr (MOVWconst [c]) [d] val mem)
- // cond:
// result: (MOVWstore [int64(int32(c)>>uint64(d))] ptr val mem)
for {
d := v.AuxInt
}
func rewriteValueARM_OpARMMOVWstoreshiftRL_0(v *Value) bool {
// match: (MOVWstoreshiftRL ptr (MOVWconst [c]) [d] val mem)
- // cond:
// result: (MOVWstore [int64(uint32(c)>>uint64(d))] ptr val mem)
for {
d := v.AuxInt
return true
}
// match: (MUL _ (MOVWconst [0]))
- // cond:
// result: (MOVWconst [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARMMOVWconst)
return true
}
// match: (MUL (MOVWconst [0]) _)
- // cond:
// result: (MOVWconst [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVWconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARMMOVWconst || v_0.AuxInt != 0 {
break
}
v.reset(OpARMMOVWconst)
return true
}
// match: (MUL x (MOVWconst [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVWconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARMMOVWconst || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (MUL (MOVWconst [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVWconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARMMOVWconst || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
}
func rewriteValueARM_OpARMMUL_20(v *Value) bool {
// match: (MUL (MOVWconst [c]) (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (MUL (MOVWconst [d]) (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(int32(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (MULA _ (MOVWconst [0]) a)
- // cond:
// result: a
for {
a := v.Args[2]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MULA x (MOVWconst [1]) a)
- // cond:
// result: (ADD x a)
for {
a := v.Args[2]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVWconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARMMOVWconst || v_1.AuxInt != 1 {
break
}
v.reset(OpARMADD)
return true
}
// match: (MULA (MOVWconst [0]) _ a)
- // cond:
// result: a
for {
a := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVWconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARMMOVWconst || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MULA (MOVWconst [1]) x a)
- // cond:
// result: (ADD x a)
for {
a := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVWconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARMMOVWconst || v_0.AuxInt != 1 {
break
}
x := v.Args[1]
}
func rewriteValueARM_OpARMMULA_20(v *Value) bool {
// match: (MULA (MOVWconst [c]) (MOVWconst [d]) a)
- // cond:
// result: (ADDconst [int64(int32(c*d))] a)
for {
a := v.Args[2]
return true
}
// match: (MULS _ (MOVWconst [0]) a)
- // cond:
// result: a
for {
a := v.Args[2]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARMMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MULS x (MOVWconst [1]) a)
- // cond:
// result: (RSB x a)
for {
a := v.Args[2]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARMMOVWconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARMMOVWconst || v_1.AuxInt != 1 {
break
}
v.reset(OpARMRSB)
return true
}
// match: (MULS (MOVWconst [0]) _ a)
- // cond:
// result: a
for {
a := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVWconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARMMOVWconst || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MULS (MOVWconst [1]) x a)
- // cond:
// result: (RSB x a)
for {
a := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARMMOVWconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARMMOVWconst || v_0.AuxInt != 1 {
break
}
x := v.Args[1]
}
func rewriteValueARM_OpARMMULS_20(v *Value) bool {
// match: (MULS (MOVWconst [c]) (MOVWconst [d]) a)
- // cond:
// result: (SUBconst [int64(int32(c*d))] a)
for {
a := v.Args[2]
}
func rewriteValueARM_OpARMMVN_0(v *Value) bool {
// match: (MVN (MOVWconst [c]))
- // cond:
// result: (MOVWconst [^c])
for {
v_0 := v.Args[0]
return true
}
// match: (MVN (SLLconst [c] x))
- // cond:
// result: (MVNshiftLL x [c])
for {
v_0 := v.Args[0]
return true
}
// match: (MVN (SRLconst [c] x))
- // cond:
// result: (MVNshiftRL x [c])
for {
v_0 := v.Args[0]
return true
}
// match: (MVN (SRAconst [c] x))
- // cond:
// result: (MVNshiftRA x [c])
for {
v_0 := v.Args[0]
return true
}
// match: (MVN (SLL x y))
- // cond:
// result: (MVNshiftLLreg x y)
for {
v_0 := v.Args[0]
return true
}
// match: (MVN (SRL x y))
- // cond:
// result: (MVNshiftRLreg x y)
for {
v_0 := v.Args[0]
return true
}
// match: (MVN (SRA x y))
- // cond:
// result: (MVNshiftRAreg x y)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMMVNshiftLL_0(v *Value) bool {
// match: (MVNshiftLL (MOVWconst [c]) [d])
- // cond:
// result: (MOVWconst [^int64(uint32(c)<<uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM_OpARMMVNshiftLLreg_0(v *Value) bool {
// match: (MVNshiftLLreg x (MOVWconst [c]))
- // cond:
// result: (MVNshiftLL x [c])
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMMVNshiftRA_0(v *Value) bool {
// match: (MVNshiftRA (MOVWconst [c]) [d])
- // cond:
// result: (MOVWconst [^int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM_OpARMMVNshiftRAreg_0(v *Value) bool {
// match: (MVNshiftRAreg x (MOVWconst [c]))
- // cond:
// result: (MVNshiftRA x [c])
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMMVNshiftRL_0(v *Value) bool {
// match: (MVNshiftRL (MOVWconst [c]) [d])
- // cond:
// result: (MOVWconst [^int64(uint32(c)>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM_OpARMMVNshiftRLreg_0(v *Value) bool {
// match: (MVNshiftRLreg x (MOVWconst [c]))
- // cond:
// result: (MVNshiftRL x [c])
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMNMULD_0(v *Value) bool {
// match: (NMULD (NEGD x) y)
- // cond:
// result: (MULD x y)
for {
y := v.Args[1]
return true
}
// match: (NMULD y (NEGD x))
- // cond:
// result: (MULD x y)
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMNMULF_0(v *Value) bool {
// match: (NMULF (NEGF x) y)
- // cond:
// result: (MULF x y)
for {
y := v.Args[1]
return true
}
// match: (NMULF y (NEGF x))
- // cond:
// result: (MULF x y)
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMNotEqual_0(v *Value) bool {
// match: (NotEqual (FlagEQ))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagLT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagLT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagGT_ULT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagGT_UGT))
- // cond:
// result: (MOVWconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (InvertFlags x))
- // cond:
// result: (NotEqual x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpARMOR_0(v *Value) bool {
// match: (OR x (MOVWconst [c]))
- // cond:
// result: (ORconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (OR (MOVWconst [c]) x)
- // cond:
// result: (ORconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (OR x (SLLconst [c] y))
- // cond:
// result: (ORshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (OR (SLLconst [c] y) x)
- // cond:
// result: (ORshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (OR x (SRLconst [c] y))
- // cond:
// result: (ORshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (OR (SRLconst [c] y) x)
- // cond:
// result: (ORshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (OR x (SRAconst [c] y))
- // cond:
// result: (ORshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (OR (SRAconst [c] y) x)
- // cond:
// result: (ORshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (OR x (SLL y z))
- // cond:
// result: (ORshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (OR (SLL y z) x)
- // cond:
// result: (ORshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMOR_10(v *Value) bool {
// match: (OR x (SRL y z))
- // cond:
// result: (ORshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (OR (SRL y z) x)
- // cond:
// result: (ORshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (OR x (SRA y z))
- // cond:
// result: (ORshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (OR (SRA y z) x)
- // cond:
// result: (ORshiftRAreg x y z)
for {
x := v.Args[1]
return true
}
// match: (OR x x)
- // cond:
// result: x
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMORconst_0(v *Value) bool {
// match: (ORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ORconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [c|d])
for {
c := v.AuxInt
return true
}
// match: (ORconst [c] (ORconst [d] x))
- // cond:
// result: (ORconst [c|d] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (ORshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (ORconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ORshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (ORconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
return true
}
// match: (ORshiftLL [c] (SRLconst x [32-c]) x)
- // cond:
// result: (SRRconst [32-c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSRLconst {
- break
- }
- if v_0.AuxInt != 32-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMSRLconst || v_0.AuxInt != 32-c || x != v_0.Args[0] {
break
}
v.reset(OpARMSRRconst)
return true
}
// match: (ORshiftLL <typ.UInt16> [8] (BFXU <typ.UInt16> [armBFAuxInt(8, 8)] x) x)
- // cond:
// result: (REV16 x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMBFXU {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMBFXU || v_0.Type != typ.UInt16 || v_0.AuxInt != armBFAuxInt(8, 8) || x != v_0.Args[0] {
break
}
v.reset(OpARMREV16)
// cond: objabi.GOARM>=6
// result: (REV16 x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSRLconst {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != 24 {
+ if v_0.Op != OpARMSRLconst || v_0.Type != typ.UInt16 || v_0.AuxInt != 24 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARMSLLconst {
- break
- }
- if v_0_0.AuxInt != 16 {
- break
- }
- if x != v_0_0.Args[0] {
- break
- }
- if !(objabi.GOARM >= 6) {
+ if v_0_0.Op != OpARMSLLconst || v_0_0.AuxInt != 16 || x != v_0_0.Args[0] || !(objabi.GOARM >= 6) {
break
}
v.reset(OpARMREV16)
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM_OpARMORshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (ORshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (ORconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ORshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (ORshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMORshiftRA_0(v *Value) bool {
b := v.Block
// match: (ORshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (ORconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ORshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (ORconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM_OpARMORshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (ORshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (ORconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ORshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (ORshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMORshiftRL_0(v *Value) bool {
b := v.Block
// match: (ORshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (ORconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ORshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (ORconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
return true
}
// match: (ORshiftRL [c] (SLLconst x [32-c]) x)
- // cond:
// result: (SRRconst [ c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSLLconst {
- break
- }
- if v_0.AuxInt != 32-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMSLLconst || v_0.AuxInt != 32-c || x != v_0.Args[0] {
break
}
v.reset(OpARMSRRconst)
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM_OpARMORshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (ORshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (ORconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (ORshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (ORshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMRSB_0(v *Value) bool {
// match: (RSB (MOVWconst [c]) x)
- // cond:
// result: (SUBconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (RSB x (MOVWconst [c]))
- // cond:
// result: (RSBconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (RSB x (SLLconst [c] y))
- // cond:
// result: (RSBshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (RSB (SLLconst [c] y) x)
- // cond:
// result: (SUBshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (RSB x (SRLconst [c] y))
- // cond:
// result: (RSBshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (RSB (SRLconst [c] y) x)
- // cond:
// result: (SUBshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (RSB x (SRAconst [c] y))
- // cond:
// result: (RSBshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (RSB (SRAconst [c] y) x)
- // cond:
// result: (SUBshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (RSB x (SLL y z))
- // cond:
// result: (RSBshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (RSB (SLL y z) x)
- // cond:
// result: (SUBshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMRSB_10(v *Value) bool {
// match: (RSB x (SRL y z))
- // cond:
// result: (RSBshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (RSB (SRL y z) x)
- // cond:
// result: (SUBshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (RSB x (SRA y z))
- // cond:
// result: (RSBshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (RSB (SRA y z) x)
- // cond:
// result: (SUBshiftRAreg x y z)
for {
x := v.Args[1]
return true
}
// match: (RSB x x)
- // cond:
// result: (MOVWconst [0])
for {
x := v.Args[1]
func rewriteValueARM_OpARMRSBSshiftLL_0(v *Value) bool {
b := v.Block
// match: (RSBSshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (SUBSconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (RSBSshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (RSBSconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMRSBSshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (RSBSshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (SUBSconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (RSBSshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (RSBSshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMRSBSshiftRA_0(v *Value) bool {
b := v.Block
// match: (RSBSshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (SUBSconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (RSBSshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (RSBSconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMRSBSshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (RSBSshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (SUBSconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (RSBSshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (RSBSshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMRSBSshiftRL_0(v *Value) bool {
b := v.Block
// match: (RSBSshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (SUBSconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (RSBSshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (RSBSconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMRSBSshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (RSBSshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (SUBSconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (RSBSshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (RSBSshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMRSBconst_0(v *Value) bool {
// match: (RSBconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(c-d))])
for {
c := v.AuxInt
return true
}
// match: (RSBconst [c] (RSBconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(c-d))] x)
for {
c := v.AuxInt
return true
}
// match: (RSBconst [c] (ADDconst [d] x))
- // cond:
// result: (RSBconst [int64(int32(c-d))] x)
for {
c := v.AuxInt
return true
}
// match: (RSBconst [c] (SUBconst [d] x))
- // cond:
// result: (RSBconst [int64(int32(c+d))] x)
for {
c := v.AuxInt
func rewriteValueARM_OpARMRSBshiftLL_0(v *Value) bool {
b := v.Block
// match: (RSBshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (SUBconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (RSBshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (RSBconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMRSBshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (RSBshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (SUBconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (RSBshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (RSBshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMRSBshiftRA_0(v *Value) bool {
b := v.Block
// match: (RSBshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (SUBconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (RSBshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (RSBconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMRSBshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (RSBshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (SUBconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (RSBshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (RSBshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMRSBshiftRL_0(v *Value) bool {
b := v.Block
// match: (RSBshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (SUBconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (RSBshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (RSBconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMRSBshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (RSBshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (SUBconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (RSBshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (RSBshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMRSCconst_0(v *Value) bool {
// match: (RSCconst [c] (ADDconst [d] x) flags)
- // cond:
// result: (RSCconst [int64(int32(c-d))] x flags)
for {
c := v.AuxInt
return true
}
// match: (RSCconst [c] (SUBconst [d] x) flags)
- // cond:
// result: (RSCconst [int64(int32(c+d))] x flags)
for {
c := v.AuxInt
func rewriteValueARM_OpARMRSCshiftLL_0(v *Value) bool {
b := v.Block
// match: (RSCshiftLL (MOVWconst [c]) x [d] flags)
- // cond:
// result: (SBCconst [c] (SLLconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (RSCshiftLL x (MOVWconst [c]) [d] flags)
- // cond:
// result: (RSCconst x [int64(int32(uint32(c)<<uint64(d)))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMRSCshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (RSCshiftLLreg (MOVWconst [c]) x y flags)
- // cond:
// result: (SBCconst [c] (SLL <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (RSCshiftLLreg x y (MOVWconst [c]) flags)
- // cond:
// result: (RSCshiftLL x y [c] flags)
for {
flags := v.Args[3]
func rewriteValueARM_OpARMRSCshiftRA_0(v *Value) bool {
b := v.Block
// match: (RSCshiftRA (MOVWconst [c]) x [d] flags)
- // cond:
// result: (SBCconst [c] (SRAconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (RSCshiftRA x (MOVWconst [c]) [d] flags)
- // cond:
// result: (RSCconst x [int64(int32(c)>>uint64(d))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMRSCshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (RSCshiftRAreg (MOVWconst [c]) x y flags)
- // cond:
// result: (SBCconst [c] (SRA <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (RSCshiftRAreg x y (MOVWconst [c]) flags)
- // cond:
// result: (RSCshiftRA x y [c] flags)
for {
flags := v.Args[3]
func rewriteValueARM_OpARMRSCshiftRL_0(v *Value) bool {
b := v.Block
// match: (RSCshiftRL (MOVWconst [c]) x [d] flags)
- // cond:
// result: (SBCconst [c] (SRLconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (RSCshiftRL x (MOVWconst [c]) [d] flags)
- // cond:
// result: (RSCconst x [int64(int32(uint32(c)>>uint64(d)))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMRSCshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (RSCshiftRLreg (MOVWconst [c]) x y flags)
- // cond:
// result: (SBCconst [c] (SRL <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (RSCshiftRLreg x y (MOVWconst [c]) flags)
- // cond:
// result: (RSCshiftRL x y [c] flags)
for {
flags := v.Args[3]
}
func rewriteValueARM_OpARMSBC_0(v *Value) bool {
// match: (SBC (MOVWconst [c]) x flags)
- // cond:
// result: (RSCconst [c] x flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC x (MOVWconst [c]) flags)
- // cond:
// result: (SBCconst [c] x flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC x (SLLconst [c] y) flags)
- // cond:
// result: (SBCshiftLL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC (SLLconst [c] y) x flags)
- // cond:
// result: (RSCshiftLL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC x (SRLconst [c] y) flags)
- // cond:
// result: (SBCshiftRL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC (SRLconst [c] y) x flags)
- // cond:
// result: (RSCshiftRL x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC x (SRAconst [c] y) flags)
- // cond:
// result: (SBCshiftRA x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC (SRAconst [c] y) x flags)
- // cond:
// result: (RSCshiftRA x y [c] flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC x (SLL y z) flags)
- // cond:
// result: (SBCshiftLLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC (SLL y z) x flags)
- // cond:
// result: (RSCshiftLLreg x y z flags)
for {
flags := v.Args[2]
}
func rewriteValueARM_OpARMSBC_10(v *Value) bool {
// match: (SBC x (SRL y z) flags)
- // cond:
// result: (SBCshiftRLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC (SRL y z) x flags)
- // cond:
// result: (RSCshiftRLreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC x (SRA y z) flags)
- // cond:
// result: (SBCshiftRAreg x y z flags)
for {
flags := v.Args[2]
return true
}
// match: (SBC (SRA y z) x flags)
- // cond:
// result: (RSCshiftRAreg x y z flags)
for {
flags := v.Args[2]
}
func rewriteValueARM_OpARMSBCconst_0(v *Value) bool {
// match: (SBCconst [c] (ADDconst [d] x) flags)
- // cond:
// result: (SBCconst [int64(int32(c-d))] x flags)
for {
c := v.AuxInt
return true
}
// match: (SBCconst [c] (SUBconst [d] x) flags)
- // cond:
// result: (SBCconst [int64(int32(c+d))] x flags)
for {
c := v.AuxInt
func rewriteValueARM_OpARMSBCshiftLL_0(v *Value) bool {
b := v.Block
// match: (SBCshiftLL (MOVWconst [c]) x [d] flags)
- // cond:
// result: (RSCconst [c] (SLLconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (SBCshiftLL x (MOVWconst [c]) [d] flags)
- // cond:
// result: (SBCconst x [int64(int32(uint32(c)<<uint64(d)))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMSBCshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (SBCshiftLLreg (MOVWconst [c]) x y flags)
- // cond:
// result: (RSCconst [c] (SLL <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (SBCshiftLLreg x y (MOVWconst [c]) flags)
- // cond:
// result: (SBCshiftLL x y [c] flags)
for {
flags := v.Args[3]
func rewriteValueARM_OpARMSBCshiftRA_0(v *Value) bool {
b := v.Block
// match: (SBCshiftRA (MOVWconst [c]) x [d] flags)
- // cond:
// result: (RSCconst [c] (SRAconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (SBCshiftRA x (MOVWconst [c]) [d] flags)
- // cond:
// result: (SBCconst x [int64(int32(c)>>uint64(d))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMSBCshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (SBCshiftRAreg (MOVWconst [c]) x y flags)
- // cond:
// result: (RSCconst [c] (SRA <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (SBCshiftRAreg x y (MOVWconst [c]) flags)
- // cond:
// result: (SBCshiftRA x y [c] flags)
for {
flags := v.Args[3]
func rewriteValueARM_OpARMSBCshiftRL_0(v *Value) bool {
b := v.Block
// match: (SBCshiftRL (MOVWconst [c]) x [d] flags)
- // cond:
// result: (RSCconst [c] (SRLconst <x.Type> x [d]) flags)
for {
d := v.AuxInt
return true
}
// match: (SBCshiftRL x (MOVWconst [c]) [d] flags)
- // cond:
// result: (SBCconst x [int64(int32(uint32(c)>>uint64(d)))] flags)
for {
d := v.AuxInt
func rewriteValueARM_OpARMSBCshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (SBCshiftRLreg (MOVWconst [c]) x y flags)
- // cond:
// result: (RSCconst [c] (SRL <x.Type> x y) flags)
for {
flags := v.Args[3]
return true
}
// match: (SBCshiftRLreg x y (MOVWconst [c]) flags)
- // cond:
// result: (SBCshiftRL x y [c] flags)
for {
flags := v.Args[3]
}
func rewriteValueARM_OpARMSLL_0(v *Value) bool {
// match: (SLL x (MOVWconst [c]))
- // cond:
// result: (SLLconst x [c&31])
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMSLLconst_0(v *Value) bool {
// match: (SLLconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(uint32(d)<<uint64(c)))])
for {
c := v.AuxInt
}
func rewriteValueARM_OpARMSRA_0(v *Value) bool {
// match: (SRA x (MOVWconst [c]))
- // cond:
// result: (SRAconst x [c&31])
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMSRAcond_0(v *Value) bool {
// match: (SRAcond x _ (FlagEQ))
- // cond:
// result: (SRAconst x [31])
for {
_ = v.Args[2]
return true
}
// match: (SRAcond x y (FlagLT_ULT))
- // cond:
// result: (SRA x y)
for {
_ = v.Args[2]
return true
}
// match: (SRAcond x _ (FlagLT_UGT))
- // cond:
// result: (SRAconst x [31])
for {
_ = v.Args[2]
return true
}
// match: (SRAcond x y (FlagGT_ULT))
- // cond:
// result: (SRA x y)
for {
_ = v.Args[2]
return true
}
// match: (SRAcond x _ (FlagGT_UGT))
- // cond:
// result: (SRAconst x [31])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMSRAconst_0(v *Value) bool {
// match: (SRAconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(d)>>uint64(c))])
for {
c := v.AuxInt
}
func rewriteValueARM_OpARMSRL_0(v *Value) bool {
// match: (SRL x (MOVWconst [c]))
- // cond:
// result: (SRLconst x [c&31])
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMSRLconst_0(v *Value) bool {
// match: (SRLconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(uint32(d)>>uint64(c)))])
for {
c := v.AuxInt
}
func rewriteValueARM_OpARMSUB_0(v *Value) bool {
// match: (SUB (MOVWconst [c]) x)
- // cond:
// result: (RSBconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (SUB x (MOVWconst [c]))
- // cond:
// result: (SUBconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (SUB x (SLLconst [c] y))
- // cond:
// result: (SUBshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (SUB (SLLconst [c] y) x)
- // cond:
// result: (RSBshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (SUB x (SRLconst [c] y))
- // cond:
// result: (SUBshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (SUB (SRLconst [c] y) x)
- // cond:
// result: (RSBshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (SUB x (SRAconst [c] y))
- // cond:
// result: (SUBshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (SUB (SRAconst [c] y) x)
- // cond:
// result: (RSBshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (SUB x (SLL y z))
- // cond:
// result: (SUBshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (SUB (SLL y z) x)
- // cond:
// result: (RSBshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMSUB_10(v *Value) bool {
// match: (SUB x (SRL y z))
- // cond:
// result: (SUBshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (SUB (SRL y z) x)
- // cond:
// result: (RSBshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (SUB x (SRA y z))
- // cond:
// result: (SUBshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (SUB (SRA y z) x)
- // cond:
// result: (RSBshiftRAreg x y z)
for {
x := v.Args[1]
return true
}
// match: (SUB x x)
- // cond:
// result: (MOVWconst [0])
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMSUBS_0(v *Value) bool {
// match: (SUBS x (MOVWconst [c]))
- // cond:
// result: (SUBSconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (SUBS x (SLLconst [c] y))
- // cond:
// result: (SUBSshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (SUBS (SLLconst [c] y) x)
- // cond:
// result: (RSBSshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (SUBS x (SRLconst [c] y))
- // cond:
// result: (SUBSshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (SUBS (SRLconst [c] y) x)
- // cond:
// result: (RSBSshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (SUBS x (SRAconst [c] y))
- // cond:
// result: (SUBSshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (SUBS (SRAconst [c] y) x)
- // cond:
// result: (RSBSshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (SUBS x (SLL y z))
- // cond:
// result: (SUBSshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (SUBS (SLL y z) x)
- // cond:
// result: (RSBSshiftLLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (SUBS x (SRL y z))
- // cond:
// result: (SUBSshiftRLreg x y z)
for {
_ = v.Args[1]
}
func rewriteValueARM_OpARMSUBS_10(v *Value) bool {
// match: (SUBS (SRL y z) x)
- // cond:
// result: (RSBSshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (SUBS x (SRA y z))
- // cond:
// result: (SUBSshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (SUBS (SRA y z) x)
- // cond:
// result: (RSBSshiftRAreg x y z)
for {
x := v.Args[1]
func rewriteValueARM_OpARMSUBSshiftLL_0(v *Value) bool {
b := v.Block
// match: (SUBSshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (RSBSconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (SUBSshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (SUBSconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMSUBSshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (SUBSshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (RSBSconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (SUBSshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (SUBSshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMSUBSshiftRA_0(v *Value) bool {
b := v.Block
// match: (SUBSshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (RSBSconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (SUBSshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (SUBSconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMSUBSshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (SUBSshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (RSBSconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (SUBSshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (SUBSshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMSUBSshiftRL_0(v *Value) bool {
b := v.Block
// match: (SUBSshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (RSBSconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (SUBSshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (SUBSconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMSUBSshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (SUBSshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (RSBSconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (SUBSshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (SUBSshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMSUBconst_0(v *Value) bool {
// match: (SUBconst [off1] (MOVWaddr [off2] {sym} ptr))
- // cond:
// result: (MOVWaddr [off2-off1] {sym} ptr)
for {
off1 := v.AuxInt
return true
}
// match: (SUBconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SUBconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(d-c))])
for {
c := v.AuxInt
return true
}
// match: (SUBconst [c] (SUBconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(-c-d))] x)
for {
c := v.AuxInt
return true
}
// match: (SUBconst [c] (ADDconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(-c+d))] x)
for {
c := v.AuxInt
return true
}
// match: (SUBconst [c] (RSBconst [d] x))
- // cond:
// result: (RSBconst [int64(int32(-c+d))] x)
for {
c := v.AuxInt
func rewriteValueARM_OpARMSUBshiftLL_0(v *Value) bool {
b := v.Block
// match: (SUBshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (RSBconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (SUBshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (SUBconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMSUBshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (SUBshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (RSBconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (SUBshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (SUBshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMSUBshiftRA_0(v *Value) bool {
b := v.Block
// match: (SUBshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (RSBconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (SUBshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (SUBconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMSUBshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (SUBshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (RSBconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (SUBshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (SUBshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMSUBshiftRL_0(v *Value) bool {
b := v.Block
// match: (SUBshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (RSBconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (SUBshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (SUBconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMSUBshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (SUBshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (RSBconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (SUBshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (SUBshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMTEQ_0(v *Value) bool {
// match: (TEQ x (MOVWconst [c]))
- // cond:
// result: (TEQconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (TEQ (MOVWconst [c]) x)
- // cond:
// result: (TEQconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (TEQ x (SLLconst [c] y))
- // cond:
// result: (TEQshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (TEQ (SLLconst [c] y) x)
- // cond:
// result: (TEQshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (TEQ x (SRLconst [c] y))
- // cond:
// result: (TEQshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (TEQ (SRLconst [c] y) x)
- // cond:
// result: (TEQshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (TEQ x (SRAconst [c] y))
- // cond:
// result: (TEQshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (TEQ (SRAconst [c] y) x)
- // cond:
// result: (TEQshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (TEQ x (SLL y z))
- // cond:
// result: (TEQshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (TEQ (SLL y z) x)
- // cond:
// result: (TEQshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMTEQ_10(v *Value) bool {
// match: (TEQ x (SRL y z))
- // cond:
// result: (TEQshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (TEQ (SRL y z) x)
- // cond:
// result: (TEQshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (TEQ x (SRA y z))
- // cond:
// result: (TEQshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (TEQ (SRA y z) x)
- // cond:
// result: (TEQshiftRAreg x y z)
for {
x := v.Args[1]
func rewriteValueARM_OpARMTEQshiftLL_0(v *Value) bool {
b := v.Block
// match: (TEQshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (TEQconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TEQshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (TEQconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMTEQshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (TEQshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (TEQconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (TEQshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (TEQshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMTEQshiftRA_0(v *Value) bool {
b := v.Block
// match: (TEQshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (TEQconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TEQshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (TEQconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMTEQshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (TEQshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (TEQconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (TEQshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (TEQshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMTEQshiftRL_0(v *Value) bool {
b := v.Block
// match: (TEQshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (TEQconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TEQshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (TEQconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMTEQshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (TEQshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (TEQconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (TEQshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (TEQshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMTST_0(v *Value) bool {
// match: (TST x (MOVWconst [c]))
- // cond:
// result: (TSTconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (TST (MOVWconst [c]) x)
- // cond:
// result: (TSTconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (TST x (SLLconst [c] y))
- // cond:
// result: (TSTshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (TST (SLLconst [c] y) x)
- // cond:
// result: (TSTshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (TST x (SRLconst [c] y))
- // cond:
// result: (TSTshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (TST (SRLconst [c] y) x)
- // cond:
// result: (TSTshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (TST x (SRAconst [c] y))
- // cond:
// result: (TSTshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (TST (SRAconst [c] y) x)
- // cond:
// result: (TSTshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (TST x (SLL y z))
- // cond:
// result: (TSTshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (TST (SLL y z) x)
- // cond:
// result: (TSTshiftLLreg x y z)
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMTST_10(v *Value) bool {
// match: (TST x (SRL y z))
- // cond:
// result: (TSTshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (TST (SRL y z) x)
- // cond:
// result: (TSTshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (TST x (SRA y z))
- // cond:
// result: (TSTshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (TST (SRA y z) x)
- // cond:
// result: (TSTshiftRAreg x y z)
for {
x := v.Args[1]
func rewriteValueARM_OpARMTSTshiftLL_0(v *Value) bool {
b := v.Block
// match: (TSTshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (TSTconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TSTshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (TSTconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMTSTshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (TSTshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (TSTconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (TSTshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (TSTshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMTSTshiftRA_0(v *Value) bool {
b := v.Block
// match: (TSTshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (TSTconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TSTshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (TSTconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMTSTshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (TSTshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (TSTconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (TSTshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (TSTshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMTSTshiftRL_0(v *Value) bool {
b := v.Block
// match: (TSTshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (TSTconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TSTshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (TSTconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
func rewriteValueARM_OpARMTSTshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (TSTshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (TSTconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (TSTshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (TSTshiftRL x y [c])
for {
_ = v.Args[2]
}
func rewriteValueARM_OpARMXOR_0(v *Value) bool {
// match: (XOR x (MOVWconst [c]))
- // cond:
// result: (XORconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (XOR (MOVWconst [c]) x)
- // cond:
// result: (XORconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (XOR x (SLLconst [c] y))
- // cond:
// result: (XORshiftLL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (XOR (SLLconst [c] y) x)
- // cond:
// result: (XORshiftLL x y [c])
for {
x := v.Args[1]
return true
}
// match: (XOR x (SRLconst [c] y))
- // cond:
// result: (XORshiftRL x y [c])
for {
_ = v.Args[1]
return true
}
// match: (XOR (SRLconst [c] y) x)
- // cond:
// result: (XORshiftRL x y [c])
for {
x := v.Args[1]
return true
}
// match: (XOR x (SRAconst [c] y))
- // cond:
// result: (XORshiftRA x y [c])
for {
_ = v.Args[1]
return true
}
// match: (XOR (SRAconst [c] y) x)
- // cond:
// result: (XORshiftRA x y [c])
for {
x := v.Args[1]
return true
}
// match: (XOR x (SRRconst [c] y))
- // cond:
// result: (XORshiftRR x y [c])
for {
_ = v.Args[1]
return true
}
// match: (XOR (SRRconst [c] y) x)
- // cond:
// result: (XORshiftRR x y [c])
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMXOR_10(v *Value) bool {
// match: (XOR x (SLL y z))
- // cond:
// result: (XORshiftLLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (XOR (SLL y z) x)
- // cond:
// result: (XORshiftLLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (XOR x (SRL y z))
- // cond:
// result: (XORshiftRLreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (XOR (SRL y z) x)
- // cond:
// result: (XORshiftRLreg x y z)
for {
x := v.Args[1]
return true
}
// match: (XOR x (SRA y z))
- // cond:
// result: (XORshiftRAreg x y z)
for {
_ = v.Args[1]
return true
}
// match: (XOR (SRA y z) x)
- // cond:
// result: (XORshiftRAreg x y z)
for {
x := v.Args[1]
return true
}
// match: (XOR x x)
- // cond:
// result: (MOVWconst [0])
for {
x := v.Args[1]
}
func rewriteValueARM_OpARMXORconst_0(v *Value) bool {
// match: (XORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (XORconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [c^d])
for {
c := v.AuxInt
return true
}
// match: (XORconst [c] (XORconst [d] x))
- // cond:
// result: (XORconst [c^d] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (XORshiftLL (MOVWconst [c]) x [d])
- // cond:
// result: (XORconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (XORshiftLL x (MOVWconst [c]) [d])
- // cond:
// result: (XORconst x [int64(int32(uint32(c)<<uint64(d)))])
for {
d := v.AuxInt
return true
}
// match: (XORshiftLL [c] (SRLconst x [32-c]) x)
- // cond:
// result: (SRRconst [32-c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSRLconst {
- break
- }
- if v_0.AuxInt != 32-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMSRLconst || v_0.AuxInt != 32-c || x != v_0.Args[0] {
break
}
v.reset(OpARMSRRconst)
return true
}
// match: (XORshiftLL <typ.UInt16> [8] (BFXU <typ.UInt16> [armBFAuxInt(8, 8)] x) x)
- // cond:
// result: (REV16 x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMBFXU {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMBFXU || v_0.Type != typ.UInt16 || v_0.AuxInt != armBFAuxInt(8, 8) || x != v_0.Args[0] {
break
}
v.reset(OpARMREV16)
// cond: objabi.GOARM>=6
// result: (REV16 x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSRLconst {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != 24 {
+ if v_0.Op != OpARMSRLconst || v_0.Type != typ.UInt16 || v_0.AuxInt != 24 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARMSLLconst {
- break
- }
- if v_0_0.AuxInt != 16 {
- break
- }
- if x != v_0_0.Args[0] {
- break
- }
- if !(objabi.GOARM >= 6) {
+ if v_0_0.Op != OpARMSLLconst || v_0_0.AuxInt != 16 || x != v_0_0.Args[0] || !(objabi.GOARM >= 6) {
break
}
v.reset(OpARMREV16)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMXORshiftLLreg_0(v *Value) bool {
b := v.Block
// match: (XORshiftLLreg (MOVWconst [c]) x y)
- // cond:
// result: (XORconst [c] (SLL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (XORshiftLLreg x y (MOVWconst [c]))
- // cond:
// result: (XORshiftLL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMXORshiftRA_0(v *Value) bool {
b := v.Block
// match: (XORshiftRA (MOVWconst [c]) x [d])
- // cond:
// result: (XORconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (XORshiftRA x (MOVWconst [c]) [d])
- // cond:
// result: (XORconst x [int64(int32(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMXORshiftRAreg_0(v *Value) bool {
b := v.Block
// match: (XORshiftRAreg (MOVWconst [c]) x y)
- // cond:
// result: (XORconst [c] (SRA <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (XORshiftRAreg x y (MOVWconst [c]))
- // cond:
// result: (XORshiftRA x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMXORshiftRL_0(v *Value) bool {
b := v.Block
// match: (XORshiftRL (MOVWconst [c]) x [d])
- // cond:
// result: (XORconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (XORshiftRL x (MOVWconst [c]) [d])
- // cond:
// result: (XORconst x [int64(int32(uint32(c)>>uint64(d)))])
for {
d := v.AuxInt
return true
}
// match: (XORshiftRL [c] (SLLconst x [32-c]) x)
- // cond:
// result: (SRRconst [ c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARMSLLconst {
- break
- }
- if v_0.AuxInt != 32-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARMSLLconst || v_0.AuxInt != 32-c || x != v_0.Args[0] {
break
}
v.reset(OpARMSRRconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARMMOVWconst)
func rewriteValueARM_OpARMXORshiftRLreg_0(v *Value) bool {
b := v.Block
// match: (XORshiftRLreg (MOVWconst [c]) x y)
- // cond:
// result: (XORconst [c] (SRL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (XORshiftRLreg x y (MOVWconst [c]))
- // cond:
// result: (XORshiftRL x y [c])
for {
_ = v.Args[2]
func rewriteValueARM_OpARMXORshiftRR_0(v *Value) bool {
b := v.Block
// match: (XORshiftRR (MOVWconst [c]) x [d])
- // cond:
// result: (XORconst [c] (SRRconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (XORshiftRR x (MOVWconst [c]) [d])
- // cond:
// result: (XORconst x [int64(int32(uint32(c)>>uint64(d)|uint32(c)<<uint64(32-d)))])
for {
d := v.AuxInt
}
func rewriteValueARM_OpAbs_0(v *Value) bool {
// match: (Abs x)
- // cond:
// result: (ABSD x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (ADDF x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAdd32carry_0(v *Value) bool {
// match: (Add32carry x y)
- // cond:
// result: (ADDS x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAdd32withcarry_0(v *Value) bool {
// match: (Add32withcarry x y c)
- // cond:
// result: (ADC x y c)
for {
c := v.Args[2]
}
func rewriteValueARM_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (ADDD x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (MOVWaddr {sym} base)
for {
sym := v.Aux
}
func rewriteValueARM_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
func rewriteValueARM_OpAvg32u_0(v *Value) bool {
b := v.Block
// match: (Avg32u <t> x y)
- // cond:
// result: (ADD (SRLconst <t> (SUB <t> x y) [1]) y)
for {
t := v.Type
func rewriteValueARM_OpBitLen32_0(v *Value) bool {
b := v.Block
// match: (BitLen32 <t> x)
- // cond:
// result: (RSBconst [32] (CLZ <t> x))
for {
t := v.Type
}
func rewriteValueARM_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
}
func rewriteValueARM_OpCom16_0(v *Value) bool {
// match: (Com16 x)
- // cond:
// result: (MVN x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCom32_0(v *Value) bool {
// match: (Com32 x)
- // cond:
// result: (MVN x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCom8_0(v *Value) bool {
// match: (Com8 x)
- // cond:
// result: (MVN x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVWconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVWconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (MOVFconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVWconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVWconst [b])
for {
b := v.AuxInt
}
func rewriteValueARM_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (MOVWconst [0])
for {
v.reset(OpARMMOVWconst)
}
func rewriteValueARM_OpCtz16NonZero_0(v *Value) bool {
// match: (Ctz16NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCtz32NonZero_0(v *Value) bool {
// match: (Ctz32NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCtz8NonZero_0(v *Value) bool {
// match: (Ctz8NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (MOVFW x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt32Fto32U_0(v *Value) bool {
// match: (Cvt32Fto32U x)
- // cond:
// result: (MOVFWU x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (MOVFD x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt32Uto32F_0(v *Value) bool {
// match: (Cvt32Uto32F x)
- // cond:
// result: (MOVWUF x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt32Uto64F_0(v *Value) bool {
// match: (Cvt32Uto64F x)
- // cond:
// result: (MOVWUD x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F x)
- // cond:
// result: (MOVWF x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F x)
- // cond:
// result: (MOVWD x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (MOVDW x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (MOVDF x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpCvt64Fto32U_0(v *Value) bool {
// match: (Cvt64Fto32U x)
- // cond:
// result: (MOVDWU x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 x y)
- // cond:
// result: (Div32 (SignExt16to32 x) (SignExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (Div32u (ZeroExt16to32 x) (ZeroExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32 x y)
- // cond:
// result: (SUB (XOR <typ.UInt32> (Select0 <typ.UInt32> (CALLudiv (SUB <typ.UInt32> (XOR x <typ.UInt32> (Signmask x)) (Signmask x)) (SUB <typ.UInt32> (XOR y <typ.UInt32> (Signmask y)) (Signmask y)))) (Signmask (XOR <typ.UInt32> x y))) (Signmask (XOR <typ.UInt32> x y)))
for {
y := v.Args[1]
}
func rewriteValueARM_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (DIVF x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32u x y)
- // cond:
// result: (Select0 <typ.UInt32> (CALLudiv x y))
for {
y := v.Args[1]
}
func rewriteValueARM_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (DIVD x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (Div32 (SignExt8to32 x) (SignExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (Div32u (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq16 x y)
- // cond:
// result: (Equal (CMP (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM_OpEq32_0(v *Value) bool {
b := v.Block
// match: (Eq32 x y)
- // cond:
// result: (Equal (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpEq32F_0(v *Value) bool {
b := v.Block
// match: (Eq32F x y)
- // cond:
// result: (Equal (CMPF x y))
for {
y := v.Args[1]
func rewriteValueARM_OpEq64F_0(v *Value) bool {
b := v.Block
// match: (Eq64F x y)
- // cond:
// result: (Equal (CMPD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq8 x y)
- // cond:
// result: (Equal (CMP (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqB x y)
- // cond:
// result: (XORconst [1] (XOR <typ.Bool> x y))
for {
y := v.Args[1]
func rewriteValueARM_OpEqPtr_0(v *Value) bool {
b := v.Block
// match: (EqPtr x y)
- // cond:
// result: (Equal (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16 x y)
- // cond:
// result: (GreaterEqual (CMP (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16U x y)
- // cond:
// result: (GreaterEqualU (CMP (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM_OpGeq32_0(v *Value) bool {
b := v.Block
// match: (Geq32 x y)
- // cond:
// result: (GreaterEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpGeq32F_0(v *Value) bool {
b := v.Block
// match: (Geq32F x y)
- // cond:
// result: (GreaterEqual (CMPF x y))
for {
y := v.Args[1]
func rewriteValueARM_OpGeq32U_0(v *Value) bool {
b := v.Block
// match: (Geq32U x y)
- // cond:
// result: (GreaterEqualU (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpGeq64F_0(v *Value) bool {
b := v.Block
// match: (Geq64F x y)
- // cond:
// result: (GreaterEqual (CMPD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8 x y)
- // cond:
// result: (GreaterEqual (CMP (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8U x y)
- // cond:
// result: (GreaterEqualU (CMP (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValueARM_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpARMLoweredGetCallerPC)
}
func rewriteValueARM_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpARMLoweredGetCallerSP)
}
func rewriteValueARM_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpARMLoweredGetClosurePtr)
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16 x y)
- // cond:
// result: (GreaterThan (CMP (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16U x y)
- // cond:
// result: (GreaterThanU (CMP (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM_OpGreater32_0(v *Value) bool {
b := v.Block
// match: (Greater32 x y)
- // cond:
// result: (GreaterThan (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpGreater32F_0(v *Value) bool {
b := v.Block
// match: (Greater32F x y)
- // cond:
// result: (GreaterThan (CMPF x y))
for {
y := v.Args[1]
func rewriteValueARM_OpGreater32U_0(v *Value) bool {
b := v.Block
// match: (Greater32U x y)
- // cond:
// result: (GreaterThanU (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpGreater64F_0(v *Value) bool {
b := v.Block
// match: (Greater64F x y)
- // cond:
// result: (GreaterThan (CMPD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8 x y)
- // cond:
// result: (GreaterThan (CMP (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8U x y)
- // cond:
// result: (GreaterThanU (CMP (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValueARM_OpHmul32_0(v *Value) bool {
// match: (Hmul32 x y)
- // cond:
// result: (HMUL x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpHmul32u_0(v *Value) bool {
// match: (Hmul32u x y)
- // cond:
// result: (HMULU x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
func rewriteValueARM_OpIsInBounds_0(v *Value) bool {
b := v.Block
// match: (IsInBounds idx len)
- // cond:
// result: (LessThanU (CMP idx len))
for {
len := v.Args[1]
func rewriteValueARM_OpIsNonNil_0(v *Value) bool {
b := v.Block
// match: (IsNonNil ptr)
- // cond:
// result: (NotEqual (CMPconst [0] ptr))
for {
ptr := v.Args[0]
func rewriteValueARM_OpIsSliceInBounds_0(v *Value) bool {
b := v.Block
// match: (IsSliceInBounds idx len)
- // cond:
// result: (LessEqualU (CMP idx len))
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16 x y)
- // cond:
// result: (LessEqual (CMP (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16U x y)
- // cond:
// result: (LessEqualU (CMP (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM_OpLeq32_0(v *Value) bool {
b := v.Block
// match: (Leq32 x y)
- // cond:
// result: (LessEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpLeq32F_0(v *Value) bool {
b := v.Block
// match: (Leq32F x y)
- // cond:
// result: (GreaterEqual (CMPF y x))
for {
y := v.Args[1]
func rewriteValueARM_OpLeq32U_0(v *Value) bool {
b := v.Block
// match: (Leq32U x y)
- // cond:
// result: (LessEqualU (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpLeq64F_0(v *Value) bool {
b := v.Block
// match: (Leq64F x y)
- // cond:
// result: (GreaterEqual (CMPD y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8 x y)
- // cond:
// result: (LessEqual (CMP (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8U x y)
- // cond:
// result: (LessEqualU (CMP (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16 x y)
- // cond:
// result: (LessThan (CMP (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16U x y)
- // cond:
// result: (LessThanU (CMP (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM_OpLess32_0(v *Value) bool {
b := v.Block
// match: (Less32 x y)
- // cond:
// result: (LessThan (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpLess32F_0(v *Value) bool {
b := v.Block
// match: (Less32F x y)
- // cond:
// result: (GreaterThan (CMPF y x))
for {
y := v.Args[1]
func rewriteValueARM_OpLess32U_0(v *Value) bool {
b := v.Block
// match: (Less32U x y)
- // cond:
// result: (LessThanU (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpLess64F_0(v *Value) bool {
b := v.Block
// match: (Less64F x y)
- // cond:
// result: (GreaterThan (CMPD y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8 x y)
- // cond:
// result: (LessThan (CMP (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8U x y)
- // cond:
// result: (LessThanU (CMP (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValueARM_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (MOVWaddr {sym} base)
for {
sym := v.Aux
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x16 x y)
- // cond:
// result: (CMOVWHSconst (SLL <x.Type> x (ZeroExt16to32 y)) (CMPconst [256] (ZeroExt16to32 y)) [0])
for {
y := v.Args[1]
func rewriteValueARM_OpLsh16x32_0(v *Value) bool {
b := v.Block
// match: (Lsh16x32 x y)
- // cond:
// result: (CMOVWHSconst (SLL <x.Type> x y) (CMPconst [256] y) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x8 x y)
- // cond:
// result: (SLL x (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x16 x y)
- // cond:
// result: (CMOVWHSconst (SLL <x.Type> x (ZeroExt16to32 y)) (CMPconst [256] (ZeroExt16to32 y)) [0])
for {
y := v.Args[1]
func rewriteValueARM_OpLsh32x32_0(v *Value) bool {
b := v.Block
// match: (Lsh32x32 x y)
- // cond:
// result: (CMOVWHSconst (SLL <x.Type> x y) (CMPconst [256] y) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x8 x y)
- // cond:
// result: (SLL x (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x16 x y)
- // cond:
// result: (CMOVWHSconst (SLL <x.Type> x (ZeroExt16to32 y)) (CMPconst [256] (ZeroExt16to32 y)) [0])
for {
y := v.Args[1]
func rewriteValueARM_OpLsh8x32_0(v *Value) bool {
b := v.Block
// match: (Lsh8x32 x y)
- // cond:
// result: (CMOVWHSconst (SLL <x.Type> x y) (CMPconst [256] y) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x8 x y)
- // cond:
// result: (SLL x (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 x y)
- // cond:
// result: (Mod32 (SignExt16to32 x) (SignExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (Mod32u (ZeroExt16to32 x) (ZeroExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32 x y)
- // cond:
// result: (SUB (XOR <typ.UInt32> (Select1 <typ.UInt32> (CALLudiv (SUB <typ.UInt32> (XOR <typ.UInt32> x (Signmask x)) (Signmask x)) (SUB <typ.UInt32> (XOR <typ.UInt32> y (Signmask y)) (Signmask y)))) (Signmask x)) (Signmask x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32u x y)
- // cond:
// result: (Select1 <typ.UInt32> (CALLudiv x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (Mod32 (SignExt8to32 x) (SignExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (Mod32u (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBUload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVBstore [1] dst (MOVBUload [1] src mem) (MOVBstore dst (MOVBUload src mem) mem))
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVBstore [3] dst (MOVBUload [3] src mem) (MOVBstore [2] dst (MOVBUload [2] src mem) (MOVBstore [1] dst (MOVBUload [1] src mem) (MOVBstore dst (MOVBUload src mem) mem))))
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBUload [2] src mem) (MOVBstore [1] dst (MOVBUload [1] src mem) (MOVBstore dst (MOVBUload src mem) mem)))
for {
if v.AuxInt != 3 {
}
func rewriteValueARM_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (MUL x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (MUL x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (MULF x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpMul32uhilo_0(v *Value) bool {
// match: (Mul32uhilo x y)
- // cond:
// result: (MULLU x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (MULD x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (MUL x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (RSBconst [0] x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (RSBconst [0] x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpNeg32F_0(v *Value) bool {
// match: (Neg32F x)
- // cond:
// result: (NEGF x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpNeg64F_0(v *Value) bool {
// match: (Neg64F x)
- // cond:
// result: (NEGD x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (RSBconst [0] x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq16 x y)
- // cond:
// result: (NotEqual (CMP (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM_OpNeq32_0(v *Value) bool {
b := v.Block
// match: (Neq32 x y)
- // cond:
// result: (NotEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM_OpNeq32F_0(v *Value) bool {
b := v.Block
// match: (Neq32F x y)
- // cond:
// result: (NotEqual (CMPF x y))
for {
y := v.Args[1]
func rewriteValueARM_OpNeq64F_0(v *Value) bool {
b := v.Block
// match: (Neq64F x y)
- // cond:
// result: (NotEqual (CMPD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq8 x y)
- // cond:
// result: (NotEqual (CMP (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValueARM_OpNeqB_0(v *Value) bool {
// match: (NeqB x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
func rewriteValueARM_OpNeqPtr_0(v *Value) bool {
b := v.Block
// match: (NeqPtr x y)
- // cond:
// result: (NotEqual (CMP x y))
for {
y := v.Args[1]
}
func rewriteValueARM_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueARM_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (XORconst [1] x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpOffPtr_0(v *Value) bool {
// match: (OffPtr [off] ptr:(SP))
- // cond:
// result: (MOVWaddr [off] ptr)
for {
off := v.AuxInt
return true
}
// match: (OffPtr [off] ptr)
- // cond:
// result: (ADDconst [off] ptr)
for {
off := v.AuxInt
}
func rewriteValueARM_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft16 <t> x (MOVWconst [c]))
- // cond:
// result: (Or16 (Lsh16x32 <t> x (MOVWconst [c&15])) (Rsh16Ux32 <t> x (MOVWconst [-c&15])))
for {
t := v.Type
func rewriteValueARM_OpRotateLeft32_0(v *Value) bool {
b := v.Block
// match: (RotateLeft32 x (MOVWconst [c]))
- // cond:
// result: (SRRconst [-c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (RotateLeft32 x y)
- // cond:
// result: (SRR x (RSBconst [0] <y.Type> y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft8 <t> x (MOVWconst [c]))
- // cond:
// result: (Or8 (Lsh8x32 <t> x (MOVWconst [c&7])) (Rsh8Ux32 <t> x (MOVWconst [-c&7])))
for {
t := v.Type
}
func rewriteValueARM_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: x
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux16 x y)
- // cond:
// result: (CMOVWHSconst (SRL <x.Type> (ZeroExt16to32 x) (ZeroExt16to32 y)) (CMPconst [256] (ZeroExt16to32 y)) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux32 x y)
- // cond:
// result: (CMOVWHSconst (SRL <x.Type> (ZeroExt16to32 x) y) (CMPconst [256] y) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux8 x y)
- // cond:
// result: (SRL (ZeroExt16to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x16 x y)
- // cond:
// result: (SRAcond (SignExt16to32 x) (ZeroExt16to32 y) (CMPconst [256] (ZeroExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x32 x y)
- // cond:
// result: (SRAcond (SignExt16to32 x) y (CMPconst [256] y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x8 x y)
- // cond:
// result: (SRA (SignExt16to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux16 x y)
- // cond:
// result: (CMOVWHSconst (SRL <x.Type> x (ZeroExt16to32 y)) (CMPconst [256] (ZeroExt16to32 y)) [0])
for {
y := v.Args[1]
func rewriteValueARM_OpRsh32Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh32Ux32 x y)
- // cond:
// result: (CMOVWHSconst (SRL <x.Type> x y) (CMPconst [256] y) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux8 x y)
- // cond:
// result: (SRL x (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x16 x y)
- // cond:
// result: (SRAcond x (ZeroExt16to32 y) (CMPconst [256] (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM_OpRsh32x32_0(v *Value) bool {
b := v.Block
// match: (Rsh32x32 x y)
- // cond:
// result: (SRAcond x y (CMPconst [256] y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x8 x y)
- // cond:
// result: (SRA x (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux16 x y)
- // cond:
// result: (CMOVWHSconst (SRL <x.Type> (ZeroExt8to32 x) (ZeroExt16to32 y)) (CMPconst [256] (ZeroExt16to32 y)) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux32 x y)
- // cond:
// result: (CMOVWHSconst (SRL <x.Type> (ZeroExt8to32 x) y) (CMPconst [256] y) [0])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux8 x y)
- // cond:
// result: (SRL (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x16 x y)
- // cond:
// result: (SRAcond (SignExt8to32 x) (ZeroExt16to32 y) (CMPconst [256] (ZeroExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x32 x y)
- // cond:
// result: (SRAcond (SignExt8to32 x) y (CMPconst [256] y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x8 x y)
- // cond:
// result: (SRA (SignExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
}
func rewriteValueARM_OpSelect0_0(v *Value) bool {
// match: (Select0 (CALLudiv x (MOVWconst [1])))
- // cond:
// result: x
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARMMOVWconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpARMMOVWconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select0 (CALLudiv (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [int64(int32(uint32(c)/uint32(d)))])
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpSelect1_0(v *Value) bool {
// match: (Select1 (CALLudiv _ (MOVWconst [1])))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARMMOVWconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpARMMOVWconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpARMMOVWconst)
return true
}
// match: (Select1 (CALLudiv (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [int64(int32(uint32(c)%uint32(d)))])
for {
v_0 := v.Args[0]
}
func rewriteValueARM_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpSignmask_0(v *Value) bool {
// match: (Signmask x)
- // cond:
// result: (SRAconst x [31])
for {
x := v.Args[0]
func rewriteValueARM_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SRAconst (RSBconst <t> [0] x) [31])
for {
t := v.Type
}
func rewriteValueARM_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (SQRTD x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValueARM_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (SUBF x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpSub32carry_0(v *Value) bool {
// match: (Sub32carry x y)
- // cond:
// result: (SUBS x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpSub32withcarry_0(v *Value) bool {
// match: (Sub32withcarry x y c)
- // cond:
// result: (SBC x y c)
for {
c := v.Args[2]
}
func rewriteValueARM_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (SUBD x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValueARM_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueARM_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] ptr mem)
- // cond:
// result: (MOVBstore ptr (MOVWconst [0]) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] ptr mem)
- // cond:
// result: (MOVBstore [1] ptr (MOVWconst [0]) (MOVBstore [0] ptr (MOVWconst [0]) mem))
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] ptr mem)
- // cond:
// result: (MOVBstore [3] ptr (MOVWconst [0]) (MOVBstore [2] ptr (MOVWconst [0]) (MOVBstore [1] ptr (MOVWconst [0]) (MOVBstore [0] ptr (MOVWconst [0]) mem))))
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [3] ptr mem)
- // cond:
// result: (MOVBstore [2] ptr (MOVWconst [0]) (MOVBstore [1] ptr (MOVWconst [0]) (MOVBstore [0] ptr (MOVWconst [0]) mem)))
for {
if v.AuxInt != 3 {
}
func rewriteValueARM_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVHUreg x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
}
func rewriteValueARM_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Zeromask x)
- // cond:
// result: (SRAconst (RSBshiftRL <typ.Int32> x x [1]) [31])
for {
x := v.Args[0]
switch b.Kind {
case BlockARMEQ:
// match: (EQ (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (EQ (InvertFlags cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMGE:
// match: (GE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GE (InvertFlags cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMGT:
// match: (GT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GT (InvertFlags cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockIf:
// match: (If (Equal cc) yes no)
- // cond:
// result: (EQ cc yes no)
for v.Op == OpARMEqual {
cc := v.Args[0]
return true
}
// match: (If (NotEqual cc) yes no)
- // cond:
// result: (NE cc yes no)
for v.Op == OpARMNotEqual {
cc := v.Args[0]
return true
}
// match: (If (LessThan cc) yes no)
- // cond:
// result: (LT cc yes no)
for v.Op == OpARMLessThan {
cc := v.Args[0]
return true
}
// match: (If (LessThanU cc) yes no)
- // cond:
// result: (ULT cc yes no)
for v.Op == OpARMLessThanU {
cc := v.Args[0]
return true
}
// match: (If (LessEqual cc) yes no)
- // cond:
// result: (LE cc yes no)
for v.Op == OpARMLessEqual {
cc := v.Args[0]
return true
}
// match: (If (LessEqualU cc) yes no)
- // cond:
// result: (ULE cc yes no)
for v.Op == OpARMLessEqualU {
cc := v.Args[0]
return true
}
// match: (If (GreaterThan cc) yes no)
- // cond:
// result: (GT cc yes no)
for v.Op == OpARMGreaterThan {
cc := v.Args[0]
return true
}
// match: (If (GreaterThanU cc) yes no)
- // cond:
// result: (UGT cc yes no)
for v.Op == OpARMGreaterThanU {
cc := v.Args[0]
return true
}
// match: (If (GreaterEqual cc) yes no)
- // cond:
// result: (GE cc yes no)
for v.Op == OpARMGreaterEqual {
cc := v.Args[0]
return true
}
// match: (If (GreaterEqualU cc) yes no)
- // cond:
// result: (UGE cc yes no)
for v.Op == OpARMGreaterEqualU {
cc := v.Args[0]
return true
}
// match: (If cond yes no)
- // cond:
// result: (NE (CMPconst [0] cond) yes no)
for {
cond := b.Control
}
case BlockARMLE:
// match: (LE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LE (InvertFlags cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMLT:
// match: (LT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LT (InvertFlags cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMNE:
// match: (NE (CMPconst [0] (Equal cc)) yes no)
- // cond:
// result: (EQ cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (NotEqual cc)) yes no)
- // cond:
// result: (NE cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (LessThan cc)) yes no)
- // cond:
// result: (LT cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (LessThanU cc)) yes no)
- // cond:
// result: (ULT cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (LessEqual cc)) yes no)
- // cond:
// result: (LE cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (LessEqualU cc)) yes no)
- // cond:
// result: (ULE cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (GreaterThan cc)) yes no)
- // cond:
// result: (GT cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (GreaterThanU cc)) yes no)
- // cond:
// result: (UGT cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (GreaterEqual cc)) yes no)
- // cond:
// result: (GE cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (GreaterEqualU cc)) yes no)
- // cond:
// result: (UGE cc yes no)
for v.Op == OpARMCMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (NE (InvertFlags cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMUGE:
// match: (UGE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGE (InvertFlags cmp) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMUGT:
// match: (UGT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGT (InvertFlags cmp) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMULE:
// match: (ULE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULE (InvertFlags cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
}
case BlockARMULT:
// match: (ULT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARMFlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARMFlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULT (InvertFlags cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpARMInvertFlags {
cmp := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ADCSflags x y (Select1 <types.TypeFlags> (ADDSconstflags [-1] (ADCzerocarry <typ.UInt64> c))))
- // cond:
// result: (ADCSflags x y c)
for {
_ = v.Args[2]
x := v.Args[0]
y := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpSelect1 {
- break
- }
- if v_2.Type != types.TypeFlags {
+ if v_2.Op != OpSelect1 || v_2.Type != types.TypeFlags {
break
}
v_2_0 := v_2.Args[0]
- if v_2_0.Op != OpARM64ADDSconstflags {
- break
- }
- if v_2_0.AuxInt != -1 {
+ if v_2_0.Op != OpARM64ADDSconstflags || v_2_0.AuxInt != -1 {
break
}
v_2_0_0 := v_2_0.Args[0]
- if v_2_0_0.Op != OpARM64ADCzerocarry {
- break
- }
- if v_2_0_0.Type != typ.UInt64 {
+ if v_2_0_0.Op != OpARM64ADCzerocarry || v_2_0_0.Type != typ.UInt64 {
break
}
c := v_2_0_0.Args[0]
return true
}
// match: (ADCSflags x y (Select1 <types.TypeFlags> (ADDSconstflags [-1] (MOVDconst [0]))))
- // cond:
// result: (ADDSflags x y)
for {
_ = v.Args[2]
x := v.Args[0]
y := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpSelect1 {
- break
- }
- if v_2.Type != types.TypeFlags {
+ if v_2.Op != OpSelect1 || v_2.Type != types.TypeFlags {
break
}
v_2_0 := v_2.Args[0]
- if v_2_0.Op != OpARM64ADDSconstflags {
- break
- }
- if v_2_0.AuxInt != -1 {
+ if v_2_0.Op != OpARM64ADDSconstflags || v_2_0.AuxInt != -1 {
break
}
v_2_0_0 := v_2_0.Args[0]
- if v_2_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_2_0_0.AuxInt != 0 {
+ if v_2_0_0.Op != OpARM64MOVDconst || v_2_0_0.AuxInt != 0 {
break
}
v.reset(OpARM64ADDSflags)
}
func rewriteValueARM64_OpARM64ADD_0(v *Value) bool {
// match: (ADD x (MOVDconst [c]))
- // cond:
// result: (ADDconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ADD (MOVDconst [c]) x)
- // cond:
// result: (ADDconst [c] x)
for {
x := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (ADD x (NEG y))
- // cond:
// result: (SUB x y)
for {
_ = v.Args[1]
return true
}
// match: (ADD (NEG y) x)
- // cond:
// result: (SUB x y)
for {
x := v.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt64 {
break
}
cc := v_1.Aux
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64SRL {
- break
- }
- if v_1_0.Type != typ.UInt64 {
+ if v_1_0.Op != OpARM64SRL || v_1_0.Type != typ.UInt64 {
break
}
_ = v_1_0.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 64 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 64 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 63 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 64 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 64 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 63 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt64 {
break
}
cc := v_0.Aux
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARM64SRL {
- break
- }
- if v_0_0.Type != typ.UInt64 {
+ if v_0_0.Op != OpARM64SRL || v_0_0.Type != typ.UInt64 {
break
}
_ = v_0_0.Args[1]
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 64 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 64 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 63 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 64 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 64 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 63 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRL {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64SRL || v_0.Type != typ.UInt64 {
break
}
_ = v_0.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt64 {
break
}
cc := v_1.Aux
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 64 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 64 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 63 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 64 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 64 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 63 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt64 {
break
}
cc := v_0.Aux
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 64 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 64 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 63 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 64 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 64 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 63 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRL {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64SRL || v_1.Type != typ.UInt64 {
break
}
_ = v_1.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt32 {
break
}
cc := v_1.Aux
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64SRL {
- break
- }
- if v_1_0.Type != typ.UInt32 {
+ if v_1_0.Op != OpARM64SRL || v_1_0.Type != typ.UInt32 {
break
}
_ = v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1_0_0.Args[0] {
+ if v_1_0_0.Op != OpARM64MOVWUreg || x != v_1_0_0.Args[0] {
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 32 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 32 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 31 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 32 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 32 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 31 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt32 {
break
}
cc := v_0.Aux
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARM64SRL {
- break
- }
- if v_0_0.Type != typ.UInt32 {
+ if v_0_0.Op != OpARM64SRL || v_0_0.Type != typ.UInt32 {
break
}
_ = v_0_0.Args[1]
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 32 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 32 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 31 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 32 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 32 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 31 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRL {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64SRL || v_0.Type != typ.UInt32 {
break
}
_ = v_0.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt32 {
break
}
cc := v_1.Aux
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 32 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 32 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 31 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 32 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 32 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 31 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt32 {
break
}
cc := v_0.Aux
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 32 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 32 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 31 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 32 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 32 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 31 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRL {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64SRL || v_1.Type != typ.UInt32 {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1_0.Args[0] {
+ if v_1_0.Op != OpARM64MOVWUreg || x != v_1_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
}
func rewriteValueARM64_OpARM64ADDconst_0(v *Value) bool {
// match: (ADDconst [off1] (MOVDaddr [off2] {sym} ptr))
- // cond:
// result: (MOVDaddr [off1+off2] {sym} ptr)
for {
off1 := v.AuxInt
return true
}
// match: (ADDconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ADDconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c+d])
for {
c := v.AuxInt
return true
}
// match: (ADDconst [c] (ADDconst [d] x))
- // cond:
// result: (ADDconst [c+d] x)
for {
c := v.AuxInt
return true
}
// match: (ADDconst [c] (SUBconst [d] x))
- // cond:
// result: (ADDconst [c-d] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (ADDshiftLL (MOVDconst [c]) x [d])
- // cond:
// result: (ADDconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (ADDconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
return true
}
// match: (ADDshiftLL [c] (SRLconst x [64-c]) x)
- // cond:
// result: (RORconst [64-c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRLconst {
- break
- }
- if v_0.AuxInt != 64-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64SRLconst || v_0.AuxInt != 64-c || x != v_0.Args[0] {
break
}
v.reset(OpARM64RORconst)
break
}
bfc := v_0.AuxInt
- if x != v_0.Args[0] {
- break
- }
- if !(c < 32 && t.Size() == 4 && bfc == armBFAuxInt(32-c, c)) {
+ if x != v_0.Args[0] || !(c < 32 && t.Size() == 4 && bfc == armBFAuxInt(32-c, c)) {
break
}
v.reset(OpARM64RORWconst)
return true
}
// match: (ADDshiftLL <typ.UInt16> [8] (UBFX <typ.UInt16> [armBFAuxInt(8, 8)] x) x)
- // cond:
// result: (REV16W x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64UBFX {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64UBFX || v_0.Type != typ.UInt16 || v_0.AuxInt != armBFAuxInt(8, 8) || x != v_0.Args[0] {
break
}
v.reset(OpARM64REV16W)
return true
}
// match: (ADDshiftLL [c] (SRLconst x [64-c]) x2)
- // cond:
// result: (EXTRconst [64-c] x2 x)
for {
c := v.AuxInt
x2 := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRLconst {
- break
- }
- if v_0.AuxInt != 64-c {
+ if v_0.Op != OpARM64SRLconst || v_0.AuxInt != 64-c {
break
}
x := v_0.Args[0]
func rewriteValueARM64_OpARM64ADDshiftRA_0(v *Value) bool {
b := v.Block
// match: (ADDshiftRA (MOVDconst [c]) x [d])
- // cond:
// result: (ADDconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (ADDconst x [c>>uint64(d)])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64ADDshiftRL_0(v *Value) bool {
b := v.Block
// match: (ADDshiftRL (MOVDconst [c]) x [d])
- // cond:
// result: (ADDconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ADDshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (ADDconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
return true
}
// match: (ADDshiftRL [c] (SLLconst x [64-c]) x)
- // cond:
// result: (RORconst [ c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 64-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 64-c || x != v_0.Args[0] {
break
}
v.reset(OpARM64RORconst)
c := v.AuxInt
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 32-c {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 32-c {
break
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1.Args[0] {
- break
- }
- if !(c < 32 && t.Size() == 4) {
+ if v_1.Op != OpARM64MOVWUreg || x != v_1.Args[0] || !(c < 32 && t.Size() == 4) {
break
}
v.reset(OpARM64RORWconst)
}
func rewriteValueARM64_OpARM64AND_0(v *Value) bool {
// match: (AND x (MOVDconst [c]))
- // cond:
// result: (ANDconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (AND (MOVDconst [c]) x)
- // cond:
// result: (ANDconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (AND x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (AND x (MVN y))
- // cond:
// result: (BIC x y)
for {
_ = v.Args[1]
return true
}
// match: (AND (MVN y) x)
- // cond:
// result: (BIC x y)
for {
x := v.Args[1]
}
func rewriteValueARM64_OpARM64ANDconst_0(v *Value) bool {
// match: (ANDconst [0] _)
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ANDconst [-1] x)
- // cond:
// result: x
for {
if v.AuxInt != -1 {
return true
}
// match: (ANDconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c&d])
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (ANDconst [d] x))
- // cond:
// result: (ANDconst [c&d] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (MOVWUreg x))
- // cond:
// result: (ANDconst [c&(1<<32-1)] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (MOVHUreg x))
- // cond:
// result: (ANDconst [c&(1<<16-1)] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (MOVBUreg x))
- // cond:
// result: (ANDconst [c&(1<<8-1)] x)
for {
c := v.AuxInt
func rewriteValueARM64_OpARM64ANDshiftLL_0(v *Value) bool {
b := v.Block
// match: (ANDshiftLL (MOVDconst [c]) x [d])
- // cond:
// result: (ANDconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ANDshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (ANDconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM64_OpARM64ANDshiftRA_0(v *Value) bool {
b := v.Block
// match: (ANDshiftRA (MOVDconst [c]) x [d])
- // cond:
// result: (ANDconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ANDshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (ANDconst x [c>>uint64(d)])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM64_OpARM64ANDshiftRL_0(v *Value) bool {
b := v.Block
// match: (ANDshiftRL (MOVDconst [c]) x [d])
- // cond:
// result: (ANDconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ANDshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (ANDconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
}
func rewriteValueARM64_OpARM64BIC_0(v *Value) bool {
// match: (BIC x (MOVDconst [c]))
- // cond:
// result: (ANDconst [^c] x)
for {
_ = v.Args[1]
return true
}
// match: (BIC x x)
- // cond:
// result: (MOVDconst [0])
for {
x := v.Args[1]
}
func rewriteValueARM64_OpARM64BICshiftLL_0(v *Value) bool {
// match: (BICshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (ANDconst x [^int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64BICshiftRA_0(v *Value) bool {
// match: (BICshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (ANDconst x [^(c>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64BICshiftRL_0(v *Value) bool {
// match: (BICshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (ANDconst x [^int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64CMN_0(v *Value) bool {
// match: (CMN x (MOVDconst [c]))
- // cond:
// result: (CMNconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (CMN (MOVDconst [c]) x)
- // cond:
// result: (CMNconst [c] x)
for {
x := v.Args[1]
}
func rewriteValueARM64_OpARM64CMNW_0(v *Value) bool {
// match: (CMNW x (MOVDconst [c]))
- // cond:
// result: (CMNWconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (CMNW (MOVDconst [c]) x)
- // cond:
// result: (CMNWconst [c] x)
for {
x := v.Args[1]
func rewriteValueARM64_OpARM64CMNshiftLL_0(v *Value) bool {
b := v.Block
// match: (CMNshiftLL (MOVDconst [c]) x [d])
- // cond:
// result: (CMNconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (CMNshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (CMNconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64CMNshiftRA_0(v *Value) bool {
b := v.Block
// match: (CMNshiftRA (MOVDconst [c]) x [d])
- // cond:
// result: (CMNconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (CMNshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (CMNconst x [c>>uint64(d)])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64CMNshiftRL_0(v *Value) bool {
b := v.Block
// match: (CMNshiftRL (MOVDconst [c]) x [d])
- // cond:
// result: (CMNconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (CMNshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (CMNconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64CMP_0(v *Value) bool {
b := v.Block
// match: (CMP x (MOVDconst [c]))
- // cond:
// result: (CMPconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (CMP (MOVDconst [c]) x)
- // cond:
// result: (InvertFlags (CMPconst [c] x))
for {
x := v.Args[1]
func rewriteValueARM64_OpARM64CMPW_0(v *Value) bool {
b := v.Block
// match: (CMPW x (MOVDconst [c]))
- // cond:
// result: (CMPWconst [int64(int32(c))] x)
for {
_ = v.Args[1]
return true
}
// match: (CMPW (MOVDconst [c]) x)
- // cond:
// result: (InvertFlags (CMPWconst [int64(int32(c))] x))
for {
x := v.Args[1]
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVBUreg {
- break
- }
- if !(0xff < int32(c)) {
+ if v_0.Op != OpARM64MOVBUreg || !(0xff < int32(c)) {
break
}
v.reset(OpARM64FlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVHUreg {
- break
- }
- if !(0xffff < int32(c)) {
+ if v_0.Op != OpARM64MOVHUreg || !(0xffff < int32(c)) {
break
}
v.reset(OpARM64FlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVBUreg {
- break
- }
- if !(0xff < c) {
+ if v_0.Op != OpARM64MOVBUreg || !(0xff < c) {
break
}
v.reset(OpARM64FlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVHUreg {
- break
- }
- if !(0xffff < c) {
+ if v_0.Op != OpARM64MOVHUreg || !(0xffff < c) {
break
}
v.reset(OpARM64FlagLT_ULT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVWUreg {
- break
- }
- if !(0xffffffff < c) {
+ if v_0.Op != OpARM64MOVWUreg || !(0xffffffff < c) {
break
}
v.reset(OpARM64FlagLT_ULT)
func rewriteValueARM64_OpARM64CMPshiftLL_0(v *Value) bool {
b := v.Block
// match: (CMPshiftLL (MOVDconst [c]) x [d])
- // cond:
// result: (InvertFlags (CMPconst [c] (SLLconst <x.Type> x [d])))
for {
d := v.AuxInt
return true
}
// match: (CMPshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (CMPconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64CMPshiftRA_0(v *Value) bool {
b := v.Block
// match: (CMPshiftRA (MOVDconst [c]) x [d])
- // cond:
// result: (InvertFlags (CMPconst [c] (SRAconst <x.Type> x [d])))
for {
d := v.AuxInt
return true
}
// match: (CMPshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (CMPconst x [c>>uint64(d)])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64CMPshiftRL_0(v *Value) bool {
b := v.Block
// match: (CMPshiftRL (MOVDconst [c]) x [d])
- // cond:
// result: (InvertFlags (CMPconst [c] (SRLconst <x.Type> x [d])))
for {
d := v.AuxInt
return true
}
// match: (CMPshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (CMPconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64CSEL_0(v *Value) bool {
// match: (CSEL {cc} x (MOVDconst [0]) flag)
- // cond:
// result: (CSEL0 {cc} x flag)
for {
cc := v.Aux
flag := v.Args[2]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64CSEL0)
return true
}
// match: (CSEL {cc} (MOVDconst [0]) y flag)
- // cond:
// result: (CSEL0 {arm64Negate(cc.(Op))} y flag)
for {
cc := v.Aux
flag := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARM64MOVDconst || v_0.AuxInt != 0 {
break
}
y := v.Args[1]
return true
}
// match: (CSEL {cc} x y (InvertFlags cmp))
- // cond:
// result: (CSEL {arm64Invert(cc.(Op))} x y cmp)
for {
cc := v.Aux
x := v.Args[0]
y := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64CMPWconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64CMPWconst || v_2.AuxInt != 0 {
break
}
boolval := v_2.Args[0]
x := v.Args[0]
y := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64CMPWconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64CMPWconst || v_2.AuxInt != 0 {
break
}
boolval := v_2.Args[0]
}
func rewriteValueARM64_OpARM64CSEL0_0(v *Value) bool {
// match: (CSEL0 {cc} x (InvertFlags cmp))
- // cond:
// result: (CSEL0 {arm64Invert(cc.(Op))} x cmp)
for {
cc := v.Aux
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CMPWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64CMPWconst || v_1.AuxInt != 0 {
break
}
boolval := v_1.Args[0]
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CMPWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64CMPWconst || v_1.AuxInt != 0 {
break
}
boolval := v_1.Args[0]
}
func rewriteValueARM64_OpARM64DIV_0(v *Value) bool {
// match: (DIV (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c/d])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64DIVW_0(v *Value) bool {
// match: (DIVW (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(int32(c)/int32(d))])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64EON_0(v *Value) bool {
// match: (EON x (MOVDconst [c]))
- // cond:
// result: (XORconst [^c] x)
for {
_ = v.Args[1]
return true
}
// match: (EON x x)
- // cond:
// result: (MOVDconst [-1])
for {
x := v.Args[1]
}
func rewriteValueARM64_OpARM64EONshiftLL_0(v *Value) bool {
// match: (EONshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (XORconst x [^int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64EONshiftRA_0(v *Value) bool {
// match: (EONshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (XORconst x [^(c>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64EONshiftRL_0(v *Value) bool {
// match: (EONshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (XORconst x [^int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64Equal_0(v *Value) bool {
// match: (Equal (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagLT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagLT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagGT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagGT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (InvertFlags x))
- // cond:
// result: (Equal x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64FADDD_0(v *Value) bool {
// match: (FADDD a (FMULD x y))
- // cond:
// result: (FMADDD a x y)
for {
_ = v.Args[1]
return true
}
// match: (FADDD (FMULD x y) a)
- // cond:
// result: (FMADDD a x y)
for {
a := v.Args[1]
return true
}
// match: (FADDD a (FNMULD x y))
- // cond:
// result: (FMSUBD a x y)
for {
_ = v.Args[1]
return true
}
// match: (FADDD (FNMULD x y) a)
- // cond:
// result: (FMSUBD a x y)
for {
a := v.Args[1]
}
func rewriteValueARM64_OpARM64FADDS_0(v *Value) bool {
// match: (FADDS a (FMULS x y))
- // cond:
// result: (FMADDS a x y)
for {
_ = v.Args[1]
return true
}
// match: (FADDS (FMULS x y) a)
- // cond:
// result: (FMADDS a x y)
for {
a := v.Args[1]
return true
}
// match: (FADDS a (FNMULS x y))
- // cond:
// result: (FMSUBS a x y)
for {
_ = v.Args[1]
return true
}
// match: (FADDS (FNMULS x y) a)
- // cond:
// result: (FMSUBS a x y)
for {
a := v.Args[1]
func rewriteValueARM64_OpARM64FCMPD_0(v *Value) bool {
b := v.Block
// match: (FCMPD x (FMOVDconst [0]))
- // cond:
// result: (FCMPD0 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64FMOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64FMOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64FCMPD0)
return true
}
// match: (FCMPD (FMOVDconst [0]) x)
- // cond:
// result: (InvertFlags (FCMPD0 x))
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64FMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARM64FMOVDconst || v_0.AuxInt != 0 {
break
}
v.reset(OpARM64InvertFlags)
func rewriteValueARM64_OpARM64FCMPS_0(v *Value) bool {
b := v.Block
// match: (FCMPS x (FMOVSconst [0]))
- // cond:
// result: (FCMPS0 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64FMOVSconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64FMOVSconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64FCMPS0)
return true
}
// match: (FCMPS (FMOVSconst [0]) x)
- // cond:
// result: (InvertFlags (FCMPS0 x))
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64FMOVSconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARM64FMOVSconst || v_0.AuxInt != 0 {
break
}
v.reset(OpARM64InvertFlags)
func rewriteValueARM64_OpARM64FMOVDfpgp_0(v *Value) bool {
b := v.Block
// match: (FMOVDfpgp <t> (Arg [off] {sym}))
- // cond:
// result: @b.Func.Entry (Arg <t> [off] {sym})
for {
t := v.Type
func rewriteValueARM64_OpARM64FMOVDgpfp_0(v *Value) bool {
b := v.Block
// match: (FMOVDgpfp <t> (Arg [off] {sym}))
- // cond:
// result: @b.Func.Entry (Arg <t> [off] {sym})
for {
t := v.Type
b := v.Block
config := b.Func.Config
// match: (FMOVDload [off] {sym} ptr (MOVDstore [off] {sym} ptr val _))
- // cond:
// result: (FMOVDgpfp val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpARM64MOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
}
func rewriteValueARM64_OpARM64FMOVDloadidx_0(v *Value) bool {
// match: (FMOVDloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (FMOVDload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (FMOVDloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (FMOVDload [c] ptr mem)
for {
mem := v.Args[2]
b := v.Block
config := b.Func.Config
// match: (FMOVDstore [off] {sym} ptr (FMOVDgpfp val) mem)
- // cond:
// result: (MOVDstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
}
func rewriteValueARM64_OpARM64FMOVDstoreidx_0(v *Value) bool {
// match: (FMOVDstoreidx ptr (MOVDconst [c]) val mem)
- // cond:
// result: (FMOVDstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (FMOVDstoreidx (MOVDconst [c]) idx val mem)
- // cond:
// result: (FMOVDstore [c] idx val mem)
for {
mem := v.Args[3]
b := v.Block
config := b.Func.Config
// match: (FMOVSload [off] {sym} ptr (MOVWstore [off] {sym} ptr val _))
- // cond:
// result: (FMOVSgpfp val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVWstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpARM64MOVWstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
}
func rewriteValueARM64_OpARM64FMOVSloadidx_0(v *Value) bool {
// match: (FMOVSloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (FMOVSload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (FMOVSloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (FMOVSload [c] ptr mem)
for {
mem := v.Args[2]
b := v.Block
config := b.Func.Config
// match: (FMOVSstore [off] {sym} ptr (FMOVSgpfp val) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
}
func rewriteValueARM64_OpARM64FMOVSstoreidx_0(v *Value) bool {
// match: (FMOVSstoreidx ptr (MOVDconst [c]) val mem)
- // cond:
// result: (FMOVSstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (FMOVSstoreidx (MOVDconst [c]) idx val mem)
- // cond:
// result: (FMOVSstore [c] idx val mem)
for {
mem := v.Args[3]
}
func rewriteValueARM64_OpARM64FMULD_0(v *Value) bool {
// match: (FMULD (FNEGD x) y)
- // cond:
// result: (FNMULD x y)
for {
y := v.Args[1]
return true
}
// match: (FMULD y (FNEGD x))
- // cond:
// result: (FNMULD x y)
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64FMULS_0(v *Value) bool {
// match: (FMULS (FNEGS x) y)
- // cond:
// result: (FNMULS x y)
for {
y := v.Args[1]
return true
}
// match: (FMULS y (FNEGS x))
- // cond:
// result: (FNMULS x y)
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64FNEGD_0(v *Value) bool {
// match: (FNEGD (FMULD x y))
- // cond:
// result: (FNMULD x y)
for {
v_0 := v.Args[0]
return true
}
// match: (FNEGD (FNMULD x y))
- // cond:
// result: (FMULD x y)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64FNEGS_0(v *Value) bool {
// match: (FNEGS (FMULS x y))
- // cond:
// result: (FNMULS x y)
for {
v_0 := v.Args[0]
return true
}
// match: (FNEGS (FNMULS x y))
- // cond:
// result: (FMULS x y)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64FNMULD_0(v *Value) bool {
// match: (FNMULD (FNEGD x) y)
- // cond:
// result: (FMULD x y)
for {
y := v.Args[1]
return true
}
// match: (FNMULD y (FNEGD x))
- // cond:
// result: (FMULD x y)
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64FNMULS_0(v *Value) bool {
// match: (FNMULS (FNEGS x) y)
- // cond:
// result: (FMULS x y)
for {
y := v.Args[1]
return true
}
// match: (FNMULS y (FNEGS x))
- // cond:
// result: (FMULS x y)
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64FSUBD_0(v *Value) bool {
// match: (FSUBD a (FMULD x y))
- // cond:
// result: (FMSUBD a x y)
for {
_ = v.Args[1]
return true
}
// match: (FSUBD (FMULD x y) a)
- // cond:
// result: (FNMSUBD a x y)
for {
a := v.Args[1]
return true
}
// match: (FSUBD a (FNMULD x y))
- // cond:
// result: (FMADDD a x y)
for {
_ = v.Args[1]
return true
}
// match: (FSUBD (FNMULD x y) a)
- // cond:
// result: (FNMADDD a x y)
for {
a := v.Args[1]
}
func rewriteValueARM64_OpARM64FSUBS_0(v *Value) bool {
// match: (FSUBS a (FMULS x y))
- // cond:
// result: (FMSUBS a x y)
for {
_ = v.Args[1]
return true
}
// match: (FSUBS (FMULS x y) a)
- // cond:
// result: (FNMSUBS a x y)
for {
a := v.Args[1]
return true
}
// match: (FSUBS a (FNMULS x y))
- // cond:
// result: (FMADDS a x y)
for {
_ = v.Args[1]
return true
}
// match: (FSUBS (FNMULS x y) a)
- // cond:
// result: (FNMADDS a x y)
for {
a := v.Args[1]
}
func rewriteValueARM64_OpARM64GreaterEqual_0(v *Value) bool {
// match: (GreaterEqual (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagLT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagLT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagGT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagGT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (InvertFlags x))
- // cond:
// result: (LessEqual x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64GreaterEqualF_0(v *Value) bool {
// match: (GreaterEqualF (InvertFlags x))
- // cond:
// result: (LessEqualF x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64GreaterEqualU_0(v *Value) bool {
// match: (GreaterEqualU (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagLT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagLT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagGT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (FlagGT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqualU (InvertFlags x))
- // cond:
// result: (LessEqualU x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64GreaterThan_0(v *Value) bool {
// match: (GreaterThan (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagLT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagLT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagGT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagGT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (InvertFlags x))
- // cond:
// result: (LessThan x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64GreaterThanF_0(v *Value) bool {
// match: (GreaterThanF (InvertFlags x))
- // cond:
// result: (LessThanF x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64GreaterThanU_0(v *Value) bool {
// match: (GreaterThanU (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagLT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagLT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagGT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (FlagGT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThanU (InvertFlags x))
- // cond:
// result: (LessThanU x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64LessEqual_0(v *Value) bool {
// match: (LessEqual (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagLT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagLT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagGT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagGT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (InvertFlags x))
- // cond:
// result: (GreaterEqual x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64LessEqualF_0(v *Value) bool {
// match: (LessEqualF (InvertFlags x))
- // cond:
// result: (GreaterEqualF x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64LessEqualU_0(v *Value) bool {
// match: (LessEqualU (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagLT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagLT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagGT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (FlagGT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqualU (InvertFlags x))
- // cond:
// result: (GreaterEqualU x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64LessThan_0(v *Value) bool {
// match: (LessThan (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagLT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagLT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagGT_ULT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagGT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (InvertFlags x))
- // cond:
// result: (GreaterThan x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64LessThanF_0(v *Value) bool {
// match: (LessThanF (InvertFlags x))
- // cond:
// result: (GreaterThanF x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64LessThanU_0(v *Value) bool {
// match: (LessThanU (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagLT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagLT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagGT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (FlagGT_UGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThanU (InvertFlags x))
- // cond:
// result: (GreaterThanU x)
for {
v_0 := v.Args[0]
func rewriteValueARM64_OpARM64MADD_0(v *Value) bool {
b := v.Block
// match: (MADD a x (MOVDconst [-1]))
- // cond:
// result: (SUB a x)
for {
_ = v.Args[2]
a := v.Args[0]
x := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != -1 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != -1 {
break
}
v.reset(OpARM64SUB)
return true
}
// match: (MADD a _ (MOVDconst [0]))
- // cond:
// result: a
for {
_ = v.Args[2]
a := v.Args[0]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MADD a x (MOVDconst [1]))
- // cond:
// result: (ADD a x)
for {
_ = v.Args[2]
a := v.Args[0]
x := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 1 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 1 {
break
}
v.reset(OpARM64ADD)
func rewriteValueARM64_OpARM64MADD_10(v *Value) bool {
b := v.Block
// match: (MADD a (MOVDconst [-1]) x)
- // cond:
// result: (SUB a x)
for {
x := v.Args[2]
a := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != -1 {
break
}
v.reset(OpARM64SUB)
return true
}
// match: (MADD a (MOVDconst [0]) _)
- // cond:
// result: a
for {
_ = v.Args[2]
a := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MADD a (MOVDconst [1]) x)
- // cond:
// result: (ADD a x)
for {
x := v.Args[2]
a := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
break
}
v.reset(OpARM64ADD)
func rewriteValueARM64_OpARM64MADD_20(v *Value) bool {
b := v.Block
// match: (MADD (MOVDconst [c]) x y)
- // cond:
// result: (ADDconst [c] (MUL <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (MADD a (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (ADDconst [c*d] a)
for {
_ = v.Args[2]
func rewriteValueARM64_OpARM64MADDW_20(v *Value) bool {
b := v.Block
// match: (MADDW (MOVDconst [c]) x y)
- // cond:
// result: (ADDconst [c] (MULW <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (MADDW a (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (ADDconst [int64(int32(c)*int32(d))] a)
for {
_ = v.Args[2]
func rewriteValueARM64_OpARM64MNEG_0(v *Value) bool {
b := v.Block
// match: (MNEG x (MOVDconst [-1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (MNEG (MOVDconst [-1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpARM64MOVDconst || v_0.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (MNEG _ (MOVDconst [0]))
- // cond:
// result: (MOVDconst [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64MOVDconst)
return true
}
// match: (MNEG (MOVDconst [0]) _)
- // cond:
// result: (MOVDconst [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARM64MOVDconst || v_0.AuxInt != 0 {
break
}
v.reset(OpARM64MOVDconst)
return true
}
// match: (MNEG x (MOVDconst [1]))
- // cond:
// result: (NEG x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
break
}
v.reset(OpARM64NEG)
return true
}
// match: (MNEG (MOVDconst [1]) x)
- // cond:
// result: (NEG x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64MOVDconst || v_0.AuxInt != 1 {
break
}
v.reset(OpARM64NEG)
}
func rewriteValueARM64_OpARM64MNEG_20(v *Value) bool {
// match: (MNEG (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [-c*d])
for {
_ = v.Args[1]
return true
}
// match: (MNEG (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [-c*d])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64MNEGW_20(v *Value) bool {
// match: (MNEGW (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [-int64(int32(c)*int32(d))])
for {
_ = v.Args[1]
return true
}
// match: (MNEGW (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [-int64(int32(c)*int32(d))])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64MOD_0(v *Value) bool {
// match: (MOD (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c%d])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64MODW_0(v *Value) bool {
// match: (MODW (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(int32(c)%int32(d))])
for {
_ = v.Args[1]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64MOVBUloadidx_0(v *Value) bool {
// match: (MOVBUloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVBUload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVBUloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (MOVBUload [c] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVBUreg_0(v *Value) bool {
// match: (MOVBUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg x:(MOVBUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg x:(MOVBUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg (ANDconst [c] x))
- // cond:
// result: (ANDconst [c&(1<<8-1)] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBUreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64MOVBloadidx_0(v *Value) bool {
// match: (MOVBloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVBload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVBloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (MOVBload [c] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVBreg_0(v *Value) bool {
// match: (MOVBreg x:(MOVBload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg x:(MOVBloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg x:(MOVBreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVBstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64MOVBstorezero)
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64UBFX {
- break
- }
- if v_1.AuxInt != armBFAuxInt(8, 8) {
+ if v_1.Op != OpARM64UBFX || v_1.AuxInt != armBFAuxInt(8, 8) {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64UBFX {
- break
- }
- if v_1.AuxInt != armBFAuxInt(8, 8) {
+ if v_1.Op != OpARM64UBFX || v_1.AuxInt != armBFAuxInt(8, 8) {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64UBFX {
- break
- }
- if v_1.AuxInt != armBFAuxInt(8, 24) {
+ if v_1.Op != OpARM64UBFX || v_1.AuxInt != armBFAuxInt(8, 24) {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64UBFX {
- break
- }
- if v_1.AuxInt != armBFAuxInt(8, 24) {
+ if v_1.Op != OpARM64UBFX || v_1.AuxInt != armBFAuxInt(8, 24) {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 8 {
break
}
v_1_0 := v_1.Args[0]
}
w := v_1_0.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 8 {
break
}
v_1_0 := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
w0 := x.Args[1]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
ptr1 := x.Args[0]
idx1 := x.Args[1]
w0 := x.Args[2]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
bfc := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
bfc2 := w0.AuxInt
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && getARM64BFwidth(bfc) == 32-getARM64BFlsb(bfc) && getARM64BFwidth(bfc2) == 32-getARM64BFlsb(bfc2) && getARM64BFlsb(bfc2) == getARM64BFlsb(bfc)-8 && clobber(x)) {
+ if w != w0.Args[0] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && getARM64BFwidth(bfc) == 32-getARM64BFlsb(bfc) && getARM64BFwidth(bfc2) == 32-getARM64BFlsb(bfc2) && getARM64BFlsb(bfc2) == getARM64BFlsb(bfc)-8 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
break
}
bfc2 := w0.AuxInt
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && getARM64BFwidth(bfc) == 32-getARM64BFlsb(bfc) && getARM64BFwidth(bfc2) == 32-getARM64BFlsb(bfc2) && getARM64BFlsb(bfc2) == getARM64BFlsb(bfc)-8 && clobber(x)) {
+ if w != w0.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && getARM64BFwidth(bfc) == 32-getARM64BFlsb(bfc) && getARM64BFwidth(bfc2) == 32-getARM64BFlsb(bfc2) && getARM64BFlsb(bfc2) == getARM64BFlsb(bfc)-8 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
}
w := v_1_0.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
w0 := x.Args[1]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-8 {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-8 {
break
}
w0_0 := w0.Args[0]
- if w0_0.Op != OpARM64MOVDreg {
- break
- }
- if w != w0_0.Args[0] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w0_0.Op != OpARM64MOVDreg || w != w0_0.Args[0] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
ptr1 := x.Args[0]
idx1 := x.Args[1]
w0 := x.Args[2]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-8 {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-8 {
break
}
w0_0 := w0.Args[0]
- if w0_0.Op != OpARM64MOVDreg {
- break
- }
- if w != w0_0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w0_0.Op != OpARM64MOVDreg || w != w0_0.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != i-1 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != i-1 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64SRLconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpARM64SRLconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != i-2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != i-2 || x1.Aux != s {
break
}
_ = x1.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64SRLconst {
- break
- }
- if x1_1.AuxInt != 16 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpARM64SRLconst || x1_1.AuxInt != 16 || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
- if x2.Op != OpARM64MOVBstore {
- break
- }
- if x2.AuxInt != i-3 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBstore || x2.AuxInt != i-3 || x2.Aux != s {
break
}
_ = x2.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64SRLconst {
- break
- }
- if x2_1.AuxInt != 24 {
- break
- }
- if w != x2_1.Args[0] {
+ if x2_1.Op != OpARM64SRLconst || x2_1.AuxInt != 24 || w != x2_1.Args[0] {
break
}
x3 := x2.Args[2]
- if x3.Op != OpARM64MOVBstore {
- break
- }
- if x3.AuxInt != i-4 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBstore || x3.AuxInt != i-4 || x3.Aux != s {
break
}
_ = x3.Args[2]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64SRLconst {
- break
- }
- if x3_1.AuxInt != 32 {
- break
- }
- if w != x3_1.Args[0] {
+ if x3_1.Op != OpARM64SRLconst || x3_1.AuxInt != 32 || w != x3_1.Args[0] {
break
}
x4 := x3.Args[2]
- if x4.Op != OpARM64MOVBstore {
- break
- }
- if x4.AuxInt != i-5 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBstore || x4.AuxInt != i-5 || x4.Aux != s {
break
}
_ = x4.Args[2]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpARM64SRLconst {
- break
- }
- if x4_1.AuxInt != 40 {
- break
- }
- if w != x4_1.Args[0] {
+ if x4_1.Op != OpARM64SRLconst || x4_1.AuxInt != 40 || w != x4_1.Args[0] {
break
}
x5 := x4.Args[2]
- if x5.Op != OpARM64MOVBstore {
- break
- }
- if x5.AuxInt != i-6 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpARM64MOVBstore || x5.AuxInt != i-6 || x5.Aux != s {
break
}
_ = x5.Args[2]
break
}
x5_1 := x5.Args[1]
- if x5_1.Op != OpARM64SRLconst {
- break
- }
- if x5_1.AuxInt != 48 {
- break
- }
- if w != x5_1.Args[0] {
+ if x5_1.Op != OpARM64SRLconst || x5_1.AuxInt != 48 || w != x5_1.Args[0] {
break
}
x6 := x5.Args[2]
- if x6.Op != OpARM64MOVBstore {
- break
- }
- if x6.AuxInt != i-7 {
- break
- }
- if x6.Aux != s {
+ if x6.Op != OpARM64MOVBstore || x6.AuxInt != i-7 || x6.Aux != s {
break
}
mem := x6.Args[2]
break
}
x6_1 := x6.Args[1]
- if x6_1.Op != OpARM64SRLconst {
- break
- }
- if x6_1.AuxInt != 56 {
- break
- }
- if w != x6_1.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
+ if x6_1.Op != OpARM64SRLconst || x6_1.AuxInt != 56 || w != x6_1.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
break
}
v.reset(OpARM64MOVDstore)
p := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != 6 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != 6 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64SRLconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpARM64SRLconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != 5 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != 5 || x1.Aux != s {
break
}
_ = x1.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64SRLconst {
- break
- }
- if x1_1.AuxInt != 16 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpARM64SRLconst || x1_1.AuxInt != 16 || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
- if x2.Op != OpARM64MOVBstore {
- break
- }
- if x2.AuxInt != 4 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBstore || x2.AuxInt != 4 || x2.Aux != s {
break
}
_ = x2.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64SRLconst {
- break
- }
- if x2_1.AuxInt != 24 {
- break
- }
- if w != x2_1.Args[0] {
+ if x2_1.Op != OpARM64SRLconst || x2_1.AuxInt != 24 || w != x2_1.Args[0] {
break
}
x3 := x2.Args[2]
- if x3.Op != OpARM64MOVBstore {
- break
- }
- if x3.AuxInt != 3 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBstore || x3.AuxInt != 3 || x3.Aux != s {
break
}
_ = x3.Args[2]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64SRLconst {
- break
- }
- if x3_1.AuxInt != 32 {
- break
- }
- if w != x3_1.Args[0] {
+ if x3_1.Op != OpARM64SRLconst || x3_1.AuxInt != 32 || w != x3_1.Args[0] {
break
}
x4 := x3.Args[2]
- if x4.Op != OpARM64MOVBstore {
- break
- }
- if x4.AuxInt != 2 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBstore || x4.AuxInt != 2 || x4.Aux != s {
break
}
_ = x4.Args[2]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpARM64SRLconst {
- break
- }
- if x4_1.AuxInt != 40 {
- break
- }
- if w != x4_1.Args[0] {
+ if x4_1.Op != OpARM64SRLconst || x4_1.AuxInt != 40 || w != x4_1.Args[0] {
break
}
x5 := x4.Args[2]
- if x5.Op != OpARM64MOVBstore {
- break
- }
- if x5.AuxInt != 1 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpARM64MOVBstore || x5.AuxInt != 1 || x5.Aux != s {
break
}
_ = x5.Args[2]
idx1 := p1.Args[1]
ptr1 := p1.Args[0]
x5_1 := x5.Args[1]
- if x5_1.Op != OpARM64SRLconst {
- break
- }
- if x5_1.AuxInt != 48 {
- break
- }
- if w != x5_1.Args[0] {
+ if x5_1.Op != OpARM64SRLconst || x5_1.AuxInt != 48 || w != x5_1.Args[0] {
break
}
x6 := x5.Args[2]
ptr0 := x6.Args[0]
idx0 := x6.Args[1]
x6_2 := x6.Args[2]
- if x6_2.Op != OpARM64SRLconst {
- break
- }
- if x6_2.AuxInt != 56 {
- break
- }
- if w != x6_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
+ if x6_2.Op != OpARM64SRLconst || x6_2.AuxInt != 56 || w != x6_2.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
break
}
v.reset(OpARM64MOVDstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != i-1 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != i-1 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64UBFX {
- break
- }
- if x0_1.AuxInt != armBFAuxInt(8, 24) {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpARM64UBFX || x0_1.AuxInt != armBFAuxInt(8, 24) || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != i-2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != i-2 || x1.Aux != s {
break
}
_ = x1.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64UBFX {
- break
- }
- if x1_1.AuxInt != armBFAuxInt(16, 16) {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpARM64UBFX || x1_1.AuxInt != armBFAuxInt(16, 16) || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
- if x2.Op != OpARM64MOVBstore {
- break
- }
- if x2.AuxInt != i-3 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBstore || x2.AuxInt != i-3 || x2.Aux != s {
break
}
mem := x2.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64UBFX {
- break
- }
- if x2_1.AuxInt != armBFAuxInt(24, 8) {
- break
- }
- if w != x2_1.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_1.Op != OpARM64UBFX || x2_1.AuxInt != armBFAuxInt(24, 8) || w != x2_1.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstore)
p := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != 2 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != 2 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64UBFX {
- break
- }
- if x0_1.AuxInt != armBFAuxInt(8, 24) {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpARM64UBFX || x0_1.AuxInt != armBFAuxInt(8, 24) || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != 1 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != 1 || x1.Aux != s {
break
}
_ = x1.Args[2]
idx1 := p1.Args[1]
ptr1 := p1.Args[0]
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64UBFX {
- break
- }
- if x1_1.AuxInt != armBFAuxInt(16, 16) {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpARM64UBFX || x1_1.AuxInt != armBFAuxInt(16, 16) || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
ptr0 := x2.Args[0]
idx0 := x2.Args[1]
x2_2 := x2.Args[2]
- if x2_2.Op != OpARM64UBFX {
- break
- }
- if x2_2.AuxInt != armBFAuxInt(24, 8) {
- break
- }
- if w != x2_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_2.Op != OpARM64UBFX || x2_2.AuxInt != armBFAuxInt(24, 8) || w != x2_2.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != i-1 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != i-1 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64SRLconst {
- break
- }
- if x0_1.AuxInt != 8 {
+ if x0_1.Op != OpARM64SRLconst || x0_1.AuxInt != 8 {
break
}
x0_1_0 := x0_1.Args[0]
- if x0_1_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x0_1_0.Args[0] {
+ if x0_1_0.Op != OpARM64MOVDreg || w != x0_1_0.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != i-2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != i-2 || x1.Aux != s {
break
}
_ = x1.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64SRLconst {
- break
- }
- if x1_1.AuxInt != 16 {
+ if x1_1.Op != OpARM64SRLconst || x1_1.AuxInt != 16 {
break
}
x1_1_0 := x1_1.Args[0]
- if x1_1_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x1_1_0.Args[0] {
+ if x1_1_0.Op != OpARM64MOVDreg || w != x1_1_0.Args[0] {
break
}
x2 := x1.Args[2]
- if x2.Op != OpARM64MOVBstore {
- break
- }
- if x2.AuxInt != i-3 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBstore || x2.AuxInt != i-3 || x2.Aux != s {
break
}
mem := x2.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64SRLconst {
- break
- }
- if x2_1.AuxInt != 24 {
+ if x2_1.Op != OpARM64SRLconst || x2_1.AuxInt != 24 {
break
}
x2_1_0 := x2_1.Args[0]
- if x2_1_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x2_1_0.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_1_0.Op != OpARM64MOVDreg || w != x2_1_0.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstore)
p := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != 2 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != 2 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64SRLconst {
- break
- }
- if x0_1.AuxInt != 8 {
+ if x0_1.Op != OpARM64SRLconst || x0_1.AuxInt != 8 {
break
}
x0_1_0 := x0_1.Args[0]
- if x0_1_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x0_1_0.Args[0] {
+ if x0_1_0.Op != OpARM64MOVDreg || w != x0_1_0.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != 1 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != 1 || x1.Aux != s {
break
}
_ = x1.Args[2]
idx1 := p1.Args[1]
ptr1 := p1.Args[0]
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64SRLconst {
- break
- }
- if x1_1.AuxInt != 16 {
+ if x1_1.Op != OpARM64SRLconst || x1_1.AuxInt != 16 {
break
}
x1_1_0 := x1_1.Args[0]
- if x1_1_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x1_1_0.Args[0] {
+ if x1_1_0.Op != OpARM64MOVDreg || w != x1_1_0.Args[0] {
break
}
x2 := x1.Args[2]
ptr0 := x2.Args[0]
idx0 := x2.Args[1]
x2_2 := x2.Args[2]
- if x2_2.Op != OpARM64SRLconst {
- break
- }
- if x2_2.AuxInt != 24 {
+ if x2_2.Op != OpARM64SRLconst || x2_2.AuxInt != 24 {
break
}
x2_2_0 := x2_2.Args[0]
- if x2_2_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x2_2_0.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_2_0.Op != OpARM64MOVDreg || w != x2_2_0.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != i-1 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != i-1 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64SRLconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpARM64SRLconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != i-2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != i-2 || x1.Aux != s {
break
}
_ = x1.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64SRLconst {
- break
- }
- if x1_1.AuxInt != 16 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpARM64SRLconst || x1_1.AuxInt != 16 || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
- if x2.Op != OpARM64MOVBstore {
- break
- }
- if x2.AuxInt != i-3 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBstore || x2.AuxInt != i-3 || x2.Aux != s {
break
}
mem := x2.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64SRLconst {
- break
- }
- if x2_1.AuxInt != 24 {
- break
- }
- if w != x2_1.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_1.Op != OpARM64SRLconst || x2_1.AuxInt != 24 || w != x2_1.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstore)
p := v.Args[0]
w := v.Args[1]
x0 := v.Args[2]
- if x0.Op != OpARM64MOVBstore {
- break
- }
- if x0.AuxInt != 2 {
- break
- }
- if x0.Aux != s {
+ if x0.Op != OpARM64MOVBstore || x0.AuxInt != 2 || x0.Aux != s {
break
}
_ = x0.Args[2]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64SRLconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpARM64SRLconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
- if x1.Op != OpARM64MOVBstore {
- break
- }
- if x1.AuxInt != 1 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBstore || x1.AuxInt != 1 || x1.Aux != s {
break
}
_ = x1.Args[2]
idx1 := p1.Args[1]
ptr1 := p1.Args[0]
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64SRLconst {
- break
- }
- if x1_1.AuxInt != 16 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpARM64SRLconst || x1_1.AuxInt != 16 || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
ptr0 := x2.Args[0]
idx0 := x2.Args[1]
x2_2 := x2.Args[2]
- if x2_2.Op != OpARM64SRLconst {
- break
- }
- if x2_2.AuxInt != 24 {
- break
- }
- if w != x2_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_2.Op != OpARM64SRLconst || x2_2.AuxInt != 24 || w != x2_2.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpARM64SRLconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpARM64SRLconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
ptr0 := x.Args[0]
idx0 := x.Args[1]
x_2 := x.Args[2]
- if x_2.Op != OpARM64SRLconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if x_2.Op != OpARM64SRLconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpARM64UBFX {
- break
- }
- if x_1.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpARM64UBFX || x_1.AuxInt != armBFAuxInt(8, 8) || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
ptr0 := x.Args[0]
idx0 := x.Args[1]
x_2 := x.Args[2]
- if x_2.Op != OpARM64UBFX {
- break
- }
- if x_2.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if x_2.Op != OpARM64UBFX || x_2.AuxInt != armBFAuxInt(8, 8) || w != x_2.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpARM64SRLconst {
- break
- }
- if x_1.AuxInt != 8 {
+ if x_1.Op != OpARM64SRLconst || x_1.AuxInt != 8 {
break
}
x_1_0 := x_1.Args[0]
- if x_1_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x_1_0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1_0.Op != OpARM64MOVDreg || w != x_1_0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
ptr0 := x.Args[0]
idx0 := x.Args[1]
x_2 := x.Args[2]
- if x_2.Op != OpARM64SRLconst {
- break
- }
- if x_2.AuxInt != 8 {
+ if x_2.Op != OpARM64SRLconst || x_2.AuxInt != 8 {
break
}
x_2_0 := x_2.Args[0]
- if x_2_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x_2_0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if x_2_0.Op != OpARM64MOVDreg || w != x_2_0.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpARM64UBFX {
- break
- }
- if x_1.AuxInt != armBFAuxInt(8, 24) {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpARM64UBFX || x_1.AuxInt != armBFAuxInt(8, 24) || w != x_1.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
ptr0 := x.Args[0]
idx0 := x.Args[1]
x_2 := x.Args[2]
- if x_2.Op != OpARM64UBFX {
- break
- }
- if x_2.AuxInt != armBFAuxInt(8, 24) {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if x_2.Op != OpARM64UBFX || x_2.AuxInt != armBFAuxInt(8, 24) || w != x_2.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
ptr := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpARM64MOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpARM64SRLconst {
- break
- }
- if x_1.AuxInt != 8 {
+ if x_1.Op != OpARM64SRLconst || x_1.AuxInt != 8 {
break
}
x_1_0 := x_1.Args[0]
- if x_1_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x_1_0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_1_0.Op != OpARM64MOVDreg || w != x_1_0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstore)
ptr0 := x.Args[0]
idx0 := x.Args[1]
x_2 := x.Args[2]
- if x_2.Op != OpARM64SRLconst {
- break
- }
- if x_2.AuxInt != 8 {
+ if x_2.Op != OpARM64SRLconst || x_2.AuxInt != 8 {
break
}
x_2_0 := x_2.Args[0]
- if x_2_0.Op != OpARM64MOVDreg {
- break
- }
- if w != x_2_0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if x_2_0.Op != OpARM64MOVDreg || w != x_2_0.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
}
func rewriteValueARM64_OpARM64MOVBstoreidx_0(v *Value) bool {
// match: (MOVBstoreidx ptr (MOVDconst [c]) val mem)
- // cond:
// result: (MOVBstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx (MOVDconst [c]) idx val mem)
- // cond:
// result: (MOVBstore [c] idx val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx ptr idx (MOVDconst [0]) mem)
- // cond:
// result: (MOVBstorezeroidx ptr idx mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVBstorezeroidx)
return true
}
// match: (MOVBstoreidx ptr idx (MOVBreg x) mem)
- // cond:
// result: (MOVBstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx ptr idx (MOVBUreg x) mem)
- // cond:
// result: (MOVBstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx ptr idx (MOVHreg x) mem)
- // cond:
// result: (MOVBstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx ptr idx (MOVHUreg x) mem)
- // cond:
// result: (MOVBstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVBstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVBstoreidx ptr idx (MOVWUreg x) mem)
- // cond:
// result: (MOVBstoreidx ptr idx x mem)
for {
mem := v.Args[3]
_ = v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
v_2 := v.Args[2]
- if v_2.Op != OpARM64SRLconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpARM64SRLconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
break
}
mem := x.Args[3]
- if ptr != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if ptr != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
_ = v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 2 {
- break
- }
- if idx != x0_1.Args[0] {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 2 || idx != x0_1.Args[0] {
break
}
x0_2 := x0.Args[2]
- if x0_2.Op != OpARM64UBFX {
- break
- }
- if x0_2.AuxInt != armBFAuxInt(8, 24) {
- break
- }
- if w != x0_2.Args[0] {
+ if x0_2.Op != OpARM64UBFX || x0_2.AuxInt != armBFAuxInt(8, 24) || w != x0_2.Args[0] {
break
}
x1 := x0.Args[3]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 1 {
- break
- }
- if idx != x1_1.Args[0] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 1 || idx != x1_1.Args[0] {
break
}
x1_2 := x1.Args[2]
- if x1_2.Op != OpARM64UBFX {
- break
- }
- if x1_2.AuxInt != armBFAuxInt(16, 16) {
- break
- }
- if w != x1_2.Args[0] {
+ if x1_2.Op != OpARM64UBFX || x1_2.AuxInt != armBFAuxInt(16, 16) || w != x1_2.Args[0] {
break
}
x2 := x1.Args[3]
break
}
mem := x2.Args[3]
- if ptr != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
+ if ptr != x2.Args[0] || idx != x2.Args[1] {
break
}
x2_2 := x2.Args[2]
- if x2_2.Op != OpARM64UBFX {
- break
- }
- if x2_2.AuxInt != armBFAuxInt(24, 8) {
- break
- }
- if w != x2_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_2.Op != OpARM64UBFX || x2_2.AuxInt != armBFAuxInt(24, 8) || w != x2_2.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstoreidx)
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 1 {
- break
- }
- if idx != x0_1.Args[0] {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 1 || idx != x0_1.Args[0] {
break
}
x0_2 := x0.Args[2]
- if x0_2.Op != OpARM64UBFX {
- break
- }
- if x0_2.AuxInt != armBFAuxInt(8, 24) {
- break
- }
- if w != x0_2.Args[0] {
+ if x0_2.Op != OpARM64UBFX || x0_2.AuxInt != armBFAuxInt(8, 24) || w != x0_2.Args[0] {
break
}
x1 := x0.Args[3]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 2 {
- break
- }
- if idx != x1_1.Args[0] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 2 || idx != x1_1.Args[0] {
break
}
x1_2 := x1.Args[2]
- if x1_2.Op != OpARM64UBFX {
- break
- }
- if x1_2.AuxInt != armBFAuxInt(16, 16) {
- break
- }
- if w != x1_2.Args[0] {
+ if x1_2.Op != OpARM64UBFX || x1_2.AuxInt != armBFAuxInt(16, 16) || w != x1_2.Args[0] {
break
}
x2 := x1.Args[3]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 3 {
- break
- }
- if idx != x2_1.Args[0] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 3 || idx != x2_1.Args[0] {
break
}
x2_2 := x2.Args[2]
- if x2_2.Op != OpARM64UBFX {
- break
- }
- if x2_2.AuxInt != armBFAuxInt(24, 8) {
- break
- }
- if w != x2_2.Args[0] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_2.Op != OpARM64UBFX || x2_2.AuxInt != armBFAuxInt(24, 8) || w != x2_2.Args[0] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpARM64MOVWstoreidx)
_ = v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
break
}
mem := x.Args[3]
- if ptr != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if ptr != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpARM64UBFX {
- break
- }
- if x_2.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpARM64UBFX || x_2.AuxInt != armBFAuxInt(8, 8) || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
break
}
x_1 := x.Args[1]
- if x_1.Op != OpARM64ADDconst {
- break
- }
- if x_1.AuxInt != 1 {
- break
- }
- if idx != x_1.Args[0] {
+ if x_1.Op != OpARM64ADDconst || x_1.AuxInt != 1 || idx != x_1.Args[0] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpARM64UBFX {
- break
- }
- if x_2.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpARM64UBFX || x_2.AuxInt != armBFAuxInt(8, 8) || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstoreidx)
}
func rewriteValueARM64_OpARM64MOVBstorezeroidx_0(v *Value) bool {
// match: (MOVBstorezeroidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVBstorezero [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVBstorezeroidx (MOVDconst [c]) idx mem)
- // cond:
// result: (MOVBstorezero [c] idx mem)
for {
mem := v.Args[2]
_ = v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
break
}
mem := x.Args[2]
- if ptr != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if ptr != x.Args[0] || idx != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVHstorezeroidx)
b := v.Block
config := b.Func.Config
// match: (MOVDload [off] {sym} ptr (FMOVDstore [off] {sym} ptr val _))
- // cond:
// result: (FMOVDfpgp val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64FMOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpARM64FMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[1]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64MOVDloadidx_0(v *Value) bool {
// match: (MOVDloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVDload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVDloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (MOVDload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVDloadidx ptr (SLLconst [3] idx) mem)
- // cond:
// result: (MOVDloadidx8 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVDloadidx (SLLconst [3] idx) ptr mem)
- // cond:
// result: (MOVDloadidx8 ptr idx mem)
for {
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[0]
}
func rewriteValueARM64_OpARM64MOVDloadidx8_0(v *Value) bool {
// match: (MOVDloadidx8 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVDload [c<<3] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVDreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c])
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVDstore [off] {sym} ptr (FMOVDfpgp val) mem)
- // cond:
// result: (FMOVDstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[1]
return true
}
// match: (MOVDstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVDstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64MOVDstorezero)
}
func rewriteValueARM64_OpARM64MOVDstoreidx_0(v *Value) bool {
// match: (MOVDstoreidx ptr (MOVDconst [c]) val mem)
- // cond:
// result: (MOVDstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVDstoreidx (MOVDconst [c]) idx val mem)
- // cond:
// result: (MOVDstore [c] idx val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVDstoreidx ptr (SLLconst [3] idx) val mem)
- // cond:
// result: (MOVDstoreidx8 ptr idx val mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVDstoreidx (SLLconst [3] idx) ptr val mem)
- // cond:
// result: (MOVDstoreidx8 ptr idx val mem)
for {
mem := v.Args[3]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVDstoreidx ptr idx (MOVDconst [0]) mem)
- // cond:
// result: (MOVDstorezeroidx ptr idx mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVDstorezeroidx)
}
func rewriteValueARM64_OpARM64MOVDstoreidx8_0(v *Value) bool {
// match: (MOVDstoreidx8 ptr (MOVDconst [c]) val mem)
- // cond:
// result: (MOVDstore [c<<3] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVDstoreidx8 ptr idx (MOVDconst [0]) mem)
- // cond:
// result: (MOVDstorezeroidx8 ptr idx mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVDstorezeroidx8)
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[1]
s := v.Aux
_ = v.Args[1]
p0 := v.Args[0]
- if p0.Op != OpARM64ADDshiftLL {
- break
- }
- if p0.AuxInt != 3 {
+ if p0.Op != OpARM64ADDshiftLL || p0.AuxInt != 3 {
break
}
idx0 := p0.Args[1]
}
func rewriteValueARM64_OpARM64MOVDstorezeroidx_0(v *Value) bool {
// match: (MOVDstorezeroidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVDstorezero [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVDstorezeroidx (MOVDconst [c]) idx mem)
- // cond:
// result: (MOVDstorezero [c] idx mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVDstorezeroidx ptr (SLLconst [3] idx) mem)
- // cond:
// result: (MOVDstorezeroidx8 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 3 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 3 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVDstorezeroidx (SLLconst [3] idx) ptr mem)
- // cond:
// result: (MOVDstorezeroidx8 ptr idx mem)
for {
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 3 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 3 {
break
}
idx := v_0.Args[0]
}
func rewriteValueARM64_OpARM64MOVDstorezeroidx8_0(v *Value) bool {
// match: (MOVDstorezeroidx8 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVDstorezero [c<<3] ptr mem)
for {
mem := v.Args[2]
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[1]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64MOVHUloadidx_0(v *Value) bool {
// match: (MOVHUloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVHUload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHUloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (MOVHUload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHUloadidx ptr (SLLconst [1] idx) mem)
- // cond:
// result: (MOVHUloadidx2 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVHUloadidx ptr (ADD idx idx) mem)
- // cond:
// result: (MOVHUloadidx2 ptr idx mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHUloadidx (ADD idx idx) ptr mem)
- // cond:
// result: (MOVHUloadidx2 ptr idx mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVHUloadidx2_0(v *Value) bool {
// match: (MOVHUloadidx2 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVHUload [c<<1] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVHUreg_0(v *Value) bool {
// match: (MOVHUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVBUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUloadidx2 _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVBUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg (ANDconst [c] x))
- // cond:
// result: (ANDconst [c&(1<<16-1)] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHUreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint16(c))])
for {
v_0 := v.Args[0]
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[1]
}
func rewriteValueARM64_OpARM64MOVHloadidx_0(v *Value) bool {
// match: (MOVHloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVHload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (MOVHload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHloadidx ptr (SLLconst [1] idx) mem)
- // cond:
// result: (MOVHloadidx2 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVHloadidx ptr (ADD idx idx) mem)
- // cond:
// result: (MOVHloadidx2 ptr idx mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHloadidx (ADD idx idx) ptr mem)
- // cond:
// result: (MOVHloadidx2 ptr idx mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVHloadidx2_0(v *Value) bool {
// match: (MOVHloadidx2 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVHload [c<<1] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVHreg_0(v *Value) bool {
// match: (MOVHreg x:(MOVBload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHloadidx2 _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpARM64MOVHreg_10(v *Value) bool {
// match: (MOVHreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int16(c))])
for {
v_0 := v.Args[0]
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[1]
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVHstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64MOVHstorezero)
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWUreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
s := v.Aux
_ = v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64UBFX {
- break
- }
- if v_1.AuxInt != armBFAuxInt(16, 16) {
+ if v_1.Op != OpARM64UBFX || v_1.AuxInt != armBFAuxInt(16, 16) {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64UBFX {
- break
- }
- if v_1.AuxInt != armBFAuxInt(16, 16) {
+ if v_1.Op != OpARM64UBFX || v_1.AuxInt != armBFAuxInt(16, 16) {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
s := v.Aux
_ = v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64UBFX {
- break
- }
- if v_1.AuxInt != armBFAuxInt(16, 16) {
+ if v_1.Op != OpARM64UBFX || v_1.AuxInt != armBFAuxInt(16, 16) {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 16 {
break
}
v_1_0 := v_1.Args[0]
}
w := v_1_0.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 16 {
break
}
v_1_0 := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
s := v.Aux
_ = v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 16 {
break
}
v_1_0 := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
w0 := x.Args[1]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstore)
ptr1 := x.Args[0]
idx1 := x.Args[1]
w0 := x.Args[2]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
s := v.Aux
_ = v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx0 := v_0.Args[1]
ptr1 := x.Args[0]
idx1 := x.Args[1]
w0 := x.Args[2]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
}
func rewriteValueARM64_OpARM64MOVHstoreidx_0(v *Value) bool {
// match: (MOVHstoreidx ptr (MOVDconst [c]) val mem)
- // cond:
// result: (MOVHstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx (MOVDconst [c]) idx val mem)
- // cond:
// result: (MOVHstore [c] idx val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx ptr (SLLconst [1] idx) val mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx val mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVHstoreidx ptr (ADD idx idx) val mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx (SLLconst [1] idx) ptr val mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx val mem)
for {
mem := v.Args[3]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVHstoreidx (ADD idx idx) ptr val mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx ptr idx (MOVDconst [0]) mem)
- // cond:
// result: (MOVHstorezeroidx ptr idx mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVHstorezeroidx)
return true
}
// match: (MOVHstoreidx ptr idx (MOVHreg x) mem)
- // cond:
// result: (MOVHstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx ptr idx (MOVHUreg x) mem)
- // cond:
// result: (MOVHstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVHstoreidx ptr idx x mem)
for {
mem := v.Args[3]
}
func rewriteValueARM64_OpARM64MOVHstoreidx_10(v *Value) bool {
// match: (MOVHstoreidx ptr idx (MOVWUreg x) mem)
- // cond:
// result: (MOVHstoreidx ptr idx x mem)
for {
mem := v.Args[3]
_ = v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
v_2 := v.Args[2]
- if v_2.Op != OpARM64SRLconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpARM64SRLconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
break
}
mem := x.Args[3]
- if ptr != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if ptr != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVWstoreidx)
}
func rewriteValueARM64_OpARM64MOVHstoreidx2_0(v *Value) bool {
// match: (MOVHstoreidx2 ptr (MOVDconst [c]) val mem)
- // cond:
// result: (MOVHstore [c<<1] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx2 ptr idx (MOVDconst [0]) mem)
- // cond:
// result: (MOVHstorezeroidx2 ptr idx mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVHstorezeroidx2)
return true
}
// match: (MOVHstoreidx2 ptr idx (MOVHreg x) mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx2 ptr idx (MOVHUreg x) mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx2 ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVHstoreidx2 ptr idx (MOVWUreg x) mem)
- // cond:
// result: (MOVHstoreidx2 ptr idx x mem)
for {
mem := v.Args[3]
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[1]
s := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 1 {
break
}
idx0 := v_0.Args[1]
}
func rewriteValueARM64_OpARM64MOVHstorezeroidx_0(v *Value) bool {
// match: (MOVHstorezeroidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVHstorezero [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHstorezeroidx (MOVDconst [c]) idx mem)
- // cond:
// result: (MOVHstorezero [c] idx mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHstorezeroidx ptr (SLLconst [1] idx) mem)
- // cond:
// result: (MOVHstorezeroidx2 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 1 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVHstorezeroidx ptr (ADD idx idx) mem)
- // cond:
// result: (MOVHstorezeroidx2 ptr idx mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVHstorezeroidx (SLLconst [1] idx) ptr mem)
- // cond:
// result: (MOVHstorezeroidx2 ptr idx mem)
for {
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 1 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVHstorezeroidx (ADD idx idx) ptr mem)
- // cond:
// result: (MOVHstorezeroidx2 ptr idx mem)
for {
mem := v.Args[2]
_ = v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
break
}
mem := x.Args[2]
- if ptr != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if ptr != x.Args[0] || idx != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVWstorezeroidx)
}
func rewriteValueARM64_OpARM64MOVHstorezeroidx2_0(v *Value) bool {
// match: (MOVHstorezeroidx2 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVHstorezero [c<<1] ptr mem)
for {
mem := v.Args[2]
b := v.Block
config := b.Func.Config
// match: (MOVWUload [off] {sym} ptr (FMOVSstore [off] {sym} ptr val _))
- // cond:
// result: (FMOVSfpgp val)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64FMOVSstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpARM64FMOVSstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[1]
sym := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym)) {
+ if v_0.Op != OpSB || !(symIsRO(sym)) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64MOVWUloadidx_0(v *Value) bool {
// match: (MOVWUloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVWUload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWUloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (MOVWUload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWUloadidx ptr (SLLconst [2] idx) mem)
- // cond:
// result: (MOVWUloadidx4 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWUloadidx (SLLconst [2] idx) ptr mem)
- // cond:
// result: (MOVWUloadidx4 ptr idx mem)
for {
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[0]
}
func rewriteValueARM64_OpARM64MOVWUloadidx4_0(v *Value) bool {
// match: (MOVWUloadidx4 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVWUload [c<<2] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVWUreg_0(v *Value) bool {
// match: (MOVWUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVHUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVWUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVBUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVHUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVWUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVHUloadidx2 _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVWUloadidx4 _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVBUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVHUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpARM64MOVWUreg_10(v *Value) bool {
// match: (MOVWUreg x:(MOVWUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg (ANDconst [c] x))
- // cond:
// result: (ANDconst [c&(1<<32-1)] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWUreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint32(c))])
for {
v_0 := v.Args[0]
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[1]
}
func rewriteValueARM64_OpARM64MOVWloadidx_0(v *Value) bool {
// match: (MOVWloadidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVWload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx (MOVDconst [c]) ptr mem)
- // cond:
// result: (MOVWload [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWloadidx ptr (SLLconst [2] idx) mem)
- // cond:
// result: (MOVWloadidx4 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWloadidx (SLLconst [2] idx) ptr mem)
- // cond:
// result: (MOVWloadidx4 ptr idx mem)
for {
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[0]
}
func rewriteValueARM64_OpARM64MOVWloadidx4_0(v *Value) bool {
// match: (MOVWloadidx4 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVWload [c<<2] ptr mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpARM64MOVWreg_0(v *Value) bool {
// match: (MOVWreg x:(MOVBload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHUload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWload _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHUloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWloadidx _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpARM64MOVWreg_10(v *Value) bool {
// match: (MOVWreg x:(MOVHloadidx2 _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHUloadidx2 _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWloadidx4 _ _ _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBUreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWreg _))
- // cond:
// result: (MOVDreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int32(c))])
for {
v_0 := v.Args[0]
b := v.Block
config := b.Func.Config
// match: (MOVWstore [off] {sym} ptr (FMOVSfpgp val) mem)
- // cond:
// result: (FMOVSstore [off] {sym} ptr val mem)
for {
off := v.AuxInt
sym := v.Aux
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[1]
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVWstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64MOVWstorezero)
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWUreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
ptr0 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 32 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVWstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVWstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w != x.Args[1] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVDstore)
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 32 {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVDstoreidx)
s := v.Aux
_ = v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 2 {
break
}
idx0 := v_0.Args[1]
ptr0 := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != 32 {
break
}
w := v_1.Args[0]
mem := x.Args[3]
ptr1 := x.Args[0]
idx1 := x.Args[1]
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
+ if w != x.Args[2] || !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
break
}
v.reset(OpARM64MOVDstoreidx)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpARM64MOVWstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpARM64MOVWstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
ptr1 := x.Args[0]
w0 := x.Args[1]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && isSamePtr(ptr0, ptr1) && clobber(x)) {
break
}
v.reset(OpARM64MOVDstore)
ptr1 := x.Args[0]
idx1 := x.Args[1]
w0 := x.Args[2]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && s == nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x)) {
break
}
v.reset(OpARM64MOVDstoreidx)
s := v.Aux
_ = v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 2 {
break
}
idx0 := v_0.Args[1]
ptr1 := x.Args[0]
idx1 := x.Args[1]
w0 := x.Args[2]
- if w0.Op != OpARM64SRLconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
+ if w0.Op != OpARM64SRLconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && s == nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && clobber(x)) {
break
}
v.reset(OpARM64MOVDstoreidx)
}
func rewriteValueARM64_OpARM64MOVWstoreidx_0(v *Value) bool {
// match: (MOVWstoreidx ptr (MOVDconst [c]) val mem)
- // cond:
// result: (MOVWstore [c] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx (MOVDconst [c]) idx val mem)
- // cond:
// result: (MOVWstore [c] idx val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx ptr (SLLconst [2] idx) val mem)
- // cond:
// result: (MOVWstoreidx4 ptr idx val mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWstoreidx (SLLconst [2] idx) ptr val mem)
- // cond:
// result: (MOVWstoreidx4 ptr idx val mem)
for {
mem := v.Args[3]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[0]
return true
}
// match: (MOVWstoreidx ptr idx (MOVDconst [0]) mem)
- // cond:
// result: (MOVWstorezeroidx ptr idx mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVWstorezeroidx)
return true
}
// match: (MOVWstoreidx ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVWstoreidx ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx ptr idx (MOVWUreg x) mem)
- // cond:
// result: (MOVWstoreidx ptr idx x mem)
for {
mem := v.Args[3]
_ = v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 4 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 4 {
break
}
idx := v_1.Args[0]
v_2 := v.Args[2]
- if v_2.Op != OpARM64SRLconst {
- break
- }
- if v_2.AuxInt != 32 {
+ if v_2.Op != OpARM64SRLconst || v_2.AuxInt != 32 {
break
}
w := v_2.Args[0]
break
}
mem := x.Args[3]
- if ptr != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if ptr != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVDstoreidx)
}
func rewriteValueARM64_OpARM64MOVWstoreidx4_0(v *Value) bool {
// match: (MOVWstoreidx4 ptr (MOVDconst [c]) val mem)
- // cond:
// result: (MOVWstore [c<<2] ptr val mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx4 ptr idx (MOVDconst [0]) mem)
- // cond:
// result: (MOVWstorezeroidx4 ptr idx mem)
for {
mem := v.Args[3]
ptr := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVWstorezeroidx4)
return true
}
// match: (MOVWstoreidx4 ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVWstoreidx4 ptr idx x mem)
for {
mem := v.Args[3]
return true
}
// match: (MOVWstoreidx4 ptr idx (MOVWUreg x) mem)
- // cond:
// result: (MOVWstoreidx4 ptr idx x mem)
for {
mem := v.Args[3]
sym := v.Aux
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[1]
s := v.Aux
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64ADDshiftLL {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64ADDshiftLL || v_0.AuxInt != 2 {
break
}
idx0 := v_0.Args[1]
}
func rewriteValueARM64_OpARM64MOVWstorezeroidx_0(v *Value) bool {
// match: (MOVWstorezeroidx ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVWstorezero [c] ptr mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWstorezeroidx (MOVDconst [c]) idx mem)
- // cond:
// result: (MOVWstorezero [c] idx mem)
for {
mem := v.Args[2]
return true
}
// match: (MOVWstorezeroidx ptr (SLLconst [2] idx) mem)
- // cond:
// result: (MOVWstorezeroidx4 ptr idx mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SLLconst {
- break
- }
- if v_1.AuxInt != 2 {
+ if v_1.Op != OpARM64SLLconst || v_1.AuxInt != 2 {
break
}
idx := v_1.Args[0]
return true
}
// match: (MOVWstorezeroidx (SLLconst [2] idx) ptr mem)
- // cond:
// result: (MOVWstorezeroidx4 ptr idx mem)
for {
mem := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 2 {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 2 {
break
}
idx := v_0.Args[0]
_ = v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64ADDconst {
- break
- }
- if v_1.AuxInt != 4 {
+ if v_1.Op != OpARM64ADDconst || v_1.AuxInt != 4 {
break
}
idx := v_1.Args[0]
break
}
mem := x.Args[2]
- if ptr != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if ptr != x.Args[0] || idx != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpARM64MOVDstorezeroidx)
}
func rewriteValueARM64_OpARM64MOVWstorezeroidx4_0(v *Value) bool {
// match: (MOVWstorezeroidx4 ptr (MOVDconst [c]) mem)
- // cond:
// result: (MOVWstorezero [c<<2] ptr mem)
for {
mem := v.Args[2]
func rewriteValueARM64_OpARM64MSUB_0(v *Value) bool {
b := v.Block
// match: (MSUB a x (MOVDconst [-1]))
- // cond:
// result: (ADD a x)
for {
_ = v.Args[2]
a := v.Args[0]
x := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != -1 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != -1 {
break
}
v.reset(OpARM64ADD)
return true
}
// match: (MSUB a _ (MOVDconst [0]))
- // cond:
// result: a
for {
_ = v.Args[2]
a := v.Args[0]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MSUB a x (MOVDconst [1]))
- // cond:
// result: (SUB a x)
for {
_ = v.Args[2]
a := v.Args[0]
x := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 1 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 1 {
break
}
v.reset(OpARM64SUB)
func rewriteValueARM64_OpARM64MSUB_10(v *Value) bool {
b := v.Block
// match: (MSUB a (MOVDconst [-1]) x)
- // cond:
// result: (ADD a x)
for {
x := v.Args[2]
a := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != -1 {
break
}
v.reset(OpARM64ADD)
return true
}
// match: (MSUB a (MOVDconst [0]) _)
- // cond:
// result: a
for {
_ = v.Args[2]
a := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (MSUB a (MOVDconst [1]) x)
- // cond:
// result: (SUB a x)
for {
x := v.Args[2]
a := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
break
}
v.reset(OpARM64SUB)
func rewriteValueARM64_OpARM64MSUB_20(v *Value) bool {
b := v.Block
// match: (MSUB (MOVDconst [c]) x y)
- // cond:
// result: (ADDconst [c] (MNEG <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (MSUB a (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (SUBconst [c*d] a)
for {
_ = v.Args[2]
func rewriteValueARM64_OpARM64MSUBW_20(v *Value) bool {
b := v.Block
// match: (MSUBW (MOVDconst [c]) x y)
- // cond:
// result: (ADDconst [c] (MNEGW <x.Type> x y))
for {
y := v.Args[2]
return true
}
// match: (MSUBW a (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (SUBconst [int64(int32(c)*int32(d))] a)
for {
_ = v.Args[2]
}
func rewriteValueARM64_OpARM64MUL_0(v *Value) bool {
// match: (MUL (NEG x) y)
- // cond:
// result: (MNEG x y)
for {
y := v.Args[1]
return true
}
// match: (MUL y (NEG x))
- // cond:
// result: (MNEG x y)
for {
_ = v.Args[1]
return true
}
// match: (MUL x (MOVDconst [-1]))
- // cond:
// result: (NEG x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != -1 {
break
}
v.reset(OpARM64NEG)
return true
}
// match: (MUL (MOVDconst [-1]) x)
- // cond:
// result: (NEG x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpARM64MOVDconst || v_0.AuxInt != -1 {
break
}
v.reset(OpARM64NEG)
return true
}
// match: (MUL _ (MOVDconst [0]))
- // cond:
// result: (MOVDconst [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpARM64MOVDconst)
return true
}
// match: (MUL (MOVDconst [0]) _)
- // cond:
// result: (MOVDconst [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpARM64MOVDconst || v_0.AuxInt != 0 {
break
}
v.reset(OpARM64MOVDconst)
return true
}
// match: (MUL x (MOVDconst [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (MUL (MOVDconst [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpARM64MOVDconst || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (MUL (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c*d])
for {
_ = v.Args[1]
return true
}
// match: (MUL (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c*d])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64MULW_0(v *Value) bool {
// match: (MULW (NEG x) y)
- // cond:
// result: (MNEGW x y)
for {
y := v.Args[1]
return true
}
// match: (MULW y (NEG x))
- // cond:
// result: (MNEGW x y)
for {
_ = v.Args[1]
return true
}
// match: (MULW (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(int32(c)*int32(d))])
for {
_ = v.Args[1]
return true
}
// match: (MULW (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int32(c)*int32(d))])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64MVN_0(v *Value) bool {
// match: (MVN (MOVDconst [c]))
- // cond:
// result: (MOVDconst [^c])
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64MVNshiftLL_0(v *Value) bool {
// match: (MVNshiftLL (MOVDconst [c]) [d])
- // cond:
// result: (MOVDconst [^int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64MVNshiftRA_0(v *Value) bool {
// match: (MVNshiftRA (MOVDconst [c]) [d])
- // cond:
// result: (MOVDconst [^(c>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64MVNshiftRL_0(v *Value) bool {
// match: (MVNshiftRL (MOVDconst [c]) [d])
- // cond:
// result: (MOVDconst [^int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64NEG_0(v *Value) bool {
// match: (NEG (MUL x y))
- // cond:
// result: (MNEG x y)
for {
v_0 := v.Args[0]
return true
}
// match: (NEG (MULW x y))
- // cond:
// result: (MNEGW x y)
for {
v_0 := v.Args[0]
return true
}
// match: (NEG (MOVDconst [c]))
- // cond:
// result: (MOVDconst [-c])
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64NEGshiftLL_0(v *Value) bool {
// match: (NEGshiftLL (MOVDconst [c]) [d])
- // cond:
// result: (MOVDconst [-int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64NEGshiftRA_0(v *Value) bool {
// match: (NEGshiftRA (MOVDconst [c]) [d])
- // cond:
// result: (MOVDconst [-(c>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64NEGshiftRL_0(v *Value) bool {
// match: (NEGshiftRL (MOVDconst [c]) [d])
- // cond:
// result: (MOVDconst [-int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64NotEqual_0(v *Value) bool {
// match: (NotEqual (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagLT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagLT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagGT_ULT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagGT_UGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (InvertFlags x))
- // cond:
// result: (NotEqual x)
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpARM64OR_0(v *Value) bool {
// match: (OR x (MOVDconst [c]))
- // cond:
// result: (ORconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (OR (MOVDconst [c]) x)
- // cond:
// result: (ORconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (OR x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (OR x (MVN y))
- // cond:
// result: (ORN x y)
for {
_ = v.Args[1]
return true
}
// match: (OR (MVN y) x)
- // cond:
// result: (ORN x y)
for {
x := v.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt64 {
break
}
cc := v_1.Aux
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64SRL {
- break
- }
- if v_1_0.Type != typ.UInt64 {
+ if v_1_0.Op != OpARM64SRL || v_1_0.Type != typ.UInt64 {
break
}
_ = v_1_0.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 64 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 64 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 63 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 64 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 64 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 63 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt64 {
break
}
cc := v_0.Aux
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARM64SRL {
- break
- }
- if v_0_0.Type != typ.UInt64 {
+ if v_0_0.Op != OpARM64SRL || v_0_0.Type != typ.UInt64 {
break
}
_ = v_0_0.Args[1]
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 64 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 64 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 63 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 64 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 64 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 63 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRL {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64SRL || v_0.Type != typ.UInt64 {
break
}
_ = v_0.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt64 {
break
}
cc := v_1.Aux
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 64 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 64 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 63 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 64 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 64 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 63 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt64 {
break
}
cc := v_0.Aux
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 64 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 64 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 63 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 64 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 64 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 63 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRL {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64SRL || v_1.Type != typ.UInt64 {
break
}
_ = v_1.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt32 {
break
}
cc := v_1.Aux
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64SRL {
- break
- }
- if v_1_0.Type != typ.UInt32 {
+ if v_1_0.Op != OpARM64SRL || v_1_0.Type != typ.UInt32 {
break
}
_ = v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1_0_0.Args[0] {
+ if v_1_0_0.Op != OpARM64MOVWUreg || x != v_1_0_0.Args[0] {
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 32 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 32 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 31 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 32 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 32 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 31 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt32 {
break
}
cc := v_0.Aux
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARM64SRL {
- break
- }
- if v_0_0.Type != typ.UInt32 {
+ if v_0_0.Op != OpARM64SRL || v_0_0.Type != typ.UInt32 {
break
}
_ = v_0_0.Args[1]
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 32 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 32 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 31 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 32 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 32 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 31 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRL {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64SRL || v_0.Type != typ.UInt32 {
break
}
_ = v_0.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt32 {
break
}
cc := v_1.Aux
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 32 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 32 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 31 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 32 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 32 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 31 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt32 {
break
}
cc := v_0.Aux
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 32 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 32 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 31 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 32 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 32 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 31 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRL {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64SRL || v_1.Type != typ.UInt32 {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1_0.Args[0] {
+ if v_1_0.Op != OpARM64MOVWUreg || x != v_1_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o0.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := v.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if p != x3.Args[0] || mem != x3.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
mem := x3.Args[1]
p := x3.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
y1 := o1.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o0.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
x0 := y0.Args[0]
- if x0.Op != OpARM64MOVBUload {
- break
- }
- if x0.AuxInt != 3 {
+ if x0.Op != OpARM64MOVBUload || x0.AuxInt != 3 {
break
}
s := x0.Aux
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 2 || x1.Aux != s {
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o0.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 1 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 1 || x2.Aux != s {
break
}
_ = x2.Args[1]
_ = x3.Args[2]
ptr0 := x3.Args[0]
idx0 := x3.Args[1]
- if mem != x3.Args[2] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if mem != x3.Args[2] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
ptr0 := x3.Args[0]
idx0 := x3.Args[1]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
x0 := y0.Args[0]
- if x0.Op != OpARM64MOVBUload {
- break
- }
- if x0.AuxInt != 3 {
+ if x0.Op != OpARM64MOVBUload || x0.AuxInt != 3 {
break
}
s := x0.Aux
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 2 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 2 || x1.Aux != s {
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o0.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 1 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 1 || x2.Aux != s {
break
}
_ = x2.Args[1]
}
idx1 := p1.Args[1]
ptr1 := p1.Args[0]
- if mem != x2.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if mem != x2.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
mem := x0.Args[2]
ptr := x0.Args[0]
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 3 {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 3 {
break
}
idx := x0_1.Args[0]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 2 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 2 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o0.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 1 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 1 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := v.Args[1]
break
}
_ = x3.Args[2]
- if ptr != x3.Args[0] {
- break
- }
- if idx != x3.Args[1] {
- break
- }
- if mem != x3.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if ptr != x3.Args[0] || idx != x3.Args[1] || mem != x3.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
ptr := x3.Args[0]
idx := x3.Args[1]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 3 {
- break
- }
- if idx != x0_1.Args[0] {
- break
- }
- if mem != x0.Args[2] {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 3 || idx != x0_1.Args[0] || mem != x0.Args[2] {
break
}
y1 := o1.Args[1]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 2 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 2 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o0.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 1 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 1 || idx != x2_1.Args[0] || mem != x2.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o4.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o3.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
y7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
y1 := o5.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o4.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o3.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
x0 := y0.Args[0]
- if x0.Op != OpARM64MOVBUload {
- break
- }
- if x0.AuxInt != 7 {
+ if x0.Op != OpARM64MOVBUload || x0.AuxInt != 7 {
break
}
s := x0.Aux
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 6 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 6 || x1.Aux != s {
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o4.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 5 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 5 || x2.Aux != s {
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o3.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 4 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 4 || x3.Aux != s {
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
x4 := y4.Args[0]
- if x4.Op != OpARM64MOVBUload {
- break
- }
- if x4.AuxInt != 3 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBUload || x4.AuxInt != 3 || x4.Aux != s {
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
x5 := y5.Args[0]
- if x5.Op != OpARM64MOVBUload {
- break
- }
- if x5.AuxInt != 2 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpARM64MOVBUload || x5.AuxInt != 2 || x5.Aux != s {
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
x6 := y6.Args[0]
- if x6.Op != OpARM64MOVBUload {
- break
- }
- if x6.AuxInt != 1 {
- break
- }
- if x6.Aux != s {
+ if x6.Op != OpARM64MOVBUload || x6.AuxInt != 1 || x6.Aux != s {
break
}
_ = x6.Args[1]
_ = x7.Args[2]
ptr0 := x7.Args[0]
idx0 := x7.Args[1]
- if mem != x7.Args[2] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if mem != x7.Args[2] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
ptr0 := x7.Args[0]
idx0 := x7.Args[1]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
x0 := y0.Args[0]
- if x0.Op != OpARM64MOVBUload {
- break
- }
- if x0.AuxInt != 7 {
+ if x0.Op != OpARM64MOVBUload || x0.AuxInt != 7 {
break
}
s := x0.Aux
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 6 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 6 || x1.Aux != s {
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o4.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 5 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 5 || x2.Aux != s {
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o3.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 4 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 4 || x3.Aux != s {
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
x4 := y4.Args[0]
- if x4.Op != OpARM64MOVBUload {
- break
- }
- if x4.AuxInt != 3 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBUload || x4.AuxInt != 3 || x4.Aux != s {
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
x5 := y5.Args[0]
- if x5.Op != OpARM64MOVBUload {
- break
- }
- if x5.AuxInt != 2 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpARM64MOVBUload || x5.AuxInt != 2 || x5.Aux != s {
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
x6 := y6.Args[0]
- if x6.Op != OpARM64MOVBUload {
- break
- }
- if x6.AuxInt != 1 {
- break
- }
- if x6.Aux != s {
+ if x6.Op != OpARM64MOVBUload || x6.AuxInt != 1 || x6.Aux != s {
break
}
_ = x6.Args[1]
}
idx1 := p1.Args[1]
ptr1 := p1.Args[0]
- if mem != x6.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if mem != x6.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
mem := x0.Args[2]
ptr := x0.Args[0]
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 7 {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 7 {
break
}
idx := x0_1.Args[0]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 6 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 6 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o4.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 5 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 5 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := o3.Args[1]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 4 {
- break
- }
- if idx != x3_1.Args[0] {
- break
- }
- if mem != x3.Args[2] {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 4 || idx != x3_1.Args[0] || mem != x3.Args[2] {
break
}
y4 := o2.Args[1]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpARM64ADDconst {
- break
- }
- if x4_1.AuxInt != 3 {
- break
- }
- if idx != x4_1.Args[0] {
- break
- }
- if mem != x4.Args[2] {
+ if x4_1.Op != OpARM64ADDconst || x4_1.AuxInt != 3 || idx != x4_1.Args[0] || mem != x4.Args[2] {
break
}
y5 := o1.Args[1]
break
}
x5_1 := x5.Args[1]
- if x5_1.Op != OpARM64ADDconst {
- break
- }
- if x5_1.AuxInt != 2 {
- break
- }
- if idx != x5_1.Args[0] {
- break
- }
- if mem != x5.Args[2] {
+ if x5_1.Op != OpARM64ADDconst || x5_1.AuxInt != 2 || idx != x5_1.Args[0] || mem != x5.Args[2] {
break
}
y6 := o0.Args[1]
break
}
x6_1 := x6.Args[1]
- if x6_1.Op != OpARM64ADDconst {
- break
- }
- if x6_1.AuxInt != 1 {
- break
- }
- if idx != x6_1.Args[0] {
- break
- }
- if mem != x6.Args[2] {
+ if x6_1.Op != OpARM64ADDconst || x6_1.AuxInt != 1 || idx != x6_1.Args[0] || mem != x6.Args[2] {
break
}
y7 := v.Args[1]
break
}
_ = x7.Args[2]
- if ptr != x7.Args[0] {
- break
- }
- if idx != x7.Args[1] {
- break
- }
- if mem != x7.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if ptr != x7.Args[0] || idx != x7.Args[1] || mem != x7.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
ptr := x7.Args[0]
idx := x7.Args[1]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 7 {
- break
- }
- if idx != x0_1.Args[0] {
- break
- }
- if mem != x0.Args[2] {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 7 || idx != x0_1.Args[0] || mem != x0.Args[2] {
break
}
y1 := o5.Args[1]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 6 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 6 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o4.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 5 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 5 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := o3.Args[1]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 4 {
- break
- }
- if idx != x3_1.Args[0] {
- break
- }
- if mem != x3.Args[2] {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 4 || idx != x3_1.Args[0] || mem != x3.Args[2] {
break
}
y4 := o2.Args[1]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpARM64ADDconst {
- break
- }
- if x4_1.AuxInt != 3 {
- break
- }
- if idx != x4_1.Args[0] {
- break
- }
- if mem != x4.Args[2] {
+ if x4_1.Op != OpARM64ADDconst || x4_1.AuxInt != 3 || idx != x4_1.Args[0] || mem != x4.Args[2] {
break
}
y5 := o1.Args[1]
break
}
x5_1 := x5.Args[1]
- if x5_1.Op != OpARM64ADDconst {
- break
- }
- if x5_1.AuxInt != 2 {
- break
- }
- if idx != x5_1.Args[0] {
- break
- }
- if mem != x5.Args[2] {
+ if x5_1.Op != OpARM64ADDconst || x5_1.AuxInt != 2 || idx != x5_1.Args[0] || mem != x5.Args[2] {
break
}
y6 := o0.Args[1]
break
}
x6_1 := x6.Args[1]
- if x6_1.Op != OpARM64ADDconst {
- break
- }
- if x6_1.AuxInt != 1 {
- break
- }
- if idx != x6_1.Args[0] {
- break
- }
- if mem != x6.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if x6_1.Op != OpARM64ADDconst || x6_1.AuxInt != 1 || idx != x6_1.Args[0] || mem != x6.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o0.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := v.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if p != x3.Args[0] || mem != x3.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
mem := x3.Args[1]
p := x3.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
y1 := o1.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o0.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 1 {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 1 {
break
}
s := x1.Aux
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 2 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 2 || x2.Aux != s {
break
}
_ = x2.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 3 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 3 || x3.Aux != s {
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if p != x3.Args[0] || mem != x3.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 3 {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 3 {
break
}
s := x3.Aux
mem := x3.Args[1]
p := x3.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 1 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 1 || x1.Aux != s {
break
}
_ = x1.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 2 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 2 || x2.Aux != s {
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 1 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 1 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o0.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 2 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 2 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := v.Args[1]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 3 {
- break
- }
- if idx != x3_1.Args[0] {
- break
- }
- if mem != x3.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 3 || idx != x3_1.Args[0] || mem != x3.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
mem := x3.Args[2]
ptr := x3.Args[0]
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 3 {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 3 {
break
}
idx := x3_1.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
s0 := o1.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 24 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 24 {
break
}
y0 := s0.Args[0]
break
}
_ = x0.Args[2]
- if ptr != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if ptr != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
y1 := o1.Args[1]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 1 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 1 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o0.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 2 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 2 || idx != x2_1.Args[0] || mem != x2.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(o0) && clobber(o1) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o4.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o3.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
y7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
y1 := o5.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o4.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o3.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 1 {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 1 {
break
}
s := x1.Aux
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 2 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 2 || x2.Aux != s {
break
}
_ = x2.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 3 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 3 || x3.Aux != s {
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
x4 := y4.Args[0]
- if x4.Op != OpARM64MOVBUload {
- break
- }
- if x4.AuxInt != 4 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBUload || x4.AuxInt != 4 || x4.Aux != s {
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
x5 := y5.Args[0]
- if x5.Op != OpARM64MOVBUload {
- break
- }
- if x5.AuxInt != 5 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpARM64MOVBUload || x5.AuxInt != 5 || x5.Aux != s {
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
x6 := y6.Args[0]
- if x6.Op != OpARM64MOVBUload {
- break
- }
- if x6.AuxInt != 6 {
- break
- }
- if x6.Aux != s {
+ if x6.Op != OpARM64MOVBUload || x6.AuxInt != 6 || x6.Aux != s {
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
y7 := v.Args[1]
break
}
x7 := y7.Args[0]
- if x7.Op != OpARM64MOVBUload {
- break
- }
- if x7.AuxInt != 7 {
- break
- }
- if x7.Aux != s {
+ if x7.Op != OpARM64MOVBUload || x7.AuxInt != 7 || x7.Aux != s {
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
break
}
x7 := y7.Args[0]
- if x7.Op != OpARM64MOVBUload {
- break
- }
- if x7.AuxInt != 7 {
+ if x7.Op != OpARM64MOVBUload || x7.AuxInt != 7 {
break
}
s := x7.Aux
mem := x7.Args[1]
p := x7.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 1 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 1 || x1.Aux != s {
break
}
_ = x1.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 2 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 2 || x2.Aux != s {
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o3.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 3 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 3 || x3.Aux != s {
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := o2.Args[1]
break
}
x4 := y4.Args[0]
- if x4.Op != OpARM64MOVBUload {
- break
- }
- if x4.AuxInt != 4 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBUload || x4.AuxInt != 4 || x4.Aux != s {
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
y5 := o1.Args[1]
break
}
x5 := y5.Args[0]
- if x5.Op != OpARM64MOVBUload {
- break
- }
- if x5.AuxInt != 5 {
- break
- }
- if x5.Aux != s {
+ if x5.Op != OpARM64MOVBUload || x5.AuxInt != 5 || x5.Aux != s {
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
y6 := o0.Args[1]
break
}
x6 := y6.Args[0]
- if x6.Op != OpARM64MOVBUload {
- break
- }
- if x6.AuxInt != 6 {
- break
- }
- if x6.Aux != s {
+ if x6.Op != OpARM64MOVBUload || x6.AuxInt != 6 || x6.Aux != s {
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 1 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 1 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o4.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 2 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 2 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := o3.Args[1]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 3 {
- break
- }
- if idx != x3_1.Args[0] {
- break
- }
- if mem != x3.Args[2] {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 3 || idx != x3_1.Args[0] || mem != x3.Args[2] {
break
}
y4 := o2.Args[1]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpARM64ADDconst {
- break
- }
- if x4_1.AuxInt != 4 {
- break
- }
- if idx != x4_1.Args[0] {
- break
- }
- if mem != x4.Args[2] {
+ if x4_1.Op != OpARM64ADDconst || x4_1.AuxInt != 4 || idx != x4_1.Args[0] || mem != x4.Args[2] {
break
}
y5 := o1.Args[1]
break
}
x5_1 := x5.Args[1]
- if x5_1.Op != OpARM64ADDconst {
- break
- }
- if x5_1.AuxInt != 5 {
- break
- }
- if idx != x5_1.Args[0] {
- break
- }
- if mem != x5.Args[2] {
+ if x5_1.Op != OpARM64ADDconst || x5_1.AuxInt != 5 || idx != x5_1.Args[0] || mem != x5.Args[2] {
break
}
y6 := o0.Args[1]
break
}
x6_1 := x6.Args[1]
- if x6_1.Op != OpARM64ADDconst {
- break
- }
- if x6_1.AuxInt != 6 {
- break
- }
- if idx != x6_1.Args[0] {
- break
- }
- if mem != x6.Args[2] {
+ if x6_1.Op != OpARM64ADDconst || x6_1.AuxInt != 6 || idx != x6_1.Args[0] || mem != x6.Args[2] {
break
}
y7 := v.Args[1]
break
}
x7_1 := x7.Args[1]
- if x7_1.Op != OpARM64ADDconst {
- break
- }
- if x7_1.AuxInt != 7 {
- break
- }
- if idx != x7_1.Args[0] {
- break
- }
- if mem != x7.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if x7_1.Op != OpARM64ADDconst || x7_1.AuxInt != 7 || idx != x7_1.Args[0] || mem != x7.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
mem := x7.Args[2]
ptr := x7.Args[0]
x7_1 := x7.Args[1]
- if x7_1.Op != OpARM64ADDconst {
- break
- }
- if x7_1.AuxInt != 7 {
+ if x7_1.Op != OpARM64ADDconst || x7_1.AuxInt != 7 {
break
}
idx := x7_1.Args[0]
o0 := v.Args[1]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 8 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 8 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 16 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 16 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 24 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 24 {
break
}
_ = o2.Args[1]
o3 := o2.Args[0]
- if o3.Op != OpARM64ORshiftLL {
- break
- }
- if o3.AuxInt != 32 {
+ if o3.Op != OpARM64ORshiftLL || o3.AuxInt != 32 {
break
}
_ = o3.Args[1]
o4 := o3.Args[0]
- if o4.Op != OpARM64ORshiftLL {
- break
- }
- if o4.AuxInt != 40 {
+ if o4.Op != OpARM64ORshiftLL || o4.AuxInt != 40 {
break
}
_ = o4.Args[1]
o5 := o4.Args[0]
- if o5.Op != OpARM64ORshiftLL {
- break
- }
- if o5.AuxInt != 48 {
+ if o5.Op != OpARM64ORshiftLL || o5.AuxInt != 48 {
break
}
_ = o5.Args[1]
s0 := o5.Args[0]
- if s0.Op != OpARM64SLLconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpARM64SLLconst || s0.AuxInt != 56 {
break
}
y0 := s0.Args[0]
break
}
_ = x0.Args[2]
- if ptr != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
+ if ptr != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] {
break
}
y1 := o5.Args[1]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 1 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 1 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o4.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 2 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 2 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := o3.Args[1]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 3 {
- break
- }
- if idx != x3_1.Args[0] {
- break
- }
- if mem != x3.Args[2] {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 3 || idx != x3_1.Args[0] || mem != x3.Args[2] {
break
}
y4 := o2.Args[1]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpARM64ADDconst {
- break
- }
- if x4_1.AuxInt != 4 {
- break
- }
- if idx != x4_1.Args[0] {
- break
- }
- if mem != x4.Args[2] {
+ if x4_1.Op != OpARM64ADDconst || x4_1.AuxInt != 4 || idx != x4_1.Args[0] || mem != x4.Args[2] {
break
}
y5 := o1.Args[1]
break
}
x5_1 := x5.Args[1]
- if x5_1.Op != OpARM64ADDconst {
- break
- }
- if x5_1.AuxInt != 5 {
- break
- }
- if idx != x5_1.Args[0] {
- break
- }
- if mem != x5.Args[2] {
+ if x5_1.Op != OpARM64ADDconst || x5_1.AuxInt != 5 || idx != x5_1.Args[0] || mem != x5.Args[2] {
break
}
y6 := o0.Args[1]
break
}
x6_1 := x6.Args[1]
- if x6_1.Op != OpARM64ADDconst {
- break
- }
- if x6_1.AuxInt != 6 {
- break
- }
- if idx != x6_1.Args[0] {
- break
- }
- if mem != x6.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
+ if x6_1.Op != OpARM64ADDconst || x6_1.AuxInt != 6 || idx != x6_1.Args[0] || mem != x6.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && y5.Uses == 1 && y6.Uses == 1 && y7.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(y5) && clobber(y6) && clobber(y7) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
}
func rewriteValueARM64_OpARM64ORN_0(v *Value) bool {
// match: (ORN x (MOVDconst [c]))
- // cond:
// result: (ORconst [^c] x)
for {
_ = v.Args[1]
return true
}
// match: (ORN x x)
- // cond:
// result: (MOVDconst [-1])
for {
x := v.Args[1]
}
func rewriteValueARM64_OpARM64ORNshiftLL_0(v *Value) bool {
// match: (ORNshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (ORconst x [^int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64ORNshiftRA_0(v *Value) bool {
// match: (ORNshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (ORconst x [^(c>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64ORNshiftRL_0(v *Value) bool {
// match: (ORNshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (ORconst x [^int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64ORconst_0(v *Value) bool {
// match: (ORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ORconst [-1] _)
- // cond:
// result: (MOVDconst [-1])
for {
if v.AuxInt != -1 {
return true
}
// match: (ORconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c|d])
for {
c := v.AuxInt
return true
}
// match: (ORconst [c] (ORconst [d] x))
- // cond:
// result: (ORconst [c|d] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (ORshiftLL (MOVDconst [c]) x [d])
- // cond:
// result: (ORconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ORshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (ORconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
return true
}
// match: (ORshiftLL [c] (SRLconst x [64-c]) x)
- // cond:
// result: (RORconst [64-c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRLconst {
- break
- }
- if v_0.AuxInt != 64-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64SRLconst || v_0.AuxInt != 64-c || x != v_0.Args[0] {
break
}
v.reset(OpARM64RORconst)
break
}
bfc := v_0.AuxInt
- if x != v_0.Args[0] {
- break
- }
- if !(c < 32 && t.Size() == 4 && bfc == armBFAuxInt(32-c, c)) {
+ if x != v_0.Args[0] || !(c < 32 && t.Size() == 4 && bfc == armBFAuxInt(32-c, c)) {
break
}
v.reset(OpARM64RORWconst)
return true
}
// match: (ORshiftLL <typ.UInt16> [8] (UBFX <typ.UInt16> [armBFAuxInt(8, 8)] x) x)
- // cond:
// result: (REV16W x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64UBFX {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64UBFX || v_0.Type != typ.UInt16 || v_0.AuxInt != armBFAuxInt(8, 8) || x != v_0.Args[0] {
break
}
v.reset(OpARM64REV16W)
return true
}
// match: (ORshiftLL [c] (SRLconst x [64-c]) x2)
- // cond:
// result: (EXTRconst [64-c] x2 x)
for {
c := v.AuxInt
x2 := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRLconst {
- break
- }
- if v_0.AuxInt != 64-c {
+ if v_0.Op != OpARM64SRLconst || v_0.AuxInt != 64-c {
break
}
x := v_0.Args[0]
bfc := v_0.AuxInt
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRLconst {
- break
- }
- if v_1.AuxInt != sc {
+ if v_1.Op != OpARM64SRLconst || v_1.AuxInt != sc {
break
}
y := v_1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
break
}
b = mergePoint(b, x0, x1)
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 1 {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 1 {
break
}
s := x1.Aux
}
idx1 := p1.Args[1]
ptr1 := p1.Args[0]
- if mem != x1.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
+ if mem != x1.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
break
}
b = mergePoint(b, x0, x1)
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 1 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 1 || idx != x1_1.Args[0] || mem != x1.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
break
}
b = mergePoint(b, x0, x1)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 16 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 16 {
break
}
_ = o0.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := v.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 16 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 16 {
break
}
_ = o0.Args[1]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 2 {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 2 {
break
}
s := x1.Aux
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 3 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 3 || x2.Aux != s {
break
}
_ = x2.Args[1]
p := x2.Args[0]
- if mem != x2.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
+ if mem != x2.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 16 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 16 {
break
}
_ = o0.Args[1]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 2 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 2 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := v.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 3 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 3 || idx != x2_1.Args[0] || mem != x2.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 16 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 16 {
break
}
_ = o0.Args[1]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 2 {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 2 {
break
}
s := x1.Aux
_ = x1.Args[1]
p1 := x1.Args[0]
- if p1.Op != OpARM64ADDshiftLL {
- break
- }
- if p1.AuxInt != 1 {
+ if p1.Op != OpARM64ADDshiftLL || p1.AuxInt != 1 {
break
}
idx1 := p1.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 3 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 3 || x2.Aux != s {
break
}
_ = x2.Args[1]
p := x2.Args[0]
- if mem != x2.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
+ if mem != x2.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y1) && clobber(y2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 48 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 48 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 40 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 40 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 32 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 32 {
break
}
_ = o2.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o1.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o0.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := v.Args[1]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
+ if p != x4.Args[0] || mem != x4.Args[1] || !(i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 48 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 48 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 40 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 40 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 32 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 32 {
break
}
_ = o2.Args[1]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 4 {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 4 {
break
}
s := x1.Aux
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 5 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 5 || x2.Aux != s {
break
}
_ = x2.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 6 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 6 || x3.Aux != s {
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := v.Args[1]
break
}
x4 := y4.Args[0]
- if x4.Op != OpARM64MOVBUload {
- break
- }
- if x4.AuxInt != 7 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBUload || x4.AuxInt != 7 || x4.Aux != s {
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
+ if p != x4.Args[0] || mem != x4.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 48 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 48 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 40 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 40 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 32 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 32 {
break
}
_ = o2.Args[1]
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 4 {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 4 {
break
}
s := x1.Aux
_ = x1.Args[1]
p1 := x1.Args[0]
- if p1.Op != OpARM64ADDshiftLL {
- break
- }
- if p1.AuxInt != 2 {
+ if p1.Op != OpARM64ADDshiftLL || p1.AuxInt != 2 {
break
}
idx1 := p1.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 5 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 5 || x2.Aux != s {
break
}
_ = x2.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 6 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 6 || x3.Aux != s {
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := v.Args[1]
break
}
x4 := y4.Args[0]
- if x4.Op != OpARM64MOVBUload {
- break
- }
- if x4.AuxInt != 7 {
- break
- }
- if x4.Aux != s {
+ if x4.Op != OpARM64MOVBUload || x4.AuxInt != 7 || x4.Aux != s {
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
+ if p != x4.Args[0] || mem != x4.Args[1] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 48 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 48 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 40 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 40 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 32 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 32 {
break
}
_ = o2.Args[1]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 4 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 4 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o1.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 5 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 5 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := o0.Args[1]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 6 {
- break
- }
- if idx != x3_1.Args[0] {
- break
- }
- if mem != x3.Args[2] {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 6 || idx != x3_1.Args[0] || mem != x3.Args[2] {
break
}
y4 := v.Args[1]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpARM64ADDconst {
- break
- }
- if x4_1.AuxInt != 7 {
- break
- }
- if idx != x4_1.Args[0] {
- break
- }
- if mem != x4.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
+ if x4_1.Op != OpARM64ADDconst || x4_1.AuxInt != 7 || idx != x4_1.Args[0] || mem != x4.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
break
}
b = mergePoint(b, x0, x1)
break
}
x0 := y0.Args[0]
- if x0.Op != OpARM64MOVBUload {
- break
- }
- if x0.AuxInt != 1 {
+ if x0.Op != OpARM64MOVBUload || x0.AuxInt != 1 {
break
}
s := x0.Aux
_ = x1.Args[2]
ptr0 := x1.Args[0]
idx0 := x1.Args[1]
- if mem != x1.Args[2] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
+ if mem != x1.Args[2] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[2]
ptr := x0.Args[0]
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 1 {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 1 {
break
}
idx := x0_1.Args[0]
break
}
_ = x1.Args[2]
- if ptr != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
+ if ptr != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(y0) && clobber(y1)) {
break
}
b = mergePoint(b, x0, x1)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 16 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 16 {
break
}
_ = o0.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := v.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 16 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 16 {
break
}
_ = o0.Args[1]
break
}
x0 := y0.Args[0]
- if x0.Op != OpARM64MOVHUload {
- break
- }
- if x0.AuxInt != 2 {
+ if x0.Op != OpARM64MOVHUload || x0.AuxInt != 2 {
break
}
s := x0.Aux
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 1 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 1 || x1.Aux != s {
break
}
_ = x1.Args[1]
_ = x2.Args[2]
ptr0 := x2.Args[0]
idx0 := x2.Args[1]
- if mem != x2.Args[2] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(o0)) {
+ if mem != x2.Args[2] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 16 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 16 {
break
}
_ = o0.Args[1]
mem := x0.Args[2]
ptr := x0.Args[0]
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 2 {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 2 {
break
}
idx := x0_1.Args[0]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 1 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 1 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := v.Args[1]
break
}
_ = x2.Args[2]
- if ptr != x2.Args[0] {
- break
- }
- if idx != x2.Args[1] {
- break
- }
- if mem != x2.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(o0)) {
+ if ptr != x2.Args[0] || idx != x2.Args[1] || mem != x2.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && o0.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 48 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 48 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 40 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 40 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 32 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 32 {
break
}
_ = o2.Args[1]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o1.Args[1]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o0.Args[1]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
y4 := v.Args[1]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
+ if p != x4.Args[0] || mem != x4.Args[1] || !(i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 48 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 48 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 40 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 40 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 32 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 32 {
break
}
_ = o2.Args[1]
break
}
x0 := y0.Args[0]
- if x0.Op != OpARM64MOVWUload {
- break
- }
- if x0.AuxInt != 4 {
+ if x0.Op != OpARM64MOVWUload || x0.AuxInt != 4 {
break
}
s := x0.Aux
break
}
x1 := y1.Args[0]
- if x1.Op != OpARM64MOVBUload {
- break
- }
- if x1.AuxInt != 3 {
- break
- }
- if x1.Aux != s {
+ if x1.Op != OpARM64MOVBUload || x1.AuxInt != 3 || x1.Aux != s {
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
y2 := o1.Args[1]
break
}
x2 := y2.Args[0]
- if x2.Op != OpARM64MOVBUload {
- break
- }
- if x2.AuxInt != 2 {
- break
- }
- if x2.Aux != s {
+ if x2.Op != OpARM64MOVBUload || x2.AuxInt != 2 || x2.Aux != s {
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
y3 := o0.Args[1]
break
}
x3 := y3.Args[0]
- if x3.Op != OpARM64MOVBUload {
- break
- }
- if x3.AuxInt != 1 {
- break
- }
- if x3.Aux != s {
+ if x3.Op != OpARM64MOVBUload || x3.AuxInt != 1 || x3.Aux != s {
break
}
_ = x3.Args[1]
_ = x4.Args[2]
ptr0 := x4.Args[0]
idx0 := x4.Args[1]
- if mem != x4.Args[2] {
- break
- }
- if !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
+ if mem != x4.Args[2] || !(s == nil && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && (isSamePtr(ptr0, ptr1) && isSamePtr(idx0, idx1) || isSamePtr(ptr0, idx1) && isSamePtr(idx0, ptr1)) && isSamePtr(p1, p) && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
}
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpARM64ORshiftLL {
- break
- }
- if o0.AuxInt != 48 {
+ if o0.Op != OpARM64ORshiftLL || o0.AuxInt != 48 {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpARM64ORshiftLL {
- break
- }
- if o1.AuxInt != 40 {
+ if o1.Op != OpARM64ORshiftLL || o1.AuxInt != 40 {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpARM64ORshiftLL {
- break
- }
- if o2.AuxInt != 32 {
+ if o2.Op != OpARM64ORshiftLL || o2.AuxInt != 32 {
break
}
_ = o2.Args[1]
mem := x0.Args[2]
ptr := x0.Args[0]
x0_1 := x0.Args[1]
- if x0_1.Op != OpARM64ADDconst {
- break
- }
- if x0_1.AuxInt != 4 {
+ if x0_1.Op != OpARM64ADDconst || x0_1.AuxInt != 4 {
break
}
idx := x0_1.Args[0]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpARM64ADDconst {
- break
- }
- if x1_1.AuxInt != 3 {
- break
- }
- if idx != x1_1.Args[0] {
- break
- }
- if mem != x1.Args[2] {
+ if x1_1.Op != OpARM64ADDconst || x1_1.AuxInt != 3 || idx != x1_1.Args[0] || mem != x1.Args[2] {
break
}
y2 := o1.Args[1]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpARM64ADDconst {
- break
- }
- if x2_1.AuxInt != 2 {
- break
- }
- if idx != x2_1.Args[0] {
- break
- }
- if mem != x2.Args[2] {
+ if x2_1.Op != OpARM64ADDconst || x2_1.AuxInt != 2 || idx != x2_1.Args[0] || mem != x2.Args[2] {
break
}
y3 := o0.Args[1]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpARM64ADDconst {
- break
- }
- if x3_1.AuxInt != 1 {
- break
- }
- if idx != x3_1.Args[0] {
- break
- }
- if mem != x3.Args[2] {
+ if x3_1.Op != OpARM64ADDconst || x3_1.AuxInt != 1 || idx != x3_1.Args[0] || mem != x3.Args[2] {
break
}
y4 := v.Args[1]
break
}
_ = x4.Args[2]
- if ptr != x4.Args[0] {
- break
- }
- if idx != x4.Args[1] {
- break
- }
- if mem != x4.Args[2] {
- break
- }
- if !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
+ if ptr != x4.Args[0] || idx != x4.Args[1] || mem != x4.Args[2] || !(x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && y0.Uses == 1 && y1.Uses == 1 && y2.Uses == 1 && y3.Uses == 1 && y4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(y0) && clobber(y1) && clobber(y2) && clobber(y3) && clobber(y4) && clobber(o0) && clobber(o1) && clobber(o2)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
func rewriteValueARM64_OpARM64ORshiftRA_0(v *Value) bool {
b := v.Block
// match: (ORshiftRA (MOVDconst [c]) x [d])
- // cond:
// result: (ORconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ORshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (ORconst x [c>>uint64(d)])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
func rewriteValueARM64_OpARM64ORshiftRL_0(v *Value) bool {
b := v.Block
// match: (ORshiftRL (MOVDconst [c]) x [d])
- // cond:
// result: (ORconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (ORshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (ORconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := y.AuxInt
- if x != y.Args[0] {
- break
- }
- if !(c == d) {
+ if x != y.Args[0] || !(c == d) {
break
}
v.reset(OpCopy)
return true
}
// match: (ORshiftRL [c] (SLLconst x [64-c]) x)
- // cond:
// result: (RORconst [ c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 64-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 64-c || x != v_0.Args[0] {
break
}
v.reset(OpARM64RORconst)
c := v.AuxInt
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 32-c {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 32-c {
break
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1.Args[0] {
- break
- }
- if !(c < 32 && t.Size() == 4) {
+ if v_1.Op != OpARM64MOVWUreg || x != v_1.Args[0] || !(c < 32 && t.Size() == 4) {
break
}
v.reset(OpARM64RORWconst)
}
func rewriteValueARM64_OpARM64RORWconst_0(v *Value) bool {
// match: (RORWconst [c] (RORWconst [d] x))
- // cond:
// result: (RORWconst [(c+d)&31] x)
for {
c := v.AuxInt
}
func rewriteValueARM64_OpARM64RORconst_0(v *Value) bool {
// match: (RORconst [c] (RORconst [d] x))
- // cond:
// result: (RORconst [(c+d)&63] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (SBCSflags x y (Select1 <types.TypeFlags> (NEGSflags (NEG <typ.UInt64> (NGCzerocarry <typ.UInt64> bo)))))
- // cond:
// result: (SBCSflags x y bo)
for {
_ = v.Args[2]
x := v.Args[0]
y := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpSelect1 {
- break
- }
- if v_2.Type != types.TypeFlags {
+ if v_2.Op != OpSelect1 || v_2.Type != types.TypeFlags {
break
}
v_2_0 := v_2.Args[0]
break
}
v_2_0_0 := v_2_0.Args[0]
- if v_2_0_0.Op != OpARM64NEG {
- break
- }
- if v_2_0_0.Type != typ.UInt64 {
+ if v_2_0_0.Op != OpARM64NEG || v_2_0_0.Type != typ.UInt64 {
break
}
v_2_0_0_0 := v_2_0_0.Args[0]
- if v_2_0_0_0.Op != OpARM64NGCzerocarry {
- break
- }
- if v_2_0_0_0.Type != typ.UInt64 {
+ if v_2_0_0_0.Op != OpARM64NGCzerocarry || v_2_0_0_0.Type != typ.UInt64 {
break
}
bo := v_2_0_0_0.Args[0]
return true
}
// match: (SBCSflags x y (Select1 <types.TypeFlags> (NEGSflags (MOVDconst [0]))))
- // cond:
// result: (SUBSflags x y)
for {
_ = v.Args[2]
x := v.Args[0]
y := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpSelect1 {
- break
- }
- if v_2.Type != types.TypeFlags {
+ if v_2.Op != OpSelect1 || v_2.Type != types.TypeFlags {
break
}
v_2_0 := v_2.Args[0]
break
}
v_2_0_0 := v_2_0.Args[0]
- if v_2_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_2_0_0.AuxInt != 0 {
+ if v_2_0_0.Op != OpARM64MOVDconst || v_2_0_0.AuxInt != 0 {
break
}
v.reset(OpARM64SUBSflags)
}
func rewriteValueARM64_OpARM64SLL_0(v *Value) bool {
// match: (SLL x (MOVDconst [c]))
- // cond:
// result: (SLLconst x [c&63])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64SLLconst_0(v *Value) bool {
// match: (SLLconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [d<<uint64(c)])
for {
c := v.AuxInt
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRLconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpARM64SRLconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
}
func rewriteValueARM64_OpARM64SRA_0(v *Value) bool {
// match: (SRA x (MOVDconst [c]))
- // cond:
// result: (SRAconst x [c&63])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64SRAconst_0(v *Value) bool {
// match: (SRAconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [d>>uint64(c)])
for {
c := v.AuxInt
}
func rewriteValueARM64_OpARM64SRL_0(v *Value) bool {
// match: (SRL x (MOVDconst [c]))
- // cond:
// result: (SRLconst x [c&63])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64SRLconst_0(v *Value) bool {
// match: (SRLconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(uint64(d)>>uint64(c))])
for {
c := v.AuxInt
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != c {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != c {
break
}
x := v_0.Args[0]
return true
}
// match: (STP [off] {sym} ptr (MOVDconst [0]) (MOVDconst [0]) mem)
- // cond:
// result: (MOVQstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[3]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 0 {
break
}
v_2 := v.Args[2]
- if v_2.Op != OpARM64MOVDconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpARM64MOVDconst || v_2.AuxInt != 0 {
break
}
v.reset(OpARM64MOVQstorezero)
func rewriteValueARM64_OpARM64SUB_0(v *Value) bool {
b := v.Block
// match: (SUB x (MOVDconst [c]))
- // cond:
// result: (SUBconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (SUB x x)
- // cond:
// result: (MOVDconst [0])
for {
x := v.Args[1]
return true
}
// match: (SUB x (SUB y z))
- // cond:
// result: (SUB (ADD <v.Type> x z) y)
for {
_ = v.Args[1]
return true
}
// match: (SUB (SUB x y) z)
- // cond:
// result: (SUB x (ADD <y.Type> y z))
for {
z := v.Args[1]
}
func rewriteValueARM64_OpARM64SUBconst_0(v *Value) bool {
// match: (SUBconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SUBconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [d-c])
for {
c := v.AuxInt
return true
}
// match: (SUBconst [c] (SUBconst [d] x))
- // cond:
// result: (ADDconst [-c-d] x)
for {
c := v.AuxInt
return true
}
// match: (SUBconst [c] (ADDconst [d] x))
- // cond:
// result: (ADDconst [-c+d] x)
for {
c := v.AuxInt
}
func rewriteValueARM64_OpARM64SUBshiftLL_0(v *Value) bool {
// match: (SUBshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (SUBconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64SUBshiftRA_0(v *Value) bool {
// match: (SUBshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (SUBconst x [c>>uint64(d)])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64SUBshiftRL_0(v *Value) bool {
// match: (SUBshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (SUBconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
}
func rewriteValueARM64_OpARM64TST_0(v *Value) bool {
// match: (TST x (MOVDconst [c]))
- // cond:
// result: (TSTconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (TST (MOVDconst [c]) x)
- // cond:
// result: (TSTconst [c] x)
for {
x := v.Args[1]
}
func rewriteValueARM64_OpARM64TSTW_0(v *Value) bool {
// match: (TSTW x (MOVDconst [c]))
- // cond:
// result: (TSTWconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (TSTW (MOVDconst [c]) x)
- // cond:
// result: (TSTWconst [c] x)
for {
x := v.Args[1]
func rewriteValueARM64_OpARM64TSTshiftLL_0(v *Value) bool {
b := v.Block
// match: (TSTshiftLL (MOVDconst [c]) x [d])
- // cond:
// result: (TSTconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TSTshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (TSTconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64TSTshiftRA_0(v *Value) bool {
b := v.Block
// match: (TSTshiftRA (MOVDconst [c]) x [d])
- // cond:
// result: (TSTconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TSTshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (TSTconst x [c>>uint64(d)])
for {
d := v.AuxInt
func rewriteValueARM64_OpARM64TSTshiftRL_0(v *Value) bool {
b := v.Block
// match: (TSTshiftRL (MOVDconst [c]) x [d])
- // cond:
// result: (TSTconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (TSTshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (TSTconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
}
func rewriteValueARM64_OpARM64UDIV_0(v *Value) bool {
// match: (UDIV x (MOVDconst [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (UDIV (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(uint64(c)/uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (UDIVW (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(uint32(c)/uint32(d))])
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (UMOD <typ.UInt64> x y)
- // cond:
// result: (MSUB <typ.UInt64> x y (UDIV <typ.UInt64> x y))
for {
if v.Type != typ.UInt64 {
return true
}
// match: (UMOD _ (MOVDconst [1]))
- // cond:
// result: (MOVDconst [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpARM64MOVDconst || v_1.AuxInt != 1 {
break
}
v.reset(OpARM64MOVDconst)
return true
}
// match: (UMOD (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(uint64(c)%uint64(d))])
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (UMODW <typ.UInt32> x y)
- // cond:
// result: (MSUBW <typ.UInt32> x y (UDIVW <typ.UInt32> x y))
for {
if v.Type != typ.UInt32 {
return true
}
// match: (UMODW (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(uint32(c)%uint32(d))])
for {
_ = v.Args[1]
}
func rewriteValueARM64_OpARM64XOR_0(v *Value) bool {
// match: (XOR x (MOVDconst [c]))
- // cond:
// result: (XORconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (XOR (MOVDconst [c]) x)
- // cond:
// result: (XORconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (XOR x x)
- // cond:
// result: (MOVDconst [0])
for {
x := v.Args[1]
return true
}
// match: (XOR x (MVN y))
- // cond:
// result: (EON x y)
for {
_ = v.Args[1]
return true
}
// match: (XOR (MVN y) x)
- // cond:
// result: (EON x y)
for {
x := v.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt64 {
break
}
cc := v_1.Aux
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64SRL {
- break
- }
- if v_1_0.Type != typ.UInt64 {
+ if v_1_0.Op != OpARM64SRL || v_1_0.Type != typ.UInt64 {
break
}
_ = v_1_0.Args[1]
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 64 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 64 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 63 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 64 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 64 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 63 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt64 {
break
}
cc := v_0.Aux
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARM64SRL {
- break
- }
- if v_0_0.Type != typ.UInt64 {
+ if v_0_0.Op != OpARM64SRL || v_0_0.Type != typ.UInt64 {
break
}
_ = v_0_0.Args[1]
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 64 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 64 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 63 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 64 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 64 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 63 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRL {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64SRL || v_0.Type != typ.UInt64 {
break
}
_ = v_0.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt64 {
break
}
cc := v_1.Aux
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 64 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 64 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 63 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 64 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 64 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 63 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt64 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt64 {
break
}
cc := v_0.Aux
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 64 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 64 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 63 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 64 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 64 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 63 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 63 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRL {
- break
- }
- if v_1.Type != typ.UInt64 {
+ if v_1.Op != OpARM64SRL || v_1.Type != typ.UInt64 {
break
}
_ = v_1.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64ROR)
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt32 {
break
}
cc := v_1.Aux
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64SRL {
- break
- }
- if v_1_0.Type != typ.UInt32 {
+ if v_1_0.Op != OpARM64SRL || v_1_0.Type != typ.UInt32 {
break
}
_ = v_1_0.Args[1]
v_1_0_0 := v_1_0.Args[0]
- if v_1_0_0.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1_0_0.Args[0] {
+ if v_1_0_0.Op != OpARM64MOVWUreg || x != v_1_0_0.Args[0] {
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 32 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 32 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 31 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 32 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 32 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 31 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt32 {
break
}
cc := v_0.Aux
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpARM64SRL {
- break
- }
- if v_0_0.Type != typ.UInt32 {
+ if v_0_0.Op != OpARM64SRL || v_0_0.Type != typ.UInt32 {
break
}
_ = v_0_0.Args[1]
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 32 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 32 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 31 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 32 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 32 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 31 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRL {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64SRL || v_0.Type != typ.UInt32 {
break
}
_ = v_0.Args[1]
}
y := v_0_1.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64CSEL0 {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64CSEL0 || v_1.Type != typ.UInt32 {
break
}
cc := v_1.Aux
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpARM64SUB {
- break
- }
- if v_1_0_1.Type != t {
+ if v_1_0_1.Op != OpARM64SUB || v_1_0_1.Type != t {
break
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_0_1_0.AuxInt != 32 {
+ if v_1_0_1_0.Op != OpARM64MOVDconst || v_1_0_1_0.AuxInt != 32 {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_0_1_1.Type != t {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_0_1_1.Args[0] {
+ if v_1_0_1_1.Op != OpARM64ANDconst || v_1_0_1_1.Type != t || v_1_0_1_1.AuxInt != 31 || y != v_1_0_1_1.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64CMPconst {
- break
- }
- if v_1_1.AuxInt != 64 {
+ if v_1_1.Op != OpARM64CMPconst || v_1_1.AuxInt != 64 {
break
}
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpARM64SUB {
- break
- }
- if v_1_1_0.Type != t {
+ if v_1_1_0.Op != OpARM64SUB || v_1_1_0.Type != t {
break
}
_ = v_1_1_0.Args[1]
v_1_1_0_0 := v_1_1_0.Args[0]
- if v_1_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_1_1_0_0.AuxInt != 32 {
+ if v_1_1_0_0.Op != OpARM64MOVDconst || v_1_1_0_0.AuxInt != 32 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
- if v_1_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1_0_1.Type != t {
- break
- }
- if v_1_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_0_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1_0_1.Op != OpARM64ANDconst || v_1_1_0_1.Type != t || v_1_1_0_1.AuxInt != 31 || y != v_1_1_0_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64CSEL0 {
- break
- }
- if v_0.Type != typ.UInt32 {
+ if v_0.Op != OpARM64CSEL0 || v_0.Type != typ.UInt32 {
break
}
cc := v_0.Aux
t := v_0_0_1.Type
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_0_1_0.AuxInt != 32 {
+ if v_0_0_1_0.Op != OpARM64MOVDconst || v_0_0_1_0.AuxInt != 32 {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_0_1_1.Type != t {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpARM64ANDconst || v_0_0_1_1.Type != t || v_0_0_1_1.AuxInt != 31 {
break
}
y := v_0_0_1_1.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpARM64CMPconst {
- break
- }
- if v_0_1.AuxInt != 64 {
+ if v_0_1.Op != OpARM64CMPconst || v_0_1.AuxInt != 64 {
break
}
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpARM64SUB {
- break
- }
- if v_0_1_0.Type != t {
+ if v_0_1_0.Op != OpARM64SUB || v_0_1_0.Type != t {
break
}
_ = v_0_1_0.Args[1]
v_0_1_0_0 := v_0_1_0.Args[0]
- if v_0_1_0_0.Op != OpARM64MOVDconst {
- break
- }
- if v_0_1_0_0.AuxInt != 32 {
+ if v_0_1_0_0.Op != OpARM64MOVDconst || v_0_1_0_0.AuxInt != 32 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
- if v_0_1_0_1.Op != OpARM64ANDconst {
- break
- }
- if v_0_1_0_1.Type != t {
- break
- }
- if v_0_1_0_1.AuxInt != 31 {
- break
- }
- if y != v_0_1_0_1.Args[0] {
+ if v_0_1_0_1.Op != OpARM64ANDconst || v_0_1_0_1.Type != t || v_0_1_0_1.AuxInt != 31 || y != v_0_1_0_1.Args[0] {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpARM64SRL {
- break
- }
- if v_1.Type != typ.UInt32 {
+ if v_1.Op != OpARM64SRL || v_1.Type != typ.UInt32 {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1_0.Args[0] {
+ if v_1_0.Op != OpARM64MOVWUreg || x != v_1_0.Args[0] {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpARM64ANDconst {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
- break
- }
- if !(cc.(Op) == OpARM64LessThanU) {
+ if v_1_1.Op != OpARM64ANDconst || v_1_1.Type != t || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] || !(cc.(Op) == OpARM64LessThanU) {
break
}
v.reset(OpARM64RORW)
}
func rewriteValueARM64_OpARM64XORconst_0(v *Value) bool {
// match: (XORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (XORconst [-1] x)
- // cond:
// result: (MVN x)
for {
if v.AuxInt != -1 {
return true
}
// match: (XORconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c^d])
for {
c := v.AuxInt
return true
}
// match: (XORconst [c] (XORconst [d] x))
- // cond:
// result: (XORconst [c^d] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (XORshiftLL (MOVDconst [c]) x [d])
- // cond:
// result: (XORconst [c] (SLLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (XORshiftLL x (MOVDconst [c]) [d])
- // cond:
// result: (XORconst x [int64(uint64(c)<<uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
return true
}
// match: (XORshiftLL [c] (SRLconst x [64-c]) x)
- // cond:
// result: (RORconst [64-c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRLconst {
- break
- }
- if v_0.AuxInt != 64-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64SRLconst || v_0.AuxInt != 64-c || x != v_0.Args[0] {
break
}
v.reset(OpARM64RORconst)
break
}
bfc := v_0.AuxInt
- if x != v_0.Args[0] {
- break
- }
- if !(c < 32 && t.Size() == 4 && bfc == armBFAuxInt(32-c, c)) {
+ if x != v_0.Args[0] || !(c < 32 && t.Size() == 4 && bfc == armBFAuxInt(32-c, c)) {
break
}
v.reset(OpARM64RORWconst)
return true
}
// match: (XORshiftLL <typ.UInt16> [8] (UBFX <typ.UInt16> [armBFAuxInt(8, 8)] x) x)
- // cond:
// result: (REV16W x)
for {
- if v.Type != typ.UInt16 {
- break
- }
- if v.AuxInt != 8 {
+ if v.Type != typ.UInt16 || v.AuxInt != 8 {
break
}
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64UBFX {
- break
- }
- if v_0.Type != typ.UInt16 {
- break
- }
- if v_0.AuxInt != armBFAuxInt(8, 8) {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64UBFX || v_0.Type != typ.UInt16 || v_0.AuxInt != armBFAuxInt(8, 8) || x != v_0.Args[0] {
break
}
v.reset(OpARM64REV16W)
return true
}
// match: (XORshiftLL [c] (SRLconst x [64-c]) x2)
- // cond:
// result: (EXTRconst [64-c] x2 x)
for {
c := v.AuxInt
x2 := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SRLconst {
- break
- }
- if v_0.AuxInt != 64-c {
+ if v_0.Op != OpARM64SRLconst || v_0.AuxInt != 64-c {
break
}
x := v_0.Args[0]
func rewriteValueARM64_OpARM64XORshiftRA_0(v *Value) bool {
b := v.Block
// match: (XORshiftRA (MOVDconst [c]) x [d])
- // cond:
// result: (XORconst [c] (SRAconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (XORshiftRA x (MOVDconst [c]) [d])
- // cond:
// result: (XORconst x [c>>uint64(d)])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
func rewriteValueARM64_OpARM64XORshiftRL_0(v *Value) bool {
b := v.Block
// match: (XORshiftRL (MOVDconst [c]) x [d])
- // cond:
// result: (XORconst [c] (SRLconst <x.Type> x [d]))
for {
d := v.AuxInt
return true
}
// match: (XORshiftRL x (MOVDconst [c]) [d])
- // cond:
// result: (XORconst x [int64(uint64(c)>>uint64(d))])
for {
d := v.AuxInt
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(c == d) {
+ if x != v_1.Args[0] || !(c == d) {
break
}
v.reset(OpARM64MOVDconst)
return true
}
// match: (XORshiftRL [c] (SLLconst x [64-c]) x)
- // cond:
// result: (RORconst [ c] x)
for {
c := v.AuxInt
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 64-c {
- break
- }
- if x != v_0.Args[0] {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 64-c || x != v_0.Args[0] {
break
}
v.reset(OpARM64RORconst)
c := v.AuxInt
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpARM64SLLconst {
- break
- }
- if v_0.AuxInt != 32-c {
+ if v_0.Op != OpARM64SLLconst || v_0.AuxInt != 32-c {
break
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpARM64MOVWUreg {
- break
- }
- if x != v_1.Args[0] {
- break
- }
- if !(c < 32 && t.Size() == 4) {
+ if v_1.Op != OpARM64MOVWUreg || x != v_1.Args[0] || !(c < 32 && t.Size() == 4) {
break
}
v.reset(OpARM64RORWconst)
}
func rewriteValueARM64_OpAbs_0(v *Value) bool {
// match: (Abs x)
- // cond:
// result: (FABSD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (FADDS x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAdd64_0(v *Value) bool {
// match: (Add64 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (FADDD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (MOVDaddr {sym} base)
for {
sym := v.Aux
}
func rewriteValueARM64_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAnd64_0(v *Value) bool {
// match: (And64 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpAtomicAdd32_0(v *Value) bool {
// match: (AtomicAdd32 ptr val mem)
- // cond:
// result: (LoweredAtomicAdd32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicAdd32Variant_0(v *Value) bool {
// match: (AtomicAdd32Variant ptr val mem)
- // cond:
// result: (LoweredAtomicAdd32Variant ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicAdd64_0(v *Value) bool {
// match: (AtomicAdd64 ptr val mem)
- // cond:
// result: (LoweredAtomicAdd64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicAdd64Variant_0(v *Value) bool {
// match: (AtomicAdd64Variant ptr val mem)
- // cond:
// result: (LoweredAtomicAdd64Variant ptr val mem)
for {
mem := v.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicAnd8 ptr val mem)
- // cond:
// result: (Select1 (LoweredAtomicAnd8 ptr val mem))
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicCompareAndSwap32_0(v *Value) bool {
// match: (AtomicCompareAndSwap32 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas32 ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueARM64_OpAtomicCompareAndSwap64_0(v *Value) bool {
// match: (AtomicCompareAndSwap64 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas64 ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueARM64_OpAtomicExchange32_0(v *Value) bool {
// match: (AtomicExchange32 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicExchange64_0(v *Value) bool {
// match: (AtomicExchange64 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicLoad32_0(v *Value) bool {
// match: (AtomicLoad32 ptr mem)
- // cond:
// result: (LDARW ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueARM64_OpAtomicLoad64_0(v *Value) bool {
// match: (AtomicLoad64 ptr mem)
- // cond:
// result: (LDAR ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueARM64_OpAtomicLoad8_0(v *Value) bool {
// match: (AtomicLoad8 ptr mem)
- // cond:
// result: (LDARB ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueARM64_OpAtomicLoadPtr_0(v *Value) bool {
// match: (AtomicLoadPtr ptr mem)
- // cond:
// result: (LDAR ptr mem)
for {
mem := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicOr8 ptr val mem)
- // cond:
// result: (Select1 (LoweredAtomicOr8 ptr val mem))
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicStore32_0(v *Value) bool {
// match: (AtomicStore32 ptr val mem)
- // cond:
// result: (STLRW ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicStore64_0(v *Value) bool {
// match: (AtomicStore64 ptr val mem)
- // cond:
// result: (STLR ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueARM64_OpAtomicStorePtrNoWB_0(v *Value) bool {
// match: (AtomicStorePtrNoWB ptr val mem)
- // cond:
// result: (STLR ptr val mem)
for {
mem := v.Args[2]
func rewriteValueARM64_OpAvg64u_0(v *Value) bool {
b := v.Block
// match: (Avg64u <t> x y)
- // cond:
// result: (ADD (SRLconst <t> (SUB <t> x y) [1]) y)
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen32 x)
- // cond:
// result: (SUB (MOVDconst [32]) (CLZW <typ.Int> x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen64 x)
- // cond:
// result: (SUB (MOVDconst [64]) (CLZ <typ.Int> x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitRev16 x)
- // cond:
// result: (SRLconst [48] (RBIT <typ.UInt64> x))
for {
x := v.Args[0]
}
func rewriteValueARM64_OpBitRev32_0(v *Value) bool {
// match: (BitRev32 x)
- // cond:
// result: (RBITW x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpBitRev64_0(v *Value) bool {
// match: (BitRev64 x)
- // cond:
// result: (RBIT x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitRev8 x)
- // cond:
// result: (SRLconst [56] (RBIT <typ.UInt64> x))
for {
x := v.Args[0]
}
func rewriteValueARM64_OpBswap32_0(v *Value) bool {
// match: (Bswap32 x)
- // cond:
// result: (REVW x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpBswap64_0(v *Value) bool {
// match: (Bswap64 x)
- // cond:
// result: (REV x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCeil_0(v *Value) bool {
// match: (Ceil x)
- // cond:
// result: (FRINTPD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
}
func rewriteValueARM64_OpCom16_0(v *Value) bool {
// match: (Com16 x)
- // cond:
// result: (MVN x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCom32_0(v *Value) bool {
// match: (Com32 x)
- // cond:
// result: (MVN x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCom64_0(v *Value) bool {
// match: (Com64 x)
- // cond:
// result: (MVN x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCom8_0(v *Value) bool {
// match: (Com8 x)
- // cond:
// result: (MVN x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM64_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM64_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (FMOVSconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM64_OpConst64_0(v *Value) bool {
// match: (Const64 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM64_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (FMOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM64_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueARM64_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVDconst [b])
for {
b := v.AuxInt
}
func rewriteValueARM64_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (MOVDconst [0])
for {
v.reset(OpARM64MOVDconst)
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz16 <t> x)
- // cond:
// result: (CLZW <t> (RBITW <typ.UInt32> (ORconst <typ.UInt32> [0x10000] x)))
for {
t := v.Type
}
func rewriteValueARM64_OpCtz16NonZero_0(v *Value) bool {
// match: (Ctz16NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
func rewriteValueARM64_OpCtz32_0(v *Value) bool {
b := v.Block
// match: (Ctz32 <t> x)
- // cond:
// result: (CLZW (RBITW <t> x))
for {
t := v.Type
}
func rewriteValueARM64_OpCtz32NonZero_0(v *Value) bool {
// match: (Ctz32NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
func rewriteValueARM64_OpCtz64_0(v *Value) bool {
b := v.Block
// match: (Ctz64 <t> x)
- // cond:
// result: (CLZ (RBIT <t> x))
for {
t := v.Type
}
func rewriteValueARM64_OpCtz64NonZero_0(v *Value) bool {
// match: (Ctz64NonZero x)
- // cond:
// result: (Ctz64 x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz8 <t> x)
- // cond:
// result: (CLZW <t> (RBITW <typ.UInt32> (ORconst <typ.UInt32> [0x100] x)))
for {
t := v.Type
}
func rewriteValueARM64_OpCtz8NonZero_0(v *Value) bool {
// match: (Ctz8NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (FCVTZSSW x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32Fto32U_0(v *Value) bool {
// match: (Cvt32Fto32U x)
- // cond:
// result: (FCVTZUSW x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32Fto64_0(v *Value) bool {
// match: (Cvt32Fto64 x)
- // cond:
// result: (FCVTZSS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (FCVTSD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32Fto64U_0(v *Value) bool {
// match: (Cvt32Fto64U x)
- // cond:
// result: (FCVTZUS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32Uto32F_0(v *Value) bool {
// match: (Cvt32Uto32F x)
- // cond:
// result: (UCVTFWS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32Uto64F_0(v *Value) bool {
// match: (Cvt32Uto64F x)
- // cond:
// result: (UCVTFWD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F x)
- // cond:
// result: (SCVTFWS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F x)
- // cond:
// result: (SCVTFWD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (FCVTZSDW x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (FCVTDS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64Fto32U_0(v *Value) bool {
// match: (Cvt64Fto32U x)
- // cond:
// result: (FCVTZUDW x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64Fto64_0(v *Value) bool {
// match: (Cvt64Fto64 x)
- // cond:
// result: (FCVTZSD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64Fto64U_0(v *Value) bool {
// match: (Cvt64Fto64U x)
- // cond:
// result: (FCVTZUD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64Uto32F_0(v *Value) bool {
// match: (Cvt64Uto32F x)
- // cond:
// result: (UCVTFS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64Uto64F_0(v *Value) bool {
// match: (Cvt64Uto64F x)
- // cond:
// result: (UCVTFD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64to32F_0(v *Value) bool {
// match: (Cvt64to32F x)
- // cond:
// result: (SCVTFS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpCvt64to64F_0(v *Value) bool {
// match: (Cvt64to64F x)
- // cond:
// result: (SCVTFD x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 x y)
- // cond:
// result: (DIVW (SignExt16to32 x) (SignExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (UDIVW (ZeroExt16to32 x) (ZeroExt16to32 y))
for {
y := v.Args[1]
}
func rewriteValueARM64_OpDiv32_0(v *Value) bool {
// match: (Div32 x y)
- // cond:
// result: (DIVW x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (FDIVS x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpDiv32u_0(v *Value) bool {
// match: (Div32u x y)
- // cond:
// result: (UDIVW x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpDiv64_0(v *Value) bool {
// match: (Div64 x y)
- // cond:
// result: (DIV x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (FDIVD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpDiv64u_0(v *Value) bool {
// match: (Div64u x y)
- // cond:
// result: (UDIV x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (DIVW (SignExt8to32 x) (SignExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (UDIVW (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq16 x y)
- // cond:
// result: (Equal (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM64_OpEq32_0(v *Value) bool {
b := v.Block
// match: (Eq32 x y)
- // cond:
// result: (Equal (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpEq32F_0(v *Value) bool {
b := v.Block
// match: (Eq32F x y)
- // cond:
// result: (Equal (FCMPS x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpEq64_0(v *Value) bool {
b := v.Block
// match: (Eq64 x y)
- // cond:
// result: (Equal (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpEq64F_0(v *Value) bool {
b := v.Block
// match: (Eq64F x y)
- // cond:
// result: (Equal (FCMPD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq8 x y)
- // cond:
// result: (Equal (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqB x y)
- // cond:
// result: (XOR (MOVDconst [1]) (XOR <typ.Bool> x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpEqPtr_0(v *Value) bool {
b := v.Block
// match: (EqPtr x y)
- // cond:
// result: (Equal (CMP x y))
for {
y := v.Args[1]
}
func rewriteValueARM64_OpFloor_0(v *Value) bool {
// match: (Floor x)
- // cond:
// result: (FRINTMD x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16 x y)
- // cond:
// result: (GreaterEqual (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16U x y)
- // cond:
// result: (GreaterEqualU (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM64_OpGeq32_0(v *Value) bool {
b := v.Block
// match: (Geq32 x y)
- // cond:
// result: (GreaterEqual (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGeq32F_0(v *Value) bool {
b := v.Block
// match: (Geq32F x y)
- // cond:
// result: (GreaterEqualF (FCMPS x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGeq32U_0(v *Value) bool {
b := v.Block
// match: (Geq32U x y)
- // cond:
// result: (GreaterEqualU (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGeq64_0(v *Value) bool {
b := v.Block
// match: (Geq64 x y)
- // cond:
// result: (GreaterEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGeq64F_0(v *Value) bool {
b := v.Block
// match: (Geq64F x y)
- // cond:
// result: (GreaterEqualF (FCMPD x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGeq64U_0(v *Value) bool {
b := v.Block
// match: (Geq64U x y)
- // cond:
// result: (GreaterEqualU (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8 x y)
- // cond:
// result: (GreaterEqual (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8U x y)
- // cond:
// result: (GreaterEqualU (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValueARM64_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpARM64LoweredGetCallerPC)
}
func rewriteValueARM64_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpARM64LoweredGetCallerSP)
}
func rewriteValueARM64_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpARM64LoweredGetClosurePtr)
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16 x y)
- // cond:
// result: (GreaterThan (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16U x y)
- // cond:
// result: (GreaterThanU (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM64_OpGreater32_0(v *Value) bool {
b := v.Block
// match: (Greater32 x y)
- // cond:
// result: (GreaterThan (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGreater32F_0(v *Value) bool {
b := v.Block
// match: (Greater32F x y)
- // cond:
// result: (GreaterThanF (FCMPS x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGreater32U_0(v *Value) bool {
b := v.Block
// match: (Greater32U x y)
- // cond:
// result: (GreaterThanU (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGreater64_0(v *Value) bool {
b := v.Block
// match: (Greater64 x y)
- // cond:
// result: (GreaterThan (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGreater64F_0(v *Value) bool {
b := v.Block
// match: (Greater64F x y)
- // cond:
// result: (GreaterThanF (FCMPD x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpGreater64U_0(v *Value) bool {
b := v.Block
// match: (Greater64U x y)
- // cond:
// result: (GreaterThanU (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8 x y)
- // cond:
// result: (GreaterThan (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8U x y)
- // cond:
// result: (GreaterThanU (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32 x y)
- // cond:
// result: (SRAconst (MULL <typ.Int64> x y) [32])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32u x y)
- // cond:
// result: (SRAconst (UMULL <typ.UInt64> x y) [32])
for {
y := v.Args[1]
}
func rewriteValueARM64_OpHmul64_0(v *Value) bool {
// match: (Hmul64 x y)
- // cond:
// result: (MULH x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpHmul64u_0(v *Value) bool {
// match: (Hmul64u x y)
- // cond:
// result: (UMULH x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
func rewriteValueARM64_OpIsInBounds_0(v *Value) bool {
b := v.Block
// match: (IsInBounds idx len)
- // cond:
// result: (LessThanU (CMP idx len))
for {
len := v.Args[1]
func rewriteValueARM64_OpIsNonNil_0(v *Value) bool {
b := v.Block
// match: (IsNonNil ptr)
- // cond:
// result: (NotEqual (CMPconst [0] ptr))
for {
ptr := v.Args[0]
func rewriteValueARM64_OpIsSliceInBounds_0(v *Value) bool {
b := v.Block
// match: (IsSliceInBounds idx len)
- // cond:
// result: (LessEqualU (CMP idx len))
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16 x y)
- // cond:
// result: (LessEqual (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16U x y)
- // cond:
// result: (LessEqualU (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM64_OpLeq32_0(v *Value) bool {
b := v.Block
// match: (Leq32 x y)
- // cond:
// result: (LessEqual (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLeq32F_0(v *Value) bool {
b := v.Block
// match: (Leq32F x y)
- // cond:
// result: (LessEqualF (FCMPS x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLeq32U_0(v *Value) bool {
b := v.Block
// match: (Leq32U x y)
- // cond:
// result: (LessEqualU (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLeq64_0(v *Value) bool {
b := v.Block
// match: (Leq64 x y)
- // cond:
// result: (LessEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLeq64F_0(v *Value) bool {
b := v.Block
// match: (Leq64F x y)
- // cond:
// result: (LessEqualF (FCMPD x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLeq64U_0(v *Value) bool {
b := v.Block
// match: (Leq64U x y)
- // cond:
// result: (LessEqualU (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8 x y)
- // cond:
// result: (LessEqual (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8U x y)
- // cond:
// result: (LessEqualU (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16 x y)
- // cond:
// result: (LessThan (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16U x y)
- // cond:
// result: (LessThanU (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM64_OpLess32_0(v *Value) bool {
b := v.Block
// match: (Less32 x y)
- // cond:
// result: (LessThan (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLess32F_0(v *Value) bool {
b := v.Block
// match: (Less32F x y)
- // cond:
// result: (LessThanF (FCMPS x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLess32U_0(v *Value) bool {
b := v.Block
// match: (Less32U x y)
- // cond:
// result: (LessThanU (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLess64_0(v *Value) bool {
b := v.Block
// match: (Less64 x y)
- // cond:
// result: (LessThan (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLess64F_0(v *Value) bool {
b := v.Block
// match: (Less64F x y)
- // cond:
// result: (LessThanF (FCMPD x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpLess64U_0(v *Value) bool {
b := v.Block
// match: (Less64U x y)
- // cond:
// result: (LessThanU (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8 x y)
- // cond:
// result: (LessThan (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8U x y)
- // cond:
// result: (LessThanU (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValueARM64_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (MOVDaddr {sym} base)
for {
sym := v.Aux
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
func rewriteValueARM64_OpLsh16x64_0(v *Value) bool {
b := v.Block
// match: (Lsh16x64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
func rewriteValueARM64_OpLsh32x64_0(v *Value) bool {
b := v.Block
// match: (Lsh32x64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
func rewriteValueARM64_OpLsh64x64_0(v *Value) bool {
b := v.Block
// match: (Lsh64x64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
func rewriteValueARM64_OpLsh8x64_0(v *Value) bool {
b := v.Block
// match: (Lsh8x64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SLL <t> x (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 x y)
- // cond:
// result: (MODW (SignExt16to32 x) (SignExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (UMODW (ZeroExt16to32 x) (ZeroExt16to32 y))
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMod32_0(v *Value) bool {
// match: (Mod32 x y)
- // cond:
// result: (MODW x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMod32u_0(v *Value) bool {
// match: (Mod32u x y)
- // cond:
// result: (UMODW x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMod64_0(v *Value) bool {
// match: (Mod64 x y)
- // cond:
// result: (MOD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMod64u_0(v *Value) bool {
// match: (Mod64u x y)
- // cond:
// result: (UMOD x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (MODW (SignExt8to32 x) (SignExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (UMODW (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBUload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVHstore dst (MOVHUload src mem) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVWstore dst (MOVWUload src mem) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [8] dst src mem)
- // cond:
// result: (MOVDstore dst (MOVDload src mem) mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBUload [2] src mem) (MOVHstore dst (MOVHUload src mem) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Move [5] dst src mem)
- // cond:
// result: (MOVBstore [4] dst (MOVBUload [4] src mem) (MOVWstore dst (MOVWUload src mem) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Move [6] dst src mem)
- // cond:
// result: (MOVHstore [4] dst (MOVHUload [4] src mem) (MOVWstore dst (MOVWUload src mem) mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Move [7] dst src mem)
- // cond:
// result: (MOVBstore [6] dst (MOVBUload [6] src mem) (MOVHstore [4] dst (MOVHUload [4] src mem) (MOVWstore dst (MOVWUload src mem) mem)))
for {
if v.AuxInt != 7 {
return true
}
// match: (Move [12] dst src mem)
- // cond:
// result: (MOVWstore [8] dst (MOVWUload [8] src mem) (MOVDstore dst (MOVDload src mem) mem))
for {
if v.AuxInt != 12 {
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Move [16] dst src mem)
- // cond:
// result: (MOVDstore [8] dst (MOVDload [8] src mem) (MOVDstore dst (MOVDload src mem) mem))
for {
if v.AuxInt != 16 {
return true
}
// match: (Move [24] dst src mem)
- // cond:
// result: (MOVDstore [16] dst (MOVDload [16] src mem) (MOVDstore [8] dst (MOVDload [8] src mem) (MOVDstore dst (MOVDload src mem) mem)))
for {
if v.AuxInt != 24 {
}
func rewriteValueARM64_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (MULW x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (MULW x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (FMULS x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMul64_0(v *Value) bool {
// match: (Mul64 x y)
- // cond:
// result: (MUL x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (FMULD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMul64uhilo_0(v *Value) bool {
// match: (Mul64uhilo x y)
- // cond:
// result: (LoweredMuluhilo x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (MULW x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpNeg32F_0(v *Value) bool {
// match: (Neg32F x)
- // cond:
// result: (FNEGS x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpNeg64_0(v *Value) bool {
// match: (Neg64 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpNeg64F_0(v *Value) bool {
// match: (Neg64F x)
- // cond:
// result: (FNEGD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq16 x y)
- // cond:
// result: (NotEqual (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValueARM64_OpNeq32_0(v *Value) bool {
b := v.Block
// match: (Neq32 x y)
- // cond:
// result: (NotEqual (CMPW x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpNeq32F_0(v *Value) bool {
b := v.Block
// match: (Neq32F x y)
- // cond:
// result: (NotEqual (FCMPS x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpNeq64_0(v *Value) bool {
b := v.Block
// match: (Neq64 x y)
- // cond:
// result: (NotEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValueARM64_OpNeq64F_0(v *Value) bool {
b := v.Block
// match: (Neq64F x y)
- // cond:
// result: (NotEqual (FCMPD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq8 x y)
- // cond:
// result: (NotEqual (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValueARM64_OpNeqB_0(v *Value) bool {
// match: (NeqB x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
func rewriteValueARM64_OpNeqPtr_0(v *Value) bool {
b := v.Block
// match: (NeqPtr x y)
- // cond:
// result: (NotEqual (CMP x y))
for {
y := v.Args[1]
}
func rewriteValueARM64_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Not x)
- // cond:
// result: (XOR (MOVDconst [1]) x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpOffPtr_0(v *Value) bool {
// match: (OffPtr [off] ptr:(SP))
- // cond:
// result: (MOVDaddr [off] ptr)
for {
off := v.AuxInt
return true
}
// match: (OffPtr [off] ptr)
- // cond:
// result: (ADDconst [off] ptr)
for {
off := v.AuxInt
}
func rewriteValueARM64_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpOr64_0(v *Value) bool {
// match: (Or64 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount16 <t> x)
- // cond:
// result: (FMOVDfpgp <t> (VUADDLV <typ.Float64> (VCNT <typ.Float64> (FMOVDgpfp <typ.Float64> (ZeroExt16to64 x)))))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount32 <t> x)
- // cond:
// result: (FMOVDfpgp <t> (VUADDLV <typ.Float64> (VCNT <typ.Float64> (FMOVDgpfp <typ.Float64> (ZeroExt32to64 x)))))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount64 <t> x)
- // cond:
// result: (FMOVDfpgp <t> (VUADDLV <typ.Float64> (VCNT <typ.Float64> (FMOVDgpfp <typ.Float64> x))))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft16 <t> x (MOVDconst [c]))
- // cond:
// result: (Or16 (Lsh16x64 <t> x (MOVDconst [c&15])) (Rsh16Ux64 <t> x (MOVDconst [-c&15])))
for {
t := v.Type
func rewriteValueARM64_OpRotateLeft32_0(v *Value) bool {
b := v.Block
// match: (RotateLeft32 x y)
- // cond:
// result: (RORW x (NEG <y.Type> y))
for {
y := v.Args[1]
func rewriteValueARM64_OpRotateLeft64_0(v *Value) bool {
b := v.Block
// match: (RotateLeft64 x y)
- // cond:
// result: (ROR x (NEG <y.Type> y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft8 <t> x (MOVDconst [c]))
- // cond:
// result: (Or8 (Lsh8x64 <t> x (MOVDconst [c&7])) (Rsh8Ux64 <t> x (MOVDconst [-c&7])))
for {
t := v.Type
}
func rewriteValueARM64_OpRound_0(v *Value) bool {
// match: (Round x)
- // cond:
// result: (FRINTAD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: (LoweredRound32F x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: (LoweredRound64F x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpRoundToEven_0(v *Value) bool {
// match: (RoundToEven x)
- // cond:
// result: (FRINTND x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt16to64 x) (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt16to64 x) (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt16to64 x) y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt16to64 x) (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x16 x y)
- // cond:
// result: (SRA (SignExt16to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt16to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt16to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x32 x y)
- // cond:
// result: (SRA (SignExt16to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt32to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt32to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x64 x y)
- // cond:
// result: (SRA (SignExt16to64 x) (CSEL {OpARM64LessThanU} <y.Type> y (Const64 <y.Type> [63]) (CMPconst [64] y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x8 x y)
- // cond:
// result: (SRA (SignExt16to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt8to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt8to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt32to64 x) (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt32to64 x) (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt32to64 x) y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt32to64 x) (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x16 x y)
- // cond:
// result: (SRA (SignExt32to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt16to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt16to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x32 x y)
- // cond:
// result: (SRA (SignExt32to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt32to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt32to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x64 x y)
- // cond:
// result: (SRA (SignExt32to64 x) (CSEL {OpARM64LessThanU} <y.Type> y (Const64 <y.Type> [63]) (CMPconst [64] y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x8 x y)
- // cond:
// result: (SRA (SignExt32to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt8to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt8to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> x (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> x (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
func rewriteValueARM64_OpRsh64Ux64_0(v *Value) bool {
b := v.Block
// match: (Rsh64Ux64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> x y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> x (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x16 x y)
- // cond:
// result: (SRA x (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt16to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt16to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x32 x y)
- // cond:
// result: (SRA x (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt32to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt32to64 y))))
for {
y := v.Args[1]
func rewriteValueARM64_OpRsh64x64_0(v *Value) bool {
b := v.Block
// match: (Rsh64x64 x y)
- // cond:
// result: (SRA x (CSEL {OpARM64LessThanU} <y.Type> y (Const64 <y.Type> [63]) (CMPconst [64] y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x8 x y)
- // cond:
// result: (SRA x (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt8to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt8to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux16 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt8to64 x) (ZeroExt16to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux32 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt8to64 x) (ZeroExt32to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux64 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt8to64 x) y) (Const64 <t> [0]) (CMPconst [64] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux8 <t> x y)
- // cond:
// result: (CSEL {OpARM64LessThanU} (SRL <t> (ZeroExt8to64 x) (ZeroExt8to64 y)) (Const64 <t> [0]) (CMPconst [64] (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x16 x y)
- // cond:
// result: (SRA (SignExt8to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt16to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt16to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x32 x y)
- // cond:
// result: (SRA (SignExt8to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt32to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt32to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x64 x y)
- // cond:
// result: (SRA (SignExt8to64 x) (CSEL {OpARM64LessThanU} <y.Type> y (Const64 <y.Type> [63]) (CMPconst [64] y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x8 x y)
- // cond:
// result: (SRA (SignExt8to64 x) (CSEL {OpARM64LessThanU} <y.Type> (ZeroExt8to64 y) (Const64 <y.Type> [63]) (CMPconst [64] (ZeroExt8to64 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select0 (Add64carry x y c))
- // cond:
// result: (Select0 <typ.UInt64> (ADCSflags x y (Select1 <types.TypeFlags> (ADDSconstflags [-1] c))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (Sub64borrow x y bo))
- // cond:
// result: (Select0 <typ.UInt64> (SBCSflags x y (Select1 <types.TypeFlags> (NEGSflags bo))))
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select1 (Add64carry x y c))
- // cond:
// result: (ADCzerocarry <typ.UInt64> (Select1 <types.TypeFlags> (ADCSflags x y (Select1 <types.TypeFlags> (ADDSconstflags [-1] c)))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (Sub64borrow x y bo))
- // cond:
// result: (NEG <typ.UInt64> (NGCzerocarry <typ.UInt64> (Select1 <types.TypeFlags> (SBCSflags x y (Select1 <types.TypeFlags> (NEGSflags bo))))))
for {
v_0 := v.Args[0]
}
func rewriteValueARM64_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpSignExt16to64_0(v *Value) bool {
// match: (SignExt16to64 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpSignExt32to64_0(v *Value) bool {
// match: (SignExt32to64 x)
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpSignExt8to64_0(v *Value) bool {
// match: (SignExt8to64 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
func rewriteValueARM64_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SRAconst (NEG <t> x) [63])
for {
t := v.Type
}
func rewriteValueARM64_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (FSQRTD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValueARM64_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (FSUBS x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpSub64_0(v *Value) bool {
// match: (Sub64 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (FSUBD x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpTrunc_0(v *Value) bool {
// match: (Trunc x)
- // cond:
// result: (FRINTZD x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM64_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM64_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM64_OpTrunc64to16_0(v *Value) bool {
// match: (Trunc64to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM64_OpTrunc64to32_0(v *Value) bool {
// match: (Trunc64to32 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM64_OpTrunc64to8_0(v *Value) bool {
// match: (Trunc64to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueARM64_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValueARM64_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpXor64_0(v *Value) bool {
// match: (Xor64 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueARM64_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] ptr mem)
- // cond:
// result: (MOVBstore ptr (MOVDconst [0]) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] ptr mem)
- // cond:
// result: (MOVHstore ptr (MOVDconst [0]) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] ptr mem)
- // cond:
// result: (MOVWstore ptr (MOVDconst [0]) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [8] ptr mem)
- // cond:
// result: (MOVDstore ptr (MOVDconst [0]) mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Zero [3] ptr mem)
- // cond:
// result: (MOVBstore [2] ptr (MOVDconst [0]) (MOVHstore ptr (MOVDconst [0]) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Zero [5] ptr mem)
- // cond:
// result: (MOVBstore [4] ptr (MOVDconst [0]) (MOVWstore ptr (MOVDconst [0]) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Zero [6] ptr mem)
- // cond:
// result: (MOVHstore [4] ptr (MOVDconst [0]) (MOVWstore ptr (MOVDconst [0]) mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Zero [7] ptr mem)
- // cond:
// result: (MOVBstore [6] ptr (MOVDconst [0]) (MOVHstore [4] ptr (MOVDconst [0]) (MOVWstore ptr (MOVDconst [0]) mem)))
for {
if v.AuxInt != 7 {
return true
}
// match: (Zero [9] ptr mem)
- // cond:
// result: (MOVBstore [8] ptr (MOVDconst [0]) (MOVDstore ptr (MOVDconst [0]) mem))
for {
if v.AuxInt != 9 {
b := v.Block
typ := &b.Func.Config.Types
// match: (Zero [10] ptr mem)
- // cond:
// result: (MOVHstore [8] ptr (MOVDconst [0]) (MOVDstore ptr (MOVDconst [0]) mem))
for {
if v.AuxInt != 10 {
return true
}
// match: (Zero [11] ptr mem)
- // cond:
// result: (MOVBstore [10] ptr (MOVDconst [0]) (MOVHstore [8] ptr (MOVDconst [0]) (MOVDstore ptr (MOVDconst [0]) mem)))
for {
if v.AuxInt != 11 {
return true
}
// match: (Zero [12] ptr mem)
- // cond:
// result: (MOVWstore [8] ptr (MOVDconst [0]) (MOVDstore ptr (MOVDconst [0]) mem))
for {
if v.AuxInt != 12 {
return true
}
// match: (Zero [13] ptr mem)
- // cond:
// result: (MOVBstore [12] ptr (MOVDconst [0]) (MOVWstore [8] ptr (MOVDconst [0]) (MOVDstore ptr (MOVDconst [0]) mem)))
for {
if v.AuxInt != 13 {
return true
}
// match: (Zero [14] ptr mem)
- // cond:
// result: (MOVHstore [12] ptr (MOVDconst [0]) (MOVWstore [8] ptr (MOVDconst [0]) (MOVDstore ptr (MOVDconst [0]) mem)))
for {
if v.AuxInt != 14 {
return true
}
// match: (Zero [15] ptr mem)
- // cond:
// result: (MOVBstore [14] ptr (MOVDconst [0]) (MOVHstore [12] ptr (MOVDconst [0]) (MOVWstore [8] ptr (MOVDconst [0]) (MOVDstore ptr (MOVDconst [0]) mem))))
for {
if v.AuxInt != 15 {
return true
}
// match: (Zero [16] ptr mem)
- // cond:
// result: (STP [0] ptr (MOVDconst [0]) (MOVDconst [0]) mem)
for {
if v.AuxInt != 16 {
return true
}
// match: (Zero [32] ptr mem)
- // cond:
// result: (STP [16] ptr (MOVDconst [0]) (MOVDconst [0]) (STP [0] ptr (MOVDconst [0]) (MOVDconst [0]) mem))
for {
if v.AuxInt != 32 {
return true
}
// match: (Zero [48] ptr mem)
- // cond:
// result: (STP [32] ptr (MOVDconst [0]) (MOVDconst [0]) (STP [16] ptr (MOVDconst [0]) (MOVDconst [0]) (STP [0] ptr (MOVDconst [0]) (MOVDconst [0]) mem)))
for {
if v.AuxInt != 48 {
return true
}
// match: (Zero [64] ptr mem)
- // cond:
// result: (STP [48] ptr (MOVDconst [0]) (MOVDconst [0]) (STP [32] ptr (MOVDconst [0]) (MOVDconst [0]) (STP [16] ptr (MOVDconst [0]) (MOVDconst [0]) (STP [0] ptr (MOVDconst [0]) (MOVDconst [0]) mem))))
for {
if v.AuxInt != 64 {
}
func rewriteValueARM64_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVHUreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpZeroExt16to64_0(v *Value) bool {
// match: (ZeroExt16to64 x)
- // cond:
// result: (MOVHUreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpZeroExt32to64_0(v *Value) bool {
// match: (ZeroExt32to64 x)
- // cond:
// result: (MOVWUreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
}
func rewriteValueARM64_OpZeroExt8to64_0(v *Value) bool {
// match: (ZeroExt8to64 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
return true
}
// match: (EQ (CMPconst [0] x) yes no)
- // cond:
// result: (Z x yes no)
for v.Op == OpARM64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (EQ (CMPWconst [0] x) yes no)
- // cond:
// result: (ZW x yes no)
for v.Op == OpARM64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (EQ (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (EQ (InvertFlags cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64FGE:
// match: (FGE (InvertFlags cmp) yes no)
- // cond:
// result: (FLE cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64FGT:
// match: (FGT (InvertFlags cmp) yes no)
- // cond:
// result: (FLT cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64FLE:
// match: (FLE (InvertFlags cmp) yes no)
- // cond:
// result: (FGE cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64FLT:
// match: (FLT (InvertFlags cmp) yes no)
- // cond:
// result: (FGT cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GE (CMPWconst [0] x) yes no)
- // cond:
// result: (TBZ {int64(31)} x yes no)
for v.Op == OpARM64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (GE (CMPconst [0] x) yes no)
- // cond:
// result: (TBZ {int64(63)} x yes no)
for v.Op == OpARM64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (GE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GE (InvertFlags cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (GT (InvertFlags cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockIf:
// match: (If (Equal cc) yes no)
- // cond:
// result: (EQ cc yes no)
for v.Op == OpARM64Equal {
cc := v.Args[0]
return true
}
// match: (If (NotEqual cc) yes no)
- // cond:
// result: (NE cc yes no)
for v.Op == OpARM64NotEqual {
cc := v.Args[0]
return true
}
// match: (If (LessThan cc) yes no)
- // cond:
// result: (LT cc yes no)
for v.Op == OpARM64LessThan {
cc := v.Args[0]
return true
}
// match: (If (LessThanU cc) yes no)
- // cond:
// result: (ULT cc yes no)
for v.Op == OpARM64LessThanU {
cc := v.Args[0]
return true
}
// match: (If (LessEqual cc) yes no)
- // cond:
// result: (LE cc yes no)
for v.Op == OpARM64LessEqual {
cc := v.Args[0]
return true
}
// match: (If (LessEqualU cc) yes no)
- // cond:
// result: (ULE cc yes no)
for v.Op == OpARM64LessEqualU {
cc := v.Args[0]
return true
}
// match: (If (GreaterThan cc) yes no)
- // cond:
// result: (GT cc yes no)
for v.Op == OpARM64GreaterThan {
cc := v.Args[0]
return true
}
// match: (If (GreaterThanU cc) yes no)
- // cond:
// result: (UGT cc yes no)
for v.Op == OpARM64GreaterThanU {
cc := v.Args[0]
return true
}
// match: (If (GreaterEqual cc) yes no)
- // cond:
// result: (GE cc yes no)
for v.Op == OpARM64GreaterEqual {
cc := v.Args[0]
return true
}
// match: (If (GreaterEqualU cc) yes no)
- // cond:
// result: (UGE cc yes no)
for v.Op == OpARM64GreaterEqualU {
cc := v.Args[0]
return true
}
// match: (If (LessThanF cc) yes no)
- // cond:
// result: (FLT cc yes no)
for v.Op == OpARM64LessThanF {
cc := v.Args[0]
return true
}
// match: (If (LessEqualF cc) yes no)
- // cond:
// result: (FLE cc yes no)
for v.Op == OpARM64LessEqualF {
cc := v.Args[0]
return true
}
// match: (If (GreaterThanF cc) yes no)
- // cond:
// result: (FGT cc yes no)
for v.Op == OpARM64GreaterThanF {
cc := v.Args[0]
return true
}
// match: (If (GreaterEqualF cc) yes no)
- // cond:
// result: (FGE cc yes no)
for v.Op == OpARM64GreaterEqualF {
cc := v.Args[0]
return true
}
// match: (If cond yes no)
- // cond:
// result: (NZ cond yes no)
for {
cond := b.Control
return true
}
// match: (LE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LE (InvertFlags cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (LT (CMPWconst [0] x) yes no)
- // cond:
// result: (TBNZ {int64(31)} x yes no)
for v.Op == OpARM64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (LT (CMPconst [0] x) yes no)
- // cond:
// result: (TBNZ {int64(63)} x yes no)
for v.Op == OpARM64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (LT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (LT (InvertFlags cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (NE (CMPconst [0] x) yes no)
- // cond:
// result: (NZ x yes no)
for v.Op == OpARM64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] x) yes no)
- // cond:
// result: (NZW x yes no)
for v.Op == OpARM64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (NE (InvertFlags cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64NZ:
// match: (NZ (Equal cc) yes no)
- // cond:
// result: (EQ cc yes no)
for v.Op == OpARM64Equal {
cc := v.Args[0]
return true
}
// match: (NZ (NotEqual cc) yes no)
- // cond:
// result: (NE cc yes no)
for v.Op == OpARM64NotEqual {
cc := v.Args[0]
return true
}
// match: (NZ (LessThan cc) yes no)
- // cond:
// result: (LT cc yes no)
for v.Op == OpARM64LessThan {
cc := v.Args[0]
return true
}
// match: (NZ (LessThanU cc) yes no)
- // cond:
// result: (ULT cc yes no)
for v.Op == OpARM64LessThanU {
cc := v.Args[0]
return true
}
// match: (NZ (LessEqual cc) yes no)
- // cond:
// result: (LE cc yes no)
for v.Op == OpARM64LessEqual {
cc := v.Args[0]
return true
}
// match: (NZ (LessEqualU cc) yes no)
- // cond:
// result: (ULE cc yes no)
for v.Op == OpARM64LessEqualU {
cc := v.Args[0]
return true
}
// match: (NZ (GreaterThan cc) yes no)
- // cond:
// result: (GT cc yes no)
for v.Op == OpARM64GreaterThan {
cc := v.Args[0]
return true
}
// match: (NZ (GreaterThanU cc) yes no)
- // cond:
// result: (UGT cc yes no)
for v.Op == OpARM64GreaterThanU {
cc := v.Args[0]
return true
}
// match: (NZ (GreaterEqual cc) yes no)
- // cond:
// result: (GE cc yes no)
for v.Op == OpARM64GreaterEqual {
cc := v.Args[0]
return true
}
// match: (NZ (GreaterEqualU cc) yes no)
- // cond:
// result: (UGE cc yes no)
for v.Op == OpARM64GreaterEqualU {
cc := v.Args[0]
return true
}
// match: (NZ (LessThanF cc) yes no)
- // cond:
// result: (FLT cc yes no)
for v.Op == OpARM64LessThanF {
cc := v.Args[0]
return true
}
// match: (NZ (LessEqualF cc) yes no)
- // cond:
// result: (FLE cc yes no)
for v.Op == OpARM64LessEqualF {
cc := v.Args[0]
return true
}
// match: (NZ (GreaterThanF cc) yes no)
- // cond:
// result: (FGT cc yes no)
for v.Op == OpARM64GreaterThanF {
cc := v.Args[0]
return true
}
// match: (NZ (GreaterEqualF cc) yes no)
- // cond:
// result: (FGE cc yes no)
for v.Op == OpARM64GreaterEqualF {
cc := v.Args[0]
return true
}
// match: (NZ (MOVDconst [0]) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64MOVDconst {
if v.AuxInt != 0 {
}
case BlockARM64UGE:
// match: (UGE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGE (InvertFlags cmp) yes no)
- // cond:
// result: (ULE cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64UGT:
// match: (UGT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (UGT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (UGT (InvertFlags cmp) yes no)
- // cond:
// result: (ULT cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64ULE:
// match: (ULE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULE (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULE (InvertFlags cmp) yes no)
- // cond:
// result: (UGE cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
}
case BlockARM64ULT:
// match: (ULT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagLT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagLT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagLT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_ULT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64FlagGT_ULT {
b.Kind = BlockFirst
return true
}
// match: (ULT (FlagGT_UGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpARM64FlagGT_UGT {
b.Kind = BlockFirst
return true
}
// match: (ULT (InvertFlags cmp) yes no)
- // cond:
// result: (UGT cmp yes no)
for v.Op == OpARM64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (Z (MOVDconst [0]) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpARM64MOVDconst {
if v.AuxInt != 0 {
}
func rewriteValueMIPS_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (ADDF x y)
for {
y := v.Args[1]
func rewriteValueMIPS_OpAdd32withcarry_0(v *Value) bool {
b := v.Block
// match: (Add32withcarry <t> x y c)
- // cond:
// result: (ADD c (ADD <t> x y))
for {
t := v.Type
}
func rewriteValueMIPS_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (ADDD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (MOVWaddr {sym} base)
for {
sym := v.Aux
}
func rewriteValueMIPS_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpAtomicAdd32_0(v *Value) bool {
// match: (AtomicAdd32 ptr val mem)
- // cond:
// result: (LoweredAtomicAdd ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS_OpAtomicCompareAndSwap32_0(v *Value) bool {
// match: (AtomicCompareAndSwap32 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueMIPS_OpAtomicExchange32_0(v *Value) bool {
// match: (AtomicExchange32 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS_OpAtomicLoad32_0(v *Value) bool {
// match: (AtomicLoad32 ptr mem)
- // cond:
// result: (LoweredAtomicLoad ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS_OpAtomicLoadPtr_0(v *Value) bool {
// match: (AtomicLoadPtr ptr mem)
- // cond:
// result: (LoweredAtomicLoad ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS_OpAtomicStore32_0(v *Value) bool {
// match: (AtomicStore32 ptr val mem)
- // cond:
// result: (LoweredAtomicStore ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS_OpAtomicStorePtrNoWB_0(v *Value) bool {
// match: (AtomicStorePtrNoWB ptr val mem)
- // cond:
// result: (LoweredAtomicStore ptr val mem)
for {
mem := v.Args[2]
func rewriteValueMIPS_OpAvg32u_0(v *Value) bool {
b := v.Block
// match: (Avg32u <t> x y)
- // cond:
// result: (ADD (SRLconst <t> (SUB <t> x y) [1]) y)
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen32 <t> x)
- // cond:
// result: (SUB (MOVWconst [32]) (CLZ <t> x))
for {
t := v.Type
}
func rewriteValueMIPS_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
}
func rewriteValueMIPS_OpCom16_0(v *Value) bool {
// match: (Com16 x)
- // cond:
// result: (NORconst [0] x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCom32_0(v *Value) bool {
// match: (Com32 x)
- // cond:
// result: (NORconst [0] x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCom8_0(v *Value) bool {
// match: (Com8 x)
- // cond:
// result: (NORconst [0] x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVWconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVWconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (MOVFconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVWconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVWconst [b])
for {
b := v.AuxInt
}
func rewriteValueMIPS_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (MOVWconst [0])
for {
v.reset(OpMIPSMOVWconst)
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz32 <t> x)
- // cond:
// result: (SUB (MOVWconst [32]) (CLZ <t> (SUBconst <t> [1] (AND <t> x (NEG <t> x)))))
for {
t := v.Type
}
func rewriteValueMIPS_OpCtz32NonZero_0(v *Value) bool {
// match: (Ctz32NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (TRUNCFW x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (MOVFD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F x)
- // cond:
// result: (MOVWF x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F x)
- // cond:
// result: (MOVWD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (TRUNCDW x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (MOVDF x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 x y)
- // cond:
// result: (Select1 (DIV (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (Select1 (DIVU (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32 x y)
- // cond:
// result: (Select1 (DIV x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (DIVF x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32u x y)
- // cond:
// result: (Select1 (DIVU x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (DIVD x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (Select1 (DIV (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (Select1 (DIVU (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq16 x y)
- // cond:
// result: (SGTUconst [1] (XOR (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq32 x y)
- // cond:
// result: (SGTUconst [1] (XOR x y))
for {
y := v.Args[1]
func rewriteValueMIPS_OpEq32F_0(v *Value) bool {
b := v.Block
// match: (Eq32F x y)
- // cond:
// result: (FPFlagTrue (CMPEQF x y))
for {
y := v.Args[1]
func rewriteValueMIPS_OpEq64F_0(v *Value) bool {
b := v.Block
// match: (Eq64F x y)
- // cond:
// result: (FPFlagTrue (CMPEQD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq8 x y)
- // cond:
// result: (SGTUconst [1] (XOR (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqB x y)
- // cond:
// result: (XORconst [1] (XOR <typ.Bool> x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqPtr x y)
- // cond:
// result: (SGTUconst [1] (XOR x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16 x y)
- // cond:
// result: (XORconst [1] (SGT (SignExt16to32 y) (SignExt16to32 x)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16U x y)
- // cond:
// result: (XORconst [1] (SGTU (ZeroExt16to32 y) (ZeroExt16to32 x)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32 x y)
- // cond:
// result: (XORconst [1] (SGT y x))
for {
y := v.Args[1]
func rewriteValueMIPS_OpGeq32F_0(v *Value) bool {
b := v.Block
// match: (Geq32F x y)
- // cond:
// result: (FPFlagTrue (CMPGEF x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32U x y)
- // cond:
// result: (XORconst [1] (SGTU y x))
for {
y := v.Args[1]
func rewriteValueMIPS_OpGeq64F_0(v *Value) bool {
b := v.Block
// match: (Geq64F x y)
- // cond:
// result: (FPFlagTrue (CMPGED x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8 x y)
- // cond:
// result: (XORconst [1] (SGT (SignExt8to32 y) (SignExt8to32 x)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8U x y)
- // cond:
// result: (XORconst [1] (SGTU (ZeroExt8to32 y) (ZeroExt8to32 x)))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpMIPSLoweredGetCallerPC)
}
func rewriteValueMIPS_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpMIPSLoweredGetCallerSP)
}
func rewriteValueMIPS_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpMIPSLoweredGetClosurePtr)
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16 x y)
- // cond:
// result: (SGT (SignExt16to32 x) (SignExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16U x y)
- // cond:
// result: (SGTU (ZeroExt16to32 x) (ZeroExt16to32 y))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpGreater32_0(v *Value) bool {
// match: (Greater32 x y)
- // cond:
// result: (SGT x y)
for {
y := v.Args[1]
func rewriteValueMIPS_OpGreater32F_0(v *Value) bool {
b := v.Block
// match: (Greater32F x y)
- // cond:
// result: (FPFlagTrue (CMPGTF x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpGreater32U_0(v *Value) bool {
// match: (Greater32U x y)
- // cond:
// result: (SGTU x y)
for {
y := v.Args[1]
func rewriteValueMIPS_OpGreater64F_0(v *Value) bool {
b := v.Block
// match: (Greater64F x y)
- // cond:
// result: (FPFlagTrue (CMPGTD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8 x y)
- // cond:
// result: (SGT (SignExt8to32 x) (SignExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8U x y)
- // cond:
// result: (SGTU (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32 x y)
- // cond:
// result: (Select0 (MULT x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32u x y)
- // cond:
// result: (Select0 (MULTU x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
}
func rewriteValueMIPS_OpIsInBounds_0(v *Value) bool {
// match: (IsInBounds idx len)
- // cond:
// result: (SGTU len idx)
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (IsNonNil ptr)
- // cond:
// result: (SGTU ptr (MOVWconst [0]))
for {
ptr := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (IsSliceInBounds idx len)
- // cond:
// result: (XORconst [1] (SGTU idx len))
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16 x y)
- // cond:
// result: (XORconst [1] (SGT (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16U x y)
- // cond:
// result: (XORconst [1] (SGTU (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32 x y)
- // cond:
// result: (XORconst [1] (SGT x y))
for {
y := v.Args[1]
func rewriteValueMIPS_OpLeq32F_0(v *Value) bool {
b := v.Block
// match: (Leq32F x y)
- // cond:
// result: (FPFlagTrue (CMPGEF y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32U x y)
- // cond:
// result: (XORconst [1] (SGTU x y))
for {
y := v.Args[1]
func rewriteValueMIPS_OpLeq64F_0(v *Value) bool {
b := v.Block
// match: (Leq64F x y)
- // cond:
// result: (FPFlagTrue (CMPGED y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8 x y)
- // cond:
// result: (XORconst [1] (SGT (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8U x y)
- // cond:
// result: (XORconst [1] (SGTU (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16 x y)
- // cond:
// result: (SGT (SignExt16to32 y) (SignExt16to32 x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16U x y)
- // cond:
// result: (SGTU (ZeroExt16to32 y) (ZeroExt16to32 x))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpLess32_0(v *Value) bool {
// match: (Less32 x y)
- // cond:
// result: (SGT y x)
for {
y := v.Args[1]
func rewriteValueMIPS_OpLess32F_0(v *Value) bool {
b := v.Block
// match: (Less32F x y)
- // cond:
// result: (FPFlagTrue (CMPGTF y x))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpLess32U_0(v *Value) bool {
// match: (Less32U x y)
- // cond:
// result: (SGTU y x)
for {
y := v.Args[1]
func rewriteValueMIPS_OpLess64F_0(v *Value) bool {
b := v.Block
// match: (Less64F x y)
- // cond:
// result: (FPFlagTrue (CMPGTD y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8 x y)
- // cond:
// result: (SGT (SignExt8to32 y) (SignExt8to32 x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8U x y)
- // cond:
// result: (SGTU (ZeroExt8to32 y) (ZeroExt8to32 x))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (MOVWaddr {sym} base)
for {
sym := v.Aux
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x16 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x (ZeroExt16to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt16to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x32 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x y) (MOVWconst [0]) (SGTUconst [32] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x8 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x (ZeroExt8to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt8to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x16 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x (ZeroExt16to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt16to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x32 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x y) (MOVWconst [0]) (SGTUconst [32] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x8 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x (ZeroExt8to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt8to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x16 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x (ZeroExt16to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt16to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x32 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x y) (MOVWconst [0]) (SGTUconst [32] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x8 <t> x y)
- // cond:
// result: (CMOVZ (SLL <t> x (ZeroExt8to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt8to32 y)))
for {
t := v.Type
}
func rewriteValueMIPS_OpMIPSADD_0(v *Value) bool {
// match: (ADD x (MOVWconst [c]))
- // cond:
// result: (ADDconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (ADD (MOVWconst [c]) x)
- // cond:
// result: (ADDconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (ADD x (NEG y))
- // cond:
// result: (SUB x y)
for {
_ = v.Args[1]
return true
}
// match: (ADD (NEG y) x)
- // cond:
// result: (SUB x y)
for {
x := v.Args[1]
}
func rewriteValueMIPS_OpMIPSADDconst_0(v *Value) bool {
// match: (ADDconst [off1] (MOVWaddr [off2] {sym} ptr))
- // cond:
// result: (MOVWaddr [off1+off2] {sym} ptr)
for {
off1 := v.AuxInt
return true
}
// match: (ADDconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ADDconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(c+d))])
for {
c := v.AuxInt
return true
}
// match: (ADDconst [c] (ADDconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(c+d))] x)
for {
c := v.AuxInt
return true
}
// match: (ADDconst [c] (SUBconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(c-d))] x)
for {
c := v.AuxInt
func rewriteValueMIPS_OpMIPSAND_0(v *Value) bool {
b := v.Block
// match: (AND x (MOVWconst [c]))
- // cond:
// result: (ANDconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (AND (MOVWconst [c]) x)
- // cond:
// result: (ANDconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (AND x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (AND (SGTUconst [1] x) (SGTUconst [1] y))
- // cond:
// result: (SGTUconst [1] (OR <x.Type> x y))
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpMIPSSGTUconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpMIPSSGTUconst || v_0.AuxInt != 1 {
break
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSSGTUconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpMIPSSGTUconst || v_1.AuxInt != 1 {
break
}
y := v_1.Args[0]
return true
}
// match: (AND (SGTUconst [1] y) (SGTUconst [1] x))
- // cond:
// result: (SGTUconst [1] (OR <x.Type> x y))
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpMIPSSGTUconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpMIPSSGTUconst || v_0.AuxInt != 1 {
break
}
y := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSSGTUconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpMIPSSGTUconst || v_1.AuxInt != 1 {
break
}
x := v_1.Args[0]
}
func rewriteValueMIPS_OpMIPSANDconst_0(v *Value) bool {
// match: (ANDconst [0] _)
- // cond:
// result: (MOVWconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ANDconst [-1] x)
- // cond:
// result: x
for {
if v.AuxInt != -1 {
return true
}
// match: (ANDconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [c&d])
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (ANDconst [d] x))
- // cond:
// result: (ANDconst [c&d] x)
for {
c := v.AuxInt
}
func rewriteValueMIPS_OpMIPSCMOVZ_0(v *Value) bool {
// match: (CMOVZ _ f (MOVWconst [0]))
- // cond:
// result: f
for {
_ = v.Args[2]
f := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpMIPSMOVWconst {
- break
- }
- if v_2.AuxInt != 0 {
+ if v_2.Op != OpMIPSMOVWconst || v_2.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (CMOVZ a (MOVWconst [0]) c)
- // cond:
// result: (CMOVZzero a c)
for {
c := v.Args[2]
a := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSCMOVZzero)
}
func rewriteValueMIPS_OpMIPSCMOVZzero_0(v *Value) bool {
// match: (CMOVZzero _ (MOVWconst [0]))
- // cond:
// result: (MOVWconst [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWconst)
}
func rewriteValueMIPS_OpMIPSLoweredAtomicStore_0(v *Value) bool {
// match: (LoweredAtomicStore ptr (MOVWconst [0]) mem)
- // cond:
// result: (LoweredAtomicStorezero ptr mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSLoweredAtomicStorezero)
func rewriteValueMIPS_OpMIPSMOVBUreg_0(v *Value) bool {
b := v.Block
// match: (MOVBUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg x:(MOVBUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg (ANDconst [c] x))
- // cond:
// result: (ANDconst [c&0xff] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBUreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(uint8(c))])
for {
v_0 := v.Args[0]
func rewriteValueMIPS_OpMIPSMOVBreg_0(v *Value) bool {
b := v.Block
// match: (MOVBreg x:(MOVBload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg x:(MOVBreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWconst [0]) mem)
- // cond:
// result: (MOVBstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVBstorezero)
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
func rewriteValueMIPS_OpMIPSMOVHUreg_0(v *Value) bool {
b := v.Block
// match: (MOVHUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVBUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg (ANDconst [c] x))
- // cond:
// result: (ANDconst [c&0xffff] x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHUreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(uint16(c))])
for {
v_0 := v.Args[0]
func rewriteValueMIPS_OpMIPSMOVHreg_0(v *Value) bool {
b := v.Block
// match: (MOVHreg x:(MOVBload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHload _ _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHreg _))
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(int16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWconst [0]) mem)
- // cond:
// result: (MOVHstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVHstorezero)
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWreg (MOVWconst [c]))
- // cond:
// result: (MOVWconst [c])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWconst [0]) mem)
- // cond:
// result: (MOVWstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWstorezero)
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
}
func rewriteValueMIPS_OpMIPSMUL_0(v *Value) bool {
// match: (MUL (MOVWconst [0]) _)
- // cond:
// result: (MOVWconst [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpMIPSMOVWconst || v_0.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (MUL _ (MOVWconst [0]))
- // cond:
// result: (MOVWconst [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (MUL (MOVWconst [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpMIPSMOVWconst || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (MUL x (MOVWconst [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (MUL (MOVWconst [-1]) x)
- // cond:
// result: (NEG x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpMIPSMOVWconst || v_0.AuxInt != -1 {
break
}
v.reset(OpMIPSNEG)
return true
}
// match: (MUL x (MOVWconst [-1]))
- // cond:
// result: (NEG x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != -1 {
break
}
v.reset(OpMIPSNEG)
return true
}
// match: (MUL (MOVWconst [c]) (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(c)*int32(d))])
for {
_ = v.Args[1]
return true
}
// match: (MUL (MOVWconst [d]) (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(int32(c)*int32(d))])
for {
_ = v.Args[1]
}
func rewriteValueMIPS_OpMIPSNEG_0(v *Value) bool {
// match: (NEG (MOVWconst [c]))
- // cond:
// result: (MOVWconst [int64(int32(-c))])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS_OpMIPSNOR_0(v *Value) bool {
// match: (NOR x (MOVWconst [c]))
- // cond:
// result: (NORconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (NOR (MOVWconst [c]) x)
- // cond:
// result: (NORconst [c] x)
for {
x := v.Args[1]
}
func rewriteValueMIPS_OpMIPSNORconst_0(v *Value) bool {
// match: (NORconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [^(c|d)])
for {
c := v.AuxInt
func rewriteValueMIPS_OpMIPSOR_0(v *Value) bool {
b := v.Block
// match: (OR x (MOVWconst [c]))
- // cond:
// result: (ORconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (OR (MOVWconst [c]) x)
- // cond:
// result: (ORconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (OR x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (OR (SGTUzero x) (SGTUzero y))
- // cond:
// result: (SGTUzero (OR <x.Type> x y))
for {
_ = v.Args[1]
return true
}
// match: (OR (SGTUzero y) (SGTUzero x))
- // cond:
// result: (SGTUzero (OR <x.Type> x y))
for {
_ = v.Args[1]
}
func rewriteValueMIPS_OpMIPSORconst_0(v *Value) bool {
// match: (ORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ORconst [-1] _)
- // cond:
// result: (MOVWconst [-1])
for {
if v.AuxInt != -1 {
return true
}
// match: (ORconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [c|d])
for {
c := v.AuxInt
return true
}
// match: (ORconst [c] (ORconst [d] x))
- // cond:
// result: (ORconst [c|d] x)
for {
c := v.AuxInt
}
func rewriteValueMIPS_OpMIPSSGT_0(v *Value) bool {
// match: (SGT (MOVWconst [c]) x)
- // cond:
// result: (SGTconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (SGT x (MOVWconst [0]))
- // cond:
// result: (SGTzero x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSSGTzero)
}
func rewriteValueMIPS_OpMIPSSGTU_0(v *Value) bool {
// match: (SGTU (MOVWconst [c]) x)
- // cond:
// result: (SGTUconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (SGTU x (MOVWconst [0]))
- // cond:
// result: (SGTUzero x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPSMOVWconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPSSGTUzero)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVBUreg {
- break
- }
- if !(0xff < uint32(c)) {
+ if v_0.Op != OpMIPSMOVBUreg || !(0xff < uint32(c)) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVHUreg {
- break
- }
- if !(0xffff < uint32(c)) {
+ if v_0.Op != OpMIPSMOVHUreg || !(0xffff < uint32(c)) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVBreg {
- break
- }
- if !(0x7f < int32(c)) {
+ if v_0.Op != OpMIPSMOVBreg || !(0x7f < int32(c)) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVBreg {
- break
- }
- if !(int32(c) <= -0x80) {
+ if v_0.Op != OpMIPSMOVBreg || !(int32(c) <= -0x80) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVBUreg {
- break
- }
- if !(0xff < int32(c)) {
+ if v_0.Op != OpMIPSMOVBUreg || !(0xff < int32(c)) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVBUreg {
- break
- }
- if !(int32(c) < 0) {
+ if v_0.Op != OpMIPSMOVBUreg || !(int32(c) < 0) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVHreg {
- break
- }
- if !(0x7fff < int32(c)) {
+ if v_0.Op != OpMIPSMOVHreg || !(0x7fff < int32(c)) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVHreg {
- break
- }
- if !(int32(c) <= -0x8000) {
+ if v_0.Op != OpMIPSMOVHreg || !(int32(c) <= -0x8000) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVHUreg {
- break
- }
- if !(0xffff < int32(c)) {
+ if v_0.Op != OpMIPSMOVHUreg || !(0xffff < int32(c)) {
break
}
v.reset(OpMIPSMOVWconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVHUreg {
- break
- }
- if !(int32(c) < 0) {
+ if v_0.Op != OpMIPSMOVHUreg || !(int32(c) < 0) {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (SLL x (MOVWconst [c]))
- // cond:
// result: (SLLconst x [c])
for {
_ = v.Args[1]
}
func rewriteValueMIPS_OpMIPSSLLconst_0(v *Value) bool {
// match: (SLLconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(uint32(d)<<uint32(c)))])
for {
c := v.AuxInt
return true
}
// match: (SRA x (MOVWconst [c]))
- // cond:
// result: (SRAconst x [c])
for {
_ = v.Args[1]
}
func rewriteValueMIPS_OpMIPSSRAconst_0(v *Value) bool {
// match: (SRAconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(d)>>uint32(c))])
for {
c := v.AuxInt
return true
}
// match: (SRL x (MOVWconst [c]))
- // cond:
// result: (SRLconst x [c])
for {
_ = v.Args[1]
}
func rewriteValueMIPS_OpMIPSSRLconst_0(v *Value) bool {
// match: (SRLconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(uint32(d)>>uint32(c))])
for {
c := v.AuxInt
}
func rewriteValueMIPS_OpMIPSSUB_0(v *Value) bool {
// match: (SUB x (MOVWconst [c]))
- // cond:
// result: (SUBconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (SUB x x)
- // cond:
// result: (MOVWconst [0])
for {
x := v.Args[1]
return true
}
// match: (SUB (MOVWconst [0]) x)
- // cond:
// result: (NEG x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpMIPSMOVWconst || v_0.AuxInt != 0 {
break
}
v.reset(OpMIPSNEG)
}
func rewriteValueMIPS_OpMIPSSUBconst_0(v *Value) bool {
// match: (SUBconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SUBconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [int64(int32(d-c))])
for {
c := v.AuxInt
return true
}
// match: (SUBconst [c] (SUBconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(-c-d))] x)
for {
c := v.AuxInt
return true
}
// match: (SUBconst [c] (ADDconst [d] x))
- // cond:
// result: (ADDconst [int64(int32(-c+d))] x)
for {
c := v.AuxInt
}
func rewriteValueMIPS_OpMIPSXOR_0(v *Value) bool {
// match: (XOR x (MOVWconst [c]))
- // cond:
// result: (XORconst [c] x)
for {
_ = v.Args[1]
return true
}
// match: (XOR (MOVWconst [c]) x)
- // cond:
// result: (XORconst [c] x)
for {
x := v.Args[1]
return true
}
// match: (XOR x x)
- // cond:
// result: (MOVWconst [0])
for {
x := v.Args[1]
}
func rewriteValueMIPS_OpMIPSXORconst_0(v *Value) bool {
// match: (XORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (XORconst [-1] x)
- // cond:
// result: (NORconst [0] x)
for {
if v.AuxInt != -1 {
return true
}
// match: (XORconst [c] (MOVWconst [d]))
- // cond:
// result: (MOVWconst [c^d])
for {
c := v.AuxInt
return true
}
// match: (XORconst [c] (XORconst [d] x))
- // cond:
// result: (XORconst [c^d] x)
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 x y)
- // cond:
// result: (Select0 (DIV (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (Select0 (DIVU (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32 x y)
- // cond:
// result: (Select0 (DIV x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32u x y)
- // cond:
// result: (Select0 (DIVU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (Select0 (DIV (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (Select0 (DIVU (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBUload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVBstore [1] dst (MOVBUload [1] src mem) (MOVBstore dst (MOVBUload src mem) mem))
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVBstore [3] dst (MOVBUload [3] src mem) (MOVBstore [2] dst (MOVBUload [2] src mem) (MOVBstore [1] dst (MOVBUload [1] src mem) (MOVBstore dst (MOVBUload src mem) mem))))
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBUload [2] src mem) (MOVBstore [1] dst (MOVBUload [1] src mem) (MOVBstore dst (MOVBUload src mem) mem)))
for {
if v.AuxInt != 3 {
}
func rewriteValueMIPS_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (MUL x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (MUL x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (MULF x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpMul32uhilo_0(v *Value) bool {
// match: (Mul32uhilo x y)
- // cond:
// result: (MULTU x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (MULD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (MUL x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpNeg32F_0(v *Value) bool {
// match: (Neg32F x)
- // cond:
// result: (NEGF x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpNeg64F_0(v *Value) bool {
// match: (Neg64F x)
- // cond:
// result: (NEGD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq16 x y)
- // cond:
// result: (SGTU (XOR (ZeroExt16to32 x) (ZeroExt16to32 y)) (MOVWconst [0]))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq32 x y)
- // cond:
// result: (SGTU (XOR x y) (MOVWconst [0]))
for {
y := v.Args[1]
func rewriteValueMIPS_OpNeq32F_0(v *Value) bool {
b := v.Block
// match: (Neq32F x y)
- // cond:
// result: (FPFlagFalse (CMPEQF x y))
for {
y := v.Args[1]
func rewriteValueMIPS_OpNeq64F_0(v *Value) bool {
b := v.Block
// match: (Neq64F x y)
- // cond:
// result: (FPFlagFalse (CMPEQD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq8 x y)
- // cond:
// result: (SGTU (XOR (ZeroExt8to32 x) (ZeroExt8to32 y)) (MOVWconst [0]))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpNeqB_0(v *Value) bool {
// match: (NeqB x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (NeqPtr x y)
- // cond:
// result: (SGTU (XOR x y) (MOVWconst [0]))
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (XORconst [1] x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpOffPtr_0(v *Value) bool {
// match: (OffPtr [off] ptr:(SP))
- // cond:
// result: (MOVWaddr [off] ptr)
for {
off := v.AuxInt
return true
}
// match: (OffPtr [off] ptr)
- // cond:
// result: (ADDconst [off] ptr)
for {
off := v.AuxInt
}
func rewriteValueMIPS_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft16 <t> x (MOVWconst [c]))
- // cond:
// result: (Or16 (Lsh16x32 <t> x (MOVWconst [c&15])) (Rsh16Ux32 <t> x (MOVWconst [-c&15])))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft32 <t> x (MOVWconst [c]))
- // cond:
// result: (Or32 (Lsh32x32 <t> x (MOVWconst [c&31])) (Rsh32Ux32 <t> x (MOVWconst [-c&31])))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft64 <t> x (MOVWconst [c]))
- // cond:
// result: (Or64 (Lsh64x32 <t> x (MOVWconst [c&63])) (Rsh64Ux32 <t> x (MOVWconst [-c&63])))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft8 <t> x (MOVWconst [c]))
- // cond:
// result: (Or8 (Lsh8x32 <t> x (MOVWconst [c&7])) (Rsh8Ux32 <t> x (MOVWconst [-c&7])))
for {
t := v.Type
}
func rewriteValueMIPS_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: x
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux16 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> (ZeroExt16to32 x) (ZeroExt16to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt16to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux32 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> (ZeroExt16to32 x) y) (MOVWconst [0]) (SGTUconst [32] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux8 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> (ZeroExt16to32 x) (ZeroExt8to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt8to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x16 x y)
- // cond:
// result: (SRA (SignExt16to32 x) ( CMOVZ <typ.UInt32> (ZeroExt16to32 y) (MOVWconst [-1]) (SGTUconst [32] (ZeroExt16to32 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x32 x y)
- // cond:
// result: (SRA (SignExt16to32 x) ( CMOVZ <typ.UInt32> y (MOVWconst [-1]) (SGTUconst [32] y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x8 x y)
- // cond:
// result: (SRA (SignExt16to32 x) ( CMOVZ <typ.UInt32> (ZeroExt8to32 y) (MOVWconst [-1]) (SGTUconst [32] (ZeroExt8to32 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux16 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> x (ZeroExt16to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt16to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux32 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> x y) (MOVWconst [0]) (SGTUconst [32] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux8 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> x (ZeroExt8to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt8to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x16 x y)
- // cond:
// result: (SRA x ( CMOVZ <typ.UInt32> (ZeroExt16to32 y) (MOVWconst [-1]) (SGTUconst [32] (ZeroExt16to32 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x32 x y)
- // cond:
// result: (SRA x ( CMOVZ <typ.UInt32> y (MOVWconst [-1]) (SGTUconst [32] y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x8 x y)
- // cond:
// result: (SRA x ( CMOVZ <typ.UInt32> (ZeroExt8to32 y) (MOVWconst [-1]) (SGTUconst [32] (ZeroExt8to32 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux16 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> (ZeroExt8to32 x) (ZeroExt16to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt16to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux32 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> (ZeroExt8to32 x) y) (MOVWconst [0]) (SGTUconst [32] y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux8 <t> x y)
- // cond:
// result: (CMOVZ (SRL <t> (ZeroExt8to32 x) (ZeroExt8to32 y) ) (MOVWconst [0]) (SGTUconst [32] (ZeroExt8to32 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x16 x y)
- // cond:
// result: (SRA (SignExt16to32 x) ( CMOVZ <typ.UInt32> (ZeroExt16to32 y) (MOVWconst [-1]) (SGTUconst [32] (ZeroExt16to32 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x32 x y)
- // cond:
// result: (SRA (SignExt16to32 x) ( CMOVZ <typ.UInt32> y (MOVWconst [-1]) (SGTUconst [32] y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x8 x y)
- // cond:
// result: (SRA (SignExt16to32 x) ( CMOVZ <typ.UInt32> (ZeroExt8to32 y) (MOVWconst [-1]) (SGTUconst [32] (ZeroExt8to32 y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select0 (Add32carry <t> x y))
- // cond:
// result: (ADD <t.FieldType(0)> x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (Sub32carry <t> x y))
- // cond:
// result: (SUB <t.FieldType(0)> x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (MULTU (MOVWconst [0]) _))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpMIPSMOVWconst || v_0_0.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (Select0 (MULTU _ (MOVWconst [0])))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_1.AuxInt != 0 {
+ if v_0_1.Op != OpMIPSMOVWconst || v_0_1.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (Select0 (MULTU (MOVWconst [1]) _))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_0.AuxInt != 1 {
+ if v_0_0.Op != OpMIPSMOVWconst || v_0_0.AuxInt != 1 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (Select0 (MULTU _ (MOVWconst [1])))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpMIPSMOVWconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (Select0 (MULTU (MOVWconst [-1]) x))
- // cond:
// result: (CMOVZ (ADDconst <x.Type> [-1] x) (MOVWconst [0]) x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpMIPSMOVWconst || v_0_0.AuxInt != -1 {
break
}
v.reset(OpMIPSCMOVZ)
return true
}
// match: (Select0 (MULTU x (MOVWconst [-1])))
- // cond:
// result: (CMOVZ (ADDconst <x.Type> [-1] x) (MOVWconst [0]) x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpMIPSMOVWconst || v_0_1.AuxInt != -1 {
break
}
v.reset(OpMIPSCMOVZ)
}
func rewriteValueMIPS_OpSelect0_10(v *Value) bool {
// match: (Select0 (MULTU (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [(c*d)>>32])
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (MULTU (MOVWconst [d]) (MOVWconst [c])))
- // cond:
// result: (MOVWconst [(c*d)>>32])
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (DIV (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [int64(int32(c)%int32(d))])
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (DIVU (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [int64(int32(uint32(c)%uint32(d)))])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select1 (Add32carry <t> x y))
- // cond:
// result: (SGTU <typ.Bool> x (ADD <t.FieldType(0)> x y))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (Sub32carry <t> x y))
- // cond:
// result: (SGTU <typ.Bool> (SUB <t.FieldType(0)> x y) x)
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (MULTU (MOVWconst [0]) _))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpMIPSMOVWconst || v_0_0.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (Select1 (MULTU _ (MOVWconst [0])))
- // cond:
// result: (MOVWconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_1.AuxInt != 0 {
+ if v_0_1.Op != OpMIPSMOVWconst || v_0_1.AuxInt != 0 {
break
}
v.reset(OpMIPSMOVWconst)
return true
}
// match: (Select1 (MULTU (MOVWconst [1]) x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_0.AuxInt != 1 {
+ if v_0_0.Op != OpMIPSMOVWconst || v_0_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select1 (MULTU x (MOVWconst [1])))
- // cond:
// result: x
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpMIPSMOVWconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select1 (MULTU (MOVWconst [-1]) x))
- // cond:
// result: (NEG <x.Type> x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpMIPSMOVWconst || v_0_0.AuxInt != -1 {
break
}
v.reset(OpMIPSNEG)
return true
}
// match: (Select1 (MULTU x (MOVWconst [-1])))
- // cond:
// result: (NEG <x.Type> x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPSMOVWconst {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpMIPSMOVWconst || v_0_1.AuxInt != -1 {
break
}
v.reset(OpMIPSNEG)
}
func rewriteValueMIPS_OpSelect1_10(v *Value) bool {
// match: (Select1 (MULTU (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [int64(int32(uint32(c)*uint32(d)))])
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (MULTU (MOVWconst [d]) (MOVWconst [c])))
- // cond:
// result: (MOVWconst [int64(int32(uint32(c)*uint32(d)))])
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (DIV (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [int64(int32(c)/int32(d))])
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (DIVU (MOVWconst [c]) (MOVWconst [d])))
- // cond:
// result: (MOVWconst [int64(int32(uint32(c)/uint32(d)))])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpSignmask_0(v *Value) bool {
// match: (Signmask x)
- // cond:
// result: (SRAconst x [31])
for {
x := v.Args[0]
func rewriteValueMIPS_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SRAconst (NEG <t> x) [31])
for {
t := v.Type
}
func rewriteValueMIPS_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (SQRTD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValueMIPS_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (SUBF x y)
for {
y := v.Args[1]
func rewriteValueMIPS_OpSub32withcarry_0(v *Value) bool {
b := v.Block
// match: (Sub32withcarry <t> x y c)
- // cond:
// result: (SUB (SUB <t> x y) c)
for {
t := v.Type
}
func rewriteValueMIPS_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (SUBD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValueMIPS_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] ptr mem)
- // cond:
// result: (MOVBstore ptr (MOVWconst [0]) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] ptr mem)
- // cond:
// result: (MOVBstore [1] ptr (MOVWconst [0]) (MOVBstore [0] ptr (MOVWconst [0]) mem))
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] ptr mem)
- // cond:
// result: (MOVBstore [3] ptr (MOVWconst [0]) (MOVBstore [2] ptr (MOVWconst [0]) (MOVBstore [1] ptr (MOVWconst [0]) (MOVBstore [0] ptr (MOVWconst [0]) mem))))
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [3] ptr mem)
- // cond:
// result: (MOVBstore [2] ptr (MOVWconst [0]) (MOVBstore [1] ptr (MOVWconst [0]) (MOVBstore [0] ptr (MOVWconst [0]) mem)))
for {
if v.AuxInt != 3 {
}
func rewriteValueMIPS_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVHUreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Zeromask x)
- // cond:
// result: (NEG (SGTU x (MOVWconst [0])))
for {
x := v.Args[0]
switch b.Kind {
case BlockMIPSEQ:
// match: (EQ (FPFlagTrue cmp) yes no)
- // cond:
// result: (FPF cmp yes no)
for v.Op == OpMIPSFPFlagTrue {
cmp := v.Args[0]
return true
}
// match: (EQ (FPFlagFalse cmp) yes no)
- // cond:
// result: (FPT cmp yes no)
for v.Op == OpMIPSFPFlagFalse {
cmp := v.Args[0]
return true
}
// match: (EQ (XORconst [1] cmp:(SGT _ _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTU _ _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTconst _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTUconst _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTzero _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTUzero _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (SGTUconst [1] x) yes no)
- // cond:
// result: (NE x yes no)
for v.Op == OpMIPSSGTUconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (SGTUzero x) yes no)
- // cond:
// result: (EQ x yes no)
for v.Op == OpMIPSSGTUzero {
x := v.Args[0]
return true
}
// match: (EQ (SGTconst [0] x) yes no)
- // cond:
// result: (GEZ x yes no)
for v.Op == OpMIPSSGTconst {
if v.AuxInt != 0 {
return true
}
// match: (EQ (SGTzero x) yes no)
- // cond:
// result: (LEZ x yes no)
for v.Op == OpMIPSSGTzero {
x := v.Args[0]
return true
}
// match: (EQ (MOVWconst [0]) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpMIPSMOVWconst {
if v.AuxInt != 0 {
}
case BlockIf:
// match: (If cond yes no)
- // cond:
// result: (NE cond yes no)
for {
cond := b.Control
}
case BlockMIPSNE:
// match: (NE (FPFlagTrue cmp) yes no)
- // cond:
// result: (FPT cmp yes no)
for v.Op == OpMIPSFPFlagTrue {
cmp := v.Args[0]
return true
}
// match: (NE (FPFlagFalse cmp) yes no)
- // cond:
// result: (FPF cmp yes no)
for v.Op == OpMIPSFPFlagFalse {
cmp := v.Args[0]
return true
}
// match: (NE (XORconst [1] cmp:(SGT _ _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTU _ _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTconst _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTUconst _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTzero _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTUzero _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPSXORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (SGTUconst [1] x) yes no)
- // cond:
// result: (EQ x yes no)
for v.Op == OpMIPSSGTUconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (SGTUzero x) yes no)
- // cond:
// result: (NE x yes no)
for v.Op == OpMIPSSGTUzero {
x := v.Args[0]
return true
}
// match: (NE (SGTconst [0] x) yes no)
- // cond:
// result: (LTZ x yes no)
for v.Op == OpMIPSSGTconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (SGTzero x) yes no)
- // cond:
// result: (GTZ x yes no)
for v.Op == OpMIPSSGTzero {
x := v.Args[0]
return true
}
// match: (NE (MOVWconst [0]) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpMIPSMOVWconst {
if v.AuxInt != 0 {
}
func rewriteValueMIPS64_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADDV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADDV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (ADDF x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAdd64_0(v *Value) bool {
// match: (Add64 x y)
- // cond:
// result: (ADDV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (ADDD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADDV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (ADDV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (MOVVaddr {sym} base)
for {
sym := v.Aux
}
func rewriteValueMIPS64_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAnd64_0(v *Value) bool {
// match: (And64 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpAtomicAdd32_0(v *Value) bool {
// match: (AtomicAdd32 ptr val mem)
- // cond:
// result: (LoweredAtomicAdd32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS64_OpAtomicAdd64_0(v *Value) bool {
// match: (AtomicAdd64 ptr val mem)
- // cond:
// result: (LoweredAtomicAdd64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS64_OpAtomicCompareAndSwap32_0(v *Value) bool {
// match: (AtomicCompareAndSwap32 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas32 ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueMIPS64_OpAtomicCompareAndSwap64_0(v *Value) bool {
// match: (AtomicCompareAndSwap64 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas64 ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueMIPS64_OpAtomicExchange32_0(v *Value) bool {
// match: (AtomicExchange32 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS64_OpAtomicExchange64_0(v *Value) bool {
// match: (AtomicExchange64 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS64_OpAtomicLoad32_0(v *Value) bool {
// match: (AtomicLoad32 ptr mem)
- // cond:
// result: (LoweredAtomicLoad32 ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS64_OpAtomicLoad64_0(v *Value) bool {
// match: (AtomicLoad64 ptr mem)
- // cond:
// result: (LoweredAtomicLoad64 ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS64_OpAtomicLoad8_0(v *Value) bool {
// match: (AtomicLoad8 ptr mem)
- // cond:
// result: (LoweredAtomicLoad8 ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS64_OpAtomicLoadPtr_0(v *Value) bool {
// match: (AtomicLoadPtr ptr mem)
- // cond:
// result: (LoweredAtomicLoad64 ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS64_OpAtomicStore32_0(v *Value) bool {
// match: (AtomicStore32 ptr val mem)
- // cond:
// result: (LoweredAtomicStore32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS64_OpAtomicStore64_0(v *Value) bool {
// match: (AtomicStore64 ptr val mem)
- // cond:
// result: (LoweredAtomicStore64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueMIPS64_OpAtomicStorePtrNoWB_0(v *Value) bool {
// match: (AtomicStorePtrNoWB ptr val mem)
- // cond:
// result: (LoweredAtomicStore64 ptr val mem)
for {
mem := v.Args[2]
func rewriteValueMIPS64_OpAvg64u_0(v *Value) bool {
b := v.Block
// match: (Avg64u <t> x y)
- // cond:
// result: (ADDV (SRLVconst <t> (SUBV <t> x y) [1]) y)
for {
t := v.Type
}
func rewriteValueMIPS64_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Com16 x)
- // cond:
// result: (NOR (MOVVconst [0]) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Com32 x)
- // cond:
// result: (NOR (MOVVconst [0]) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Com64 x)
- // cond:
// result: (NOR (MOVVconst [0]) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Com8 x)
- // cond:
// result: (NOR (MOVVconst [0]) x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVVconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS64_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVVconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS64_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (MOVFconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS64_OpConst64_0(v *Value) bool {
// match: (Const64 [val])
- // cond:
// result: (MOVVconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS64_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS64_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVVconst [val])
for {
val := v.AuxInt
}
func rewriteValueMIPS64_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVVconst [b])
for {
b := v.AuxInt
}
func rewriteValueMIPS64_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (MOVVconst [0])
for {
v.reset(OpMIPS64MOVVconst)
}
func rewriteValueMIPS64_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (TRUNCFW x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt32Fto64_0(v *Value) bool {
// match: (Cvt32Fto64 x)
- // cond:
// result: (TRUNCFV x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (MOVFD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F x)
- // cond:
// result: (MOVWF x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F x)
- // cond:
// result: (MOVWD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (TRUNCDW x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (MOVDF x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt64Fto64_0(v *Value) bool {
// match: (Cvt64Fto64 x)
- // cond:
// result: (TRUNCDV x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt64to32F_0(v *Value) bool {
// match: (Cvt64to32F x)
- // cond:
// result: (MOVVF x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpCvt64to64F_0(v *Value) bool {
// match: (Cvt64to64F x)
- // cond:
// result: (MOVVD x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 x y)
- // cond:
// result: (Select1 (DIVV (SignExt16to64 x) (SignExt16to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (Select1 (DIVVU (ZeroExt16to64 x) (ZeroExt16to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32 x y)
- // cond:
// result: (Select1 (DIVV (SignExt32to64 x) (SignExt32to64 y)))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (DIVF x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32u x y)
- // cond:
// result: (Select1 (DIVVU (ZeroExt32to64 x) (ZeroExt32to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div64 x y)
- // cond:
// result: (Select1 (DIVV x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (DIVD x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div64u x y)
- // cond:
// result: (Select1 (DIVVU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (Select1 (DIVV (SignExt8to64 x) (SignExt8to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (Select1 (DIVVU (ZeroExt8to64 x) (ZeroExt8to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq16 x y)
- // cond:
// result: (SGTU (MOVVconst [1]) (XOR (ZeroExt16to64 x) (ZeroExt16to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq32 x y)
- // cond:
// result: (SGTU (MOVVconst [1]) (XOR (ZeroExt32to64 x) (ZeroExt32to64 y)))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpEq32F_0(v *Value) bool {
b := v.Block
// match: (Eq32F x y)
- // cond:
// result: (FPFlagTrue (CMPEQF x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq64 x y)
- // cond:
// result: (SGTU (MOVVconst [1]) (XOR x y))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpEq64F_0(v *Value) bool {
b := v.Block
// match: (Eq64F x y)
- // cond:
// result: (FPFlagTrue (CMPEQD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq8 x y)
- // cond:
// result: (SGTU (MOVVconst [1]) (XOR (ZeroExt8to64 x) (ZeroExt8to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqB x y)
- // cond:
// result: (XOR (MOVVconst [1]) (XOR <typ.Bool> x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqPtr x y)
- // cond:
// result: (SGTU (MOVVconst [1]) (XOR x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT (SignExt16to64 y) (SignExt16to64 x)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU (ZeroExt16to64 y) (ZeroExt16to64 x)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT (SignExt32to64 y) (SignExt32to64 x)))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpGeq32F_0(v *Value) bool {
b := v.Block
// match: (Geq32F x y)
- // cond:
// result: (FPFlagTrue (CMPGEF x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU (ZeroExt32to64 y) (ZeroExt32to64 x)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq64 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT y x))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpGeq64F_0(v *Value) bool {
b := v.Block
// match: (Geq64F x y)
- // cond:
// result: (FPFlagTrue (CMPGED x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq64U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT (SignExt8to64 y) (SignExt8to64 x)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU (ZeroExt8to64 y) (ZeroExt8to64 x)))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpMIPS64LoweredGetCallerPC)
}
func rewriteValueMIPS64_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpMIPS64LoweredGetCallerSP)
}
func rewriteValueMIPS64_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpMIPS64LoweredGetClosurePtr)
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16 x y)
- // cond:
// result: (SGT (SignExt16to64 x) (SignExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16U x y)
- // cond:
// result: (SGTU (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater32 x y)
- // cond:
// result: (SGT (SignExt32to64 x) (SignExt32to64 y))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpGreater32F_0(v *Value) bool {
b := v.Block
// match: (Greater32F x y)
- // cond:
// result: (FPFlagTrue (CMPGTF x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater32U x y)
- // cond:
// result: (SGTU (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpGreater64_0(v *Value) bool {
// match: (Greater64 x y)
- // cond:
// result: (SGT x y)
for {
y := v.Args[1]
func rewriteValueMIPS64_OpGreater64F_0(v *Value) bool {
b := v.Block
// match: (Greater64F x y)
- // cond:
// result: (FPFlagTrue (CMPGTD x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpGreater64U_0(v *Value) bool {
// match: (Greater64U x y)
- // cond:
// result: (SGTU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8 x y)
- // cond:
// result: (SGT (SignExt8to64 x) (SignExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8U x y)
- // cond:
// result: (SGTU (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32 x y)
- // cond:
// result: (SRAVconst (Select1 <typ.Int64> (MULV (SignExt32to64 x) (SignExt32to64 y))) [32])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32u x y)
- // cond:
// result: (SRLVconst (Select1 <typ.UInt64> (MULVU (ZeroExt32to64 x) (ZeroExt32to64 y))) [32])
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul64 x y)
- // cond:
// result: (Select0 (MULV x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul64u x y)
- // cond:
// result: (Select0 (MULVU x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
}
func rewriteValueMIPS64_OpIsInBounds_0(v *Value) bool {
// match: (IsInBounds idx len)
- // cond:
// result: (SGTU len idx)
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (IsNonNil ptr)
- // cond:
// result: (SGTU ptr (MOVVconst [0]))
for {
ptr := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (IsSliceInBounds idx len)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU idx len))
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT (SignExt16to64 x) (SignExt16to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU (ZeroExt16to64 x) (ZeroExt16to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT (SignExt32to64 x) (SignExt32to64 y)))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpLeq32F_0(v *Value) bool {
b := v.Block
// match: (Leq32F x y)
- // cond:
// result: (FPFlagTrue (CMPGEF y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU (ZeroExt32to64 x) (ZeroExt32to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq64 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT x y))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpLeq64F_0(v *Value) bool {
b := v.Block
// match: (Leq64F x y)
- // cond:
// result: (FPFlagTrue (CMPGED y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq64U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8 x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGT (SignExt8to64 x) (SignExt8to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8U x y)
- // cond:
// result: (XOR (MOVVconst [1]) (SGTU (ZeroExt8to64 x) (ZeroExt8to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16 x y)
- // cond:
// result: (SGT (SignExt16to64 y) (SignExt16to64 x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16U x y)
- // cond:
// result: (SGTU (ZeroExt16to64 y) (ZeroExt16to64 x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less32 x y)
- // cond:
// result: (SGT (SignExt32to64 y) (SignExt32to64 x))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpLess32F_0(v *Value) bool {
b := v.Block
// match: (Less32F x y)
- // cond:
// result: (FPFlagTrue (CMPGTF y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less32U x y)
- // cond:
// result: (SGTU (ZeroExt32to64 y) (ZeroExt32to64 x))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpLess64_0(v *Value) bool {
// match: (Less64 x y)
- // cond:
// result: (SGT y x)
for {
y := v.Args[1]
func rewriteValueMIPS64_OpLess64F_0(v *Value) bool {
b := v.Block
// match: (Less64F x y)
- // cond:
// result: (FPFlagTrue (CMPGTD y x))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpLess64U_0(v *Value) bool {
// match: (Less64U x y)
- // cond:
// result: (SGTU y x)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8 x y)
- // cond:
// result: (SGT (SignExt8to64 y) (SignExt8to64 x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8U x y)
- // cond:
// result: (SGTU (ZeroExt8to64 y) (ZeroExt8to64 x))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (MOVVaddr {sym} base)
for {
sym := v.Aux
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SLLV <t> x (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SLLV <t> x (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SLLV <t> x y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SLLV <t> x (ZeroExt8to64 y)))
for {
t := v.Type
return true
}
// match: (ADDV x (NEGV y))
- // cond:
// result: (SUBV x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDV (NEGV y) x)
- // cond:
// result: (SUBV x y)
for {
x := v.Args[1]
}
func rewriteValueMIPS64_OpMIPS64ADDVconst_0(v *Value) bool {
// match: (ADDVconst [off1] (MOVVaddr [off2] {sym} ptr))
- // cond:
// result: (MOVVaddr [off1+off2] {sym} ptr)
for {
off1 := v.AuxInt
return true
}
// match: (ADDVconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ADDVconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [c+d])
for {
c := v.AuxInt
return true
}
// match: (AND x x)
- // cond:
// result: x
for {
x := v.Args[1]
}
func rewriteValueMIPS64_OpMIPS64ANDconst_0(v *Value) bool {
// match: (ANDconst [0] _)
- // cond:
// result: (MOVVconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ANDconst [-1] x)
- // cond:
// result: x
for {
if v.AuxInt != -1 {
return true
}
// match: (ANDconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [c&d])
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (ANDconst [d] x))
- // cond:
// result: (ANDconst [c&d] x)
for {
c := v.AuxInt
}
func rewriteValueMIPS64_OpMIPS64LoweredAtomicStore32_0(v *Value) bool {
// match: (LoweredAtomicStore32 ptr (MOVVconst [0]) mem)
- // cond:
// result: (LoweredAtomicStorezero32 ptr mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64LoweredAtomicStorezero32)
}
func rewriteValueMIPS64_OpMIPS64LoweredAtomicStore64_0(v *Value) bool {
// match: (LoweredAtomicStore64 ptr (MOVVconst [0]) mem)
- // cond:
// result: (LoweredAtomicStorezero64 ptr mem)
for {
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64LoweredAtomicStorezero64)
}
func rewriteValueMIPS64_OpMIPS64MOVBUreg_0(v *Value) bool {
// match: (MOVBUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg x:(MOVBUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBUreg (MOVVconst [c]))
- // cond:
// result: (MOVVconst [int64(uint8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS64_OpMIPS64MOVBreg_0(v *Value) bool {
// match: (MOVBreg x:(MOVBload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg x:(MOVBreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVBreg (MOVVconst [c]))
- // cond:
// result: (MOVVconst [int64(int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVVconst [0]) mem)
- // cond:
// result: (MOVBstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVBstorezero)
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWUreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
}
func rewriteValueMIPS64_OpMIPS64MOVHUreg_0(v *Value) bool {
// match: (MOVHUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVBUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg x:(MOVHUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHUreg (MOVVconst [c]))
- // cond:
// result: (MOVVconst [int64(uint16(c))])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS64_OpMIPS64MOVHreg_0(v *Value) bool {
// match: (MOVHreg x:(MOVBload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVBUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVHreg (MOVVconst [c]))
- // cond:
// result: (MOVVconst [int64(int16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVVconst [0]) mem)
- // cond:
// result: (MOVHstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVHstorezero)
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHUreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWUreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVVreg (MOVVconst [c]))
- // cond:
// result: (MOVVconst [c])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVVstore [off] {sym} ptr (MOVVconst [0]) mem)
- // cond:
// result: (MOVVstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVVstorezero)
}
func rewriteValueMIPS64_OpMIPS64MOVWUreg_0(v *Value) bool {
// match: (MOVWUreg x:(MOVBUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVHUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVWUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVBUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVHUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg x:(MOVWUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWUreg (MOVVconst [c]))
- // cond:
// result: (MOVVconst [int64(uint32(c))])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS64_OpMIPS64MOVWreg_0(v *Value) bool {
// match: (MOVWreg x:(MOVBload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHUload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWload _ _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVBUreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWreg _))
- // cond:
// result: (MOVVreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpMIPS64MOVWreg_10(v *Value) bool {
// match: (MOVWreg (MOVVconst [c]))
- // cond:
// result: (MOVVconst [int64(int32(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVVconst [0]) mem)
- // cond:
// result: (MOVWstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVWstorezero)
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWUreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
}
func rewriteValueMIPS64_OpMIPS64NEGV_0(v *Value) bool {
// match: (NEGV (MOVVconst [c]))
- // cond:
// result: (MOVVconst [-c])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS64_OpMIPS64NORconst_0(v *Value) bool {
// match: (NORconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [^(c|d)])
for {
c := v.AuxInt
return true
}
// match: (OR x x)
- // cond:
// result: x
for {
x := v.Args[1]
}
func rewriteValueMIPS64_OpMIPS64ORconst_0(v *Value) bool {
// match: (ORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ORconst [-1] _)
- // cond:
// result: (MOVVconst [-1])
for {
if v.AuxInt != -1 {
return true
}
// match: (ORconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [c|d])
for {
c := v.AuxInt
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVBUreg {
- break
- }
- if !(0xff < uint64(c)) {
+ if v_0.Op != OpMIPS64MOVBUreg || !(0xff < uint64(c)) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVHUreg {
- break
- }
- if !(0xffff < uint64(c)) {
+ if v_0.Op != OpMIPS64MOVHUreg || !(0xffff < uint64(c)) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVBreg {
- break
- }
- if !(0x7f < c) {
+ if v_0.Op != OpMIPS64MOVBreg || !(0x7f < c) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVBreg {
- break
- }
- if !(c <= -0x80) {
+ if v_0.Op != OpMIPS64MOVBreg || !(c <= -0x80) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVBUreg {
- break
- }
- if !(0xff < c) {
+ if v_0.Op != OpMIPS64MOVBUreg || !(0xff < c) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVBUreg {
- break
- }
- if !(c < 0) {
+ if v_0.Op != OpMIPS64MOVBUreg || !(c < 0) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVHreg {
- break
- }
- if !(0x7fff < c) {
+ if v_0.Op != OpMIPS64MOVHreg || !(0x7fff < c) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVHreg {
- break
- }
- if !(c <= -0x8000) {
+ if v_0.Op != OpMIPS64MOVHreg || !(c <= -0x8000) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVHUreg {
- break
- }
- if !(0xffff < c) {
+ if v_0.Op != OpMIPS64MOVHUreg || !(0xffff < c) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVHUreg {
- break
- }
- if !(c < 0) {
+ if v_0.Op != OpMIPS64MOVHUreg || !(c < 0) {
break
}
v.reset(OpMIPS64MOVVconst)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVWUreg {
- break
- }
- if !(c < 0) {
+ if v_0.Op != OpMIPS64MOVWUreg || !(c < 0) {
break
}
v.reset(OpMIPS64MOVVconst)
return true
}
// match: (SLLV x (MOVVconst [c]))
- // cond:
// result: (SLLVconst x [c])
for {
_ = v.Args[1]
}
func rewriteValueMIPS64_OpMIPS64SLLVconst_0(v *Value) bool {
// match: (SLLVconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [d<<uint64(c)])
for {
c := v.AuxInt
return true
}
// match: (SRAV x (MOVVconst [c]))
- // cond:
// result: (SRAVconst x [c])
for {
_ = v.Args[1]
}
func rewriteValueMIPS64_OpMIPS64SRAVconst_0(v *Value) bool {
// match: (SRAVconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [d>>uint64(c)])
for {
c := v.AuxInt
return true
}
// match: (SRLV x (MOVVconst [c]))
- // cond:
// result: (SRLVconst x [c])
for {
_ = v.Args[1]
}
func rewriteValueMIPS64_OpMIPS64SRLVconst_0(v *Value) bool {
// match: (SRLVconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [int64(uint64(d)>>uint64(c))])
for {
c := v.AuxInt
return true
}
// match: (SUBV x x)
- // cond:
// result: (MOVVconst [0])
for {
x := v.Args[1]
return true
}
// match: (SUBV (MOVVconst [0]) x)
- // cond:
// result: (NEGV x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpMIPS64MOVVconst || v_0.AuxInt != 0 {
break
}
v.reset(OpMIPS64NEGV)
}
func rewriteValueMIPS64_OpMIPS64SUBVconst_0(v *Value) bool {
// match: (SUBVconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SUBVconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [d-c])
for {
c := v.AuxInt
return true
}
// match: (XOR x x)
- // cond:
// result: (MOVVconst [0])
for {
x := v.Args[1]
}
func rewriteValueMIPS64_OpMIPS64XORconst_0(v *Value) bool {
// match: (XORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (XORconst [-1] x)
- // cond:
// result: (NORconst [0] x)
for {
if v.AuxInt != -1 {
return true
}
// match: (XORconst [c] (MOVVconst [d]))
- // cond:
// result: (MOVVconst [c^d])
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 x y)
- // cond:
// result: (Select0 (DIVV (SignExt16to64 x) (SignExt16to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (Select0 (DIVVU (ZeroExt16to64 x) (ZeroExt16to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32 x y)
- // cond:
// result: (Select0 (DIVV (SignExt32to64 x) (SignExt32to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32u x y)
- // cond:
// result: (Select0 (DIVVU (ZeroExt32to64 x) (ZeroExt32to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod64 x y)
- // cond:
// result: (Select0 (DIVV x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod64u x y)
- // cond:
// result: (Select0 (DIVVU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (Select0 (DIVV (SignExt8to64 x) (SignExt8to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (Select0 (DIVVU (ZeroExt8to64 x) (ZeroExt8to64 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVBstore [1] dst (MOVBload [1] src mem) (MOVBstore dst (MOVBload src mem) mem))
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVBstore [3] dst (MOVBload [3] src mem) (MOVBstore [2] dst (MOVBload [2] src mem) (MOVBstore [1] dst (MOVBload [1] src mem) (MOVBstore dst (MOVBload src mem) mem))))
for {
if v.AuxInt != 4 {
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBload [2] src mem) (MOVBstore [1] dst (MOVBload [1] src mem) (MOVBstore dst (MOVBload src mem) mem)))
for {
if v.AuxInt != 3 {
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul16 x y)
- // cond:
// result: (Select1 (MULVU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul32 x y)
- // cond:
// result: (Select1 (MULVU x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (MULF x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul64 x y)
- // cond:
// result: (Select1 (MULVU x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (MULD x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul8 x y)
- // cond:
// result: (Select1 (MULVU x y))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (NEGV x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (NEGV x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpNeg32F_0(v *Value) bool {
// match: (Neg32F x)
- // cond:
// result: (NEGF x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpNeg64_0(v *Value) bool {
// match: (Neg64 x)
- // cond:
// result: (NEGV x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpNeg64F_0(v *Value) bool {
// match: (Neg64F x)
- // cond:
// result: (NEGD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (NEGV x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq16 x y)
- // cond:
// result: (SGTU (XOR (ZeroExt16to32 x) (ZeroExt16to64 y)) (MOVVconst [0]))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq32 x y)
- // cond:
// result: (SGTU (XOR (ZeroExt32to64 x) (ZeroExt32to64 y)) (MOVVconst [0]))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpNeq32F_0(v *Value) bool {
b := v.Block
// match: (Neq32F x y)
- // cond:
// result: (FPFlagFalse (CMPEQF x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq64 x y)
- // cond:
// result: (SGTU (XOR x y) (MOVVconst [0]))
for {
y := v.Args[1]
func rewriteValueMIPS64_OpNeq64F_0(v *Value) bool {
b := v.Block
// match: (Neq64F x y)
- // cond:
// result: (FPFlagFalse (CMPEQD x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq8 x y)
- // cond:
// result: (SGTU (XOR (ZeroExt8to64 x) (ZeroExt8to64 y)) (MOVVconst [0]))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpNeqB_0(v *Value) bool {
// match: (NeqB x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (NeqPtr x y)
- // cond:
// result: (SGTU (XOR x y) (MOVVconst [0]))
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueMIPS64_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (XORconst [1] x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpOffPtr_0(v *Value) bool {
// match: (OffPtr [off] ptr:(SP))
- // cond:
// result: (MOVVaddr [off] ptr)
for {
off := v.AuxInt
return true
}
// match: (OffPtr [off] ptr)
- // cond:
// result: (ADDVconst [off] ptr)
for {
off := v.AuxInt
}
func rewriteValueMIPS64_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpOr64_0(v *Value) bool {
// match: (Or64 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft16 <t> x (MOVVconst [c]))
- // cond:
// result: (Or16 (Lsh16x64 <t> x (MOVVconst [c&15])) (Rsh16Ux64 <t> x (MOVVconst [-c&15])))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft32 <t> x (MOVVconst [c]))
- // cond:
// result: (Or32 (Lsh32x64 <t> x (MOVVconst [c&31])) (Rsh32Ux64 <t> x (MOVVconst [-c&31])))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft64 <t> x (MOVVconst [c]))
- // cond:
// result: (Or64 (Lsh64x64 <t> x (MOVVconst [c&63])) (Rsh64Ux64 <t> x (MOVVconst [-c&63])))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft8 <t> x (MOVVconst [c]))
- // cond:
// result: (Or8 (Lsh8x64 <t> x (MOVVconst [c&7])) (Rsh8Ux64 <t> x (MOVVconst [-c&7])))
for {
t := v.Type
}
func rewriteValueMIPS64_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: x
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> (ZeroExt16to64 x) (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> (ZeroExt16to64 x) (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> (ZeroExt16to64 x) y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> (ZeroExt16to64 x) (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x16 <t> x y)
- // cond:
// result: (SRAV (SignExt16to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt16to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x32 <t> x y)
- // cond:
// result: (SRAV (SignExt16to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt32to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x64 <t> x y)
- // cond:
// result: (SRAV (SignExt16to64 x) (OR <t> (NEGV <t> (SGTU y (MOVVconst <typ.UInt64> [63]))) y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x8 <t> x y)
- // cond:
// result: (SRAV (SignExt16to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt8to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> (ZeroExt32to64 x) (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> (ZeroExt32to64 x) (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> (ZeroExt32to64 x) y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> (ZeroExt32to64 x) (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x16 <t> x y)
- // cond:
// result: (SRAV (SignExt32to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt16to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x32 <t> x y)
- // cond:
// result: (SRAV (SignExt32to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt32to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x64 <t> x y)
- // cond:
// result: (SRAV (SignExt32to64 x) (OR <t> (NEGV <t> (SGTU y (MOVVconst <typ.UInt64> [63]))) y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x8 <t> x y)
- // cond:
// result: (SRAV (SignExt32to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt8to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> x (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> x (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> x y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> x (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x16 <t> x y)
- // cond:
// result: (SRAV x (OR <t> (NEGV <t> (SGTU (ZeroExt16to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x32 <t> x y)
- // cond:
// result: (SRAV x (OR <t> (NEGV <t> (SGTU (ZeroExt32to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x64 <t> x y)
- // cond:
// result: (SRAV x (OR <t> (NEGV <t> (SGTU y (MOVVconst <typ.UInt64> [63]))) y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x8 <t> x y)
- // cond:
// result: (SRAV x (OR <t> (NEGV <t> (SGTU (ZeroExt8to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux16 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt16to64 y))) (SRLV <t> (ZeroExt8to64 x) (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux32 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt32to64 y))) (SRLV <t> (ZeroExt8to64 x) (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux64 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) y)) (SRLV <t> (ZeroExt8to64 x) y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux8 <t> x y)
- // cond:
// result: (AND (NEGV <t> (SGTU (MOVVconst <typ.UInt64> [64]) (ZeroExt8to64 y))) (SRLV <t> (ZeroExt8to64 x) (ZeroExt8to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x16 <t> x y)
- // cond:
// result: (SRAV (SignExt8to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt16to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt16to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x32 <t> x y)
- // cond:
// result: (SRAV (SignExt8to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt32to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt32to64 y)))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x64 <t> x y)
- // cond:
// result: (SRAV (SignExt8to64 x) (OR <t> (NEGV <t> (SGTU y (MOVVconst <typ.UInt64> [63]))) y))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x8 <t> x y)
- // cond:
// result: (SRAV (SignExt8to64 x) (OR <t> (NEGV <t> (SGTU (ZeroExt8to64 y) (MOVVconst <typ.UInt64> [63]))) (ZeroExt8to64 y)))
for {
t := v.Type
}
func rewriteValueMIPS64_OpSelect0_0(v *Value) bool {
// match: (Select0 (DIVVU _ (MOVVconst [1])))
- // cond:
// result: (MOVVconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpMIPS64MOVVconst)
return true
}
// match: (Select0 (DIVV (MOVVconst [c]) (MOVVconst [d])))
- // cond:
// result: (MOVVconst [c%d])
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (DIVVU (MOVVconst [c]) (MOVVconst [d])))
- // cond:
// result: (MOVVconst [int64(uint64(c)%uint64(d))])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS64_OpSelect1_0(v *Value) bool {
// match: (Select1 (MULVU x (MOVVconst [-1])))
- // cond:
// result: (NEGV x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != -1 {
break
}
v.reset(OpMIPS64NEGV)
return true
}
// match: (Select1 (MULVU (MOVVconst [-1]) x))
- // cond:
// result: (NEGV x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpMIPS64MOVVconst || v_0_0.AuxInt != -1 {
break
}
v.reset(OpMIPS64NEGV)
return true
}
// match: (Select1 (MULVU _ (MOVVconst [0])))
- // cond:
// result: (MOVVconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != 0 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVVconst)
return true
}
// match: (Select1 (MULVU (MOVVconst [0]) _))
- // cond:
// result: (MOVVconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpMIPS64MOVVconst || v_0_0.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVVconst)
return true
}
// match: (Select1 (MULVU x (MOVVconst [1])))
- // cond:
// result: x
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select1 (MULVU (MOVVconst [1]) x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_0.AuxInt != 1 {
+ if v_0_0.Op != OpMIPS64MOVVconst || v_0_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select1 (MULVU (MOVVconst [-1]) x))
- // cond:
// result: (NEGV x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpMIPS64MOVVconst || v_0_0.AuxInt != -1 {
break
}
v.reset(OpMIPS64NEGV)
return true
}
// match: (Select1 (MULVU x (MOVVconst [-1])))
- // cond:
// result: (NEGV x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != -1 {
break
}
v.reset(OpMIPS64NEGV)
}
func rewriteValueMIPS64_OpSelect1_10(v *Value) bool {
// match: (Select1 (MULVU (MOVVconst [0]) _))
- // cond:
// result: (MOVVconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpMIPS64MOVVconst || v_0_0.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVVconst)
return true
}
// match: (Select1 (MULVU _ (MOVVconst [0])))
- // cond:
// result: (MOVVconst [0])
for {
v_0 := v.Args[0]
}
_ = v_0.Args[1]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != 0 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 0 {
break
}
v.reset(OpMIPS64MOVVconst)
return true
}
// match: (Select1 (MULVU (MOVVconst [1]) x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_0.AuxInt != 1 {
+ if v_0_0.Op != OpMIPS64MOVVconst || v_0_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select1 (MULVU x (MOVVconst [1])))
- // cond:
// result: x
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select1 (DIVVU x (MOVVconst [1])))
- // cond:
// result: x
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpMIPS64MOVVconst || v_0_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Select1 (MULVU (MOVVconst [c]) (MOVVconst [d])))
- // cond:
// result: (MOVVconst [c*d])
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (MULVU (MOVVconst [d]) (MOVVconst [c])))
- // cond:
// result: (MOVVconst [c*d])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS64_OpSelect1_20(v *Value) bool {
// match: (Select1 (DIVV (MOVVconst [c]) (MOVVconst [d])))
- // cond:
// result: (MOVVconst [c/d])
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (DIVVU (MOVVconst [c]) (MOVVconst [d])))
- // cond:
// result: (MOVVconst [int64(uint64(c)/uint64(d))])
for {
v_0 := v.Args[0]
}
func rewriteValueMIPS64_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpSignExt16to64_0(v *Value) bool {
// match: (SignExt16to64 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpSignExt32to64_0(v *Value) bool {
// match: (SignExt32to64 x)
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpSignExt8to64_0(v *Value) bool {
// match: (SignExt8to64 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
func rewriteValueMIPS64_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SRAVconst (NEGV <t> x) [63])
for {
t := v.Type
}
func rewriteValueMIPS64_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (SQRTD x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValueMIPS64_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUBV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUBV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (SUBF x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpSub64_0(v *Value) bool {
// match: (Sub64 x y)
- // cond:
// result: (SUBV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (SUBD x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUBV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (SUBV x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpTrunc64to16_0(v *Value) bool {
// match: (Trunc64to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpTrunc64to32_0(v *Value) bool {
// match: (Trunc64to32 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpTrunc64to8_0(v *Value) bool {
// match: (Trunc64to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValueMIPS64_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpXor64_0(v *Value) bool {
// match: (Xor64 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueMIPS64_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] ptr mem)
- // cond:
// result: (MOVBstore ptr (MOVVconst [0]) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] ptr mem)
- // cond:
// result: (MOVBstore [1] ptr (MOVVconst [0]) (MOVBstore [0] ptr (MOVVconst [0]) mem))
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] ptr mem)
- // cond:
// result: (MOVBstore [3] ptr (MOVVconst [0]) (MOVBstore [2] ptr (MOVVconst [0]) (MOVBstore [1] ptr (MOVVconst [0]) (MOVBstore [0] ptr (MOVVconst [0]) mem))))
for {
if v.AuxInt != 4 {
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Zero [3] ptr mem)
- // cond:
// result: (MOVBstore [2] ptr (MOVVconst [0]) (MOVBstore [1] ptr (MOVVconst [0]) (MOVBstore [0] ptr (MOVVconst [0]) mem)))
for {
if v.AuxInt != 3 {
}
func rewriteValueMIPS64_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVHUreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpZeroExt16to64_0(v *Value) bool {
// match: (ZeroExt16to64 x)
- // cond:
// result: (MOVHUreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpZeroExt32to64_0(v *Value) bool {
// match: (ZeroExt32to64 x)
- // cond:
// result: (MOVWUreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
}
func rewriteValueMIPS64_OpZeroExt8to64_0(v *Value) bool {
// match: (ZeroExt8to64 x)
- // cond:
// result: (MOVBUreg x)
for {
x := v.Args[0]
switch b.Kind {
case BlockMIPS64EQ:
// match: (EQ (FPFlagTrue cmp) yes no)
- // cond:
// result: (FPF cmp yes no)
for v.Op == OpMIPS64FPFlagTrue {
cmp := v.Args[0]
return true
}
// match: (EQ (FPFlagFalse cmp) yes no)
- // cond:
// result: (FPT cmp yes no)
for v.Op == OpMIPS64FPFlagFalse {
cmp := v.Args[0]
return true
}
// match: (EQ (XORconst [1] cmp:(SGT _ _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTU _ _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTconst _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (XORconst [1] cmp:(SGTUconst _)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (SGTUconst [1] x) yes no)
- // cond:
// result: (NE x yes no)
for v.Op == OpMIPS64SGTUconst {
if v.AuxInt != 1 {
return true
}
// match: (EQ (SGTU x (MOVVconst [0])) yes no)
- // cond:
// result: (EQ x yes no)
for v.Op == OpMIPS64SGTU {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
b.Kind = BlockMIPS64EQ
return true
}
// match: (EQ (SGTconst [0] x) yes no)
- // cond:
// result: (GEZ x yes no)
for v.Op == OpMIPS64SGTconst {
if v.AuxInt != 0 {
return true
}
// match: (EQ (SGT x (MOVVconst [0])) yes no)
- // cond:
// result: (LEZ x yes no)
for v.Op == OpMIPS64SGT {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
b.Kind = BlockMIPS64LEZ
return true
}
// match: (EQ (MOVVconst [0]) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpMIPS64MOVVconst {
if v.AuxInt != 0 {
}
case BlockIf:
// match: (If cond yes no)
- // cond:
// result: (NE cond yes no)
for {
cond := b.Control
}
case BlockMIPS64NE:
// match: (NE (FPFlagTrue cmp) yes no)
- // cond:
// result: (FPT cmp yes no)
for v.Op == OpMIPS64FPFlagTrue {
cmp := v.Args[0]
return true
}
// match: (NE (FPFlagFalse cmp) yes no)
- // cond:
// result: (FPF cmp yes no)
for v.Op == OpMIPS64FPFlagFalse {
cmp := v.Args[0]
return true
}
// match: (NE (XORconst [1] cmp:(SGT _ _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTU _ _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTconst _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (XORconst [1] cmp:(SGTUconst _)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpMIPS64XORconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (SGTUconst [1] x) yes no)
- // cond:
// result: (EQ x yes no)
for v.Op == OpMIPS64SGTUconst {
if v.AuxInt != 1 {
return true
}
// match: (NE (SGTU x (MOVVconst [0])) yes no)
- // cond:
// result: (NE x yes no)
for v.Op == OpMIPS64SGTU {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
b.Kind = BlockMIPS64NE
return true
}
// match: (NE (SGTconst [0] x) yes no)
- // cond:
// result: (LTZ x yes no)
for v.Op == OpMIPS64SGTconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (SGT x (MOVVconst [0])) yes no)
- // cond:
// result: (GTZ x yes no)
for v.Op == OpMIPS64SGT {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpMIPS64MOVVconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpMIPS64MOVVconst || v_1.AuxInt != 0 {
break
}
b.Kind = BlockMIPS64GTZ
return true
}
// match: (NE (MOVVconst [0]) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpMIPS64MOVVconst {
if v.AuxInt != 0 {
}
func rewriteValuePPC64_OpAbs_0(v *Value) bool {
// match: (Abs x)
- // cond:
// result: (FABS x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (FADDS x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAdd64_0(v *Value) bool {
// match: (Add64 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (FADD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAdd64carry_0(v *Value) bool {
// match: (Add64carry x y c)
- // cond:
// result: (LoweredAdd64Carry x y c)
for {
c := v.Args[2]
}
func rewriteValuePPC64_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (MOVDaddr {sym} base)
for {
sym := v.Aux
}
func rewriteValuePPC64_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAnd64_0(v *Value) bool {
// match: (And64 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpAtomicAdd32_0(v *Value) bool {
// match: (AtomicAdd32 ptr val mem)
- // cond:
// result: (LoweredAtomicAdd32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicAdd64_0(v *Value) bool {
// match: (AtomicAdd64 ptr val mem)
- // cond:
// result: (LoweredAtomicAdd64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicAnd8_0(v *Value) bool {
// match: (AtomicAnd8 ptr val mem)
- // cond:
// result: (LoweredAtomicAnd8 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicCompareAndSwap32_0(v *Value) bool {
// match: (AtomicCompareAndSwap32 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas32 [1] ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValuePPC64_OpAtomicCompareAndSwap64_0(v *Value) bool {
// match: (AtomicCompareAndSwap64 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas64 [1] ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValuePPC64_OpAtomicCompareAndSwapRel32_0(v *Value) bool {
// match: (AtomicCompareAndSwapRel32 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas32 [0] ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValuePPC64_OpAtomicExchange32_0(v *Value) bool {
// match: (AtomicExchange32 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicExchange64_0(v *Value) bool {
// match: (AtomicExchange64 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicLoad32_0(v *Value) bool {
// match: (AtomicLoad32 ptr mem)
- // cond:
// result: (LoweredAtomicLoad32 [1] ptr mem)
for {
mem := v.Args[1]
}
func rewriteValuePPC64_OpAtomicLoad64_0(v *Value) bool {
// match: (AtomicLoad64 ptr mem)
- // cond:
// result: (LoweredAtomicLoad64 [1] ptr mem)
for {
mem := v.Args[1]
}
func rewriteValuePPC64_OpAtomicLoad8_0(v *Value) bool {
// match: (AtomicLoad8 ptr mem)
- // cond:
// result: (LoweredAtomicLoad8 [1] ptr mem)
for {
mem := v.Args[1]
}
func rewriteValuePPC64_OpAtomicLoadAcq32_0(v *Value) bool {
// match: (AtomicLoadAcq32 ptr mem)
- // cond:
// result: (LoweredAtomicLoad32 [0] ptr mem)
for {
mem := v.Args[1]
}
func rewriteValuePPC64_OpAtomicLoadPtr_0(v *Value) bool {
// match: (AtomicLoadPtr ptr mem)
- // cond:
// result: (LoweredAtomicLoadPtr [1] ptr mem)
for {
mem := v.Args[1]
}
func rewriteValuePPC64_OpAtomicOr8_0(v *Value) bool {
// match: (AtomicOr8 ptr val mem)
- // cond:
// result: (LoweredAtomicOr8 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicStore32_0(v *Value) bool {
// match: (AtomicStore32 ptr val mem)
- // cond:
// result: (LoweredAtomicStore32 [1] ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicStore64_0(v *Value) bool {
// match: (AtomicStore64 ptr val mem)
- // cond:
// result: (LoweredAtomicStore64 [1] ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValuePPC64_OpAtomicStoreRel32_0(v *Value) bool {
// match: (AtomicStoreRel32 ptr val mem)
- // cond:
// result: (LoweredAtomicStore32 [0] ptr val mem)
for {
mem := v.Args[2]
func rewriteValuePPC64_OpAvg64u_0(v *Value) bool {
b := v.Block
// match: (Avg64u <t> x y)
- // cond:
// result: (ADD (SRDconst <t> (SUB <t> x y) [1]) y)
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen32 x)
- // cond:
// result: (SUB (MOVDconst [32]) (CNTLZW <typ.Int> x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen64 x)
- // cond:
// result: (SUB (MOVDconst [64]) (CNTLZD <typ.Int> x))
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCeil_0(v *Value) bool {
// match: (Ceil x)
- // cond:
// result: (FCEIL x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
}
func rewriteValuePPC64_OpCom16_0(v *Value) bool {
// match: (Com16 x)
- // cond:
// result: (NOR x x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCom32_0(v *Value) bool {
// match: (Com32 x)
- // cond:
// result: (NOR x x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCom64_0(v *Value) bool {
// match: (Com64 x)
- // cond:
// result: (NOR x x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCom8_0(v *Value) bool {
// match: (Com8 x)
- // cond:
// result: (NOR x x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValuePPC64_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValuePPC64_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (FMOVSconst [val])
for {
val := v.AuxInt
}
func rewriteValuePPC64_OpConst64_0(v *Value) bool {
// match: (Const64 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValuePPC64_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (FMOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValuePPC64_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValuePPC64_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVDconst [b])
for {
b := v.AuxInt
}
func rewriteValuePPC64_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (MOVDconst [0])
for {
v.reset(OpPPC64MOVDconst)
}
func rewriteValuePPC64_OpCopysign_0(v *Value) bool {
// match: (Copysign x y)
- // cond:
// result: (FCPSGN y x)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz16 x)
- // cond:
// result: (POPCNTW (MOVHZreg (ANDN <typ.Int16> (ADDconst <typ.Int16> [-1] x) x)))
for {
x := v.Args[0]
return true
}
// match: (Ctz32 x)
- // cond:
// result: (CNTTZW (MOVWZreg x))
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCtz32NonZero_0(v *Value) bool {
// match: (Ctz32NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
return true
}
// match: (Ctz64 x)
- // cond:
// result: (CNTTZD x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCtz64NonZero_0(v *Value) bool {
// match: (Ctz64NonZero x)
- // cond:
// result: (Ctz64 x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz8 x)
- // cond:
// result: (POPCNTB (MOVBZreg (ANDN <typ.UInt8> (ADDconst <typ.UInt8> [-1] x) x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32Fto32 x)
- // cond:
// result: (MFVSRD (FCTIWZ x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32Fto64 x)
- // cond:
// result: (MFVSRD (FCTIDZ x))
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: x
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32to32F x)
- // cond:
// result: (FCFIDS (MTVSRD (SignExt32to64 x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32to64F x)
- // cond:
// result: (FCFID (MTVSRD (SignExt32to64 x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt64Fto32 x)
- // cond:
// result: (MFVSRD (FCTIWZ x))
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (FRSP x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt64Fto64 x)
- // cond:
// result: (MFVSRD (FCTIDZ x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt64to32F x)
- // cond:
// result: (FCFIDS (MTVSRD x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt64to64F x)
- // cond:
// result: (FCFID (MTVSRD x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 x y)
- // cond:
// result: (DIVW (SignExt16to32 x) (SignExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (DIVWU (ZeroExt16to32 x) (ZeroExt16to32 y))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpDiv32_0(v *Value) bool {
// match: (Div32 x y)
- // cond:
// result: (DIVW x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (FDIVS x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpDiv32u_0(v *Value) bool {
// match: (Div32u x y)
- // cond:
// result: (DIVWU x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpDiv64_0(v *Value) bool {
// match: (Div64 x y)
- // cond:
// result: (DIVD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (FDIV x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpDiv64u_0(v *Value) bool {
// match: (Div64u x y)
- // cond:
// result: (DIVDU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (DIVW (SignExt8to32 x) (SignExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (DIVWU (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
return true
}
// match: (Eq16 x y)
- // cond:
// result: (Equal (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValuePPC64_OpEq32_0(v *Value) bool {
b := v.Block
// match: (Eq32 x y)
- // cond:
// result: (Equal (CMPW x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpEq32F_0(v *Value) bool {
b := v.Block
// match: (Eq32F x y)
- // cond:
// result: (Equal (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpEq64_0(v *Value) bool {
b := v.Block
// match: (Eq64 x y)
- // cond:
// result: (Equal (CMP x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpEq64F_0(v *Value) bool {
b := v.Block
// match: (Eq64F x y)
- // cond:
// result: (Equal (FCMPU x y))
for {
y := v.Args[1]
return true
}
// match: (Eq8 x y)
- // cond:
// result: (Equal (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqB x y)
- // cond:
// result: (ANDconst [1] (EQV x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpEqPtr_0(v *Value) bool {
b := v.Block
// match: (EqPtr x y)
- // cond:
// result: (Equal (CMP x y))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpFloor_0(v *Value) bool {
// match: (Floor x)
- // cond:
// result: (FFLOOR x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16 x y)
- // cond:
// result: (GreaterEqual (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16U x y)
- // cond:
// result: (GreaterEqual (CMPWU (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGeq32_0(v *Value) bool {
b := v.Block
// match: (Geq32 x y)
- // cond:
// result: (GreaterEqual (CMPW x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGeq32F_0(v *Value) bool {
b := v.Block
// match: (Geq32F x y)
- // cond:
// result: (FGreaterEqual (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGeq32U_0(v *Value) bool {
b := v.Block
// match: (Geq32U x y)
- // cond:
// result: (GreaterEqual (CMPWU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGeq64_0(v *Value) bool {
b := v.Block
// match: (Geq64 x y)
- // cond:
// result: (GreaterEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGeq64F_0(v *Value) bool {
b := v.Block
// match: (Geq64F x y)
- // cond:
// result: (FGreaterEqual (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGeq64U_0(v *Value) bool {
b := v.Block
// match: (Geq64U x y)
- // cond:
// result: (GreaterEqual (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8 x y)
- // cond:
// result: (GreaterEqual (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8U x y)
- // cond:
// result: (GreaterEqual (CMPWU (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpPPC64LoweredGetCallerPC)
}
func rewriteValuePPC64_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpPPC64LoweredGetCallerSP)
}
func rewriteValuePPC64_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpPPC64LoweredGetClosurePtr)
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16 x y)
- // cond:
// result: (GreaterThan (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16U x y)
- // cond:
// result: (GreaterThan (CMPWU (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGreater32_0(v *Value) bool {
b := v.Block
// match: (Greater32 x y)
- // cond:
// result: (GreaterThan (CMPW x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGreater32F_0(v *Value) bool {
b := v.Block
// match: (Greater32F x y)
- // cond:
// result: (FGreaterThan (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGreater32U_0(v *Value) bool {
b := v.Block
// match: (Greater32U x y)
- // cond:
// result: (GreaterThan (CMPWU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGreater64_0(v *Value) bool {
b := v.Block
// match: (Greater64 x y)
- // cond:
// result: (GreaterThan (CMP x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGreater64F_0(v *Value) bool {
b := v.Block
// match: (Greater64F x y)
- // cond:
// result: (FGreaterThan (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpGreater64U_0(v *Value) bool {
b := v.Block
// match: (Greater64U x y)
- // cond:
// result: (GreaterThan (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8 x y)
- // cond:
// result: (GreaterThan (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8U x y)
- // cond:
// result: (GreaterThan (CMPWU (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpHmul32_0(v *Value) bool {
// match: (Hmul32 x y)
- // cond:
// result: (MULHW x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpHmul32u_0(v *Value) bool {
// match: (Hmul32u x y)
- // cond:
// result: (MULHWU x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpHmul64_0(v *Value) bool {
// match: (Hmul64 x y)
- // cond:
// result: (MULHD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpHmul64u_0(v *Value) bool {
// match: (Hmul64u x y)
- // cond:
// result: (MULHDU x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
func rewriteValuePPC64_OpIsInBounds_0(v *Value) bool {
b := v.Block
// match: (IsInBounds idx len)
- // cond:
// result: (LessThan (CMPU idx len))
for {
len := v.Args[1]
func rewriteValuePPC64_OpIsNonNil_0(v *Value) bool {
b := v.Block
// match: (IsNonNil ptr)
- // cond:
// result: (NotEqual (CMPconst [0] ptr))
for {
ptr := v.Args[0]
func rewriteValuePPC64_OpIsSliceInBounds_0(v *Value) bool {
b := v.Block
// match: (IsSliceInBounds idx len)
- // cond:
// result: (LessEqual (CMPU idx len))
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16 x y)
- // cond:
// result: (LessEqual (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16U x y)
- // cond:
// result: (LessEqual (CMPWU (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLeq32_0(v *Value) bool {
b := v.Block
// match: (Leq32 x y)
- // cond:
// result: (LessEqual (CMPW x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLeq32F_0(v *Value) bool {
b := v.Block
// match: (Leq32F x y)
- // cond:
// result: (FLessEqual (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLeq32U_0(v *Value) bool {
b := v.Block
// match: (Leq32U x y)
- // cond:
// result: (LessEqual (CMPWU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLeq64_0(v *Value) bool {
b := v.Block
// match: (Leq64 x y)
- // cond:
// result: (LessEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLeq64F_0(v *Value) bool {
b := v.Block
// match: (Leq64F x y)
- // cond:
// result: (FLessEqual (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLeq64U_0(v *Value) bool {
b := v.Block
// match: (Leq64U x y)
- // cond:
// result: (LessEqual (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8 x y)
- // cond:
// result: (LessEqual (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8U x y)
- // cond:
// result: (LessEqual (CMPWU (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16 x y)
- // cond:
// result: (LessThan (CMPW (SignExt16to32 x) (SignExt16to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16U x y)
- // cond:
// result: (LessThan (CMPWU (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLess32_0(v *Value) bool {
b := v.Block
// match: (Less32 x y)
- // cond:
// result: (LessThan (CMPW x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLess32F_0(v *Value) bool {
b := v.Block
// match: (Less32F x y)
- // cond:
// result: (FLessThan (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLess32U_0(v *Value) bool {
b := v.Block
// match: (Less32U x y)
- // cond:
// result: (LessThan (CMPWU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLess64_0(v *Value) bool {
b := v.Block
// match: (Less64 x y)
- // cond:
// result: (LessThan (CMP x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLess64F_0(v *Value) bool {
b := v.Block
// match: (Less64F x y)
- // cond:
// result: (FLessThan (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpLess64U_0(v *Value) bool {
b := v.Block
// match: (Less64U x y)
- // cond:
// result: (LessThan (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8 x y)
- // cond:
// result: (LessThan (CMPW (SignExt8to32 x) (SignExt8to32 y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8U x y)
- // cond:
// result: (LessThan (CMPWU (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (MOVDaddr {sym} base)
for {
sym := v.Aux
return true
}
// match: (Lsh16x16 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh16x32 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh16x64 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] y))))
for {
y := v.Args[1]
return true
}
// match: (Lsh16x8 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh32x16 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh32x32 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh32x64 x (AND y (MOVDconst [31])))
- // cond:
// result: (SLW x (ANDconst <typ.Int32> [31] y))
for {
_ = v.Args[1]
_ = v_1.Args[1]
y := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1.AuxInt != 31 {
+ if v_1_1.Op != OpPPC64MOVDconst || v_1_1.AuxInt != 31 {
break
}
v.reset(OpPPC64SLW)
return true
}
// match: (Lsh32x64 x (AND (MOVDconst [31]) y))
- // cond:
// result: (SLW x (ANDconst <typ.Int32> [31] y))
for {
_ = v.Args[1]
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 31 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 31 {
break
}
v.reset(OpPPC64SLW)
return true
}
// match: (Lsh32x64 x (ANDconst <typ.Int32> [31] y))
- // cond:
// result: (SLW x (ANDconst <typ.Int32> [31] y))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1.Type != typ.Int32 {
- break
- }
- if v_1.AuxInt != 31 {
+ if v_1.Op != OpPPC64ANDconst || v_1.Type != typ.Int32 || v_1.AuxInt != 31 {
break
}
y := v_1.Args[0]
return true
}
// match: (Lsh32x64 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] y))))
for {
y := v.Args[1]
return true
}
// match: (Lsh32x8 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh64x16 x y)
- // cond:
// result: (SLD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh64x32 x y)
- // cond:
// result: (SLD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh64x64 x (AND y (MOVDconst [63])))
- // cond:
// result: (SLD x (ANDconst <typ.Int64> [63] y))
for {
_ = v.Args[1]
_ = v_1.Args[1]
y := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1.AuxInt != 63 {
+ if v_1_1.Op != OpPPC64MOVDconst || v_1_1.AuxInt != 63 {
break
}
v.reset(OpPPC64SLD)
return true
}
// match: (Lsh64x64 x (AND (MOVDconst [63]) y))
- // cond:
// result: (SLD x (ANDconst <typ.Int64> [63] y))
for {
_ = v.Args[1]
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 63 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 63 {
break
}
v.reset(OpPPC64SLD)
return true
}
// match: (Lsh64x64 x (ANDconst <typ.Int64> [63] y))
- // cond:
// result: (SLD x (ANDconst <typ.Int64> [63] y))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1.Type != typ.Int64 {
- break
- }
- if v_1.AuxInt != 63 {
+ if v_1.Op != OpPPC64ANDconst || v_1.Type != typ.Int64 || v_1.AuxInt != 63 {
break
}
y := v_1.Args[0]
return true
}
// match: (Lsh64x64 x y)
- // cond:
// result: (SLD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] y))))
for {
y := v.Args[1]
return true
}
// match: (Lsh64x8 x y)
- // cond:
// result: (SLD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh8x16 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh8x32 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Lsh8x64 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] y))))
for {
y := v.Args[1]
return true
}
// match: (Lsh8x8 x y)
- // cond:
// result: (SLW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 x y)
- // cond:
// result: (Mod32 (SignExt16to32 x) (SignExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (Mod32u (ZeroExt16to32 x) (ZeroExt16to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32 x y)
- // cond:
// result: (SUB x (MULLW y (DIVW x y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32u x y)
- // cond:
// result: (SUB x (MULLW y (DIVWU x y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod64 x y)
- // cond:
// result: (SUB x (MULLD y (DIVD x y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod64u x y)
- // cond:
// result: (SUB x (MULLD y (DIVDU x y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (Mod32 (SignExt8to32 x) (SignExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (Mod32u (ZeroExt8to32 x) (ZeroExt8to32 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBZload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVHstore dst (MOVHZload src mem) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVWstore dst (MOVWZload src mem) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [8] dst src mem)
- // cond:
// result: (MOVWstore [4] dst (MOVWZload [4] src mem) (MOVWstore dst (MOVWZload src mem) mem))
for {
if v.AuxInt != 8 {
return true
}
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBZload [2] src mem) (MOVHstore dst (MOVHload src mem) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Move [5] dst src mem)
- // cond:
// result: (MOVBstore [4] dst (MOVBZload [4] src mem) (MOVWstore dst (MOVWZload src mem) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Move [6] dst src mem)
- // cond:
// result: (MOVHstore [4] dst (MOVHZload [4] src mem) (MOVWstore dst (MOVWZload src mem) mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Move [7] dst src mem)
- // cond:
// result: (MOVBstore [6] dst (MOVBZload [6] src mem) (MOVHstore [4] dst (MOVHZload [4] src mem) (MOVWstore dst (MOVWZload src mem) mem)))
for {
if v.AuxInt != 7 {
}
func rewriteValuePPC64_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (MULLW x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (MULLW x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (FMULS x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpMul64_0(v *Value) bool {
// match: (Mul64 x y)
- // cond:
// result: (MULLD x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (FMUL x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpMul64uhilo_0(v *Value) bool {
// match: (Mul64uhilo x y)
- // cond:
// result: (LoweredMuluhilo x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (MULLW x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpNeg32F_0(v *Value) bool {
// match: (Neg32F x)
- // cond:
// result: (FNEG x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpNeg64_0(v *Value) bool {
// match: (Neg64 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpNeg64F_0(v *Value) bool {
// match: (Neg64F x)
- // cond:
// result: (FNEG x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
return true
}
// match: (Neq16 x y)
- // cond:
// result: (NotEqual (CMPW (ZeroExt16to32 x) (ZeroExt16to32 y)))
for {
y := v.Args[1]
func rewriteValuePPC64_OpNeq32_0(v *Value) bool {
b := v.Block
// match: (Neq32 x y)
- // cond:
// result: (NotEqual (CMPW x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpNeq32F_0(v *Value) bool {
b := v.Block
// match: (Neq32F x y)
- // cond:
// result: (NotEqual (FCMPU x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpNeq64_0(v *Value) bool {
b := v.Block
// match: (Neq64 x y)
- // cond:
// result: (NotEqual (CMP x y))
for {
y := v.Args[1]
func rewriteValuePPC64_OpNeq64F_0(v *Value) bool {
b := v.Block
// match: (Neq64F x y)
- // cond:
// result: (NotEqual (FCMPU x y))
for {
y := v.Args[1]
return true
}
// match: (Neq8 x y)
- // cond:
// result: (NotEqual (CMPW (ZeroExt8to32 x) (ZeroExt8to32 y)))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpNeqB_0(v *Value) bool {
// match: (NeqB x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
func rewriteValuePPC64_OpNeqPtr_0(v *Value) bool {
b := v.Block
// match: (NeqPtr x y)
- // cond:
// result: (NotEqual (CMP x y))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValuePPC64_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (XORconst [1] x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (OffPtr [off] ptr)
- // cond:
// result: (ADD (MOVDconst <typ.Int64> [off]) ptr)
for {
off := v.AuxInt
}
func rewriteValuePPC64_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpOr64_0(v *Value) bool {
// match: (Or64 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpPPC64ROTLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpPPC64ROTLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpPPC64ROTLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpPPC64ROTLWconst)
return true
}
// match: (ADD (SLD x (ANDconst <typ.Int64> [63] y)) (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y))))
- // cond:
// result: (ROTL x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1.Type != typ.Int64 {
- break
- }
- if v_0_1.AuxInt != 63 {
+ if v_0_1.Op != OpPPC64ANDconst || v_0_1.Type != typ.Int64 || v_0_1.AuxInt != 63 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64SUB {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64SUB || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 64 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 64 {
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1_1.Type != typ.UInt {
- break
- }
- if v_1_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpPPC64ANDconst || v_1_1_1.Type != typ.UInt || v_1_1_1.AuxInt != 63 || y != v_1_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTL)
return true
}
// match: (ADD (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y))) (SLD x (ANDconst <typ.Int64> [63] y)))
- // cond:
// result: (ROTL x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64SUB {
- break
- }
- if v_0_1.Type != typ.UInt {
+ if v_0_1.Op != OpPPC64SUB || v_0_1.Type != typ.UInt {
break
}
_ = v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0_1_0.AuxInt != 64 {
+ if v_0_1_0.Op != OpPPC64MOVDconst || v_0_1_0.AuxInt != 64 {
break
}
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1_1.Type != typ.UInt {
- break
- }
- if v_0_1_1.AuxInt != 63 {
+ if v_0_1_1.Op != OpPPC64ANDconst || v_0_1_1.Type != typ.UInt || v_0_1_1.AuxInt != 63 {
break
}
y := v_0_1_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.Int64 {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.Int64 || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTL)
return true
}
// match: (ADD (SLW x (ANDconst <typ.Int32> [31] y)) (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y))))
- // cond:
// result: (ROTLW x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1.Type != typ.Int32 {
- break
- }
- if v_0_1.AuxInt != 31 {
+ if v_0_1.Op != OpPPC64ANDconst || v_0_1.Type != typ.Int32 || v_0_1.AuxInt != 31 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64SUB {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64SUB || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 32 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 32 {
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1_1.Type != typ.UInt {
- break
- }
- if v_1_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpPPC64ANDconst || v_1_1_1.Type != typ.UInt || v_1_1_1.AuxInt != 31 || y != v_1_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTLW)
return true
}
// match: (ADD (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y))) (SLW x (ANDconst <typ.Int32> [31] y)))
- // cond:
// result: (ROTLW x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64SUB {
- break
- }
- if v_0_1.Type != typ.UInt {
+ if v_0_1.Op != OpPPC64SUB || v_0_1.Type != typ.UInt {
break
}
_ = v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0_1_0.AuxInt != 32 {
+ if v_0_1_0.Op != OpPPC64MOVDconst || v_0_1_0.AuxInt != 32 {
break
}
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1_1.Type != typ.UInt {
- break
- }
- if v_0_1_1.AuxInt != 31 {
+ if v_0_1_1.Op != OpPPC64ANDconst || v_0_1_1.Type != typ.UInt || v_0_1_1.AuxInt != 31 {
break
}
y := v_0_1_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.Int32 {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.Int32 || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTLW)
return true
}
// match: (ADDconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ADDconst [c] (MOVDaddr [d] {sym} x))
- // cond:
// result: (MOVDaddr [c+d] {sym} x)
for {
c := v.AuxInt
}
func rewriteValuePPC64_OpPPC64AND_0(v *Value) bool {
// match: (AND x (NOR y y))
- // cond:
// result: (ANDN x y)
for {
_ = v.Args[1]
return true
}
// match: (AND (NOR y y) x)
- // cond:
// result: (ANDN x y)
for {
x := v.Args[1]
return true
}
// match: (AND (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c&d])
for {
_ = v.Args[1]
return true
}
// match: (AND (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c&d])
for {
_ = v.Args[1]
}
c := v_0.AuxInt
y := v.Args[1]
- if y.Op != OpPPC64MOVWZreg {
- break
- }
- if !(c&0xFFFFFFFF == 0xFFFFFFFF) {
+ if y.Op != OpPPC64MOVWZreg || !(c&0xFFFFFFFF == 0xFFFFFFFF) {
break
}
v.reset(OpCopy)
return true
}
// match: (AND (MOVDconst [0xFFFFFFFF]) y:(MOVWreg x))
- // cond:
// result: (MOVWZreg x)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0.AuxInt != 0xFFFFFFFF {
+ if v_0.Op != OpPPC64MOVDconst || v_0.AuxInt != 0xFFFFFFFF {
break
}
y := v.Args[1]
return true
}
// match: (AND y:(MOVWreg x) (MOVDconst [0xFFFFFFFF]))
- // cond:
// result: (MOVWZreg x)
for {
_ = v.Args[1]
}
x := y.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1.AuxInt != 0xFFFFFFFF {
+ if v_1.Op != OpPPC64MOVDconst || v_1.AuxInt != 0xFFFFFFFF {
break
}
v.reset(OpPPC64MOVWZreg)
}
func rewriteValuePPC64_OpPPC64AND_10(v *Value) bool {
// match: (AND (MOVDconst [c]) x:(MOVBZload _ _))
- // cond:
// result: (ANDconst [c&0xFF] x)
for {
_ = v.Args[1]
return true
}
// match: (AND x:(MOVBZload _ _) (MOVDconst [c]))
- // cond:
// result: (ANDconst [c&0xFF] x)
for {
_ = v.Args[1]
return true
}
// match: (AND x:(MOVBZload _ _) (MOVDconst [c]))
- // cond:
// result: (ANDconst [c&0xFF] x)
for {
_ = v.Args[1]
return true
}
// match: (AND (MOVDconst [c]) x:(MOVBZload _ _))
- // cond:
// result: (ANDconst [c&0xFF] x)
for {
_ = v.Args[1]
}
func rewriteValuePPC64_OpPPC64ANDconst_0(v *Value) bool {
// match: (ANDconst [c] (ANDconst [d] x))
- // cond:
// result: (ANDconst [c&d] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [-1] x)
- // cond:
// result: x
for {
if v.AuxInt != -1 {
return true
}
// match: (ANDconst [0] _)
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 0 {
for {
c := v.AuxInt
y := v.Args[0]
- if y.Op != OpPPC64MOVBZreg {
- break
- }
- if !(c&0xFF == 0xFF) {
+ if y.Op != OpPPC64MOVBZreg || !(c&0xFF == 0xFF) {
break
}
v.reset(OpCopy)
return true
}
// match: (ANDconst [0xFF] y:(MOVBreg _))
- // cond:
// result: y
for {
if v.AuxInt != 0xFF {
for {
c := v.AuxInt
y := v.Args[0]
- if y.Op != OpPPC64MOVHZreg {
- break
- }
- if !(c&0xFFFF == 0xFFFF) {
+ if y.Op != OpPPC64MOVHZreg || !(c&0xFFFF == 0xFFFF) {
break
}
v.reset(OpCopy)
return true
}
// match: (ANDconst [0xFFFF] y:(MOVHreg _))
- // cond:
// result: y
for {
if v.AuxInt != 0xFFFF {
return true
}
// match: (ANDconst [c] (MOVBreg x))
- // cond:
// result: (ANDconst [c&0xFF] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (MOVBZreg x))
- // cond:
// result: (ANDconst [c&0xFF] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (MOVHreg x))
- // cond:
// result: (ANDconst [c&0xFFFF] x)
for {
c := v.AuxInt
}
func rewriteValuePPC64_OpPPC64ANDconst_10(v *Value) bool {
// match: (ANDconst [c] (MOVHZreg x))
- // cond:
// result: (ANDconst [c&0xFFFF] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (MOVWreg x))
- // cond:
// result: (ANDconst [c&0xFFFFFFFF] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [c] (MOVWZreg x))
- // cond:
// result: (ANDconst [c&0xFFFFFFFF] x)
for {
c := v.AuxInt
func rewriteValuePPC64_OpPPC64CMPW_0(v *Value) bool {
b := v.Block
// match: (CMPW x (MOVWreg y))
- // cond:
// result: (CMPW x y)
for {
_ = v.Args[1]
return true
}
// match: (CMPW (MOVWreg x) y)
- // cond:
// result: (CMPW x y)
for {
y := v.Args[1]
func rewriteValuePPC64_OpPPC64CMPWU_0(v *Value) bool {
b := v.Block
// match: (CMPWU x (MOVWZreg y))
- // cond:
// result: (CMPWU x y)
for {
_ = v.Args[1]
return true
}
// match: (CMPWU (MOVWZreg x) y)
- // cond:
// result: (CMPWU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Equal (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagLT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (FlagGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (Equal (InvertFlags x))
- // cond:
// result: (Equal x)
for {
v_0 := v.Args[0]
return true
}
// match: (Equal cmp)
- // cond:
// result: (ISELB [2] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
}
func rewriteValuePPC64_OpPPC64FABS_0(v *Value) bool {
// match: (FABS (FMOVDconst [x]))
- // cond:
// result: (FMOVDconst [auxFrom64F(math.Abs(auxTo64F(x)))])
for {
v_0 := v.Args[0]
}
func rewriteValuePPC64_OpPPC64FADD_0(v *Value) bool {
// match: (FADD (FMUL x y) z)
- // cond:
// result: (FMADD x y z)
for {
z := v.Args[1]
return true
}
// match: (FADD z (FMUL x y))
- // cond:
// result: (FMADD x y z)
for {
_ = v.Args[1]
}
func rewriteValuePPC64_OpPPC64FADDS_0(v *Value) bool {
// match: (FADDS (FMULS x y) z)
- // cond:
// result: (FMADDS x y z)
for {
z := v.Args[1]
return true
}
// match: (FADDS z (FMULS x y))
- // cond:
// result: (FMADDS x y z)
for {
_ = v.Args[1]
}
func rewriteValuePPC64_OpPPC64FCEIL_0(v *Value) bool {
// match: (FCEIL (FMOVDconst [x]))
- // cond:
// result: (FMOVDconst [auxFrom64F(math.Ceil(auxTo64F(x)))])
for {
v_0 := v.Args[0]
}
func rewriteValuePPC64_OpPPC64FFLOOR_0(v *Value) bool {
// match: (FFLOOR (FMOVDconst [x]))
- // cond:
// result: (FMOVDconst [auxFrom64F(math.Floor(auxTo64F(x)))])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (FGreaterEqual cmp)
- // cond:
// result: (ISEL [2] (MOVDconst [1]) (ISELB [1] (MOVDconst [1]) cmp) cmp)
for {
cmp := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (FGreaterThan cmp)
- // cond:
// result: (ISELB [1] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (FLessEqual cmp)
- // cond:
// result: (ISEL [2] (MOVDconst [1]) (ISELB [0] (MOVDconst [1]) cmp) cmp)
for {
cmp := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (FLessThan cmp)
- // cond:
// result: (ISELB [0] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
}
func rewriteValuePPC64_OpPPC64FMOVDload_0(v *Value) bool {
// match: (FMOVDload [off] {sym} ptr (MOVDstore [off] {sym} ptr x _))
- // cond:
// result: (MTVSRD x)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64MOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpPPC64MOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
}
func rewriteValuePPC64_OpPPC64FMOVDstore_0(v *Value) bool {
// match: (FMOVDstore [off] {sym} ptr (MTVSRD x) mem)
- // cond:
// result: (MOVDstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
}
func rewriteValuePPC64_OpPPC64FNEG_0(v *Value) bool {
// match: (FNEG (FABS x))
- // cond:
// result: (FNABS x)
for {
v_0 := v.Args[0]
return true
}
// match: (FNEG (FNABS x))
- // cond:
// result: (FABS x)
for {
v_0 := v.Args[0]
}
func rewriteValuePPC64_OpPPC64FSQRT_0(v *Value) bool {
// match: (FSQRT (FMOVDconst [x]))
- // cond:
// result: (FMOVDconst [auxFrom64F(math.Sqrt(auxTo64F(x)))])
for {
v_0 := v.Args[0]
}
func rewriteValuePPC64_OpPPC64FSUB_0(v *Value) bool {
// match: (FSUB (FMUL x y) z)
- // cond:
// result: (FMSUB x y z)
for {
z := v.Args[1]
}
func rewriteValuePPC64_OpPPC64FSUBS_0(v *Value) bool {
// match: (FSUBS (FMULS x y) z)
- // cond:
// result: (FMSUBS x y z)
for {
z := v.Args[1]
}
func rewriteValuePPC64_OpPPC64FTRUNC_0(v *Value) bool {
// match: (FTRUNC (FMOVDconst [x]))
- // cond:
// result: (FMOVDconst [auxFrom64F(math.Trunc(auxTo64F(x)))])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (GreaterEqual (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagLT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (FlagGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual (InvertFlags x))
- // cond:
// result: (LessEqual x)
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterEqual cmp)
- // cond:
// result: (ISELB [4] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (GreaterThan (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagLT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (FlagGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan (InvertFlags x))
- // cond:
// result: (LessThan x)
for {
v_0 := v.Args[0]
return true
}
// match: (GreaterThan cmp)
- // cond:
// result: (ISELB [1] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
}
func rewriteValuePPC64_OpPPC64ISEL_0(v *Value) bool {
// match: (ISEL [2] x _ (FlagEQ))
- // cond:
// result: x
for {
if v.AuxInt != 2 {
return true
}
// match: (ISEL [2] _ y (FlagLT))
- // cond:
// result: y
for {
if v.AuxInt != 2 {
return true
}
// match: (ISEL [2] _ y (FlagGT))
- // cond:
// result: y
for {
if v.AuxInt != 2 {
return true
}
// match: (ISEL [6] _ y (FlagEQ))
- // cond:
// result: y
for {
if v.AuxInt != 6 {
return true
}
// match: (ISEL [6] x _ (FlagLT))
- // cond:
// result: x
for {
if v.AuxInt != 6 {
return true
}
// match: (ISEL [6] x _ (FlagGT))
- // cond:
// result: x
for {
if v.AuxInt != 6 {
return true
}
// match: (ISEL [0] _ y (FlagEQ))
- // cond:
// result: y
for {
if v.AuxInt != 0 {
return true
}
// match: (ISEL [0] _ y (FlagGT))
- // cond:
// result: y
for {
if v.AuxInt != 0 {
return true
}
// match: (ISEL [0] x _ (FlagLT))
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ISEL [5] _ x (FlagEQ))
- // cond:
// result: x
for {
if v.AuxInt != 5 {
}
func rewriteValuePPC64_OpPPC64ISEL_10(v *Value) bool {
// match: (ISEL [5] _ x (FlagLT))
- // cond:
// result: x
for {
if v.AuxInt != 5 {
return true
}
// match: (ISEL [5] y _ (FlagGT))
- // cond:
// result: y
for {
if v.AuxInt != 5 {
return true
}
// match: (ISEL [1] _ y (FlagEQ))
- // cond:
// result: y
for {
if v.AuxInt != 1 {
return true
}
// match: (ISEL [1] _ y (FlagLT))
- // cond:
// result: y
for {
if v.AuxInt != 1 {
return true
}
// match: (ISEL [1] x _ (FlagGT))
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (ISEL [4] x _ (FlagEQ))
- // cond:
// result: x
for {
if v.AuxInt != 4 {
return true
}
// match: (ISEL [4] x _ (FlagGT))
- // cond:
// result: x
for {
if v.AuxInt != 4 {
return true
}
// match: (ISEL [4] _ y (FlagLT))
- // cond:
// result: y
for {
if v.AuxInt != 4 {
}
func rewriteValuePPC64_OpPPC64ISELB_0(v *Value) bool {
// match: (ISELB [0] _ (FlagLT))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 0 {
return true
}
// match: (ISELB [0] _ (FlagGT))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ISELB [0] _ (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ISELB [1] _ (FlagGT))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 1 {
return true
}
// match: (ISELB [1] _ (FlagLT))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 1 {
return true
}
// match: (ISELB [1] _ (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 1 {
return true
}
// match: (ISELB [2] _ (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 2 {
return true
}
// match: (ISELB [2] _ (FlagLT))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 2 {
return true
}
// match: (ISELB [2] _ (FlagGT))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 2 {
return true
}
// match: (ISELB [4] _ (FlagLT))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 4 {
b := v.Block
typ := &b.Func.Config.Types
// match: (ISELB [4] _ (FlagGT))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 4 {
return true
}
// match: (ISELB [4] _ (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 4 {
return true
}
// match: (ISELB [5] _ (FlagGT))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 5 {
return true
}
// match: (ISELB [5] _ (FlagLT))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 5 {
return true
}
// match: (ISELB [5] _ (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 5 {
return true
}
// match: (ISELB [6] _ (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 6 {
return true
}
// match: (ISELB [6] _ (FlagLT))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 6 {
return true
}
// match: (ISELB [6] _ (FlagGT))
- // cond:
// result: (MOVDconst [1])
for {
if v.AuxInt != 6 {
n := v.AuxInt
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpPPC64MOVDconst || v_0.AuxInt != 1 {
break
}
v_1 := v.Args[1]
n := v.AuxInt
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpPPC64MOVDconst || v_0.AuxInt != 1 {
break
}
v_1 := v.Args[1]
n := v.AuxInt
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpPPC64MOVDconst || v_0.AuxInt != 1 {
break
}
v_1 := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (LessEqual (FlagEQ))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagLT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (FlagGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual (InvertFlags x))
- // cond:
// result: (GreaterEqual x)
for {
v_0 := v.Args[0]
return true
}
// match: (LessEqual cmp)
- // cond:
// result: (ISELB [5] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (LessThan (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagLT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (FlagGT))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan (InvertFlags x))
- // cond:
// result: (GreaterThan x)
for {
v_0 := v.Args[0]
return true
}
// match: (LessThan cmp)
- // cond:
// result: (ISELB [0] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (MFVSRD (FMOVDconst [c]))
- // cond:
// result: (MOVDconst [c])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBZreg (SRWconst [c] (MOVBZreg x)))
- // cond:
// result: (SRWconst [c] (MOVBZreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBZreg y:(MOVBZreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVBZreg (MOVBreg x))
- // cond:
// result: (MOVBZreg x)
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBZreg x:(MOVBZload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVBZreg x:(MOVBZloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpPPC64MOVBZreg_10(v *Value) bool {
// match: (MOVBZreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBreg (SRAWconst [c] (MOVBreg x)))
- // cond:
// result: (SRAWconst [c] (MOVBreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBreg y:(MOVBreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVBreg (MOVBZreg x))
- // cond:
// result: (MOVBreg x)
for {
v_0 := v.Args[0]
}
func rewriteValuePPC64_OpPPC64MOVBreg_10(v *Value) bool {
// match: (MOVBreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVBstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpPPC64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpPPC64MOVBstorezero)
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBZreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVHZreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVWZreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SRWconst {
- break
- }
- if v_1.AuxInt != 24 {
+ if v_1.Op != OpPPC64SRWconst || v_1.AuxInt != 24 {
break
}
w := v_1.Args[0]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpPPC64SRWconst {
- break
- }
- if x0_1.AuxInt != 16 {
- break
- }
- if w != x0_1.Args[0] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
+ if x0_1.Op != OpPPC64SRWconst || x0_1.AuxInt != 16 || w != x0_1.Args[0] || !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
break
}
v.reset(OpPPC64MOVHstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SRDconst {
- break
- }
- if v_1.AuxInt != 24 {
+ if v_1.Op != OpPPC64SRDconst || v_1.AuxInt != 24 {
break
}
w := v_1.Args[0]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpPPC64SRDconst {
- break
- }
- if x0_1.AuxInt != 16 {
- break
- }
- if w != x0_1.Args[0] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
+ if x0_1.Op != OpPPC64SRDconst || x0_1.AuxInt != 16 || w != x0_1.Args[0] || !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
break
}
v.reset(OpPPC64MOVHstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SRWconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpPPC64SRWconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
break
}
mem := x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if w != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
+ if p != x0.Args[0] || w != x0.Args[1] || !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
break
}
v.reset(OpPPC64MOVHstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SRDconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpPPC64SRDconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
break
}
mem := x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if w != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
+ if p != x0.Args[0] || w != x0.Args[1] || !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
break
}
v.reset(OpPPC64MOVHstore)
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpPPC64SRWconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpPPC64SRWconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpPPC64SRWconst {
- break
- }
- if x1_1.AuxInt != 16 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpPPC64SRWconst || x1_1.AuxInt != 16 || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpPPC64SRWconst {
- break
- }
- if x2_1.AuxInt != 24 {
- break
- }
- if w != x2_1.Args[0] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && clobber(x0) && clobber(x1) && clobber(x2)) {
+ if x2_1.Op != OpPPC64SRWconst || x2_1.AuxInt != 24 || w != x2_1.Args[0] || !(!config.BigEndian && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && clobber(x0) && clobber(x1) && clobber(x2)) {
break
}
v.reset(OpPPC64MOVWBRstore)
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpPPC64SRWconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
+ if x0_1.Op != OpPPC64SRWconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] || !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
break
}
v.reset(OpPPC64MOVHBRstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SRDconst {
- break
- }
- if v_1.AuxInt != 56 {
+ if v_1.Op != OpPPC64SRDconst || v_1.AuxInt != 56 {
break
}
w := v_1.Args[0]
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpPPC64SRDconst {
- break
- }
- if x0_1.AuxInt != 48 {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpPPC64SRDconst || x0_1.AuxInt != 48 || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpPPC64SRDconst {
- break
- }
- if x1_1.AuxInt != 40 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpPPC64SRDconst || x1_1.AuxInt != 40 || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpPPC64SRDconst {
- break
- }
- if x2_1.AuxInt != 32 {
- break
- }
- if w != x2_1.Args[0] {
+ if x2_1.Op != OpPPC64SRDconst || x2_1.AuxInt != 32 || w != x2_1.Args[0] {
break
}
x3 := x2.Args[2]
break
}
mem := x3.Args[2]
- if p != x3.Args[0] {
- break
- }
- if w != x3.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3)) {
+ if p != x3.Args[0] || w != x3.Args[1] || !(!config.BigEndian && i0%4 == 0 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3)) {
break
}
v.reset(OpPPC64MOVDstore)
break
}
x0_1 := x0.Args[1]
- if x0_1.Op != OpPPC64SRDconst {
- break
- }
- if x0_1.AuxInt != 8 {
- break
- }
- if w != x0_1.Args[0] {
+ if x0_1.Op != OpPPC64SRDconst || x0_1.AuxInt != 8 || w != x0_1.Args[0] {
break
}
x1 := x0.Args[2]
break
}
x1_1 := x1.Args[1]
- if x1_1.Op != OpPPC64SRDconst {
- break
- }
- if x1_1.AuxInt != 16 {
- break
- }
- if w != x1_1.Args[0] {
+ if x1_1.Op != OpPPC64SRDconst || x1_1.AuxInt != 16 || w != x1_1.Args[0] {
break
}
x2 := x1.Args[2]
break
}
x2_1 := x2.Args[1]
- if x2_1.Op != OpPPC64SRDconst {
- break
- }
- if x2_1.AuxInt != 24 {
- break
- }
- if w != x2_1.Args[0] {
+ if x2_1.Op != OpPPC64SRDconst || x2_1.AuxInt != 24 || w != x2_1.Args[0] {
break
}
x3 := x2.Args[2]
break
}
x3_1 := x3.Args[1]
- if x3_1.Op != OpPPC64SRDconst {
- break
- }
- if x3_1.AuxInt != 32 {
- break
- }
- if w != x3_1.Args[0] {
+ if x3_1.Op != OpPPC64SRDconst || x3_1.AuxInt != 32 || w != x3_1.Args[0] {
break
}
x4 := x3.Args[2]
break
}
x4_1 := x4.Args[1]
- if x4_1.Op != OpPPC64SRDconst {
- break
- }
- if x4_1.AuxInt != 40 {
- break
- }
- if w != x4_1.Args[0] {
+ if x4_1.Op != OpPPC64SRDconst || x4_1.AuxInt != 40 || w != x4_1.Args[0] {
break
}
x5 := x4.Args[2]
break
}
x5_1 := x5.Args[1]
- if x5_1.Op != OpPPC64SRDconst {
- break
- }
- if x5_1.AuxInt != 48 {
- break
- }
- if w != x5_1.Args[0] {
+ if x5_1.Op != OpPPC64SRDconst || x5_1.AuxInt != 48 || w != x5_1.Args[0] {
break
}
x6 := x5.Args[2]
break
}
x6_1 := x6.Args[1]
- if x6_1.Op != OpPPC64SRDconst {
- break
- }
- if x6_1.AuxInt != 56 {
- break
- }
- if w != x6_1.Args[0] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
+ if x6_1.Op != OpPPC64SRDconst || x6_1.AuxInt != 56 || w != x6_1.Args[0] || !(!config.BigEndian && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6)) {
break
}
v.reset(OpPPC64MOVDBRstore)
return true
}
// match: (MOVBstoreidx [off] {sym} ptr idx (MOVBreg x) mem)
- // cond:
// result: (MOVBstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstoreidx [off] {sym} ptr idx (MOVBZreg x) mem)
- // cond:
// result: (MOVBstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstoreidx [off] {sym} ptr idx (MOVHreg x) mem)
- // cond:
// result: (MOVBstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstoreidx [off] {sym} ptr idx (MOVHZreg x) mem)
- // cond:
// result: (MOVBstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstoreidx [off] {sym} ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVBstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstoreidx [off] {sym} ptr idx (MOVWZreg x) mem)
- // cond:
// result: (MOVBstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
}
func rewriteValuePPC64_OpPPC64MOVDload_0(v *Value) bool {
// match: (MOVDload [off] {sym} ptr (FMOVDstore [off] {sym} ptr x _))
- // cond:
// result: (MFVSRD x)
for {
off := v.AuxInt
_ = v.Args[1]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64FMOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpPPC64FMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
}
func rewriteValuePPC64_OpPPC64MOVDstore_0(v *Value) bool {
// match: (MOVDstore [off] {sym} ptr (MFVSRD x) mem)
- // cond:
// result: (FMOVDstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVDstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVDstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpPPC64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpPPC64MOVDstorezero)
}
func rewriteValuePPC64_OpPPC64MOVHBRstore_0(v *Value) bool {
// match: (MOVHBRstore {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVHBRstore {sym} ptr x mem)
for {
sym := v.Aux
return true
}
// match: (MOVHBRstore {sym} ptr (MOVHZreg x) mem)
- // cond:
// result: (MOVHBRstore {sym} ptr x mem)
for {
sym := v.Aux
return true
}
// match: (MOVHBRstore {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVHBRstore {sym} ptr x mem)
for {
sym := v.Aux
return true
}
// match: (MOVHBRstore {sym} ptr (MOVWZreg x) mem)
- // cond:
// result: (MOVHBRstore {sym} ptr x mem)
for {
sym := v.Aux
return true
}
// match: (MOVHZreg (SRWconst [c] (MOVBZreg x)))
- // cond:
// result: (SRWconst [c] (MOVBZreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHZreg (SRWconst [c] (MOVHZreg x)))
- // cond:
// result: (SRWconst [c] (MOVHZreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHZreg y:(MOVHZreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVHZreg y:(MOVBZreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVHZreg y:(MOVHBRload _ _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVHZreg y:(MOVHreg x))
- // cond:
// result: (MOVHZreg x)
for {
y := v.Args[0]
}
func rewriteValuePPC64_OpPPC64MOVHZreg_10(v *Value) bool {
// match: (MOVHZreg x:(MOVBZload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVHZreg x:(MOVBZloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVHZreg x:(MOVHZload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVHZreg x:(MOVHZloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVHZreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHreg (SRAWconst [c] (MOVBreg x)))
- // cond:
// result: (SRAWconst [c] (MOVBreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHreg (SRAWconst [c] (MOVHreg x)))
- // cond:
// result: (SRAWconst [c] (MOVHreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHreg y:(MOVHreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVHreg y:(MOVBreg _))
- // cond:
// result: y
for {
y := v.Args[0]
}
func rewriteValuePPC64_OpPPC64MOVHreg_10(v *Value) bool {
// match: (MOVHreg y:(MOVHZreg x))
- // cond:
// result: (MOVHreg x)
for {
y := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVHreg x:(MOVHloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVHreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVHstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpPPC64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpPPC64MOVHstorezero)
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHZreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVWZreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SRWconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpPPC64SRWconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
break
}
mem := x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if w != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0)) {
+ if p != x0.Args[0] || w != x0.Args[1] || !(!config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0)) {
break
}
v.reset(OpPPC64MOVWstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SRDconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpPPC64SRDconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
break
}
mem := x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if w != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0)) {
+ if p != x0.Args[0] || w != x0.Args[1] || !(!config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0)) {
break
}
v.reset(OpPPC64MOVWstore)
return true
}
// match: (MOVHstoreidx [off] {sym} ptr idx (MOVHreg x) mem)
- // cond:
// result: (MOVHstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstoreidx [off] {sym} ptr idx (MOVHZreg x) mem)
- // cond:
// result: (MOVHstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstoreidx [off] {sym} ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVHstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstoreidx [off] {sym} ptr idx (MOVWZreg x) mem)
- // cond:
// result: (MOVHstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
}
func rewriteValuePPC64_OpPPC64MOVWBRstore_0(v *Value) bool {
// match: (MOVWBRstore {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVWBRstore {sym} ptr x mem)
for {
sym := v.Aux
return true
}
// match: (MOVWBRstore {sym} ptr (MOVWZreg x) mem)
- // cond:
// result: (MOVWBRstore {sym} ptr x mem)
for {
sym := v.Aux
return true
}
// match: (MOVWZreg (SRWconst [c] (MOVBZreg x)))
- // cond:
// result: (SRWconst [c] (MOVBZreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWZreg (SRWconst [c] (MOVHZreg x)))
- // cond:
// result: (SRWconst [c] (MOVHZreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWZreg (SRWconst [c] (MOVWZreg x)))
- // cond:
// result: (SRWconst [c] (MOVWZreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWZreg y:(MOVWZreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVWZreg y:(MOVHZreg _))
- // cond:
// result: y
for {
y := v.Args[0]
}
func rewriteValuePPC64_OpPPC64MOVWZreg_10(v *Value) bool {
// match: (MOVWZreg y:(MOVBZreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVWZreg y:(MOVHBRload _ _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVWZreg y:(MOVWBRload _ _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVWZreg y:(MOVWreg x))
- // cond:
// result: (MOVWZreg x)
for {
y := v.Args[0]
return true
}
// match: (MOVWZreg x:(MOVBZload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWZreg x:(MOVBZloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWZreg x:(MOVHZload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWZreg x:(MOVHZloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWZreg x:(MOVWZload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWZreg x:(MOVWZloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWZreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint32(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWreg (SRAWconst [c] (MOVBreg x)))
- // cond:
// result: (SRAWconst [c] (MOVBreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWreg (SRAWconst [c] (MOVHreg x)))
- // cond:
// result: (SRAWconst [c] (MOVHreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWreg (SRAWconst [c] (MOVWreg x)))
- // cond:
// result: (SRAWconst [c] (MOVWreg x))
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWreg y:(MOVWreg _))
- // cond:
// result: y
for {
y := v.Args[0]
}
func rewriteValuePPC64_OpPPC64MOVWreg_10(v *Value) bool {
// match: (MOVWreg y:(MOVHreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVWreg y:(MOVBreg _))
- // cond:
// result: y
for {
y := v.Args[0]
return true
}
// match: (MOVWreg y:(MOVWZreg x))
- // cond:
// result: (MOVWreg x)
for {
y := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVHloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWload _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWreg x:(MOVWloadidx _ _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (MOVWreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int32(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVDconst [0]) mem)
- // cond:
// result: (MOVWstorezero [off] {sym} ptr mem)
for {
off := v.AuxInt
mem := v.Args[2]
ptr := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpPPC64MOVDconst || v_1.AuxInt != 0 {
break
}
v.reset(OpPPC64MOVWstorezero)
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWZreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstoreidx [off] {sym} ptr idx (MOVWreg x) mem)
- // cond:
// result: (MOVWstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstoreidx [off] {sym} ptr idx (MOVWZreg x) mem)
- // cond:
// result: (MOVWstoreidx [off] {sym} ptr idx x mem)
for {
off := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (MTVSRD (MOVDconst [c]))
- // cond:
// result: (FMOVDconst [c])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (NotEqual (FlagEQ))
- // cond:
// result: (MOVDconst [0])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagLT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (FlagGT))
- // cond:
// result: (MOVDconst [1])
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual (InvertFlags x))
- // cond:
// result: (NotEqual x)
for {
v_0 := v.Args[0]
return true
}
// match: (NotEqual cmp)
- // cond:
// result: (ISELB [6] (MOVDconst [1]) cmp)
for {
cmp := v.Args[0]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpPPC64ROTLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpPPC64ROTLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpPPC64ROTLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpPPC64ROTLWconst)
return true
}
// match: (OR (SLD x (ANDconst <typ.Int64> [63] y)) (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y))))
- // cond:
// result: (ROTL x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1.Type != typ.Int64 {
- break
- }
- if v_0_1.AuxInt != 63 {
+ if v_0_1.Op != OpPPC64ANDconst || v_0_1.Type != typ.Int64 || v_0_1.AuxInt != 63 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64SUB {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64SUB || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 64 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 64 {
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1_1.Type != typ.UInt {
- break
- }
- if v_1_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpPPC64ANDconst || v_1_1_1.Type != typ.UInt || v_1_1_1.AuxInt != 63 || y != v_1_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTL)
return true
}
// match: (OR (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y))) (SLD x (ANDconst <typ.Int64> [63] y)))
- // cond:
// result: (ROTL x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64SUB {
- break
- }
- if v_0_1.Type != typ.UInt {
+ if v_0_1.Op != OpPPC64SUB || v_0_1.Type != typ.UInt {
break
}
_ = v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0_1_0.AuxInt != 64 {
+ if v_0_1_0.Op != OpPPC64MOVDconst || v_0_1_0.AuxInt != 64 {
break
}
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1_1.Type != typ.UInt {
- break
- }
- if v_0_1_1.AuxInt != 63 {
+ if v_0_1_1.Op != OpPPC64ANDconst || v_0_1_1.Type != typ.UInt || v_0_1_1.AuxInt != 63 {
break
}
y := v_0_1_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.Int64 {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.Int64 || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTL)
return true
}
// match: (OR (SLW x (ANDconst <typ.Int32> [31] y)) (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y))))
- // cond:
// result: (ROTLW x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1.Type != typ.Int32 {
- break
- }
- if v_0_1.AuxInt != 31 {
+ if v_0_1.Op != OpPPC64ANDconst || v_0_1.Type != typ.Int32 || v_0_1.AuxInt != 31 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64SUB {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64SUB || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 32 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 32 {
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1_1.Type != typ.UInt {
- break
- }
- if v_1_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpPPC64ANDconst || v_1_1_1.Type != typ.UInt || v_1_1_1.AuxInt != 31 || y != v_1_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTLW)
return true
}
// match: (OR (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y))) (SLW x (ANDconst <typ.Int32> [31] y)))
- // cond:
// result: (ROTLW x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64SUB {
- break
- }
- if v_0_1.Type != typ.UInt {
+ if v_0_1.Op != OpPPC64SUB || v_0_1.Type != typ.UInt {
break
}
_ = v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0_1_0.AuxInt != 32 {
+ if v_0_1_0.Op != OpPPC64MOVDconst || v_0_1_0.AuxInt != 32 {
break
}
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1_1.Type != typ.UInt {
- break
- }
- if v_0_1_1.AuxInt != 31 {
+ if v_0_1_1.Op != OpPPC64ANDconst || v_0_1_1.Type != typ.UInt || v_0_1_1.AuxInt != 31 {
break
}
y := v_0_1_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.Int32 {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.Int32 || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTLW)
return true
}
// match: (OR (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c|d])
for {
_ = v.Args[1]
return true
}
// match: (OR (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c|d])
for {
_ = v.Args[1]
mem := x0.Args[1]
p := x0.Args[0]
o1 := v.Args[1]
- if o1.Op != OpPPC64SLWconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLWconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
t := v.Type
_ = v.Args[1]
o1 := v.Args[0]
- if o1.Op != OpPPC64SLWconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLWconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
o1 := v.Args[1]
- if o1.Op != OpPPC64SLDconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLDconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
t := v.Type
_ = v.Args[1]
o1 := v.Args[0]
- if o1.Op != OpPPC64SLDconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLDconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
o1 := v.Args[1]
- if o1.Op != OpPPC64SLWconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLWconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
t := v.Type
_ = v.Args[1]
o1 := v.Args[0]
- if o1.Op != OpPPC64SLWconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLWconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
o1 := v.Args[1]
- if o1.Op != OpPPC64SLDconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLDconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
t := v.Type
_ = v.Args[1]
o1 := v.Args[0]
- if o1.Op != OpPPC64SLDconst {
- break
- }
- if o1.AuxInt != 8 {
+ if o1.Op != OpPPC64SLDconst || o1.AuxInt != 8 {
break
}
x1 := o1.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && o1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(o1)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && n1%8 == 0 && n2 == n1+8 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1)) {
break
}
b = mergePoint(b, x0, x1)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
mem := x0.Args[1]
p := x0.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
x0 := o0.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
mem := x0.Args[1]
p := x0.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
- if mem != x1.Args[1] {
- break
- }
- s1 := v.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ s1 := v.Args[1]
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
x0 := o0.Args[1]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
x0 := o0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
x0 := o0.Args[1]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
x0 := o0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
mem := x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
s := x0_0.Aux
p := x0_0.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
x0 := o0.Args[1]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s1 := v.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
x0 := o0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
x0 := o0.Args[1]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
x0 := o0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
mem := x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
s := x0_0.Aux
p := x0_0.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 16 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 16 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s1 := v.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 24 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 24 {
break
}
x2 := s1.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
_ = x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
- if x2_0.Aux != s {
- break
- }
- if p != x2_0.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if x2_0.Aux != s || p != x2_0.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
_ = x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
- if x2_0.Aux != s {
- break
- }
- if p != x2_0.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if x2_0.Aux != s || p != x2_0.Args[0] || mem != x2.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
_ = x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
- if x2_0.Aux != s {
- break
- }
- if p != x2_0.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if x2_0.Aux != s || p != x2_0.Args[0] || mem != x2.Args[1] {
break
}
x0 := v.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLWconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLWconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
mem := x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
s := x2_0.Aux
p := x2_0.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
x0 := v.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
_ = x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
- if x2_0.Aux != s {
- break
- }
- if p != x2_0.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if x2_0.Aux != s || p != x2_0.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
_ = x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
- if x2_0.Aux != s {
- break
- }
- if p != x2_0.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if x2_0.Aux != s || p != x2_0.Args[0] || mem != x2.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
_ = x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
- if x2_0.Aux != s {
- break
- }
- if p != x2_0.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if x2_0.Aux != s || p != x2_0.Args[0] || mem != x2.Args[1] {
break
}
x0 := v.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 16 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 16 {
break
}
x2 := s1.Args[0]
- if x2.Op != OpPPC64MOVHBRload {
- break
- }
- if x2.Type != t {
+ if x2.Op != OpPPC64MOVHBRload || x2.Type != t {
break
}
mem := x2.Args[1]
x2_0 := x2.Args[0]
- if x2_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x2_0.Type != typ.Uintptr {
+ if x2_0.Op != OpPPC64MOVDaddr || x2_0.Type != typ.Uintptr {
break
}
i0 := x2_0.AuxInt
s := x2_0.Aux
p := x2_0.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 8 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 8 {
break
}
x1 := s0.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
x0 := v.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s2 := v.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 32 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 32 {
break
}
x2 := s2.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 40 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 40 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 48 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 48 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i0 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s2 := v.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 32 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 32 {
break
}
x2 := s2.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 48 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 48 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i0 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 40 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 40 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 40 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 40 {
break
}
x1 := s1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 48 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 48 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i0 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s2 := v.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 32 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 32 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 48 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 48 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
mem := x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i0 := x0_0.AuxInt
s := x0_0.Aux
p := x0_0.Args[0]
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 40 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 40 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s2 := v.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 32 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 32 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i2 == i0+2 && i3 == i0+3 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s2 := v.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 56 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 56 {
break
}
x2 := s2.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s2 := v.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 56 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 56 {
break
}
x2 := s2.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
s0 := o0.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
_ = x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
- if x0_0.Aux != s {
- break
- }
- if p != x0_0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if x0_0.Aux != s || p != x0_0.Args[0] || mem != x0.Args[1] {
break
}
s2 := v.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 56 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 56 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s0 := o0.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x0 := s0.Args[0]
- if x0.Op != OpPPC64MOVHBRload {
- break
- }
- if x0.Type != t {
+ if x0.Op != OpPPC64MOVHBRload || x0.Type != t {
break
}
mem := x0.Args[1]
x0_0 := x0.Args[0]
- if x0_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x0_0.Type != typ.Uintptr {
+ if x0_0.Op != OpPPC64MOVDaddr || x0_0.Type != typ.Uintptr {
break
}
i2 := x0_0.AuxInt
s := x0_0.Aux
p := x0_0.Args[0]
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s2 := v.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 56 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 56 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && o0.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && mergePoint(b, x0, x1, x2) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(o0)) {
break
}
b = mergePoint(b, x0, x1, x2)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x0 := o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x4.Args[0] || mem != x4.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x0 := o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x5.Args[0] || mem != x5.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x5.Args[0] || mem != x5.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x0 := o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x0 := o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s6 := v.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x0 := o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x0 := o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s5 := o5.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
mem := x5.Args[1]
p := x5.Args[0]
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x0 := o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s4 := o4.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
mem := x5.Args[1]
p := x5.Args[0]
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s3 := o3.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
+ if p != x0.Args[0] || mem != x0.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
mem := x0.Args[1]
p := x0.Args[0]
s3 := o3.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x4 := s3.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s4 := o4.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 40 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 40 {
break
}
x5 := s4.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s5 := o5.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 48 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 48 {
break
}
x6 := s5.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
s6 := v.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 56 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 56 {
break
}
x7 := s6.Args[0]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i0%4 == 0 && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x0.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x0, x4, x5, x6, x7) != nil && clobber(x0) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o3) && clobber(o4) && clobber(o5)) {
break
}
b = mergePoint(b, x0, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x4_0.Args[0] || mem != x4.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x3.Args[0] || mem != x3.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x2.Args[0] || mem != x2.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
s0 := v.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
mem := x0.Args[1]
p := x0.Args[0]
o0 := v.Args[1]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
s1 := o0.Args[0]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
mem := x1.Args[1]
p := x1.Args[0]
o1 := o0.Args[1]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
s2 := o1.Args[0]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
mem := x2.Args[1]
p := x2.Args[0]
o2 := o1.Args[1]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
break
}
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
s3 := o2.Args[0]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
mem := x3.Args[1]
p := x3.Args[0]
x4 := o2.Args[1]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
_ = x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
- if p != x4_0.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4_0.Args[0] || mem != x4.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
t := v.Type
_ = v.Args[1]
o0 := v.Args[0]
- if o0.Op != OpPPC64OR {
- break
- }
- if o0.Type != t {
+ if o0.Op != OpPPC64OR || o0.Type != t {
break
}
_ = o0.Args[1]
o1 := o0.Args[0]
- if o1.Op != OpPPC64OR {
- break
- }
- if o1.Type != t {
+ if o1.Op != OpPPC64OR || o1.Type != t {
break
}
_ = o1.Args[1]
o2 := o1.Args[0]
- if o2.Op != OpPPC64OR {
- break
- }
- if o2.Type != t {
+ if o2.Op != OpPPC64OR || o2.Type != t {
break
}
_ = o2.Args[1]
x4 := o2.Args[0]
- if x4.Op != OpPPC64MOVWBRload {
- break
- }
- if x4.Type != t {
+ if x4.Op != OpPPC64MOVWBRload || x4.Type != t {
break
}
mem := x4.Args[1]
x4_0 := x4.Args[0]
- if x4_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x4_0.Type != typ.Uintptr {
+ if x4_0.Op != OpPPC64MOVDaddr || x4_0.Type != typ.Uintptr {
break
}
i4 := x4_0.AuxInt
p := x4_0.Args[0]
s3 := o2.Args[1]
- if s3.Op != OpPPC64SLDconst {
- break
- }
- if s3.AuxInt != 32 {
+ if s3.Op != OpPPC64SLDconst || s3.AuxInt != 32 {
break
}
x3 := s3.Args[0]
i3 := x3.AuxInt
s := x3.Aux
_ = x3.Args[1]
- if p != x3.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if p != x3.Args[0] || mem != x3.Args[1] {
break
}
s2 := o1.Args[1]
- if s2.Op != OpPPC64SLDconst {
- break
- }
- if s2.AuxInt != 40 {
+ if s2.Op != OpPPC64SLDconst || s2.AuxInt != 40 {
break
}
x2 := s2.Args[0]
break
}
_ = x2.Args[1]
- if p != x2.Args[0] {
- break
- }
- if mem != x2.Args[1] {
+ if p != x2.Args[0] || mem != x2.Args[1] {
break
}
s1 := o0.Args[1]
- if s1.Op != OpPPC64SLDconst {
- break
- }
- if s1.AuxInt != 48 {
+ if s1.Op != OpPPC64SLDconst || s1.AuxInt != 48 {
break
}
x1 := s1.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
+ if p != x1.Args[0] || mem != x1.Args[1] {
break
}
s0 := v.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 56 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 56 {
break
}
x0 := s0.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(!config.BigEndian && i1 == i0+1 && i2 == i0+2 && i3 == i0+3 && i4 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && x2.Uses == 1 && x3.Uses == 1 && x4.Uses == 1 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && mergePoint(b, x0, x1, x2, x3, x4) != nil && clobber(x0) && clobber(x1) && clobber(x2) && clobber(x3) && clobber(x4) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(s0) && clobber(s1) && clobber(s2) && clobber(s3)) {
break
}
b = mergePoint(b, x0, x1, x2, x3, x4)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x4.Args[0] || mem != x4.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x5.Args[0] || mem != x5.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x5.Args[0] || mem != x5.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
mem := x5.Args[1]
p := x5.Args[0]
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
mem := x5.Args[1]
p := x5.Args[0]
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
mem := x4.Args[1]
p := x4.Args[0]
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLWconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLWconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
mem := x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
s := x3_0.Aux
p := x3_0.Args[0]
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x4.Args[0] || mem != x4.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x5.Args[0] || mem != x5.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x5.Args[0] || mem != x5.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
- break
- }
- x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
- break
- }
- _ = x3.Args[1]
- x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
- break
- }
- i0 := x3_0.AuxInt
- if x3_0.Aux != s {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
- if p != x3_0.Args[0] {
+ x3 := s0.Args[0]
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
- if mem != x3.Args[1] {
+ _ = x3.Args[1]
+ x3_0 := x3.Args[0]
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
- s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
+ i0 := x3_0.AuxInt
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
- if s5.AuxInt != 16 {
+ s5 := o4.Args[1]
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
mem := x7.Args[1]
p := x7.Args[0]
o5 := v.Args[1]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x6.Args[0] || mem != x6.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
s6 := o5.Args[0]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
mem := x6.Args[1]
p := x6.Args[0]
o4 := o5.Args[1]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
mem := x5.Args[1]
p := x5.Args[0]
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
s5 := o4.Args[0]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
mem := x5.Args[1]
p := x5.Args[0]
o3 := o4.Args[1]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s4 := o3.Args[0]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
mem := x4.Args[1]
p := x4.Args[0]
s0 := o3.Args[1]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
_ = x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
- if x3_0.Aux != s {
- break
- }
- if p != x3_0.Args[0] {
- break
- }
- if mem != x3.Args[1] {
+ if x3_0.Aux != s || p != x3_0.Args[0] || mem != x3.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
t := v.Type
_ = v.Args[1]
o5 := v.Args[0]
- if o5.Op != OpPPC64OR {
- break
- }
- if o5.Type != t {
+ if o5.Op != OpPPC64OR || o5.Type != t {
break
}
_ = o5.Args[1]
o4 := o5.Args[0]
- if o4.Op != OpPPC64OR {
- break
- }
- if o4.Type != t {
+ if o4.Op != OpPPC64OR || o4.Type != t {
break
}
_ = o4.Args[1]
o3 := o4.Args[0]
- if o3.Op != OpPPC64OR {
- break
- }
- if o3.Type != t {
+ if o3.Op != OpPPC64OR || o3.Type != t {
break
}
_ = o3.Args[1]
s0 := o3.Args[0]
- if s0.Op != OpPPC64SLDconst {
- break
- }
- if s0.AuxInt != 32 {
+ if s0.Op != OpPPC64SLDconst || s0.AuxInt != 32 {
break
}
x3 := s0.Args[0]
- if x3.Op != OpPPC64MOVWBRload {
- break
- }
- if x3.Type != t {
+ if x3.Op != OpPPC64MOVWBRload || x3.Type != t {
break
}
mem := x3.Args[1]
x3_0 := x3.Args[0]
- if x3_0.Op != OpPPC64MOVDaddr {
- break
- }
- if x3_0.Type != typ.Uintptr {
+ if x3_0.Op != OpPPC64MOVDaddr || x3_0.Type != typ.Uintptr {
break
}
i0 := x3_0.AuxInt
s := x3_0.Aux
p := x3_0.Args[0]
s4 := o3.Args[1]
- if s4.Op != OpPPC64SLDconst {
- break
- }
- if s4.AuxInt != 24 {
+ if s4.Op != OpPPC64SLDconst || s4.AuxInt != 24 {
break
}
x4 := s4.Args[0]
break
}
_ = x4.Args[1]
- if p != x4.Args[0] {
- break
- }
- if mem != x4.Args[1] {
+ if p != x4.Args[0] || mem != x4.Args[1] {
break
}
s5 := o4.Args[1]
- if s5.Op != OpPPC64SLDconst {
- break
- }
- if s5.AuxInt != 16 {
+ if s5.Op != OpPPC64SLDconst || s5.AuxInt != 16 {
break
}
x5 := s5.Args[0]
break
}
_ = x5.Args[1]
- if p != x5.Args[0] {
- break
- }
- if mem != x5.Args[1] {
+ if p != x5.Args[0] || mem != x5.Args[1] {
break
}
s6 := o5.Args[1]
- if s6.Op != OpPPC64SLDconst {
- break
- }
- if s6.AuxInt != 8 {
+ if s6.Op != OpPPC64SLDconst || s6.AuxInt != 8 {
break
}
x6 := s6.Args[0]
break
}
_ = x6.Args[1]
- if p != x6.Args[0] {
- break
- }
- if mem != x6.Args[1] {
+ if p != x6.Args[0] || mem != x6.Args[1] {
break
}
x7 := v.Args[1]
break
}
_ = x7.Args[1]
- if p != x7.Args[0] {
- break
- }
- if mem != x7.Args[1] {
- break
- }
- if !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
+ if p != x7.Args[0] || mem != x7.Args[1] || !(!config.BigEndian && i4 == i0+4 && i5 == i0+5 && i6 == i0+6 && i7 == i0+7 && x3.Uses == 1 && x4.Uses == 1 && x5.Uses == 1 && x6.Uses == 1 && x7.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.Uses == 1 && mergePoint(b, x3, x4, x5, x6, x7) != nil && clobber(x3) && clobber(x4) && clobber(x5) && clobber(x6) && clobber(x7) && clobber(o3) && clobber(o4) && clobber(o5) && clobber(s0) && clobber(s4) && clobber(s5) && clobber(s6)) {
break
}
b = mergePoint(b, x3, x4, x5, x6, x7)
}
func rewriteValuePPC64_OpPPC64ORN_0(v *Value) bool {
// match: (ORN x (MOVDconst [-1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpPPC64MOVDconst || v_1.AuxInt != -1 {
break
}
v.reset(OpCopy)
}
func rewriteValuePPC64_OpPPC64ORconst_0(v *Value) bool {
// match: (ORconst [c] (ORconst [d] x))
- // cond:
// result: (ORconst [c|d] x)
for {
c := v.AuxInt
return true
}
// match: (ORconst [-1] _)
- // cond:
// result: (MOVDconst [-1])
for {
if v.AuxInt != -1 {
return true
}
// match: (ORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValuePPC64_OpPPC64ROTL_0(v *Value) bool {
// match: (ROTL x (MOVDconst [c]))
- // cond:
// result: (ROTLconst x [c&63])
for {
_ = v.Args[1]
}
func rewriteValuePPC64_OpPPC64ROTLW_0(v *Value) bool {
// match: (ROTLW x (MOVDconst [c]))
- // cond:
// result: (ROTLWconst x [c&31])
for {
_ = v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpPPC64ROTLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpPPC64ROTLconst)
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpPPC64ROTLWconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpPPC64ROTLWconst)
return true
}
// match: (XOR (SLD x (ANDconst <typ.Int64> [63] y)) (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y))))
- // cond:
// result: (ROTL x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1.Type != typ.Int64 {
- break
- }
- if v_0_1.AuxInt != 63 {
+ if v_0_1.Op != OpPPC64ANDconst || v_0_1.Type != typ.Int64 || v_0_1.AuxInt != 63 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64SUB {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64SUB || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 64 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 64 {
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1_1.Type != typ.UInt {
- break
- }
- if v_1_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpPPC64ANDconst || v_1_1_1.Type != typ.UInt || v_1_1_1.AuxInt != 63 || y != v_1_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTL)
return true
}
// match: (XOR (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y))) (SLD x (ANDconst <typ.Int64> [63] y)))
- // cond:
// result: (ROTL x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64SUB {
- break
- }
- if v_0_1.Type != typ.UInt {
+ if v_0_1.Op != OpPPC64SUB || v_0_1.Type != typ.UInt {
break
}
_ = v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0_1_0.AuxInt != 64 {
+ if v_0_1_0.Op != OpPPC64MOVDconst || v_0_1_0.AuxInt != 64 {
break
}
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1_1.Type != typ.UInt {
- break
- }
- if v_0_1_1.AuxInt != 63 {
+ if v_0_1_1.Op != OpPPC64ANDconst || v_0_1_1.Type != typ.UInt || v_0_1_1.AuxInt != 63 {
break
}
y := v_0_1_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.Int64 {
- break
- }
- if v_1_1.AuxInt != 63 {
- break
- }
- if y != v_1_1.Args[0] {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.Int64 || v_1_1.AuxInt != 63 || y != v_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTL)
return true
}
// match: (XOR (SLW x (ANDconst <typ.Int32> [31] y)) (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y))))
- // cond:
// result: (ROTLW x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1.Type != typ.Int32 {
- break
- }
- if v_0_1.AuxInt != 31 {
+ if v_0_1.Op != OpPPC64ANDconst || v_0_1.Type != typ.Int32 || v_0_1.AuxInt != 31 {
break
}
y := v_0_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64SUB {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64SUB || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 32 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 32 {
break
}
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1_1.Type != typ.UInt {
- break
- }
- if v_1_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1_1.Args[0] {
+ if v_1_1_1.Op != OpPPC64ANDconst || v_1_1_1.Type != typ.UInt || v_1_1_1.AuxInt != 31 || y != v_1_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTLW)
return true
}
// match: (XOR (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y))) (SLW x (ANDconst <typ.Int32> [31] y)))
- // cond:
// result: (ROTLW x y)
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpPPC64SUB {
- break
- }
- if v_0_1.Type != typ.UInt {
+ if v_0_1.Op != OpPPC64SUB || v_0_1.Type != typ.UInt {
break
}
_ = v_0_1.Args[1]
v_0_1_0 := v_0_1.Args[0]
- if v_0_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_0_1_0.AuxInt != 32 {
+ if v_0_1_0.Op != OpPPC64MOVDconst || v_0_1_0.AuxInt != 32 {
break
}
v_0_1_1 := v_0_1.Args[1]
- if v_0_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_0_1_1.Type != typ.UInt {
- break
- }
- if v_0_1_1.AuxInt != 31 {
+ if v_0_1_1.Op != OpPPC64ANDconst || v_0_1_1.Type != typ.UInt || v_0_1_1.AuxInt != 31 {
break
}
y := v_0_1_1.Args[0]
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.Int32 {
- break
- }
- if v_1_1.AuxInt != 31 {
- break
- }
- if y != v_1_1.Args[0] {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.Int32 || v_1_1.AuxInt != 31 || y != v_1_1.Args[0] {
break
}
v.reset(OpPPC64ROTLW)
return true
}
// match: (XOR (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c^d])
for {
_ = v.Args[1]
return true
}
// match: (XOR (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c^d])
for {
_ = v.Args[1]
}
func rewriteValuePPC64_OpPPC64XORconst_0(v *Value) bool {
// match: (XORconst [c] (XORconst [d] x))
- // cond:
// result: (XORconst [c^d] x)
for {
c := v.AuxInt
return true
}
// match: (XORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount16 x)
- // cond:
// result: (POPCNTW (MOVHZreg x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount32 x)
- // cond:
// result: (POPCNTW (MOVWZreg x))
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpPopCount64_0(v *Value) bool {
// match: (PopCount64 x)
- // cond:
// result: (POPCNTD x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount8 x)
- // cond:
// result: (POPCNTB (MOVBZreg x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft16 <t> x (MOVDconst [c]))
- // cond:
// result: (Or16 (Lsh16x64 <t> x (MOVDconst [c&15])) (Rsh16Ux64 <t> x (MOVDconst [-c&15])))
for {
t := v.Type
}
func rewriteValuePPC64_OpRotateLeft32_0(v *Value) bool {
// match: (RotateLeft32 x (MOVDconst [c]))
- // cond:
// result: (ROTLWconst [c&31] x)
for {
_ = v.Args[1]
return true
}
// match: (RotateLeft32 x y)
- // cond:
// result: (ROTLW x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpRotateLeft64_0(v *Value) bool {
// match: (RotateLeft64 x (MOVDconst [c]))
- // cond:
// result: (ROTLconst [c&63] x)
for {
_ = v.Args[1]
return true
}
// match: (RotateLeft64 x y)
- // cond:
// result: (ROTL x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft8 <t> x (MOVDconst [c]))
- // cond:
// result: (Or8 (Lsh8x64 <t> x (MOVDconst [c&7])) (Rsh8Ux64 <t> x (MOVDconst [-c&7])))
for {
t := v.Type
}
func rewriteValuePPC64_OpRound_0(v *Value) bool {
// match: (Round x)
- // cond:
// result: (FROUND x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: (LoweredRound32F x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: (LoweredRound64F x)
for {
x := v.Args[0]
return true
}
// match: (Rsh16Ux16 x y)
- // cond:
// result: (SRW (ZeroExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh16Ux32 x y)
- // cond:
// result: (SRW (ZeroExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh16Ux64 x y)
- // cond:
// result: (SRW (ZeroExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh16Ux8 x y)
- // cond:
// result: (SRW (ZeroExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh16x16 x y)
- // cond:
// result: (SRAW (SignExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh16x32 x y)
- // cond:
// result: (SRAW (SignExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh16x64 x y)
- // cond:
// result: (SRAW (SignExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh16x8 x y)
- // cond:
// result: (SRAW (SignExt16to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-16] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32Ux16 x y)
- // cond:
// result: (SRW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32Ux32 x y)
- // cond:
// result: (SRW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32Ux64 x (AND y (MOVDconst [31])))
- // cond:
// result: (SRW x (ANDconst <typ.Int32> [31] y))
for {
_ = v.Args[1]
_ = v_1.Args[1]
y := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1.AuxInt != 31 {
+ if v_1_1.Op != OpPPC64MOVDconst || v_1_1.AuxInt != 31 {
break
}
v.reset(OpPPC64SRW)
return true
}
// match: (Rsh32Ux64 x (AND (MOVDconst [31]) y))
- // cond:
// result: (SRW x (ANDconst <typ.Int32> [31] y))
for {
_ = v.Args[1]
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 31 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 31 {
break
}
v.reset(OpPPC64SRW)
return true
}
// match: (Rsh32Ux64 x (ANDconst <typ.UInt> [31] y))
- // cond:
// result: (SRW x (ANDconst <typ.UInt> [31] y))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1.Type != typ.UInt {
- break
- }
- if v_1.AuxInt != 31 {
+ if v_1.Op != OpPPC64ANDconst || v_1.Type != typ.UInt || v_1.AuxInt != 31 {
break
}
y := v_1.Args[0]
return true
}
// match: (Rsh32Ux64 x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
- // cond:
// result: (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 32 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 32 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.UInt {
- break
- }
- if v_1_1.AuxInt != 31 {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.UInt || v_1_1.AuxInt != 31 {
break
}
y := v_1_1.Args[0]
return true
}
// match: (Rsh32Ux64 x (SUB <typ.UInt> (MOVDconst [32]) (AND <typ.UInt> y (MOVDconst [31]))))
- // cond:
// result: (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 32 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 32 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
y := v_1_1.Args[0]
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_1.AuxInt != 31 {
+ if v_1_1_1.Op != OpPPC64MOVDconst || v_1_1_1.AuxInt != 31 {
break
}
v.reset(OpPPC64SRW)
return true
}
// match: (Rsh32Ux64 x (SUB <typ.UInt> (MOVDconst [32]) (AND <typ.UInt> (MOVDconst [31]) y)))
- // cond:
// result: (SRW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 32 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 32 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
y := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 31 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 31 {
break
}
v.reset(OpPPC64SRW)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux64 x y)
- // cond:
// result: (SRW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32Ux8 x y)
- // cond:
// result: (SRW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32x16 x y)
- // cond:
// result: (SRAW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32x32 x y)
- // cond:
// result: (SRAW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32x64 x (AND y (MOVDconst [31])))
- // cond:
// result: (SRAW x (ANDconst <typ.Int32> [31] y))
for {
_ = v.Args[1]
_ = v_1.Args[1]
y := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1.AuxInt != 31 {
+ if v_1_1.Op != OpPPC64MOVDconst || v_1_1.AuxInt != 31 {
break
}
v.reset(OpPPC64SRAW)
return true
}
// match: (Rsh32x64 x (AND (MOVDconst [31]) y))
- // cond:
// result: (SRAW x (ANDconst <typ.Int32> [31] y))
for {
_ = v.Args[1]
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 31 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 31 {
break
}
v.reset(OpPPC64SRAW)
return true
}
// match: (Rsh32x64 x (ANDconst <typ.UInt> [31] y))
- // cond:
// result: (SRAW x (ANDconst <typ.UInt> [31] y))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1.Type != typ.UInt {
- break
- }
- if v_1.AuxInt != 31 {
+ if v_1.Op != OpPPC64ANDconst || v_1.Type != typ.UInt || v_1.AuxInt != 31 {
break
}
y := v_1.Args[0]
return true
}
// match: (Rsh32x64 x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
- // cond:
// result: (SRAW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 32 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 32 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.UInt {
- break
- }
- if v_1_1.AuxInt != 31 {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.UInt || v_1_1.AuxInt != 31 {
break
}
y := v_1_1.Args[0]
return true
}
// match: (Rsh32x64 x (SUB <typ.UInt> (MOVDconst [32]) (AND <typ.UInt> y (MOVDconst [31]))))
- // cond:
// result: (SRAW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 32 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 32 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
y := v_1_1.Args[0]
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_1.AuxInt != 31 {
+ if v_1_1_1.Op != OpPPC64MOVDconst || v_1_1_1.AuxInt != 31 {
break
}
v.reset(OpPPC64SRAW)
return true
}
// match: (Rsh32x64 x (SUB <typ.UInt> (MOVDconst [32]) (AND <typ.UInt> (MOVDconst [31]) y)))
- // cond:
// result: (SRAW x (SUB <typ.UInt> (MOVDconst [32]) (ANDconst <typ.UInt> [31] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 32 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 32 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
y := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 31 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 31 {
break
}
v.reset(OpPPC64SRAW)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x64 x y)
- // cond:
// result: (SRAW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh32x8 x y)
- // cond:
// result: (SRAW x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-32] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64Ux16 x y)
- // cond:
// result: (SRD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64Ux32 x y)
- // cond:
// result: (SRD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64Ux64 x (AND y (MOVDconst [63])))
- // cond:
// result: (SRD x (ANDconst <typ.Int64> [63] y))
for {
_ = v.Args[1]
_ = v_1.Args[1]
y := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1.AuxInt != 63 {
+ if v_1_1.Op != OpPPC64MOVDconst || v_1_1.AuxInt != 63 {
break
}
v.reset(OpPPC64SRD)
return true
}
// match: (Rsh64Ux64 x (AND (MOVDconst [63]) y))
- // cond:
// result: (SRD x (ANDconst <typ.Int64> [63] y))
for {
_ = v.Args[1]
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 63 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 63 {
break
}
v.reset(OpPPC64SRD)
return true
}
// match: (Rsh64Ux64 x (ANDconst <typ.UInt> [63] y))
- // cond:
// result: (SRD x (ANDconst <typ.UInt> [63] y))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1.Type != typ.UInt {
- break
- }
- if v_1.AuxInt != 63 {
+ if v_1.Op != OpPPC64ANDconst || v_1.Type != typ.UInt || v_1.AuxInt != 63 {
break
}
y := v_1.Args[0]
return true
}
// match: (Rsh64Ux64 x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
- // cond:
// result: (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 64 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 64 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.UInt {
- break
- }
- if v_1_1.AuxInt != 63 {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.UInt || v_1_1.AuxInt != 63 {
break
}
y := v_1_1.Args[0]
return true
}
// match: (Rsh64Ux64 x (SUB <typ.UInt> (MOVDconst [64]) (AND <typ.UInt> y (MOVDconst [63]))))
- // cond:
// result: (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 64 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 64 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
y := v_1_1.Args[0]
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_1.AuxInt != 63 {
+ if v_1_1_1.Op != OpPPC64MOVDconst || v_1_1_1.AuxInt != 63 {
break
}
v.reset(OpPPC64SRD)
return true
}
// match: (Rsh64Ux64 x (SUB <typ.UInt> (MOVDconst [64]) (AND <typ.UInt> (MOVDconst [63]) y)))
- // cond:
// result: (SRD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 64 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 64 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
y := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 63 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 63 {
break
}
v.reset(OpPPC64SRD)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux64 x y)
- // cond:
// result: (SRD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64Ux8 x y)
- // cond:
// result: (SRD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x16 x y)
- // cond:
// result: (SRAD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x32 x y)
- // cond:
// result: (SRAD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x64 x (AND y (MOVDconst [63])))
- // cond:
// result: (SRAD x (ANDconst <typ.Int64> [63] y))
for {
_ = v.Args[1]
_ = v_1.Args[1]
y := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1.AuxInt != 63 {
+ if v_1_1.Op != OpPPC64MOVDconst || v_1_1.AuxInt != 63 {
break
}
v.reset(OpPPC64SRAD)
return true
}
// match: (Rsh64x64 x (AND (MOVDconst [63]) y))
- // cond:
// result: (SRAD x (ANDconst <typ.Int64> [63] y))
for {
_ = v.Args[1]
}
y := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 63 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 63 {
break
}
v.reset(OpPPC64SRAD)
return true
}
// match: (Rsh64x64 x (ANDconst <typ.UInt> [63] y))
- // cond:
// result: (SRAD x (ANDconst <typ.UInt> [63] y))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1.Type != typ.UInt {
- break
- }
- if v_1.AuxInt != 63 {
+ if v_1.Op != OpPPC64ANDconst || v_1.Type != typ.UInt || v_1.AuxInt != 63 {
break
}
y := v_1.Args[0]
return true
}
// match: (Rsh64x64 x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
- // cond:
// result: (SRAD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 64 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 64 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64ANDconst {
- break
- }
- if v_1_1.Type != typ.UInt {
- break
- }
- if v_1_1.AuxInt != 63 {
+ if v_1_1.Op != OpPPC64ANDconst || v_1_1.Type != typ.UInt || v_1_1.AuxInt != 63 {
break
}
y := v_1_1.Args[0]
return true
}
// match: (Rsh64x64 x (SUB <typ.UInt> (MOVDconst [64]) (AND <typ.UInt> y (MOVDconst [63]))))
- // cond:
// result: (SRAD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 64 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 64 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
_ = v_1_1.Args[1]
y := v_1_1.Args[0]
v_1_1_1 := v_1_1.Args[1]
- if v_1_1_1.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_1.AuxInt != 63 {
+ if v_1_1_1.Op != OpPPC64MOVDconst || v_1_1_1.AuxInt != 63 {
break
}
v.reset(OpPPC64SRAD)
return true
}
// match: (Rsh64x64 x (SUB <typ.UInt> (MOVDconst [64]) (AND <typ.UInt> (MOVDconst [63]) y)))
- // cond:
// result: (SRAD x (SUB <typ.UInt> (MOVDconst [64]) (ANDconst <typ.UInt> [63] y)))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpPPC64SUB {
- break
- }
- if v_1.Type != typ.UInt {
+ if v_1.Op != OpPPC64SUB || v_1.Type != typ.UInt {
break
}
_ = v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_0.AuxInt != 64 {
+ if v_1_0.Op != OpPPC64MOVDconst || v_1_0.AuxInt != 64 {
break
}
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpPPC64AND {
- break
- }
- if v_1_1.Type != typ.UInt {
+ if v_1_1.Op != OpPPC64AND || v_1_1.Type != typ.UInt {
break
}
y := v_1_1.Args[1]
v_1_1_0 := v_1_1.Args[0]
- if v_1_1_0.Op != OpPPC64MOVDconst {
- break
- }
- if v_1_1_0.AuxInt != 63 {
+ if v_1_1_0.Op != OpPPC64MOVDconst || v_1_1_0.AuxInt != 63 {
break
}
v.reset(OpPPC64SRAD)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x64 x y)
- // cond:
// result: (SRAD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x8 x y)
- // cond:
// result: (SRAD x (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-64] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8Ux16 x y)
- // cond:
// result: (SRW (ZeroExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8Ux32 x y)
- // cond:
// result: (SRW (ZeroExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8Ux64 x y)
- // cond:
// result: (SRW (ZeroExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8Ux8 x y)
- // cond:
// result: (SRW (ZeroExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8x16 x y)
- // cond:
// result: (SRAW (SignExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt16to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8x32 x y)
- // cond:
// result: (SRAW (SignExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt32to64 y)))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8x64 x y)
- // cond:
// result: (SRAW (SignExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] y))))
for {
y := v.Args[1]
return true
}
// match: (Rsh8x8 x y)
- // cond:
// result: (SRAW (SignExt8to32 x) (ORN y <typ.Int64> (MaskIfNotCarry (ADDconstForCarry [-8] (ZeroExt8to64 y)))))
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpSignExt16to64_0(v *Value) bool {
// match: (SignExt16to64 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpSignExt32to64_0(v *Value) bool {
// match: (SignExt32to64 x)
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpSignExt8to64_0(v *Value) bool {
// match: (SignExt8to64 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
func rewriteValuePPC64_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SRADconst (NEG <t> x) [63])
for {
t := v.Type
}
func rewriteValuePPC64_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (FSQRT x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValuePPC64_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (FSUBS x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpSub64_0(v *Value) bool {
// match: (Sub64 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (FSUB x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpTrunc_0(v *Value) bool {
// match: (Trunc x)
- // cond:
// result: (FTRUNC x)
for {
x := v.Args[0]
return true
}
// match: (Trunc16to8 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
return true
}
// match: (Trunc32to16 x)
- // cond:
// result: (MOVHZreg x)
for {
x := v.Args[0]
return true
}
// match: (Trunc32to8 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
return true
}
// match: (Trunc64to16 x)
- // cond:
// result: (MOVHZreg x)
for {
x := v.Args[0]
return true
}
// match: (Trunc64to32 x)
- // cond:
// result: (MOVWZreg x)
for {
x := v.Args[0]
return true
}
// match: (Trunc64to8 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValuePPC64_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpXor64_0(v *Value) bool {
// match: (Xor64 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValuePPC64_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
func rewriteValuePPC64_OpZero_0(v *Value) bool {
b := v.Block
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] destptr mem)
- // cond:
// result: (MOVBstorezero destptr mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] destptr mem)
- // cond:
// result: (MOVHstorezero destptr mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [3] destptr mem)
- // cond:
// result: (MOVBstorezero [2] destptr (MOVHstorezero destptr mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Zero [4] destptr mem)
- // cond:
// result: (MOVWstorezero destptr mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [5] destptr mem)
- // cond:
// result: (MOVBstorezero [4] destptr (MOVWstorezero destptr mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Zero [6] destptr mem)
- // cond:
// result: (MOVHstorezero [4] destptr (MOVWstorezero destptr mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Zero [7] destptr mem)
- // cond:
// result: (MOVBstorezero [6] destptr (MOVHstorezero [4] destptr (MOVWstorezero destptr mem)))
for {
if v.AuxInt != 7 {
return true
}
// match: (Zero [8] destptr mem)
- // cond:
// result: (MOVWstorezero [4] destptr (MOVWstorezero [0] destptr mem))
for {
if v.AuxInt != 8 {
return true
}
// match: (Zero [s] ptr mem)
- // cond:
// result: (LoweredZero [s] ptr mem)
for {
s := v.AuxInt
}
func rewriteValuePPC64_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVHZreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpZeroExt16to64_0(v *Value) bool {
// match: (ZeroExt16to64 x)
- // cond:
// result: (MOVHZreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpZeroExt32to64_0(v *Value) bool {
// match: (ZeroExt32to64 x)
- // cond:
// result: (MOVWZreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
}
func rewriteValuePPC64_OpZeroExt8to64_0(v *Value) bool {
// match: (ZeroExt8to64 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
switch b.Kind {
case BlockPPC64EQ:
// match: (EQ (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (EQ (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (EQ (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (EQ (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (EQ (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagLT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagGT {
b.Kind = BlockFirst
return true
}
// match: (EQ (InvertFlags cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpPPC64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (EQ (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (EQ (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (EQ (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (EQ (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
}
case BlockPPC64GE:
// match: (GE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagLT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagGT {
b.Kind = BlockFirst
return true
}
// match: (GE (InvertFlags cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpPPC64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GE (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (GE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (GE (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (GE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
}
case BlockPPC64GT:
// match: (GT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagLT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagGT {
b.Kind = BlockFirst
return true
}
// match: (GT (InvertFlags cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpPPC64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (GT (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (GT (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (GT (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (GT (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
}
case BlockIf:
// match: (If (Equal cc) yes no)
- // cond:
// result: (EQ cc yes no)
for v.Op == OpPPC64Equal {
cc := v.Args[0]
return true
}
// match: (If (NotEqual cc) yes no)
- // cond:
// result: (NE cc yes no)
for v.Op == OpPPC64NotEqual {
cc := v.Args[0]
return true
}
// match: (If (LessThan cc) yes no)
- // cond:
// result: (LT cc yes no)
for v.Op == OpPPC64LessThan {
cc := v.Args[0]
return true
}
// match: (If (LessEqual cc) yes no)
- // cond:
// result: (LE cc yes no)
for v.Op == OpPPC64LessEqual {
cc := v.Args[0]
return true
}
// match: (If (GreaterThan cc) yes no)
- // cond:
// result: (GT cc yes no)
for v.Op == OpPPC64GreaterThan {
cc := v.Args[0]
return true
}
// match: (If (GreaterEqual cc) yes no)
- // cond:
// result: (GE cc yes no)
for v.Op == OpPPC64GreaterEqual {
cc := v.Args[0]
return true
}
// match: (If (FLessThan cc) yes no)
- // cond:
// result: (FLT cc yes no)
for v.Op == OpPPC64FLessThan {
cc := v.Args[0]
return true
}
// match: (If (FLessEqual cc) yes no)
- // cond:
// result: (FLE cc yes no)
for v.Op == OpPPC64FLessEqual {
cc := v.Args[0]
return true
}
// match: (If (FGreaterThan cc) yes no)
- // cond:
// result: (FGT cc yes no)
for v.Op == OpPPC64FGreaterThan {
cc := v.Args[0]
return true
}
// match: (If (FGreaterEqual cc) yes no)
- // cond:
// result: (FGE cc yes no)
for v.Op == OpPPC64FGreaterEqual {
cc := v.Args[0]
return true
}
// match: (If cond yes no)
- // cond:
// result: (NE (CMPWconst [0] cond) yes no)
for {
cond := b.Control
}
case BlockPPC64LE:
// match: (LE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagLT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagGT {
b.Kind = BlockFirst
return true
}
// match: (LE (InvertFlags cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpPPC64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (LE (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (LE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (LE (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (LE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
}
case BlockPPC64LT:
// match: (LT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagLT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagGT {
b.Kind = BlockFirst
return true
}
// match: (LT (InvertFlags cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpPPC64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (LT (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (LT (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (LT (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (LT (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
}
case BlockPPC64NE:
// match: (NE (CMPWconst [0] (Equal cc)) yes no)
- // cond:
// result: (EQ cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (NotEqual cc)) yes no)
- // cond:
// result: (NE cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (LessThan cc)) yes no)
- // cond:
// result: (LT cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (LessEqual cc)) yes no)
- // cond:
// result: (LE cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (GreaterThan cc)) yes no)
- // cond:
// result: (GT cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (GreaterEqual cc)) yes no)
- // cond:
// result: (GE cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (FLessThan cc)) yes no)
- // cond:
// result: (FLT cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (FLessEqual cc)) yes no)
- // cond:
// result: (FLE cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (FGreaterThan cc)) yes no)
- // cond:
// result: (FGT cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (FGreaterEqual cc)) yes no)
- // cond:
// result: (FGE cc yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (NE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (NE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpPPC64FlagEQ {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagLT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpPPC64FlagGT {
b.Kind = BlockFirst
return true
}
// match: (NE (InvertFlags cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpPPC64InvertFlags {
cmp := v.Args[0]
return true
}
// match: (NE (CMPconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (NE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPconst {
if v.AuxInt != 0 {
return true
}
// match: (NE (CMPWconst [0] (ANDconst [c] x)) yes no)
- // cond:
// result: (NE (ANDCCconst [c] x) yes no)
for v.Op == OpPPC64CMPWconst {
if v.AuxInt != 0 {
}
func rewriteValueS390X_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (ADDW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (ADDW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (FADDS x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAdd64_0(v *Value) bool {
// match: (Add64 x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (FADD x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (ADDW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (ADD x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (MOVDaddr {sym} base)
for {
sym := v.Aux
}
func rewriteValueS390X_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (ANDW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (ANDW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAnd64_0(v *Value) bool {
// match: (And64 x y)
- // cond:
// result: (AND x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (ANDW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (ANDW x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicAdd32 ptr val mem)
- // cond:
// result: (AddTupleFirst32 val (LAA ptr val mem))
for {
mem := v.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (AtomicAdd64 ptr val mem)
- // cond:
// result: (AddTupleFirst64 val (LAAG ptr val mem))
for {
mem := v.Args[2]
}
func rewriteValueS390X_OpAtomicCompareAndSwap32_0(v *Value) bool {
// match: (AtomicCompareAndSwap32 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas32 ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueS390X_OpAtomicCompareAndSwap64_0(v *Value) bool {
// match: (AtomicCompareAndSwap64 ptr old new_ mem)
- // cond:
// result: (LoweredAtomicCas64 ptr old new_ mem)
for {
mem := v.Args[3]
}
func rewriteValueS390X_OpAtomicExchange32_0(v *Value) bool {
// match: (AtomicExchange32 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange32 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueS390X_OpAtomicExchange64_0(v *Value) bool {
// match: (AtomicExchange64 ptr val mem)
- // cond:
// result: (LoweredAtomicExchange64 ptr val mem)
for {
mem := v.Args[2]
}
func rewriteValueS390X_OpAtomicLoad32_0(v *Value) bool {
// match: (AtomicLoad32 ptr mem)
- // cond:
// result: (MOVWZatomicload ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueS390X_OpAtomicLoad64_0(v *Value) bool {
// match: (AtomicLoad64 ptr mem)
- // cond:
// result: (MOVDatomicload ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueS390X_OpAtomicLoad8_0(v *Value) bool {
// match: (AtomicLoad8 ptr mem)
- // cond:
// result: (MOVBZatomicload ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueS390X_OpAtomicLoadAcq32_0(v *Value) bool {
// match: (AtomicLoadAcq32 ptr mem)
- // cond:
// result: (MOVWZatomicload ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueS390X_OpAtomicLoadPtr_0(v *Value) bool {
// match: (AtomicLoadPtr ptr mem)
- // cond:
// result: (MOVDatomicload ptr mem)
for {
mem := v.Args[1]
func rewriteValueS390X_OpAtomicStore32_0(v *Value) bool {
b := v.Block
// match: (AtomicStore32 ptr val mem)
- // cond:
// result: (SYNC (MOVWatomicstore ptr val mem))
for {
mem := v.Args[2]
func rewriteValueS390X_OpAtomicStore64_0(v *Value) bool {
b := v.Block
// match: (AtomicStore64 ptr val mem)
- // cond:
// result: (SYNC (MOVDatomicstore ptr val mem))
for {
mem := v.Args[2]
func rewriteValueS390X_OpAtomicStorePtrNoWB_0(v *Value) bool {
b := v.Block
// match: (AtomicStorePtrNoWB ptr val mem)
- // cond:
// result: (SYNC (MOVDatomicstore ptr val mem))
for {
mem := v.Args[2]
}
func rewriteValueS390X_OpAtomicStoreRel32_0(v *Value) bool {
// match: (AtomicStoreRel32 ptr val mem)
- // cond:
// result: (MOVWatomicstore ptr val mem)
for {
mem := v.Args[2]
func rewriteValueS390X_OpAvg64u_0(v *Value) bool {
b := v.Block
// match: (Avg64u <t> x y)
- // cond:
// result: (ADD (SRDconst <t> (SUB <t> x y) [1]) y)
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen64 x)
- // cond:
// result: (SUB (MOVDconst [64]) (FLOGR x))
for {
x := v.Args[0]
}
func rewriteValueS390X_OpBswap32_0(v *Value) bool {
// match: (Bswap32 x)
- // cond:
// result: (MOVWBR x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpBswap64_0(v *Value) bool {
// match: (Bswap64 x)
- // cond:
// result: (MOVDBR x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCeil_0(v *Value) bool {
// match: (Ceil x)
- // cond:
// result: (FIDBR [6] x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (CALLclosure [argwid] entry closure mem)
for {
argwid := v.AuxInt
}
func rewriteValueS390X_OpCom16_0(v *Value) bool {
// match: (Com16 x)
- // cond:
// result: (NOTW x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCom32_0(v *Value) bool {
// match: (Com32 x)
- // cond:
// result: (NOTW x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCom64_0(v *Value) bool {
// match: (Com64 x)
- // cond:
// result: (NOT x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCom8_0(v *Value) bool {
// match: (Com8 x)
- // cond:
// result: (NOTW x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueS390X_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueS390X_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (FMOVSconst [val])
for {
val := v.AuxInt
}
func rewriteValueS390X_OpConst64_0(v *Value) bool {
// match: (Const64 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueS390X_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (FMOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueS390X_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (MOVDconst [val])
for {
val := v.AuxInt
}
func rewriteValueS390X_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (MOVDconst [b])
for {
b := v.AuxInt
}
func rewriteValueS390X_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (MOVDconst [0])
for {
v.reset(OpS390XMOVDconst)
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz32 <t> x)
- // cond:
// result: (SUB (MOVDconst [64]) (FLOGR (MOVWZreg (ANDW <t> (SUBWconst <t> [1] x) (NOTW <t> x)))))
for {
t := v.Type
}
func rewriteValueS390X_OpCtz32NonZero_0(v *Value) bool {
// match: (Ctz32NonZero x)
- // cond:
// result: (Ctz32 x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz64 <t> x)
- // cond:
// result: (SUB (MOVDconst [64]) (FLOGR (AND <t> (SUBconst <t> [1] x) (NOT <t> x))))
for {
t := v.Type
}
func rewriteValueS390X_OpCtz64NonZero_0(v *Value) bool {
// match: (Ctz64NonZero x)
- // cond:
// result: (Ctz64 x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (CFEBRA x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt32Fto64_0(v *Value) bool {
// match: (Cvt32Fto64 x)
- // cond:
// result: (CGEBRA x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (LDEBR x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F x)
- // cond:
// result: (CEFBRA x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F x)
- // cond:
// result: (CDFBRA x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (CFDBRA x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (LEDBR x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt64Fto64_0(v *Value) bool {
// match: (Cvt64Fto64 x)
- // cond:
// result: (CGDBRA x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt64to32F_0(v *Value) bool {
// match: (Cvt64to32F x)
- // cond:
// result: (CEGBRA x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpCvt64to64F_0(v *Value) bool {
// match: (Cvt64to64F x)
- // cond:
// result: (CDGBRA x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 x y)
- // cond:
// result: (DIVW (MOVHreg x) (MOVHreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (DIVWU (MOVHZreg x) (MOVHZreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32 x y)
- // cond:
// result: (DIVW (MOVWreg x) y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (FDIVS x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32u x y)
- // cond:
// result: (DIVWU (MOVWZreg x) y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpDiv64_0(v *Value) bool {
// match: (Div64 x y)
- // cond:
// result: (DIVD x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (FDIV x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpDiv64u_0(v *Value) bool {
// match: (Div64u x y)
- // cond:
// result: (DIVDU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (DIVW (MOVBreg x) (MOVBreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (DIVWU (MOVBZreg x) (MOVBZreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq16 x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVHreg x) (MOVHreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq32 x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (CMPW x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq32F x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (FCMPS x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq64 x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq64F x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (FCMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq8 x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqB x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqPtr x y)
- // cond:
// result: (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
}
func rewriteValueS390X_OpFloor_0(v *Value) bool {
// match: (Floor x)
- // cond:
// result: (FIDBR [7] x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16 x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVHreg x) (MOVHreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16U x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVHZreg x) (MOVHZreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32 x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMPW x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32F x y)
- // cond:
// result: (MOVDGEnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMPS x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32U x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMPWU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq64 x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq64F x y)
- // cond:
// result: (MOVDGEnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq64U x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8 x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8U x y)
- // cond:
// result: (MOVDGE (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVBZreg x) (MOVBZreg y)))
for {
y := v.Args[1]
}
func rewriteValueS390X_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpS390XLoweredGetCallerPC)
}
func rewriteValueS390X_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpS390XLoweredGetCallerSP)
}
func rewriteValueS390X_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpS390XLoweredGetClosurePtr)
}
func rewriteValueS390X_OpGetG_0(v *Value) bool {
// match: (GetG mem)
- // cond:
// result: (LoweredGetG mem)
for {
mem := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16 x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVHreg x) (MOVHreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16U x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVHZreg x) (MOVHZreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater32 x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMPW x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater32F x y)
- // cond:
// result: (MOVDGTnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMPS x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater32U x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMPWU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater64 x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater64F x y)
- // cond:
// result: (MOVDGTnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater64U x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8 x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8U x y)
- // cond:
// result: (MOVDGT (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVBZreg x) (MOVBZreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32 x y)
- // cond:
// result: (SRDconst [32] (MULLD (MOVWreg x) (MOVWreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Hmul32u x y)
- // cond:
// result: (SRDconst [32] (MULLD (MOVWZreg x) (MOVWZreg y)))
for {
y := v.Args[1]
}
func rewriteValueS390X_OpHmul64_0(v *Value) bool {
// match: (Hmul64 x y)
- // cond:
// result: (MULHD x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpHmul64u_0(v *Value) bool {
// match: (Hmul64u x y)
- // cond:
// result: (MULHDU x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpITab_0(v *Value) bool {
// match: (ITab (Load ptr mem))
- // cond:
// result: (MOVDload ptr mem)
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (CALLinter [argwid] entry mem)
for {
argwid := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (IsInBounds idx len)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPU idx len))
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (IsNonNil p)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (CMPconst p [0]))
for {
p := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (IsSliceInBounds idx len)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPU idx len))
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16 x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVHreg x) (MOVHreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16U x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVHZreg x) (MOVHZreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32 x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPW x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32F x y)
- // cond:
// result: (MOVDGEnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMPS y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32U x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPWU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq64 x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq64F x y)
- // cond:
// result: (MOVDGEnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMP y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq64U x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8 x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8U x y)
- // cond:
// result: (MOVDLE (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVBZreg x) (MOVBZreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16 x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVHreg x) (MOVHreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16U x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVHZreg x) (MOVHZreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less32 x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPW x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less32F x y)
- // cond:
// result: (MOVDGTnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMPS y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less32U x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPWU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less64 x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less64F x y)
- // cond:
// result: (MOVDGTnoinv (MOVDconst [0]) (MOVDconst [1]) (FCMP y x))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less64U x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPU x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8 x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8U x y)
- // cond:
// result: (MOVDLT (MOVDconst [0]) (MOVDconst [1]) (CMPWU (MOVBZreg x) (MOVBZreg y)))
for {
y := v.Args[1]
}
func rewriteValueS390X_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (MOVDaddr {sym} base)
for {
sym := v.Aux
return true
}
// match: (Lsh16x16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Lsh16x32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh16x64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh16x8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Lsh32x16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Lsh32x32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh32x64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh32x8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Lsh64x16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLD <t> x y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Lsh64x32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLD <t> x y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh64x64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLD <t> x y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh64x8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLD <t> x y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Lsh8x16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Lsh8x32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh8x64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Lsh8x8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SLW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 x y)
- // cond:
// result: (MODW (MOVHreg x) (MOVHreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (MODWU (MOVHZreg x) (MOVHZreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32 x y)
- // cond:
// result: (MODW (MOVWreg x) y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32u x y)
- // cond:
// result: (MODWU (MOVWZreg x) y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMod64_0(v *Value) bool {
// match: (Mod64 x y)
- // cond:
// result: (MODD x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMod64u_0(v *Value) bool {
// match: (Mod64u x y)
- // cond:
// result: (MODDU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (MODW (MOVBreg x) (MOVBreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (MODWU (MOVBZreg x) (MOVBZreg y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (MOVBstore dst (MOVBZload src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (MOVHstore dst (MOVHZload src mem) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (MOVWstore dst (MOVWZload src mem) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [8] dst src mem)
- // cond:
// result: (MOVDstore dst (MOVDload src mem) mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Move [16] dst src mem)
- // cond:
// result: (MOVDstore [8] dst (MOVDload [8] src mem) (MOVDstore dst (MOVDload src mem) mem))
for {
if v.AuxInt != 16 {
return true
}
// match: (Move [24] dst src mem)
- // cond:
// result: (MOVDstore [16] dst (MOVDload [16] src mem) (MOVDstore [8] dst (MOVDload [8] src mem) (MOVDstore dst (MOVDload src mem) mem)))
for {
if v.AuxInt != 24 {
return true
}
// match: (Move [3] dst src mem)
- // cond:
// result: (MOVBstore [2] dst (MOVBZload [2] src mem) (MOVHstore dst (MOVHZload src mem) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Move [5] dst src mem)
- // cond:
// result: (MOVBstore [4] dst (MOVBZload [4] src mem) (MOVWstore dst (MOVWZload src mem) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Move [6] dst src mem)
- // cond:
// result: (MOVHstore [4] dst (MOVHZload [4] src mem) (MOVWstore dst (MOVWZload src mem) mem))
for {
if v.AuxInt != 6 {
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [7] dst src mem)
- // cond:
// result: (MOVBstore [6] dst (MOVBZload [6] src mem) (MOVHstore [4] dst (MOVHZload [4] src mem) (MOVWstore dst (MOVWZload src mem) mem)))
for {
if v.AuxInt != 7 {
}
func rewriteValueS390X_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (MULLW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (MULLW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (FMULS x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMul64_0(v *Value) bool {
// match: (Mul64 x y)
- // cond:
// result: (MULLD x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (FMUL x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMul64uhilo_0(v *Value) bool {
// match: (Mul64uhilo x y)
- // cond:
// result: (MLGR x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (MULLW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpNeg16_0(v *Value) bool {
// match: (Neg16 x)
- // cond:
// result: (NEGW x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpNeg32_0(v *Value) bool {
// match: (Neg32 x)
- // cond:
// result: (NEGW x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpNeg32F_0(v *Value) bool {
// match: (Neg32F x)
- // cond:
// result: (FNEGS x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpNeg64_0(v *Value) bool {
// match: (Neg64 x)
- // cond:
// result: (NEG x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpNeg64F_0(v *Value) bool {
// match: (Neg64F x)
- // cond:
// result: (FNEG x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpNeg8_0(v *Value) bool {
// match: (Neg8 x)
- // cond:
// result: (NEGW x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq16 x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVHreg x) (MOVHreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq32 x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (CMPW x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq32F x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (FCMPS x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq64 x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq64F x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (FCMP x y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq8 x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (NeqB x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (NeqPtr x y)
- // cond:
// result: (MOVDNE (MOVDconst [0]) (MOVDconst [1]) (CMP x y))
for {
y := v.Args[1]
}
func rewriteValueS390X_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueS390X_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (XORWconst [1] x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (OffPtr [off] ptr:(SP))
- // cond:
// result: (MOVDaddr [off] ptr)
for {
off := v.AuxInt
return true
}
// match: (OffPtr [off] ptr)
- // cond:
// result: (ADD (MOVDconst [off]) ptr)
for {
off := v.AuxInt
}
func rewriteValueS390X_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (ORW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (ORW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpOr64_0(v *Value) bool {
// match: (Or64 x y)
- // cond:
// result: (OR x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (ORW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (ORW x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount16 x)
- // cond:
// result: (MOVBZreg (SumBytes2 (POPCNT <typ.UInt16> x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount32 x)
- // cond:
// result: (MOVBZreg (SumBytes4 (POPCNT <typ.UInt32> x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount64 x)
- // cond:
// result: (MOVBZreg (SumBytes8 (POPCNT <typ.UInt64> x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount8 x)
- // cond:
// result: (POPCNT (MOVBZreg x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft16 <t> x (MOVDconst [c]))
- // cond:
// result: (Or16 (Lsh16x64 <t> x (MOVDconst [c&15])) (Rsh16Ux64 <t> x (MOVDconst [-c&15])))
for {
t := v.Type
}
func rewriteValueS390X_OpRotateLeft32_0(v *Value) bool {
// match: (RotateLeft32 x y)
- // cond:
// result: (RLL x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpRotateLeft64_0(v *Value) bool {
// match: (RotateLeft64 x y)
- // cond:
// result: (RLLG x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft8 <t> x (MOVDconst [c]))
- // cond:
// result: (Or8 (Lsh8x64 <t> x (MOVDconst [c&7])) (Rsh8Ux64 <t> x (MOVDconst [-c&7])))
for {
t := v.Type
}
func rewriteValueS390X_OpRound_0(v *Value) bool {
// match: (Round x)
- // cond:
// result: (FIDBR [1] x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: (LoweredRound32F x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: (LoweredRound64F x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpRoundToEven_0(v *Value) bool {
// match: (RoundToEven x)
- // cond:
// result: (FIDBR [4] x)
for {
x := v.Args[0]
return true
}
// match: (Rsh16Ux16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVHZreg x) y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh16Ux32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVHZreg x) y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh16Ux64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVHZreg x) y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh16Ux8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVHZreg x) y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh16x16 x y)
- // cond:
// result: (SRAW (MOVHreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVHZreg y) [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh16x32 x y)
- // cond:
// result: (SRAW (MOVHreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh16x64 x y)
- // cond:
// result: (SRAW (MOVHreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh16x8 x y)
- // cond:
// result: (SRAW (MOVHreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVBZreg y) [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh32Ux16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh32Ux32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> x y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh32Ux64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> x y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh32Ux8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> x y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh32x16 x y)
- // cond:
// result: (SRAW x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVHZreg y) [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh32x32 x y)
- // cond:
// result: (SRAW x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh32x64 x y)
- // cond:
// result: (SRAW x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh32x8 x y)
- // cond:
// result: (SRAW x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVBZreg y) [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh64Ux16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRD <t> x y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh64Ux32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRD <t> x y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh64Ux64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRD <t> x y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh64Ux8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRD <t> x y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh64x16 x y)
- // cond:
// result: (SRAD x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVHZreg y) [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x32 x y)
- // cond:
// result: (SRAD x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x64 x y)
- // cond:
// result: (SRAD x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x8 x y)
- // cond:
// result: (SRAD x (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVBZreg y) [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh8Ux16 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVBZreg x) y) (MOVDconst [0]) (CMPWUconst (MOVHZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh8Ux32 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVBZreg x) y) (MOVDconst [0]) (CMPWUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh8Ux64 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVBZreg x) y) (MOVDconst [0]) (CMPUconst y [64]))
for {
t := v.Type
return true
}
// match: (Rsh8Ux8 <t> x y)
- // cond:
// result: (MOVDGE <t> (SRW <t> (MOVBZreg x) y) (MOVDconst [0]) (CMPWUconst (MOVBZreg y) [64]))
for {
t := v.Type
return true
}
// match: (Rsh8x16 x y)
- // cond:
// result: (SRAW (MOVBreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVHZreg y) [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh8x32 x y)
- // cond:
// result: (SRAW (MOVBreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh8x64 x y)
- // cond:
// result: (SRAW (MOVBreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPUconst y [64])))
for {
y := v.Args[1]
return true
}
// match: (Rsh8x8 x y)
- // cond:
// result: (SRAW (MOVBreg x) (MOVDGE <y.Type> y (MOVDconst <y.Type> [63]) (CMPWUconst (MOVBZreg y) [64])))
for {
y := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpS390XRLLGconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpS390XRLLGconst)
return true
}
// match: (ADD x (NEG y))
- // cond:
// result: (SUB x y)
for {
_ = v.Args[1]
return true
}
// match: (ADD (NEG y) x)
- // cond:
// result: (SUB x y)
for {
x := v.Args[1]
}
func rewriteValueS390X_OpS390XADDE_0(v *Value) bool {
// match: (ADDE x y (FlagEQ))
- // cond:
// result: (ADDC x y)
for {
_ = v.Args[2]
return true
}
// match: (ADDE x y (FlagLT))
- // cond:
// result: (ADDC x y)
for {
_ = v.Args[2]
return true
}
// match: (ADDE x y (Select1 (ADDCconst [-1] (Select0 (ADDE (MOVDconst [0]) (MOVDconst [0]) c)))))
- // cond:
// result: (ADDE x y c)
for {
_ = v.Args[2]
break
}
v_2_0 := v_2.Args[0]
- if v_2_0.Op != OpS390XADDCconst {
- break
- }
- if v_2_0.AuxInt != -1 {
+ if v_2_0.Op != OpS390XADDCconst || v_2_0.AuxInt != -1 {
break
}
v_2_0_0 := v_2_0.Args[0]
}
c := v_2_0_0_0.Args[2]
v_2_0_0_0_0 := v_2_0_0_0.Args[0]
- if v_2_0_0_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_2_0_0_0_0.AuxInt != 0 {
+ if v_2_0_0_0_0.Op != OpS390XMOVDconst || v_2_0_0_0_0.AuxInt != 0 {
break
}
v_2_0_0_0_1 := v_2_0_0_0.Args[1]
- if v_2_0_0_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_2_0_0_0_1.AuxInt != 0 {
+ if v_2_0_0_0_1.Op != OpS390XMOVDconst || v_2_0_0_0_1.AuxInt != 0 {
break
}
v.reset(OpS390XADDE)
return true
}
// match: (ADDE x y (Select1 (ADDCconst [-1] (Select0 (ADDE (MOVDconst [0]) (MOVDconst [0]) c)))))
- // cond:
// result: (ADDE x y c)
for {
_ = v.Args[2]
break
}
v_2_0 := v_2.Args[0]
- if v_2_0.Op != OpS390XADDCconst {
- break
- }
- if v_2_0.AuxInt != -1 {
+ if v_2_0.Op != OpS390XADDCconst || v_2_0.AuxInt != -1 {
break
}
v_2_0_0 := v_2_0.Args[0]
}
c := v_2_0_0_0.Args[2]
v_2_0_0_0_0 := v_2_0_0_0.Args[0]
- if v_2_0_0_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_2_0_0_0_0.AuxInt != 0 {
+ if v_2_0_0_0_0.Op != OpS390XMOVDconst || v_2_0_0_0_0.AuxInt != 0 {
break
}
v_2_0_0_0_1 := v_2_0_0_0.Args[1]
- if v_2_0_0_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_2_0_0_0_1.AuxInt != 0 {
+ if v_2_0_0_0_1.Op != OpS390XMOVDconst || v_2_0_0_0_1.AuxInt != 0 {
break
}
v.reset(OpS390XADDE)
}
func rewriteValueS390X_OpS390XADDW_0(v *Value) bool {
// match: (ADDW x (MOVDconst [c]))
- // cond:
// result: (ADDWconst [int64(int32(c))] x)
for {
_ = v.Args[1]
return true
}
// match: (ADDW (MOVDconst [c]) x)
- // cond:
// result: (ADDWconst [int64(int32(c))] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpS390XRLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpS390XRLLconst)
return true
}
// match: (ADDW x (NEGW y))
- // cond:
// result: (SUBW x y)
for {
_ = v.Args[1]
return true
}
// match: (ADDW (NEGW y) x)
- // cond:
// result: (SUBW x y)
for {
x := v.Args[1]
return true
}
// match: (ADDWconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(int32(c+d))])
for {
c := v.AuxInt
return true
}
// match: (ADDWconst [c] (ADDWconst [d] x))
- // cond:
// result: (ADDWconst [int64(int32(c+d))] x)
for {
c := v.AuxInt
d := v_0.AuxInt
s := v_0.Aux
x := v_0.Args[0]
- if x.Op != OpSB {
- break
- }
- if !(((c+d)&1 == 0) && is32Bit(c+d)) {
+ if x.Op != OpSB || !(((c+d)&1 == 0) && is32Bit(c+d)) {
break
}
v.reset(OpS390XMOVDaddr)
return true
}
// match: (ADDconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ADDconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c+d])
for {
c := v.AuxInt
x := v.Args[0]
ptr1 := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XFMOVDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (AND x (MOVDconst [0xFF]))
- // cond:
// result: (MOVBZreg x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 0xFF {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 0xFF {
break
}
v.reset(OpS390XMOVBZreg)
return true
}
// match: (AND (MOVDconst [0xFF]) x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0xFF {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0xFF {
break
}
v.reset(OpS390XMOVBZreg)
return true
}
// match: (AND x (MOVDconst [0xFFFF]))
- // cond:
// result: (MOVHZreg x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 0xFFFF {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 0xFFFF {
break
}
v.reset(OpS390XMOVHZreg)
return true
}
// match: (AND (MOVDconst [0xFFFF]) x)
- // cond:
// result: (MOVHZreg x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0xFFFF {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0xFFFF {
break
}
v.reset(OpS390XMOVHZreg)
return true
}
// match: (AND x (MOVDconst [0xFFFFFFFF]))
- // cond:
// result: (MOVWZreg x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 0xFFFFFFFF {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 0xFFFFFFFF {
break
}
v.reset(OpS390XMOVWZreg)
return true
}
// match: (AND (MOVDconst [0xFFFFFFFF]) x)
- // cond:
// result: (MOVWZreg x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0xFFFFFFFF {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0xFFFFFFFF {
break
}
v.reset(OpS390XMOVWZreg)
}
func rewriteValueS390X_OpS390XAND_10(v *Value) bool {
// match: (AND (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c&d])
for {
_ = v.Args[1]
return true
}
// match: (AND (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c&d])
for {
_ = v.Args[1]
return true
}
// match: (AND x x)
- // cond:
// result: x
for {
x := v.Args[1]
}
func rewriteValueS390X_OpS390XANDW_0(v *Value) bool {
// match: (ANDW x (MOVDconst [c]))
- // cond:
// result: (ANDWconst [int64(int32(c))] x)
for {
_ = v.Args[1]
return true
}
// match: (ANDW (MOVDconst [c]) x)
- // cond:
// result: (ANDWconst [int64(int32(c))] x)
for {
x := v.Args[1]
return true
}
// match: (ANDW x x)
- // cond:
// result: x
for {
x := v.Args[1]
}
func rewriteValueS390X_OpS390XANDWconst_0(v *Value) bool {
// match: (ANDWconst [c] (ANDWconst [d] x))
- // cond:
// result: (ANDWconst [c & d] x)
for {
c := v.AuxInt
return true
}
// match: (ANDWconst [0xFF] x)
- // cond:
// result: (MOVBZreg x)
for {
if v.AuxInt != 0xFF {
return true
}
// match: (ANDWconst [0xFFFF] x)
- // cond:
// result: (MOVHZreg x)
for {
if v.AuxInt != 0xFFFF {
return true
}
// match: (ANDWconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c&d])
for {
c := v.AuxInt
}
func rewriteValueS390X_OpS390XANDconst_0(v *Value) bool {
// match: (ANDconst [c] (ANDconst [d] x))
- // cond:
// result: (ANDconst [c & d] x)
for {
c := v.AuxInt
return true
}
// match: (ANDconst [0] _)
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (ANDconst [-1] x)
- // cond:
// result: x
for {
if v.AuxInt != -1 {
return true
}
// match: (ANDconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c&d])
for {
c := v.AuxInt
x := v.Args[0]
ptr1 := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XFMOVDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
return true
}
// match: (CMPUconst (MOVWZreg x) [c])
- // cond:
// result: (CMPWUconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPUconst x:(MOVHreg _) [c])
- // cond:
// result: (CMPWUconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPUconst x:(MOVHZreg _) [c])
- // cond:
// result: (CMPWUconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPUconst x:(MOVBreg _) [c])
- // cond:
// result: (CMPWUconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPUconst x:(MOVBZreg _) [c])
- // cond:
// result: (CMPWUconst x [c])
for {
c := v.AuxInt
func rewriteValueS390X_OpS390XCMPW_0(v *Value) bool {
b := v.Block
// match: (CMPW x (MOVDconst [c]))
- // cond:
// result: (CMPWconst x [int64(int32(c))])
for {
_ = v.Args[1]
return true
}
// match: (CMPW (MOVDconst [c]) x)
- // cond:
// result: (InvertFlags (CMPWconst x [int64(int32(c))]))
for {
x := v.Args[1]
return true
}
// match: (CMPW x (MOVWreg y))
- // cond:
// result: (CMPW x y)
for {
_ = v.Args[1]
return true
}
// match: (CMPW x (MOVWZreg y))
- // cond:
// result: (CMPW x y)
for {
_ = v.Args[1]
return true
}
// match: (CMPW (MOVWreg x) y)
- // cond:
// result: (CMPW x y)
for {
y := v.Args[1]
return true
}
// match: (CMPW (MOVWZreg x) y)
- // cond:
// result: (CMPW x y)
for {
y := v.Args[1]
func rewriteValueS390X_OpS390XCMPWU_0(v *Value) bool {
b := v.Block
// match: (CMPWU x (MOVDconst [c]))
- // cond:
// result: (CMPWUconst x [int64(int32(c))])
for {
_ = v.Args[1]
return true
}
// match: (CMPWU (MOVDconst [c]) x)
- // cond:
// result: (InvertFlags (CMPWUconst x [int64(int32(c))]))
for {
x := v.Args[1]
return true
}
// match: (CMPWU x (MOVWreg y))
- // cond:
// result: (CMPWU x y)
for {
_ = v.Args[1]
return true
}
// match: (CMPWU x (MOVWZreg y))
- // cond:
// result: (CMPWU x y)
for {
_ = v.Args[1]
return true
}
// match: (CMPWU (MOVWreg x) y)
- // cond:
// result: (CMPWU x y)
for {
y := v.Args[1]
return true
}
// match: (CMPWU (MOVWZreg x) y)
- // cond:
// result: (CMPWU x y)
for {
y := v.Args[1]
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVBZreg {
- break
- }
- if !(0xff < c) {
+ if v_0.Op != OpS390XMOVBZreg || !(0xff < c) {
break
}
v.reset(OpS390XFlagLT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVHZreg {
- break
- }
- if !(0xffff < c) {
+ if v_0.Op != OpS390XMOVHZreg || !(0xffff < c) {
break
}
v.reset(OpS390XFlagLT)
return true
}
// match: (CMPWUconst (MOVWreg x) [c])
- // cond:
// result: (CMPWUconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPWUconst (MOVWZreg x) [c])
- // cond:
// result: (CMPWUconst x [c])
for {
c := v.AuxInt
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVBZreg {
- break
- }
- if !(0xff < c) {
+ if v_0.Op != OpS390XMOVBZreg || !(0xff < c) {
break
}
v.reset(OpS390XFlagLT)
for {
c := v.AuxInt
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVHZreg {
- break
- }
- if !(0xffff < c) {
+ if v_0.Op != OpS390XMOVHZreg || !(0xffff < c) {
break
}
v.reset(OpS390XFlagLT)
return true
}
// match: (CMPWconst (MOVWreg x) [c])
- // cond:
// result: (CMPWconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPWconst (MOVWZreg x) [c])
- // cond:
// result: (CMPWconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPconst (MOVWreg x) [c])
- // cond:
// result: (CMPWconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPconst x:(MOVHreg _) [c])
- // cond:
// result: (CMPWconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPconst x:(MOVHZreg _) [c])
- // cond:
// result: (CMPWconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPconst x:(MOVBreg _) [c])
- // cond:
// result: (CMPWconst x [c])
for {
c := v.AuxInt
return true
}
// match: (CMPconst x:(MOVBZreg _) [c])
- // cond:
// result: (CMPWconst x [c])
for {
c := v.AuxInt
}
func rewriteValueS390X_OpS390XFADD_0(v *Value) bool {
// match: (FADD (FMUL y z) x)
- // cond:
// result: (FMADD x y z)
for {
x := v.Args[1]
return true
}
// match: (FADD x (FMUL y z))
- // cond:
// result: (FMADD x y z)
for {
_ = v.Args[1]
}
func rewriteValueS390X_OpS390XFADDS_0(v *Value) bool {
// match: (FADDS (FMULS y z) x)
- // cond:
// result: (FMADDS x y z)
for {
x := v.Args[1]
return true
}
// match: (FADDS x (FMULS y z))
- // cond:
// result: (FMADDS x y z)
for {
_ = v.Args[1]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XFMOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XFMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XFMOVSstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XFMOVSstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
}
func rewriteValueS390X_OpS390XFNEG_0(v *Value) bool {
// match: (FNEG (LPDFR x))
- // cond:
// result: (LNDFR x)
for {
v_0 := v.Args[0]
return true
}
// match: (FNEG (LNDFR x))
- // cond:
// result: (LPDFR x)
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XFNEGS_0(v *Value) bool {
// match: (FNEGS (LPDFR x))
- // cond:
// result: (LNDFR x)
for {
v_0 := v.Args[0]
return true
}
// match: (FNEGS (LNDFR x))
- // cond:
// result: (LPDFR x)
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XFSUB_0(v *Value) bool {
// match: (FSUB (FMUL y z) x)
- // cond:
// result: (FMSUB x y z)
for {
x := v.Args[1]
}
func rewriteValueS390X_OpS390XFSUBS_0(v *Value) bool {
// match: (FSUBS (FMULS y z) x)
- // cond:
// result: (FMSUBS x y z)
for {
x := v.Args[1]
func rewriteValueS390X_OpS390XLDGR_0(v *Value) bool {
b := v.Block
// match: (LDGR <t> (SRDconst [1] (SLDconst [1] x)))
- // cond:
// result: (LPDFR (LDGR <t> x))
for {
t := v.Type
v_0 := v.Args[0]
- if v_0.Op != OpS390XSRDconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpS390XSRDconst || v_0.AuxInt != 1 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XSLDconst {
- break
- }
- if v_0_0.AuxInt != 1 {
+ if v_0_0.Op != OpS390XSLDconst || v_0_0.AuxInt != 1 {
break
}
x := v_0_0.Args[0]
return true
}
// match: (LDGR <t> (OR (MOVDconst [-1<<63]) x))
- // cond:
// result: (LNDFR (LDGR <t> x))
for {
t := v.Type
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != -1<<63 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != -1<<63 {
break
}
v.reset(OpS390XLNDFR)
return true
}
// match: (LDGR <t> (OR x (MOVDconst [-1<<63])))
- // cond:
// result: (LNDFR (LDGR <t> x))
for {
t := v.Type
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != -1<<63 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != -1<<63 {
break
}
v.reset(OpS390XLNDFR)
sym := x.Aux
mem := x.Args[2]
x_0 := x.Args[0]
- if x_0.Op != OpS390XMOVDconst {
- break
- }
- if x_0.AuxInt != -1<<63 {
+ if x_0.Op != OpS390XMOVDconst || x_0.AuxInt != -1<<63 {
break
}
ptr := x.Args[1]
return true
}
// match: (LDGR (LGDR x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XLEDBR_0(v *Value) bool {
// match: (LEDBR (LPDFR (LDEBR x)))
- // cond:
// result: (LPDFR x)
for {
v_0 := v.Args[0]
return true
}
// match: (LEDBR (LNDFR (LDEBR x)))
- // cond:
// result: (LNDFR x)
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XLGDR_0(v *Value) bool {
// match: (LGDR (LDGR x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XLoweredRound32F_0(v *Value) bool {
// match: (LoweredRound32F x:(FMOVSconst))
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueS390X_OpS390XLoweredRound64F_0(v *Value) bool {
// match: (LoweredRound64F x:(FMOVDconst))
- // cond:
// result: x
for {
x := v.Args[0]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVBstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVBstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
return true
}
// match: (MOVBZreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64( uint8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVBZreg (ANDWconst [m] x))
- // cond:
// result: (MOVWZreg (ANDWconst <typ.UInt32> [int64( uint8(m))] x))
for {
v_0 := v.Args[0]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVBstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVBstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
return true
}
// match: (MOVBreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64( int8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XMOVBstore_0(v *Value) bool {
// match: (MOVBstore [off] {sym} ptr (MOVBreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVBstore [off] {sym} ptr (MOVBZreg x) mem)
- // cond:
// result: (MOVBstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRDconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRDconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstore)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRDconst {
- break
- }
- if x_1.AuxInt != j+8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRDconst || x_1.AuxInt != j+8 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstore)
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRWconst {
- break
- }
- if x_1.AuxInt != 8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRWconst || x_1.AuxInt != 8 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstore)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRWconst {
- break
- }
- if x_1.AuxInt != j+8 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRWconst || x_1.AuxInt != j+8 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSRDconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpS390XSRDconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSRWconst {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpS390XSRWconst || v_1.AuxInt != 8 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVBstore {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstore || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstore)
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(p.Op != OpSB && x.Uses == 1 && ValAndOff(a).Off()+1 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreconst)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+8 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+8 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 8 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 8 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVBstoreidx {
- break
- }
- if x.AuxInt != i-1 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVBstoreidx || x.AuxInt != i-1 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-8 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-8 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVHBRstoreidx)
}
func rewriteValueS390X_OpS390XMOVDEQ_0(v *Value) bool {
// match: (MOVDEQ x y (InvertFlags cmp))
- // cond:
// result: (MOVDEQ x y cmp)
for {
_ = v.Args[2]
return true
}
// match: (MOVDEQ _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (MOVDEQ y _ (FlagLT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (MOVDEQ y _ (FlagGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueS390X_OpS390XMOVDGE_0(v *Value) bool {
// match: (MOVDGE x y (InvertFlags cmp))
- // cond:
// result: (MOVDLE x y cmp)
for {
_ = v.Args[2]
return true
}
// match: (MOVDGE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (MOVDGE y _ (FlagLT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (MOVDGE _ x (FlagGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueS390X_OpS390XMOVDGT_0(v *Value) bool {
// match: (MOVDGT x y (InvertFlags cmp))
- // cond:
// result: (MOVDLT x y cmp)
for {
_ = v.Args[2]
return true
}
// match: (MOVDGT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (MOVDGT y _ (FlagLT))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (MOVDGT _ x (FlagGT))
- // cond:
// result: x
for {
_ = v.Args[2]
}
func rewriteValueS390X_OpS390XMOVDLE_0(v *Value) bool {
// match: (MOVDLE x y (InvertFlags cmp))
- // cond:
// result: (MOVDGE x y cmp)
for {
_ = v.Args[2]
return true
}
// match: (MOVDLE _ x (FlagEQ))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (MOVDLE _ x (FlagLT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (MOVDLE y _ (FlagGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueS390X_OpS390XMOVDLT_0(v *Value) bool {
// match: (MOVDLT x y (InvertFlags cmp))
- // cond:
// result: (MOVDGT x y cmp)
for {
_ = v.Args[2]
return true
}
// match: (MOVDLT y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (MOVDLT _ x (FlagLT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (MOVDLT y _ (FlagGT))
- // cond:
// result: y
for {
_ = v.Args[2]
}
func rewriteValueS390X_OpS390XMOVDNE_0(v *Value) bool {
// match: (MOVDNE x y (InvertFlags cmp))
- // cond:
// result: (MOVDNE x y cmp)
for {
_ = v.Args[2]
return true
}
// match: (MOVDNE y _ (FlagEQ))
- // cond:
// result: y
for {
_ = v.Args[2]
return true
}
// match: (MOVDNE _ x (FlagLT))
- // cond:
// result: x
for {
_ = v.Args[2]
return true
}
// match: (MOVDNE _ x (FlagGT))
- // cond:
// result: x
for {
_ = v.Args[2]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XFMOVDstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XFMOVDstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
p := v.Args[0]
w1 := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XMOVDstore {
- break
- }
- if x.AuxInt != i-8 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVDstore || x.AuxInt != i-8 || x.Aux != s {
break
}
mem := x.Args[2]
p := v.Args[0]
w2 := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XSTMG2 {
- break
- }
- if x.AuxInt != i-16 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XSTMG2 || x.AuxInt != i-16 || x.Aux != s {
break
}
mem := x.Args[3]
p := v.Args[0]
w3 := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XSTMG3 {
- break
- }
- if x.AuxInt != i-24 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XSTMG3 || x.AuxInt != i-24 || x.Aux != s {
break
}
mem := x.Args[4]
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSRDconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpS390XSRDconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVHBRstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVHBRstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstore)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSRWconst {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpS390XSRWconst || v_1.AuxInt != 16 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVHBRstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVHBRstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstore)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRWconst {
- break
- }
- if v_2.AuxInt != 16 {
+ if v_2.Op != OpS390XSRWconst || v_2.AuxInt != 16 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHBRstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHBRstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRWconst {
- break
- }
- if w0.AuxInt != j-16 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRWconst || w0.AuxInt != j-16 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWBRstoreidx)
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVHstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVHstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
return true
}
// match: (MOVHZreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (MOVHZreg (ANDWconst [m] x))
- // cond:
// result: (MOVWZreg (ANDWconst <typ.UInt32> [int64(uint16(m))] x))
for {
v_0 := v.Args[0]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVHstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVHstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
return true
}
// match: (MOVHreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int16(c))])
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XMOVHstore_0(v *Value) bool {
// match: (MOVHstore [off] {sym} ptr (MOVHreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVHstore [off] {sym} ptr (MOVHZreg x) mem)
- // cond:
// result: (MOVHstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XMOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRDconst {
- break
- }
- if x_1.AuxInt != 16 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRDconst || x_1.AuxInt != 16 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstore)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRDconst {
- break
- }
- if x_1.AuxInt != j+16 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRDconst || x_1.AuxInt != j+16 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstore)
p := v.Args[0]
w := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XMOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRWconst {
- break
- }
- if x_1.AuxInt != 16 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRWconst || x_1.AuxInt != 16 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstore)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVHstore {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstore || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRWconst {
- break
- }
- if x_1.AuxInt != j+16 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRWconst || x_1.AuxInt != j+16 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstore)
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(p.Op != OpSB && x.Uses == 1 && ValAndOff(a).Off()+2 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpS390XMOVWstore)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != 16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != 16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVHstoreidx {
- break
- }
- if x.AuxInt != i-2 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVHstoreidx || x.AuxInt != i-2 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRWconst {
- break
- }
- if x_2.AuxInt != j+16 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRWconst || x_2.AuxInt != j+16 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVWstoreidx)
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSRDconst {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpS390XSRDconst || v_1.AuxInt != 32 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVWBRstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstore)
j := v_1.AuxInt
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVWBRstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
w0 := x.Args[1]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstore)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 32 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 32 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
p := v.Args[0]
idx := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 32 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 32 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 32 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 32 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || idx != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
idx := v.Args[0]
p := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XSRDconst {
- break
- }
- if v_2.AuxInt != 32 {
+ if v_2.Op != OpS390XSRDconst || v_2.AuxInt != 32 {
break
}
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
- break
- }
- if w != x.Args[2] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if idx != x.Args[0] || p != x.Args[1] || w != x.Args[2] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
j := v_2.AuxInt
w := v_2.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWBRstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWBRstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
w0 := x.Args[2]
- if w0.Op != OpS390XSRDconst {
- break
- }
- if w0.AuxInt != j-32 {
- break
- }
- if w != w0.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if w0.Op != OpS390XSRDconst || w0.AuxInt != j-32 || w != w0.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDBRstoreidx)
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVWstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVWstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
return true
}
// match: (MOVWZreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(uint32(c))])
for {
v_0 := v.Args[0]
_ = v.Args[1]
ptr1 := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVWstore {
- break
- }
- if v_1.AuxInt != off {
- break
- }
- if v_1.Aux != sym {
+ if v_1.Op != OpS390XMOVWstore || v_1.AuxInt != off || v_1.Aux != sym {
break
}
_ = v_1.Args[2]
return true
}
// match: (MOVWreg (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int32(c))])
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XMOVWstore_0(v *Value) bool {
// match: (MOVWstore [off] {sym} ptr (MOVWreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
return true
}
// match: (MOVWstore [off] {sym} ptr (MOVWZreg x) mem)
- // cond:
// result: (MOVWstore [off] {sym} ptr x mem)
for {
off := v.AuxInt
_ = v.Args[2]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSRDconst {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpS390XSRDconst || v_1.AuxInt != 32 {
break
}
w := v_1.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVWstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
- if p != x.Args[0] {
- break
- }
- if w != x.Args[1] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if p != x.Args[0] || w != x.Args[1] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstore)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[2]
- if x.Op != OpS390XMOVWstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
break
}
x_1 := x.Args[1]
- if x_1.Op != OpS390XSRDconst {
- break
- }
- if x_1.AuxInt != j+32 {
- break
- }
- if w != x_1.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
+ if x_1.Op != OpS390XSRDconst || x_1.AuxInt != j+32 || w != x_1.Args[0] || !(p.Op != OpSB && x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstore)
p := v.Args[0]
w1 := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XMOVWstore {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstore || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[2]
p := v.Args[0]
w2 := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XSTM2 {
- break
- }
- if x.AuxInt != i-8 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XSTM2 || x.AuxInt != i-8 || x.Aux != s {
break
}
mem := x.Args[3]
p := v.Args[0]
w3 := v.Args[1]
x := v.Args[2]
- if x.Op != OpS390XSTM3 {
- break
- }
- if x.AuxInt != i-12 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XSTM3 || x.AuxInt != i-12 || x.Aux != s {
break
}
mem := x.Args[4]
break
}
mem := x.Args[1]
- if p != x.Args[0] {
- break
- }
- if !(p.Op != OpSB && x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
+ if p != x.Args[0] || !(p.Op != OpSB && x.Uses == 1 && ValAndOff(a).Off()+4 == ValAndOff(c).Off() && clobber(x)) {
break
}
v.reset(OpS390XMOVDstore)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
idx := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
p := v.Args[1]
w := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != 32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != 32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if p != x.Args[0] {
- break
- }
- if idx != x.Args[1] {
+ if p != x.Args[0] || idx != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
j := w0.AuxInt
w := w0.Args[0]
x := v.Args[3]
- if x.Op != OpS390XMOVWstoreidx {
- break
- }
- if x.AuxInt != i-4 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XMOVWstoreidx || x.AuxInt != i-4 || x.Aux != s {
break
}
mem := x.Args[3]
- if idx != x.Args[0] {
- break
- }
- if p != x.Args[1] {
+ if idx != x.Args[0] || p != x.Args[1] {
break
}
x_2 := x.Args[2]
- if x_2.Op != OpS390XSRDconst {
- break
- }
- if x_2.AuxInt != j+32 {
- break
- }
- if w != x_2.Args[0] {
- break
- }
- if !(x.Uses == 1 && clobber(x)) {
+ if x_2.Op != OpS390XSRDconst || x_2.AuxInt != j+32 || w != x_2.Args[0] || !(x.Uses == 1 && clobber(x)) {
break
}
v.reset(OpS390XMOVDstoreidx)
func rewriteValueS390X_OpS390XMULLDconst_0(v *Value) bool {
b := v.Block
// match: (MULLDconst [-1] x)
- // cond:
// result: (NEG x)
for {
if v.AuxInt != -1 {
return true
}
// match: (MULLDconst [0] _)
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (MULLDconst [1] x)
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (MULLDconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c*d])
for {
c := v.AuxInt
x := v.Args[0]
ptr1 := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XFMOVDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
func rewriteValueS390X_OpS390XMULLW_0(v *Value) bool {
// match: (MULLW x (MOVDconst [c]))
- // cond:
// result: (MULLWconst [int64(int32(c))] x)
for {
_ = v.Args[1]
return true
}
// match: (MULLW (MOVDconst [c]) x)
- // cond:
// result: (MULLWconst [int64(int32(c))] x)
for {
x := v.Args[1]
func rewriteValueS390X_OpS390XMULLWconst_0(v *Value) bool {
b := v.Block
// match: (MULLWconst [-1] x)
- // cond:
// result: (NEGW x)
for {
if v.AuxInt != -1 {
return true
}
// match: (MULLWconst [0] _)
- // cond:
// result: (MOVDconst [0])
for {
if v.AuxInt != 0 {
return true
}
// match: (MULLWconst [1] x)
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (MULLWconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(int32(c*d))])
for {
c := v.AuxInt
}
func rewriteValueS390X_OpS390XNEG_0(v *Value) bool {
// match: (NEG (MOVDconst [c]))
- // cond:
// result: (MOVDconst [-c])
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpS390XNEGW_0(v *Value) bool {
// match: (NEGW (MOVDconst [c]))
- // cond:
// result: (MOVDconst [int64(int32(-c))])
for {
v_0 := v.Args[0]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpS390XRLLGconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpS390XRLLGconst)
return true
}
// match: (OR (MOVDconst [-1<<63]) (LGDR <t> x))
- // cond:
// result: (LGDR <t> (LNDFR <x.Type> x))
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != -1<<63 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != -1<<63 {
break
}
v_1 := v.Args[1]
return true
}
// match: (OR (LGDR <t> x) (MOVDconst [-1<<63]))
- // cond:
// result: (LGDR <t> (LNDFR <x.Type> x))
for {
_ = v.Args[1]
t := v_0.Type
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != -1<<63 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != -1<<63 {
break
}
v.reset(OpS390XLGDR)
return true
}
// match: (OR (SLDconst [63] (SRDconst [63] (LGDR x))) (LGDR (LPDFR <t> y)))
- // cond:
// result: (LGDR (CPSDR <t> y x))
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpS390XSLDconst {
- break
- }
- if v_0.AuxInt != 63 {
+ if v_0.Op != OpS390XSLDconst || v_0.AuxInt != 63 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XSRDconst {
- break
- }
- if v_0_0.AuxInt != 63 {
+ if v_0_0.Op != OpS390XSRDconst || v_0_0.AuxInt != 63 {
break
}
v_0_0_0 := v_0_0.Args[0]
return true
}
// match: (OR (LGDR (LPDFR <t> y)) (SLDconst [63] (SRDconst [63] (LGDR x))))
- // cond:
// result: (LGDR (CPSDR <t> y x))
for {
_ = v.Args[1]
t := v_0_0.Type
y := v_0_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSLDconst {
- break
- }
- if v_1.AuxInt != 63 {
+ if v_1.Op != OpS390XSLDconst || v_1.AuxInt != 63 {
break
}
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpS390XSRDconst {
- break
- }
- if v_1_0.AuxInt != 63 {
+ if v_1_0.Op != OpS390XSRDconst || v_1_0.AuxInt != 63 {
break
}
v_1_0_0 := v_1_0.Args[0]
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpS390XSLDconst {
- break
- }
- if v_0.AuxInt != 63 {
+ if v_0.Op != OpS390XSLDconst || v_0.AuxInt != 63 {
break
}
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XSRDconst {
- break
- }
- if v_0_0.AuxInt != 63 {
+ if v_0_0.Op != OpS390XSRDconst || v_0_0.AuxInt != 63 {
break
}
v_0_0_0 := v_0_0.Args[0]
}
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpS390XSLDconst {
- break
- }
- if v_1.AuxInt != 63 {
+ if v_1.Op != OpS390XSLDconst || v_1.AuxInt != 63 {
break
}
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpS390XSRDconst {
- break
- }
- if v_1_0.AuxInt != 63 {
+ if v_1_0.Op != OpS390XSRDconst || v_1_0.AuxInt != 63 {
break
}
v_1_0_0 := v_1_0.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (OR (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c|d])
for {
_ = v.Args[1]
return true
}
// match: (OR (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c|d])
for {
_ = v.Args[1]
return true
}
// match: (OR x x)
- // cond:
// result: x
for {
x := v.Args[1]
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
- v1.AuxInt = j1
- v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
- v2.AuxInt = i0
- v2.Aux = s
- v2.AddArg(p)
- v2.AddArg(idx)
- v2.AddArg(mem)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)))
- // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j1] (MOVHZloadidx [i0] {s} p idx mem)) y)
- for {
- _ = v.Args[1]
- or := v.Args[0]
- if or.Op != OpS390XOR {
- break
- }
- _ = or.Args[1]
- y := or.Args[0]
- s1 := or.Args[1]
- if s1.Op != OpS390XSLDconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpS390XMOVBZloadidx {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- idx := x1.Args[0]
- p := x1.Args[1]
- s0 := v.Args[1]
- if s0.Op != OpS390XSLDconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpS390XMOVBZloadidx {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
- v1.AuxInt = j1
- v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
- v2.AuxInt = i0
- v2.Aux = s
- v2.AddArg(p)
- v2.AddArg(idx)
- v2.AddArg(mem)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))
- // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j1] (MOVHZloadidx [i0] {s} p idx mem)) y)
- for {
- _ = v.Args[1]
- or := v.Args[0]
- if or.Op != OpS390XOR {
- break
- }
- y := or.Args[1]
- s1 := or.Args[0]
- if s1.Op != OpS390XSLDconst {
- break
- }
- j1 := s1.AuxInt
- x1 := s1.Args[0]
- if x1.Op != OpS390XMOVBZloadidx {
- break
- }
- i1 := x1.AuxInt
- s := x1.Aux
- mem := x1.Args[2]
- p := x1.Args[0]
- idx := x1.Args[1]
- s0 := v.Args[1]
- if s0.Op != OpS390XSLDconst {
- break
- }
- j0 := s0.AuxInt
- x0 := s0.Args[0]
- if x0.Op != OpS390XMOVBZloadidx {
- break
- }
- i0 := x0.AuxInt
- if x0.Aux != s {
- break
- }
- _ = x0.Args[2]
- if idx != x0.Args[0] {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
- if p != x0.Args[1] {
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
+ v1.AuxInt = j1
+ v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
+ v2.AuxInt = i0
+ v2.Aux = s
+ v2.AddArg(p)
+ v2.AddArg(idx)
+ v2.AddArg(mem)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)))
+ // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j1] (MOVHZloadidx [i0] {s} p idx mem)) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpS390XOR {
+ break
+ }
+ _ = or.Args[1]
+ y := or.Args[0]
+ s1 := or.Args[1]
+ if s1.Op != OpS390XSLDconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpS390XMOVBZloadidx {
break
}
- if mem != x0.Args[2] {
+ i1 := x1.AuxInt
+ s := x1.Aux
+ mem := x1.Args[2]
+ idx := x1.Args[0]
+ p := x1.Args[1]
+ s0 := v.Args[1]
+ if s0.Op != OpS390XSLDconst {
break
}
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpS390XMOVBZloadidx {
+ break
+ }
+ i0 := x0.AuxInt
+ if x0.Aux != s {
+ break
+ }
+ _ = x0.Args[2]
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))
+ // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))
// cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j1] (MOVHZloadidx [i0] {s} p idx mem)) y)
for {
i1 := x1.AuxInt
s := x1.Aux
mem := x1.Args[2]
- idx := x1.Args[0]
- p := x1.Args[1]
+ p := x1.Args[0]
+ idx := x1.Args[1]
s0 := v.Args[1]
if s0.Op != OpS390XSLDconst {
break
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
- if p != x0.Args[1] {
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
+ v1.AuxInt = j1
+ v2 := b.NewValue0(v.Pos, OpS390XMOVHZloadidx, typ.UInt16)
+ v2.AuxInt = i0
+ v2.Aux = s
+ v2.AddArg(p)
+ v2.AddArg(idx)
+ v2.AddArg(mem)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))
+ // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j1] (MOVHZloadidx [i0] {s} p idx mem)) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpS390XOR {
break
}
- if mem != x0.Args[2] {
+ y := or.Args[1]
+ s1 := or.Args[0]
+ if s1.Op != OpS390XSLDconst {
+ break
+ }
+ j1 := s1.AuxInt
+ x1 := s1.Args[0]
+ if x1.Op != OpS390XMOVBZloadidx {
break
}
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ i1 := x1.AuxInt
+ s := x1.Aux
+ mem := x1.Args[2]
+ idx := x1.Args[0]
+ p := x1.Args[1]
+ s0 := v.Args[1]
+ if s0.Op != OpS390XSLDconst {
+ break
+ }
+ j0 := s0.AuxInt
+ x0 := s0.Args[0]
+ if x0.Op != OpS390XMOVBZloadidx {
+ break
+ }
+ i0 := x0.AuxInt
+ if x0.Aux != s {
+ break
+ }
+ _ = x0.Args[2]
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLDconst {
- break
- }
- if sh.AuxInt != 32 {
+ if sh.Op != OpS390XSLDconst || sh.AuxInt != 32 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+4 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
- v1.AuxInt = j0
- v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
- v3 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
- v3.AuxInt = i0
- v3.Aux = s
- v3.AddArg(p)
- v3.AddArg(idx)
- v3.AddArg(mem)
- v2.AddArg(v3)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (OR or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem)))) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem))))
- // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y)
- for {
- _ = v.Args[1]
- or := v.Args[0]
- if or.Op != OpS390XOR {
- break
- }
- _ = or.Args[1]
- y := or.Args[0]
- s0 := or.Args[1]
- if s0.Op != OpS390XSLDconst {
- break
- }
- j0 := s0.AuxInt
- r0 := s0.Args[0]
- if r0.Op != OpS390XMOVHZreg {
- break
- }
- x0 := r0.Args[0]
- if x0.Op != OpS390XMOVHBRloadidx {
- break
- }
- i0 := x0.AuxInt
- s := x0.Aux
- mem := x0.Args[2]
- idx := x0.Args[0]
- p := x0.Args[1]
- s1 := v.Args[1]
- if s1.Op != OpS390XSLDconst {
- break
- }
- j1 := s1.AuxInt
- r1 := s1.Args[0]
- if r1.Op != OpS390XMOVHZreg {
- break
- }
- x1 := r1.Args[0]
- if x1.Op != OpS390XMOVHBRloadidx {
- break
- }
- i1 := x1.AuxInt
- if x1.Aux != s {
- break
- }
- _ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
- break
- }
- b = mergePoint(b, x0, x1, y)
- v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
- v.reset(OpCopy)
- v.AddArg(v0)
- v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
- v1.AuxInt = j0
- v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
- v3 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
- v3.AuxInt = i0
- v3.Aux = s
- v3.AddArg(p)
- v3.AddArg(idx)
- v3.AddArg(mem)
- v2.AddArg(v3)
- v1.AddArg(v2)
- v0.AddArg(v1)
- v0.AddArg(y)
- return true
- }
- // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))))
- // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)
- // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y)
- for {
- _ = v.Args[1]
- or := v.Args[0]
- if or.Op != OpS390XOR {
- break
- }
- y := or.Args[1]
- s0 := or.Args[0]
- if s0.Op != OpS390XSLDconst {
- break
- }
- j0 := s0.AuxInt
- r0 := s0.Args[0]
- if r0.Op != OpS390XMOVHZreg {
- break
- }
- x0 := r0.Args[0]
- if x0.Op != OpS390XMOVHBRloadidx {
- break
- }
- i0 := x0.AuxInt
- s := x0.Aux
- mem := x0.Args[2]
- p := x0.Args[0]
- idx := x0.Args[1]
- s1 := v.Args[1]
- if s1.Op != OpS390XSLDconst {
- break
- }
- j1 := s1.AuxInt
- r1 := s1.Args[0]
- if r1.Op != OpS390XMOVHZreg {
- break
- }
- x1 := r1.Args[0]
- if x1.Op != OpS390XMOVHBRloadidx {
- break
- }
- i1 := x1.AuxInt
- if x1.Aux != s {
- break
- }
- _ = x1.Args[2]
- if idx != x1.Args[0] {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
- if p != x1.Args[1] {
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
+ v1.AuxInt = j0
+ v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
+ v3 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
+ v3.AuxInt = i0
+ v3.Aux = s
+ v3.AddArg(p)
+ v3.AddArg(idx)
+ v3.AddArg(mem)
+ v2.AddArg(v3)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (OR or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem)))) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem))))
+ // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpS390XOR {
break
}
- if mem != x1.Args[2] {
+ _ = or.Args[1]
+ y := or.Args[0]
+ s0 := or.Args[1]
+ if s0.Op != OpS390XSLDconst {
break
}
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ j0 := s0.AuxInt
+ r0 := s0.Args[0]
+ if r0.Op != OpS390XMOVHZreg {
+ break
+ }
+ x0 := r0.Args[0]
+ if x0.Op != OpS390XMOVHBRloadidx {
+ break
+ }
+ i0 := x0.AuxInt
+ s := x0.Aux
+ mem := x0.Args[2]
+ idx := x0.Args[0]
+ p := x0.Args[1]
+ s1 := v.Args[1]
+ if s1.Op != OpS390XSLDconst {
+ break
+ }
+ j1 := s1.AuxInt
+ r1 := s1.Args[0]
+ if r1.Op != OpS390XMOVHZreg {
+ break
+ }
+ x1 := r1.Args[0]
+ if x1.Op != OpS390XMOVHBRloadidx {
+ break
+ }
+ i1 := x1.AuxInt
+ if x1.Aux != s {
+ break
+ }
+ _ = x1.Args[2]
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
v0.AddArg(y)
return true
}
- // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))))
+ // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))))
// cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)
// result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y)
for {
i0 := x0.AuxInt
s := x0.Aux
mem := x0.Args[2]
- idx := x0.Args[0]
- p := x0.Args[1]
+ p := x0.Args[0]
+ idx := x0.Args[1]
s1 := v.Args[1]
if s1.Op != OpS390XSLDconst {
break
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ break
+ }
+ b = mergePoint(b, x0, x1, y)
+ v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
+ v.reset(OpCopy)
+ v.AddArg(v0)
+ v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
+ v1.AuxInt = j0
+ v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
+ v3 := b.NewValue0(v.Pos, OpS390XMOVWBRloadidx, typ.Int32)
+ v3.AuxInt = i0
+ v3.Aux = s
+ v3.AddArg(p)
+ v3.AddArg(idx)
+ v3.AddArg(mem)
+ v2.AddArg(v3)
+ v1.AddArg(v2)
+ v0.AddArg(v1)
+ v0.AddArg(y)
+ return true
+ }
+ // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))))
+ // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)
+ // result: @mergePoint(b,x0,x1,y) (OR <v.Type> (SLDconst <v.Type> [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y)
+ for {
+ _ = v.Args[1]
+ or := v.Args[0]
+ if or.Op != OpS390XOR {
+ break
+ }
+ y := or.Args[1]
+ s0 := or.Args[0]
+ if s0.Op != OpS390XSLDconst {
+ break
+ }
+ j0 := s0.AuxInt
+ r0 := s0.Args[0]
+ if r0.Op != OpS390XMOVHZreg {
+ break
+ }
+ x0 := r0.Args[0]
+ if x0.Op != OpS390XMOVHBRloadidx {
+ break
+ }
+ i0 := x0.AuxInt
+ s := x0.Aux
+ mem := x0.Args[2]
+ idx := x0.Args[0]
+ p := x0.Args[1]
+ s1 := v.Args[1]
+ if s1.Op != OpS390XSLDconst {
+ break
+ }
+ j1 := s1.AuxInt
+ r1 := s1.Args[0]
+ if r1.Op != OpS390XMOVHZreg {
break
}
- if p != x1.Args[1] {
+ x1 := r1.Args[0]
+ if x1.Op != OpS390XMOVHBRloadidx {
break
}
- if mem != x1.Args[2] {
+ i1 := x1.AuxInt
+ if x1.Aux != s {
break
}
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ _ = x1.Args[2]
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
}
func rewriteValueS390X_OpS390XORW_0(v *Value) bool {
// match: (ORW x (MOVDconst [c]))
- // cond:
// result: (ORWconst [int64(int32(c))] x)
for {
_ = v.Args[1]
return true
}
// match: (ORW (MOVDconst [c]) x)
- // cond:
// result: (ORWconst [int64(int32(c))] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpS390XRLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpS390XRLLconst)
return true
}
// match: (ORW x x)
- // cond:
// result: x
for {
x := v.Args[1]
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x1.Args[1]
p := x1.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x1.Args[0]
idx := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x1.Args[0]
p := x1.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
x0 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && p.Op != OpSB && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
mem := x0.Args[1]
p := x0.Args[0]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[1]
- if p != x0.Args[0] {
- break
- }
- if mem != x0.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || mem != x0.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[1]
- if p != x1.Args[0] {
- break
- }
- if mem != x1.Args[1] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || mem != x1.Args[1] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 8 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 8 {
break
}
x1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && x0.Uses == 1 && x1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
p := x0.Args[0]
idx := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
idx := x0.Args[0]
p := x0.Args[1]
sh := v.Args[1]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
for {
_ = v.Args[1]
sh := v.Args[0]
- if sh.Op != OpS390XSLWconst {
- break
- }
- if sh.AuxInt != 16 {
+ if sh.Op != OpS390XSLWconst || sh.AuxInt != 16 {
break
}
r1 := sh.Args[0]
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(i1 == i0+2 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && sh.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(sh)) {
break
}
b = mergePoint(b, x0, x1)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if p != x0.Args[0] {
- break
- }
- if idx != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x0.Args[0] || idx != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x0.Args[2]
- if idx != x0.Args[0] {
- break
- }
- if p != x0.Args[1] {
- break
- }
- if mem != x0.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x0.Args[0] || p != x0.Args[1] || mem != x0.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if p != x1.Args[0] {
- break
- }
- if idx != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if p != x1.Args[0] || idx != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
break
}
_ = x1.Args[2]
- if idx != x1.Args[0] {
- break
- }
- if p != x1.Args[1] {
- break
- }
- if mem != x1.Args[2] {
- break
- }
- if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
+ if idx != x1.Args[0] || p != x1.Args[1] || mem != x1.Args[2] || !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) {
break
}
b = mergePoint(b, x0, x1, y)
return true
}
// match: (ORWconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c|d])
for {
c := v.AuxInt
}
func rewriteValueS390X_OpS390XORconst_0(v *Value) bool {
// match: (ORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (ORconst [-1] _)
- // cond:
// result: (MOVDconst [-1])
for {
if v.AuxInt != -1 {
return true
}
// match: (ORconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c|d])
for {
c := v.AuxInt
x := v.Args[0]
ptr1 := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XFMOVDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
}
func rewriteValueS390X_OpS390XRLL_0(v *Value) bool {
// match: (RLL x (MOVDconst [c]))
- // cond:
// result: (RLLconst x [c&31])
for {
_ = v.Args[1]
}
func rewriteValueS390X_OpS390XRLLG_0(v *Value) bool {
// match: (RLLG x (MOVDconst [c]))
- // cond:
// result: (RLLGconst x [c&63])
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (SLD x (MOVDconst [c]))
- // cond:
// result: (SLDconst x [c&63])
for {
_ = v.Args[1]
return true
}
// match: (SLD x (AND (MOVDconst [c]) y))
- // cond:
// result: (SLD x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SLD x (AND y (MOVDconst [c])))
- // cond:
// result: (SLD x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SLD x (MOVWreg y))
- // cond:
// result: (SLD x y)
for {
_ = v.Args[1]
return true
}
// match: (SLD x (MOVHreg y))
- // cond:
// result: (SLD x y)
for {
_ = v.Args[1]
return true
}
// match: (SLD x (MOVBreg y))
- // cond:
// result: (SLD x y)
for {
_ = v.Args[1]
return true
}
// match: (SLD x (MOVWZreg y))
- // cond:
// result: (SLD x y)
for {
_ = v.Args[1]
return true
}
// match: (SLD x (MOVHZreg y))
- // cond:
// result: (SLD x y)
for {
_ = v.Args[1]
return true
}
// match: (SLD x (MOVBZreg y))
- // cond:
// result: (SLD x y)
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (SLW x (MOVDconst [c]))
- // cond:
// result: (SLWconst x [c&63])
for {
_ = v.Args[1]
return true
}
// match: (SLW x (AND (MOVDconst [c]) y))
- // cond:
// result: (SLW x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SLW x (AND y (MOVDconst [c])))
- // cond:
// result: (SLW x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SLW x (MOVWreg y))
- // cond:
// result: (SLW x y)
for {
_ = v.Args[1]
return true
}
// match: (SLW x (MOVHreg y))
- // cond:
// result: (SLW x y)
for {
_ = v.Args[1]
return true
}
// match: (SLW x (MOVBreg y))
- // cond:
// result: (SLW x y)
for {
_ = v.Args[1]
return true
}
// match: (SLW x (MOVWZreg y))
- // cond:
// result: (SLW x y)
for {
_ = v.Args[1]
return true
}
// match: (SLW x (MOVHZreg y))
- // cond:
// result: (SLW x y)
for {
_ = v.Args[1]
return true
}
// match: (SLW x (MOVBZreg y))
- // cond:
// result: (SLW x y)
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (SRAD x (MOVDconst [c]))
- // cond:
// result: (SRADconst x [c&63])
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (AND (MOVDconst [c]) y))
- // cond:
// result: (SRAD x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (AND y (MOVDconst [c])))
- // cond:
// result: (SRAD x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (MOVWreg y))
- // cond:
// result: (SRAD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (MOVHreg y))
- // cond:
// result: (SRAD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (MOVBreg y))
- // cond:
// result: (SRAD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (MOVWZreg y))
- // cond:
// result: (SRAD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (MOVHZreg y))
- // cond:
// result: (SRAD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAD x (MOVBZreg y))
- // cond:
// result: (SRAD x y)
for {
_ = v.Args[1]
}
func rewriteValueS390X_OpS390XSRADconst_0(v *Value) bool {
// match: (SRADconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [d>>uint64(c)])
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (SRAW x (MOVDconst [c]))
- // cond:
// result: (SRAWconst x [c&63])
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (AND (MOVDconst [c]) y))
- // cond:
// result: (SRAW x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (AND y (MOVDconst [c])))
- // cond:
// result: (SRAW x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (MOVWreg y))
- // cond:
// result: (SRAW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (MOVHreg y))
- // cond:
// result: (SRAW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (MOVBreg y))
- // cond:
// result: (SRAW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (MOVWZreg y))
- // cond:
// result: (SRAW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (MOVHZreg y))
- // cond:
// result: (SRAW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRAW x (MOVBZreg y))
- // cond:
// result: (SRAW x y)
for {
_ = v.Args[1]
}
func rewriteValueS390X_OpS390XSRAWconst_0(v *Value) bool {
// match: (SRAWconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [int64(int32(d))>>uint64(c)])
for {
c := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (SRD x (MOVDconst [c]))
- // cond:
// result: (SRDconst x [c&63])
for {
_ = v.Args[1]
return true
}
// match: (SRD x (AND (MOVDconst [c]) y))
- // cond:
// result: (SRD x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRD x (AND y (MOVDconst [c])))
- // cond:
// result: (SRD x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRD x (MOVWreg y))
- // cond:
// result: (SRD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRD x (MOVHreg y))
- // cond:
// result: (SRD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRD x (MOVBreg y))
- // cond:
// result: (SRD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRD x (MOVWZreg y))
- // cond:
// result: (SRD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRD x (MOVHZreg y))
- // cond:
// result: (SRD x y)
for {
_ = v.Args[1]
return true
}
// match: (SRD x (MOVBZreg y))
- // cond:
// result: (SRD x y)
for {
_ = v.Args[1]
func rewriteValueS390X_OpS390XSRDconst_0(v *Value) bool {
b := v.Block
// match: (SRDconst [1] (SLDconst [1] (LGDR <t> x)))
- // cond:
// result: (LGDR <t> (LPDFR <x.Type> x))
for {
if v.AuxInt != 1 {
break
}
v_0 := v.Args[0]
- if v_0.Op != OpS390XSLDconst {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpS390XSLDconst || v_0.AuxInt != 1 {
break
}
v_0_0 := v_0.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SRW x (MOVDconst [c]))
- // cond:
// result: (SRWconst x [c&63])
for {
_ = v.Args[1]
return true
}
// match: (SRW x (AND (MOVDconst [c]) y))
- // cond:
// result: (SRW x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRW x (AND y (MOVDconst [c])))
- // cond:
// result: (SRW x (ANDWconst <typ.UInt32> [c&63] y))
for {
_ = v.Args[1]
return true
}
// match: (SRW x (MOVWreg y))
- // cond:
// result: (SRW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRW x (MOVHreg y))
- // cond:
// result: (SRW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRW x (MOVBreg y))
- // cond:
// result: (SRW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRW x (MOVWZreg y))
- // cond:
// result: (SRW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRW x (MOVHZreg y))
- // cond:
// result: (SRW x y)
for {
_ = v.Args[1]
return true
}
// match: (SRW x (MOVBZreg y))
- // cond:
// result: (SRW x y)
for {
_ = v.Args[1]
w2 := v.Args[1]
w3 := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XSTM2 {
- break
- }
- if x.AuxInt != i-8 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XSTM2 || x.AuxInt != i-8 || x.Aux != s {
break
}
mem := x.Args[3]
return true
}
// match: (STM2 [i] {s} p (SRDconst [32] x) x mem)
- // cond:
// result: (MOVDstore [i] {s} p x mem)
for {
i := v.AuxInt
mem := v.Args[3]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpS390XSRDconst {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpS390XSRDconst || v_1.AuxInt != 32 {
break
}
x := v_1.Args[0]
w2 := v.Args[1]
w3 := v.Args[2]
x := v.Args[3]
- if x.Op != OpS390XSTMG2 {
- break
- }
- if x.AuxInt != i-16 {
- break
- }
- if x.Aux != s {
+ if x.Op != OpS390XSTMG2 || x.AuxInt != i-16 || x.Aux != s {
break
}
mem := x.Args[3]
return true
}
// match: (SUB x x)
- // cond:
// result: (MOVDconst [0])
for {
x := v.Args[1]
}
func rewriteValueS390X_OpS390XSUBE_0(v *Value) bool {
// match: (SUBE x y (FlagGT))
- // cond:
// result: (SUBC x y)
for {
_ = v.Args[2]
return true
}
// match: (SUBE x y (FlagOV))
- // cond:
// result: (SUBC x y)
for {
_ = v.Args[2]
return true
}
// match: (SUBE x y (Select1 (SUBC (MOVDconst [0]) (NEG (Select0 (SUBE (MOVDconst [0]) (MOVDconst [0]) c))))))
- // cond:
// result: (SUBE x y c)
for {
_ = v.Args[2]
}
_ = v_2_0.Args[1]
v_2_0_0 := v_2_0.Args[0]
- if v_2_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_2_0_0.AuxInt != 0 {
+ if v_2_0_0.Op != OpS390XMOVDconst || v_2_0_0.AuxInt != 0 {
break
}
v_2_0_1 := v_2_0.Args[1]
}
c := v_2_0_1_0_0.Args[2]
v_2_0_1_0_0_0 := v_2_0_1_0_0.Args[0]
- if v_2_0_1_0_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_2_0_1_0_0_0.AuxInt != 0 {
+ if v_2_0_1_0_0_0.Op != OpS390XMOVDconst || v_2_0_1_0_0_0.AuxInt != 0 {
break
}
v_2_0_1_0_0_1 := v_2_0_1_0_0.Args[1]
- if v_2_0_1_0_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_2_0_1_0_0_1.AuxInt != 0 {
+ if v_2_0_1_0_0_1.Op != OpS390XMOVDconst || v_2_0_1_0_0_1.AuxInt != 0 {
break
}
v.reset(OpS390XSUBE)
func rewriteValueS390X_OpS390XSUBW_0(v *Value) bool {
b := v.Block
// match: (SUBW x (MOVDconst [c]))
- // cond:
// result: (SUBWconst x [int64(int32(c))])
for {
_ = v.Args[1]
return true
}
// match: (SUBW (MOVDconst [c]) x)
- // cond:
// result: (NEGW (SUBWconst <v.Type> x [int64(int32(c))]))
for {
x := v.Args[1]
return true
}
// match: (SUBW x x)
- // cond:
// result: (MOVDconst [0])
for {
x := v.Args[1]
return true
}
// match: (SUBWconst [c] x)
- // cond:
// result: (ADDWconst [int64(int32(-c))] x)
for {
c := v.AuxInt
}
func rewriteValueS390X_OpS390XSUBconst_0(v *Value) bool {
// match: (SUBconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (SUBconst (MOVDconst [d]) [c])
- // cond:
// result: (MOVDconst [d-c])
for {
c := v.AuxInt
x := v.Args[0]
ptr1 := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XFMOVDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (SumBytes2 x)
- // cond:
// result: (ADDW (SRWconst <typ.UInt8> x [8]) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SumBytes4 x)
- // cond:
// result: (SumBytes2 (ADDW <typ.UInt16> (SRWconst <typ.UInt16> x [16]) x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SumBytes8 x)
- // cond:
// result: (SumBytes4 (ADDW <typ.UInt32> (SRDconst <typ.UInt32> x [32]) x))
for {
x := v.Args[0]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpS390XRLLGconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 64-c) {
+ if x != v_1.Args[0] || !(d == 64-c) {
break
}
v.reset(OpS390XRLLGconst)
return true
}
// match: (XOR (MOVDconst [c]) (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c^d])
for {
_ = v.Args[1]
return true
}
// match: (XOR (MOVDconst [d]) (MOVDconst [c]))
- // cond:
// result: (MOVDconst [c^d])
for {
_ = v.Args[1]
return true
}
// match: (XOR x x)
- // cond:
// result: (MOVDconst [0])
for {
x := v.Args[1]
}
func rewriteValueS390X_OpS390XXORW_0(v *Value) bool {
// match: (XORW x (MOVDconst [c]))
- // cond:
// result: (XORWconst [int64(int32(c))] x)
for {
_ = v.Args[1]
return true
}
// match: (XORW (MOVDconst [c]) x)
- // cond:
// result: (XORWconst [int64(int32(c))] x)
for {
x := v.Args[1]
break
}
d := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpS390XRLLconst)
break
}
c := v_1.AuxInt
- if x != v_1.Args[0] {
- break
- }
- if !(d == 32-c) {
+ if x != v_1.Args[0] || !(d == 32-c) {
break
}
v.reset(OpS390XRLLconst)
return true
}
// match: (XORW x x)
- // cond:
// result: (MOVDconst [0])
for {
x := v.Args[1]
return true
}
// match: (XORWconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c^d])
for {
c := v.AuxInt
}
func rewriteValueS390X_OpS390XXORconst_0(v *Value) bool {
// match: (XORconst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (XORconst [c] (MOVDconst [d]))
- // cond:
// result: (MOVDconst [c^d])
for {
c := v.AuxInt
x := v.Args[0]
ptr1 := v.Args[1]
v_2 := v.Args[2]
- if v_2.Op != OpS390XFMOVDstore {
- break
- }
- if v_2.AuxInt != off {
- break
- }
- if v_2.Aux != sym {
+ if v_2.Op != OpS390XFMOVDstore || v_2.AuxInt != off || v_2.Aux != sym {
break
}
_ = v_2.Args[2]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select0 (Add64carry x y c))
- // cond:
// result: (Select0 <typ.UInt64> (ADDE x y (Select1 <types.TypeFlags> (ADDCconst c [-1]))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (Sub64borrow x y c))
- // cond:
// result: (Select0 <typ.UInt64> (SUBE x y (Select1 <types.TypeFlags> (SUBC (MOVDconst [0]) c))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 <t> (AddTupleFirst32 val tuple))
- // cond:
// result: (ADDW val (Select0 <t> tuple))
for {
t := v.Type
return true
}
// match: (Select0 <t> (AddTupleFirst64 val tuple))
- // cond:
// result: (ADD val (Select0 <t> tuple))
for {
t := v.Type
return true
}
// match: (Select0 (ADDCconst (MOVDconst [c]) [d]))
- // cond:
// result: (MOVDconst [c+d])
for {
v_0 := v.Args[0]
return true
}
// match: (Select0 (SUBC (MOVDconst [c]) (MOVDconst [d])))
- // cond:
// result: (MOVDconst [c-d])
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Select1 (Add64carry x y c))
- // cond:
// result: (Select0 <typ.UInt64> (ADDE (MOVDconst [0]) (MOVDconst [0]) (Select1 <types.TypeFlags> (ADDE x y (Select1 <types.TypeFlags> (ADDCconst c [-1]))))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (Sub64borrow x y c))
- // cond:
// result: (NEG (Select0 <typ.UInt64> (SUBE (MOVDconst [0]) (MOVDconst [0]) (Select1 <types.TypeFlags> (SUBE x y (Select1 <types.TypeFlags> (SUBC (MOVDconst [0]) c)))))))
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (AddTupleFirst32 _ tuple))
- // cond:
// result: (Select1 tuple)
for {
v_0 := v.Args[0]
return true
}
// match: (Select1 (AddTupleFirst64 _ tuple))
- // cond:
// result: (Select1 tuple)
for {
v_0 := v.Args[0]
}
func rewriteValueS390X_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpSignExt16to64_0(v *Value) bool {
// match: (SignExt16to64 x)
- // cond:
// result: (MOVHreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpSignExt32to64_0(v *Value) bool {
// match: (SignExt32to64 x)
- // cond:
// result: (MOVWreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpSignExt8to64_0(v *Value) bool {
// match: (SignExt8to64 x)
- // cond:
// result: (MOVBreg x)
for {
x := v.Args[0]
func rewriteValueS390X_OpSlicemask_0(v *Value) bool {
b := v.Block
// match: (Slicemask <t> x)
- // cond:
// result: (SRADconst (NEG <t> x) [63])
for {
t := v.Type
}
func rewriteValueS390X_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (FSQRT x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (CALLstatic [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValueS390X_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (SUBW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (SUBW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (FSUBS x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpSub64_0(v *Value) bool {
// match: (Sub64 x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (FSUB x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (SUBW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (SUB x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpTrunc_0(v *Value) bool {
// match: (Trunc x)
- // cond:
// result: (FIDBR [5] x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueS390X_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueS390X_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueS390X_OpTrunc64to16_0(v *Value) bool {
// match: (Trunc64to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueS390X_OpTrunc64to32_0(v *Value) bool {
// match: (Trunc64to32 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueS390X_OpTrunc64to8_0(v *Value) bool {
// match: (Trunc64to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueS390X_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
}
func rewriteValueS390X_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (XORW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (XORW x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpXor64_0(v *Value) bool {
// match: (Xor64 x y)
- // cond:
// result: (XOR x y)
for {
y := v.Args[1]
}
func rewriteValueS390X_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (XORW x y)
for {
y := v.Args[1]
func rewriteValueS390X_OpZero_0(v *Value) bool {
b := v.Block
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] destptr mem)
- // cond:
// result: (MOVBstoreconst [0] destptr mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] destptr mem)
- // cond:
// result: (MOVHstoreconst [0] destptr mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] destptr mem)
- // cond:
// result: (MOVWstoreconst [0] destptr mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [8] destptr mem)
- // cond:
// result: (MOVDstoreconst [0] destptr mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Zero [3] destptr mem)
- // cond:
// result: (MOVBstoreconst [makeValAndOff(0,2)] destptr (MOVHstoreconst [0] destptr mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Zero [5] destptr mem)
- // cond:
// result: (MOVBstoreconst [makeValAndOff(0,4)] destptr (MOVWstoreconst [0] destptr mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Zero [6] destptr mem)
- // cond:
// result: (MOVHstoreconst [makeValAndOff(0,4)] destptr (MOVWstoreconst [0] destptr mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Zero [7] destptr mem)
- // cond:
// result: (MOVWstoreconst [makeValAndOff(0,3)] destptr (MOVWstoreconst [0] destptr mem))
for {
if v.AuxInt != 7 {
}
func rewriteValueS390X_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 x)
- // cond:
// result: (MOVHZreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpZeroExt16to64_0(v *Value) bool {
// match: (ZeroExt16to64 x)
- // cond:
// result: (MOVHZreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpZeroExt32to64_0(v *Value) bool {
// match: (ZeroExt32to64 x)
- // cond:
// result: (MOVWZreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
}
func rewriteValueS390X_OpZeroExt8to64_0(v *Value) bool {
// match: (ZeroExt8to64 x)
- // cond:
// result: (MOVBZreg x)
for {
x := v.Args[0]
switch b.Kind {
case BlockS390XEQ:
// match: (EQ (InvertFlags cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpS390XInvertFlags {
cmp := v.Args[0]
return true
}
// match: (EQ (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagLT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagLT {
b.Kind = BlockFirst
return true
}
// match: (EQ (FlagGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagGT {
b.Kind = BlockFirst
}
case BlockS390XGE:
// match: (GE (InvertFlags cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpS390XInvertFlags {
cmp := v.Args[0]
return true
}
// match: (GE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagLT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagLT {
b.Kind = BlockFirst
return true
}
// match: (GE (FlagGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagGT {
b.Kind = BlockFirst
}
case BlockS390XGT:
// match: (GT (InvertFlags cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpS390XInvertFlags {
cmp := v.Args[0]
return true
}
// match: (GT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagLT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagLT {
b.Kind = BlockFirst
return true
}
// match: (GT (FlagGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagGT {
b.Kind = BlockFirst
}
case BlockIf:
// match: (If (MOVDLT (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpS390XMOVDLT {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XLT
return true
}
// match: (If (MOVDLE (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpS390XMOVDLE {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XLE
return true
}
// match: (If (MOVDGT (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpS390XMOVDGT {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGT
return true
}
// match: (If (MOVDGE (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpS390XMOVDGE {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGE
return true
}
// match: (If (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpS390XMOVDEQ {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XEQ
return true
}
// match: (If (MOVDNE (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpS390XMOVDNE {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XNE
return true
}
// match: (If (MOVDGTnoinv (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (GTF cmp yes no)
for v.Op == OpS390XMOVDGTnoinv {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGTF
return true
}
// match: (If (MOVDGEnoinv (MOVDconst [0]) (MOVDconst [1]) cmp) yes no)
- // cond:
// result: (GEF cmp yes no)
for v.Op == OpS390XMOVDGEnoinv {
cmp := v.Args[2]
v_0 := v.Args[0]
- if v_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpS390XMOVDconst || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpS390XMOVDconst {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpS390XMOVDconst || v_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGEF
return true
}
// match: (If cond yes no)
- // cond:
// result: (NE (CMPWconst [0] (MOVBZreg <typ.Bool> cond)) yes no)
for {
cond := b.Control
}
case BlockS390XLE:
// match: (LE (InvertFlags cmp) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpS390XInvertFlags {
cmp := v.Args[0]
return true
}
// match: (LE (FlagEQ) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagLT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagLT {
b.Kind = BlockFirst
return true
}
// match: (LE (FlagGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagGT {
b.Kind = BlockFirst
}
case BlockS390XLT:
// match: (LT (InvertFlags cmp) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpS390XInvertFlags {
cmp := v.Args[0]
return true
}
// match: (LT (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagLT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagLT {
b.Kind = BlockFirst
return true
}
// match: (LT (FlagGT) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagGT {
b.Kind = BlockFirst
}
case BlockS390XNE:
// match: (NE (CMPWconst [0] (MOVDLT (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (LT cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XLT
return true
}
// match: (NE (CMPWconst [0] (MOVDLE (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (LE cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XLE
return true
}
// match: (NE (CMPWconst [0] (MOVDGT (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (GT cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGT
return true
}
// match: (NE (CMPWconst [0] (MOVDGE (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (GE cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGE
return true
}
// match: (NE (CMPWconst [0] (MOVDEQ (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (EQ cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XEQ
return true
}
// match: (NE (CMPWconst [0] (MOVDNE (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XNE
return true
}
// match: (NE (CMPWconst [0] (MOVDGTnoinv (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (GTF cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGTF
return true
}
// match: (NE (CMPWconst [0] (MOVDGEnoinv (MOVDconst [0]) (MOVDconst [1]) cmp)) yes no)
- // cond:
// result: (GEF cmp yes no)
for v.Op == OpS390XCMPWconst {
if v.AuxInt != 0 {
}
cmp := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpS390XMOVDconst {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpS390XMOVDconst || v_0_0.AuxInt != 0 {
break
}
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpS390XMOVDconst {
- break
- }
- if v_0_1.AuxInt != 1 {
+ if v_0_1.Op != OpS390XMOVDconst || v_0_1.AuxInt != 1 {
break
}
b.Kind = BlockS390XGEF
return true
}
// match: (NE (InvertFlags cmp) yes no)
- // cond:
// result: (NE cmp yes no)
for v.Op == OpS390XInvertFlags {
cmp := v.Args[0]
return true
}
// match: (NE (FlagEQ) yes no)
- // cond:
// result: (First nil no yes)
for v.Op == OpS390XFlagEQ {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagLT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagLT {
b.Kind = BlockFirst
return true
}
// match: (NE (FlagGT) yes no)
- // cond:
// result: (First nil yes no)
for v.Op == OpS390XFlagGT {
b.Kind = BlockFirst
}
func rewriteValueWasm_OpAbs_0(v *Value) bool {
// match: (Abs x)
- // cond:
// result: (F64Abs x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpAdd16_0(v *Value) bool {
// match: (Add16 x y)
- // cond:
// result: (I64Add x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAdd32_0(v *Value) bool {
// match: (Add32 x y)
- // cond:
// result: (I64Add x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAdd32F_0(v *Value) bool {
// match: (Add32F x y)
- // cond:
// result: (F32Add x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAdd64_0(v *Value) bool {
// match: (Add64 x y)
- // cond:
// result: (I64Add x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAdd64F_0(v *Value) bool {
// match: (Add64F x y)
- // cond:
// result: (F64Add x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAdd8_0(v *Value) bool {
// match: (Add8 x y)
- // cond:
// result: (I64Add x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAddPtr_0(v *Value) bool {
// match: (AddPtr x y)
- // cond:
// result: (I64Add x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAddr_0(v *Value) bool {
// match: (Addr {sym} base)
- // cond:
// result: (LoweredAddr {sym} base)
for {
sym := v.Aux
}
func rewriteValueWasm_OpAnd16_0(v *Value) bool {
// match: (And16 x y)
- // cond:
// result: (I64And x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAnd32_0(v *Value) bool {
// match: (And32 x y)
- // cond:
// result: (I64And x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAnd64_0(v *Value) bool {
// match: (And64 x y)
- // cond:
// result: (I64And x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAnd8_0(v *Value) bool {
// match: (And8 x y)
- // cond:
// result: (I64And x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpAndB_0(v *Value) bool {
// match: (AndB x y)
- // cond:
// result: (I64And x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen64 x)
- // cond:
// result: (I64Sub (I64Const [64]) (I64Clz x))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCeil_0(v *Value) bool {
// match: (Ceil x)
- // cond:
// result: (F64Ceil x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpClosureCall_0(v *Value) bool {
// match: (ClosureCall [argwid] entry closure mem)
- // cond:
// result: (LoweredClosureCall [argwid] entry closure mem)
for {
argwid := v.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Com16 x)
- // cond:
// result: (I64Xor x (I64Const [-1]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Com32 x)
- // cond:
// result: (I64Xor x (I64Const [-1]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Com64 x)
- // cond:
// result: (I64Xor x (I64Const [-1]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Com8 x)
- // cond:
// result: (I64Xor x (I64Const [-1]))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCondSelect_0(v *Value) bool {
// match: (CondSelect <t> x y cond)
- // cond:
// result: (Select <t> x y cond)
for {
t := v.Type
}
func rewriteValueWasm_OpConst16_0(v *Value) bool {
// match: (Const16 [val])
- // cond:
// result: (I64Const [val])
for {
val := v.AuxInt
}
func rewriteValueWasm_OpConst32_0(v *Value) bool {
// match: (Const32 [val])
- // cond:
// result: (I64Const [val])
for {
val := v.AuxInt
}
func rewriteValueWasm_OpConst32F_0(v *Value) bool {
// match: (Const32F [val])
- // cond:
// result: (F32Const [val])
for {
val := v.AuxInt
}
func rewriteValueWasm_OpConst64_0(v *Value) bool {
// match: (Const64 [val])
- // cond:
// result: (I64Const [val])
for {
val := v.AuxInt
}
func rewriteValueWasm_OpConst64F_0(v *Value) bool {
// match: (Const64F [val])
- // cond:
// result: (F64Const [val])
for {
val := v.AuxInt
}
func rewriteValueWasm_OpConst8_0(v *Value) bool {
// match: (Const8 [val])
- // cond:
// result: (I64Const [val])
for {
val := v.AuxInt
}
func rewriteValueWasm_OpConstBool_0(v *Value) bool {
// match: (ConstBool [b])
- // cond:
// result: (I64Const [b])
for {
b := v.AuxInt
}
func rewriteValueWasm_OpConstNil_0(v *Value) bool {
// match: (ConstNil)
- // cond:
// result: (I64Const [0])
for {
v.reset(OpWasmI64Const)
}
func rewriteValueWasm_OpConvert_0(v *Value) bool {
// match: (Convert <t> x mem)
- // cond:
// result: (LoweredConvert <t> x mem)
for {
t := v.Type
}
func rewriteValueWasm_OpCopysign_0(v *Value) bool {
// match: (Copysign x y)
- // cond:
// result: (F64Copysign x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz16 x)
- // cond:
// result: (I64Ctz (I64Or x (I64Const [0x10000])))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCtz16NonZero_0(v *Value) bool {
// match: (Ctz16NonZero x)
- // cond:
// result: (I64Ctz x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz32 x)
- // cond:
// result: (I64Ctz (I64Or x (I64Const [0x100000000])))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCtz32NonZero_0(v *Value) bool {
// match: (Ctz32NonZero x)
- // cond:
// result: (I64Ctz x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCtz64_0(v *Value) bool {
// match: (Ctz64 x)
- // cond:
// result: (I64Ctz x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCtz64NonZero_0(v *Value) bool {
// match: (Ctz64NonZero x)
- // cond:
// result: (I64Ctz x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz8 x)
- // cond:
// result: (I64Ctz (I64Or x (I64Const [0x100])))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCtz8NonZero_0(v *Value) bool {
// match: (Ctz8NonZero x)
- // cond:
// result: (I64Ctz x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
- // cond:
// result: (I64TruncSatF32S x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt32Fto32U_0(v *Value) bool {
// match: (Cvt32Fto32U x)
- // cond:
// result: (I64TruncSatF32U x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt32Fto64_0(v *Value) bool {
// match: (Cvt32Fto64 x)
- // cond:
// result: (I64TruncSatF32S x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F x)
- // cond:
// result: (F64PromoteF32 x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt32Fto64U_0(v *Value) bool {
// match: (Cvt32Fto64U x)
- // cond:
// result: (I64TruncSatF32U x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32Uto32F x)
- // cond:
// result: (F32ConvertI64U (ZeroExt32to64 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32Uto64F x)
- // cond:
// result: (F64ConvertI64U (ZeroExt32to64 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32to32F x)
- // cond:
// result: (F32ConvertI64S (SignExt32to64 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Cvt32to64F x)
- // cond:
// result: (F64ConvertI64S (SignExt32to64 x))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 x)
- // cond:
// result: (I64TruncSatF64S x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F x)
- // cond:
// result: (F32DemoteF64 x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64Fto32U_0(v *Value) bool {
// match: (Cvt64Fto32U x)
- // cond:
// result: (I64TruncSatF64U x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64Fto64_0(v *Value) bool {
// match: (Cvt64Fto64 x)
- // cond:
// result: (I64TruncSatF64S x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64Fto64U_0(v *Value) bool {
// match: (Cvt64Fto64U x)
- // cond:
// result: (I64TruncSatF64U x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64Uto32F_0(v *Value) bool {
// match: (Cvt64Uto32F x)
- // cond:
// result: (F32ConvertI64U x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64Uto64F_0(v *Value) bool {
// match: (Cvt64Uto64F x)
- // cond:
// result: (F64ConvertI64U x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64to32F_0(v *Value) bool {
// match: (Cvt64to32F x)
- // cond:
// result: (F32ConvertI64S x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpCvt64to64F_0(v *Value) bool {
// match: (Cvt64to64F x)
- // cond:
// result: (F64ConvertI64S x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16 x y)
- // cond:
// result: (I64DivS (SignExt16to64 x) (SignExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div16u x y)
- // cond:
// result: (I64DivU (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32 x y)
- // cond:
// result: (I64DivS (SignExt32to64 x) (SignExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpDiv32F_0(v *Value) bool {
// match: (Div32F x y)
- // cond:
// result: (F32Div x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div32u x y)
- // cond:
// result: (I64DivU (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpDiv64_0(v *Value) bool {
// match: (Div64 x y)
- // cond:
// result: (I64DivS x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpDiv64F_0(v *Value) bool {
// match: (Div64F x y)
- // cond:
// result: (F64Div x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpDiv64u_0(v *Value) bool {
// match: (Div64u x y)
- // cond:
// result: (I64DivU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8 x y)
- // cond:
// result: (I64DivS (SignExt8to64 x) (SignExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Div8u x y)
- // cond:
// result: (I64DivU (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq16 x y)
- // cond:
// result: (I64Eq (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq32 x y)
- // cond:
// result: (I64Eq (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpEq32F_0(v *Value) bool {
// match: (Eq32F x y)
- // cond:
// result: (F32Eq x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpEq64_0(v *Value) bool {
// match: (Eq64 x y)
- // cond:
// result: (I64Eq x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpEq64F_0(v *Value) bool {
// match: (Eq64F x y)
- // cond:
// result: (F64Eq x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq8 x y)
- // cond:
// result: (I64Eq (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpEqB_0(v *Value) bool {
// match: (EqB x y)
- // cond:
// result: (I64Eq x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpEqPtr_0(v *Value) bool {
// match: (EqPtr x y)
- // cond:
// result: (I64Eq x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpFloor_0(v *Value) bool {
// match: (Floor x)
- // cond:
// result: (F64Floor x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16 x y)
- // cond:
// result: (I64GeS (SignExt16to64 x) (SignExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq16U x y)
- // cond:
// result: (I64GeU (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32 x y)
- // cond:
// result: (I64GeS (SignExt32to64 x) (SignExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGeq32F_0(v *Value) bool {
// match: (Geq32F x y)
- // cond:
// result: (F32Ge x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq32U x y)
- // cond:
// result: (I64GeU (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGeq64_0(v *Value) bool {
// match: (Geq64 x y)
- // cond:
// result: (I64GeS x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGeq64F_0(v *Value) bool {
// match: (Geq64F x y)
- // cond:
// result: (F64Ge x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGeq64U_0(v *Value) bool {
// match: (Geq64U x y)
- // cond:
// result: (I64GeU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8 x y)
- // cond:
// result: (I64GeS (SignExt8to64 x) (SignExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq8U x y)
- // cond:
// result: (I64GeU (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGetCallerPC_0(v *Value) bool {
// match: (GetCallerPC)
- // cond:
// result: (LoweredGetCallerPC)
for {
v.reset(OpWasmLoweredGetCallerPC)
}
func rewriteValueWasm_OpGetCallerSP_0(v *Value) bool {
// match: (GetCallerSP)
- // cond:
// result: (LoweredGetCallerSP)
for {
v.reset(OpWasmLoweredGetCallerSP)
}
func rewriteValueWasm_OpGetClosurePtr_0(v *Value) bool {
// match: (GetClosurePtr)
- // cond:
// result: (LoweredGetClosurePtr)
for {
v.reset(OpWasmLoweredGetClosurePtr)
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16 x y)
- // cond:
// result: (I64GtS (SignExt16to64 x) (SignExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater16U x y)
- // cond:
// result: (I64GtU (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater32 x y)
- // cond:
// result: (I64GtS (SignExt32to64 x) (SignExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGreater32F_0(v *Value) bool {
// match: (Greater32F x y)
- // cond:
// result: (F32Gt x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater32U x y)
- // cond:
// result: (I64GtU (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGreater64_0(v *Value) bool {
// match: (Greater64 x y)
- // cond:
// result: (I64GtS x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGreater64F_0(v *Value) bool {
// match: (Greater64F x y)
- // cond:
// result: (F64Gt x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpGreater64U_0(v *Value) bool {
// match: (Greater64U x y)
- // cond:
// result: (I64GtU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8 x y)
- // cond:
// result: (I64GtS (SignExt8to64 x) (SignExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater8U x y)
- // cond:
// result: (I64GtU (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpInterCall_0(v *Value) bool {
// match: (InterCall [argwid] entry mem)
- // cond:
// result: (LoweredInterCall [argwid] entry mem)
for {
argwid := v.AuxInt
}
func rewriteValueWasm_OpIsInBounds_0(v *Value) bool {
// match: (IsInBounds idx len)
- // cond:
// result: (I64LtU idx len)
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (IsNonNil p)
- // cond:
// result: (I64Eqz (I64Eqz p))
for {
p := v.Args[0]
}
func rewriteValueWasm_OpIsSliceInBounds_0(v *Value) bool {
// match: (IsSliceInBounds idx len)
- // cond:
// result: (I64LeU idx len)
for {
len := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16 x y)
- // cond:
// result: (I64LeS (SignExt16to64 x) (SignExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq16U x y)
- // cond:
// result: (I64LeU (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32 x y)
- // cond:
// result: (I64LeS (SignExt32to64 x) (SignExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLeq32F_0(v *Value) bool {
// match: (Leq32F x y)
- // cond:
// result: (F32Le x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq32U x y)
- // cond:
// result: (I64LeU (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLeq64_0(v *Value) bool {
// match: (Leq64 x y)
- // cond:
// result: (I64LeS x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLeq64F_0(v *Value) bool {
// match: (Leq64F x y)
- // cond:
// result: (F64Le x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLeq64U_0(v *Value) bool {
// match: (Leq64U x y)
- // cond:
// result: (I64LeU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8 x y)
- // cond:
// result: (I64LeS (SignExt8to64 x) (SignExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq8U x y)
- // cond:
// result: (I64LeU (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16 x y)
- // cond:
// result: (I64LtS (SignExt16to64 x) (SignExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less16U x y)
- // cond:
// result: (I64LtU (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less32 x y)
- // cond:
// result: (I64LtS (SignExt32to64 x) (SignExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLess32F_0(v *Value) bool {
// match: (Less32F x y)
- // cond:
// result: (F32Lt x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less32U x y)
- // cond:
// result: (I64LtU (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLess64_0(v *Value) bool {
// match: (Less64 x y)
- // cond:
// result: (I64LtS x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLess64F_0(v *Value) bool {
// match: (Less64F x y)
- // cond:
// result: (F64Lt x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLess64U_0(v *Value) bool {
// match: (Less64U x y)
- // cond:
// result: (I64LtU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8 x y)
- // cond:
// result: (I64LtS (SignExt8to64 x) (SignExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less8U x y)
- // cond:
// result: (I64LtU (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLocalAddr_0(v *Value) bool {
// match: (LocalAddr {sym} base _)
- // cond:
// result: (LoweredAddr {sym} base)
for {
sym := v.Aux
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x16 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x32 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLsh16x64_0(v *Value) bool {
// match: (Lsh16x64 x y)
- // cond:
// result: (Lsh64x64 x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x8 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x16 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x32 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLsh32x64_0(v *Value) bool {
// match: (Lsh32x64 x y)
- // cond:
// result: (Lsh64x64 x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x8 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x16 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x32 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt32to64 y))
for {
y := v.Args[1]
return true
}
// match: (Lsh64x64 x y)
- // cond:
// result: (Select (I64Shl x y) (I64Const [0]) (I64LtU y (I64Const [64])))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x8 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x16 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x32 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpLsh8x64_0(v *Value) bool {
// match: (Lsh8x64 x y)
- // cond:
// result: (Lsh64x64 x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x8 x y)
- // cond:
// result: (Lsh64x64 x (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16 x y)
- // cond:
// result: (I64RemS (SignExt16to64 x) (SignExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod16u x y)
- // cond:
// result: (I64RemU (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32 x y)
- // cond:
// result: (I64RemS (SignExt32to64 x) (SignExt32to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod32u x y)
- // cond:
// result: (I64RemU (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpMod64_0(v *Value) bool {
// match: (Mod64 x y)
- // cond:
// result: (I64RemS x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpMod64u_0(v *Value) bool {
// match: (Mod64u x y)
- // cond:
// result: (I64RemU x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8 x y)
- // cond:
// result: (I64RemS (SignExt8to64 x) (SignExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Mod8u x y)
- // cond:
// result: (I64RemU (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Move [0] _ _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Move [1] dst src mem)
- // cond:
// result: (I64Store8 dst (I64Load8U src mem) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Move [2] dst src mem)
- // cond:
// result: (I64Store16 dst (I64Load16U src mem) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Move [4] dst src mem)
- // cond:
// result: (I64Store32 dst (I64Load32U src mem) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Move [8] dst src mem)
- // cond:
// result: (I64Store dst (I64Load src mem) mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Move [16] dst src mem)
- // cond:
// result: (I64Store [8] dst (I64Load [8] src mem) (I64Store dst (I64Load src mem) mem))
for {
if v.AuxInt != 16 {
return true
}
// match: (Move [3] dst src mem)
- // cond:
// result: (I64Store8 [2] dst (I64Load8U [2] src mem) (I64Store16 dst (I64Load16U src mem) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Move [5] dst src mem)
- // cond:
// result: (I64Store8 [4] dst (I64Load8U [4] src mem) (I64Store32 dst (I64Load32U src mem) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Move [6] dst src mem)
- // cond:
// result: (I64Store16 [4] dst (I64Load16U [4] src mem) (I64Store32 dst (I64Load32U src mem) mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Move [7] dst src mem)
- // cond:
// result: (I64Store32 [3] dst (I64Load32U [3] src mem) (I64Store32 dst (I64Load32U src mem) mem))
for {
if v.AuxInt != 7 {
}
func rewriteValueWasm_OpMul16_0(v *Value) bool {
// match: (Mul16 x y)
- // cond:
// result: (I64Mul x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpMul32_0(v *Value) bool {
// match: (Mul32 x y)
- // cond:
// result: (I64Mul x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpMul32F_0(v *Value) bool {
// match: (Mul32F x y)
- // cond:
// result: (F32Mul x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpMul64_0(v *Value) bool {
// match: (Mul64 x y)
- // cond:
// result: (I64Mul x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpMul64F_0(v *Value) bool {
// match: (Mul64F x y)
- // cond:
// result: (F64Mul x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpMul8_0(v *Value) bool {
// match: (Mul8 x y)
- // cond:
// result: (I64Mul x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neg16 x)
- // cond:
// result: (I64Sub (I64Const [0]) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neg32 x)
- // cond:
// result: (I64Sub (I64Const [0]) x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpNeg32F_0(v *Value) bool {
// match: (Neg32F x)
- // cond:
// result: (F32Neg x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neg64 x)
- // cond:
// result: (I64Sub (I64Const [0]) x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpNeg64F_0(v *Value) bool {
// match: (Neg64F x)
- // cond:
// result: (F64Neg x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neg8 x)
- // cond:
// result: (I64Sub (I64Const [0]) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq16 x y)
- // cond:
// result: (I64Ne (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq32 x y)
- // cond:
// result: (I64Ne (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpNeq32F_0(v *Value) bool {
// match: (Neq32F x y)
- // cond:
// result: (F32Ne x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpNeq64_0(v *Value) bool {
// match: (Neq64 x y)
- // cond:
// result: (I64Ne x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpNeq64F_0(v *Value) bool {
// match: (Neq64F x y)
- // cond:
// result: (F64Ne x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq8 x y)
- // cond:
// result: (I64Ne (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpNeqB_0(v *Value) bool {
// match: (NeqB x y)
- // cond:
// result: (I64Ne x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpNeqPtr_0(v *Value) bool {
// match: (NeqPtr x y)
- // cond:
// result: (I64Ne x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpNilCheck_0(v *Value) bool {
// match: (NilCheck ptr mem)
- // cond:
// result: (LoweredNilCheck ptr mem)
for {
mem := v.Args[1]
}
func rewriteValueWasm_OpNot_0(v *Value) bool {
// match: (Not x)
- // cond:
// result: (I64Eqz x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpOffPtr_0(v *Value) bool {
// match: (OffPtr [off] ptr)
- // cond:
// result: (I64AddConst [off] ptr)
for {
off := v.AuxInt
}
func rewriteValueWasm_OpOr16_0(v *Value) bool {
// match: (Or16 x y)
- // cond:
// result: (I64Or x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpOr32_0(v *Value) bool {
// match: (Or32 x y)
- // cond:
// result: (I64Or x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpOr64_0(v *Value) bool {
// match: (Or64 x y)
- // cond:
// result: (I64Or x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpOr8_0(v *Value) bool {
// match: (Or8 x y)
- // cond:
// result: (I64Or x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpOrB_0(v *Value) bool {
// match: (OrB x y)
- // cond:
// result: (I64Or x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount16 x)
- // cond:
// result: (I64Popcnt (ZeroExt16to64 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount32 x)
- // cond:
// result: (I64Popcnt (ZeroExt32to64 x))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpPopCount64_0(v *Value) bool {
// match: (PopCount64 x)
- // cond:
// result: (I64Popcnt x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (PopCount8 x)
- // cond:
// result: (I64Popcnt (ZeroExt8to64 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft16 <t> x (I64Const [c]))
- // cond:
// result: (Or16 (Lsh16x64 <t> x (I64Const [c&15])) (Rsh16Ux64 <t> x (I64Const [-c&15])))
for {
t := v.Type
}
func rewriteValueWasm_OpRotateLeft32_0(v *Value) bool {
// match: (RotateLeft32 x y)
- // cond:
// result: (I32Rotl x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpRotateLeft64_0(v *Value) bool {
// match: (RotateLeft64 x y)
- // cond:
// result: (I64Rotl x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (RotateLeft8 <t> x (I64Const [c]))
- // cond:
// result: (Or8 (Lsh8x64 <t> x (I64Const [c&7])) (Rsh8Ux64 <t> x (I64Const [-c&7])))
for {
t := v.Type
}
func rewriteValueWasm_OpRound32F_0(v *Value) bool {
// match: (Round32F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpRound64F_0(v *Value) bool {
// match: (Round64F x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpRoundToEven_0(v *Value) bool {
// match: (RoundToEven x)
- // cond:
// result: (F64Nearest x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux16 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux32 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt16to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux64 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt16to64 x) y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux8 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt16to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x16 x y)
- // cond:
// result: (Rsh64x64 (SignExt16to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x32 x y)
- // cond:
// result: (Rsh64x64 (SignExt16to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x64 x y)
- // cond:
// result: (Rsh64x64 (SignExt16to64 x) y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x8 x y)
- // cond:
// result: (Rsh64x64 (SignExt16to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux16 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt32to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux32 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux64 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt32to64 x) y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux8 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt32to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x16 x y)
- // cond:
// result: (Rsh64x64 (SignExt32to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x32 x y)
- // cond:
// result: (Rsh64x64 (SignExt32to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x64 x y)
- // cond:
// result: (Rsh64x64 (SignExt32to64 x) y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x8 x y)
- // cond:
// result: (Rsh64x64 (SignExt32to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux16 x y)
- // cond:
// result: (Rsh64Ux64 x (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux32 x y)
- // cond:
// result: (Rsh64Ux64 x (ZeroExt32to64 y))
for {
y := v.Args[1]
return true
}
// match: (Rsh64Ux64 x y)
- // cond:
// result: (Select (I64ShrU x y) (I64Const [0]) (I64LtU y (I64Const [64])))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux8 x y)
- // cond:
// result: (Rsh64Ux64 x (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x16 x y)
- // cond:
// result: (Rsh64x64 x (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x32 x y)
- // cond:
// result: (Rsh64x64 x (ZeroExt32to64 y))
for {
y := v.Args[1]
return true
}
// match: (Rsh64x64 x y)
- // cond:
// result: (I64ShrS x (Select <typ.Int64> y (I64Const [63]) (I64LtU y (I64Const [64]))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x8 x y)
- // cond:
// result: (Rsh64x64 x (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux16 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt8to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux32 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt8to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux64 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt8to64 x) y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux8 x y)
- // cond:
// result: (Rsh64Ux64 (ZeroExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x16 x y)
- // cond:
// result: (Rsh64x64 (SignExt8to64 x) (ZeroExt16to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x32 x y)
- // cond:
// result: (Rsh64x64 (SignExt8to64 x) (ZeroExt32to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x64 x y)
- // cond:
// result: (Rsh64x64 (SignExt8to64 x) y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8x8 x y)
- // cond:
// result: (Rsh64x64 (SignExt8to64 x) (ZeroExt8to64 y))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt16to32 x:(I64Load16S _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (SignExt16to32 x)
- // cond:
// result: (I64ShrS (I64Shl x (I64Const [48])) (I64Const [48]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt16to64 x:(I64Load16S _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (SignExt16to64 x)
- // cond:
// result: (I64ShrS (I64Shl x (I64Const [48])) (I64Const [48]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt32to64 x:(I64Load32S _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (SignExt32to64 x)
- // cond:
// result: (I64ShrS (I64Shl x (I64Const [32])) (I64Const [32]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt8to16 x:(I64Load8S _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (SignExt8to16 x)
- // cond:
// result: (I64ShrS (I64Shl x (I64Const [56])) (I64Const [56]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt8to32 x:(I64Load8S _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (SignExt8to32 x)
- // cond:
// result: (I64ShrS (I64Shl x (I64Const [56])) (I64Const [56]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt8to64 x:(I64Load8S _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (SignExt8to64 x)
- // cond:
// result: (I64ShrS (I64Shl x (I64Const [56])) (I64Const [56]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Slicemask x)
- // cond:
// result: (I64ShrS (I64Sub (I64Const [0]) x) (I64Const [63]))
for {
x := v.Args[0]
}
func rewriteValueWasm_OpSqrt_0(v *Value) bool {
// match: (Sqrt x)
- // cond:
// result: (F64Sqrt x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpStaticCall_0(v *Value) bool {
// match: (StaticCall [argwid] {target} mem)
- // cond:
// result: (LoweredStaticCall [argwid] {target} mem)
for {
argwid := v.AuxInt
}
func rewriteValueWasm_OpSub16_0(v *Value) bool {
// match: (Sub16 x y)
- // cond:
// result: (I64Sub x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpSub32_0(v *Value) bool {
// match: (Sub32 x y)
- // cond:
// result: (I64Sub x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpSub32F_0(v *Value) bool {
// match: (Sub32F x y)
- // cond:
// result: (F32Sub x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpSub64_0(v *Value) bool {
// match: (Sub64 x y)
- // cond:
// result: (I64Sub x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpSub64F_0(v *Value) bool {
// match: (Sub64F x y)
- // cond:
// result: (F64Sub x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpSub8_0(v *Value) bool {
// match: (Sub8 x y)
- // cond:
// result: (I64Sub x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpSubPtr_0(v *Value) bool {
// match: (SubPtr x y)
- // cond:
// result: (I64Sub x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpTrunc_0(v *Value) bool {
// match: (Trunc x)
- // cond:
// result: (F64Trunc x)
for {
x := v.Args[0]
}
func rewriteValueWasm_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpTrunc64to16_0(v *Value) bool {
// match: (Trunc64to16 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpTrunc64to32_0(v *Value) bool {
// match: (Trunc64to32 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpTrunc64to8_0(v *Value) bool {
// match: (Trunc64to8 x)
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValueWasm_OpWB_0(v *Value) bool {
// match: (WB {fn} destptr srcptr mem)
- // cond:
// result: (LoweredWB {fn} destptr srcptr mem)
for {
fn := v.Aux
b := v.Block
typ := &b.Func.Config.Types
// match: (F64Add (F64Const [x]) (F64Const [y]))
- // cond:
// result: (F64Const [auxFrom64F(auxTo64F(x) + auxTo64F(y))])
for {
_ = v.Args[1]
return true
}
// match: (F64Add (F64Const [x]) y)
- // cond:
// result: (F64Add y (F64Const [x]))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (F64Mul (F64Const [x]) (F64Const [y]))
- // cond:
// result: (F64Const [auxFrom64F(auxTo64F(x) * auxTo64F(y))])
for {
_ = v.Args[1]
return true
}
// match: (F64Mul (F64Const [x]) y)
- // cond:
// result: (F64Mul y (F64Const [x]))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (I64Add (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [x + y])
for {
_ = v.Args[1]
return true
}
// match: (I64Add (I64Const [x]) y)
- // cond:
// result: (I64Add y (I64Const [x]))
for {
y := v.Args[1]
return true
}
// match: (I64Add x (I64Const [y]))
- // cond:
// result: (I64AddConst [y] x)
for {
_ = v.Args[1]
}
func rewriteValueWasm_OpWasmI64AddConst_0(v *Value) bool {
// match: (I64AddConst [0] x)
- // cond:
// result: x
for {
if v.AuxInt != 0 {
b := v.Block
typ := &b.Func.Config.Types
// match: (I64And (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [x & y])
for {
_ = v.Args[1]
return true
}
// match: (I64And (I64Const [x]) y)
- // cond:
// result: (I64And y (I64Const [x]))
for {
y := v.Args[1]
return true
}
// match: (I64Eq (I64Const [x]) y)
- // cond:
// result: (I64Eq y (I64Const [x]))
for {
y := v.Args[1]
return true
}
// match: (I64Eq x (I64Const [0]))
- // cond:
// result: (I64Eqz x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpWasmI64Const {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpWasmI64Const || v_1.AuxInt != 0 {
break
}
v.reset(OpWasmI64Eqz)
}
func rewriteValueWasm_OpWasmI64Eqz_0(v *Value) bool {
// match: (I64Eqz (I64Eqz (I64Eqz x)))
- // cond:
// result: (I64Eqz x)
for {
v_0 := v.Args[0]
off2 := v_0.AuxInt
sym := v_0.Aux
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym) && isU32Bit(off+off2)) {
+ if v_0_0.Op != OpSB || !(symIsRO(sym) && isU32Bit(off+off2)) {
break
}
v.reset(OpWasmI64Const)
off2 := v_0.AuxInt
sym := v_0.Aux
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym) && isU32Bit(off+off2)) {
+ if v_0_0.Op != OpSB || !(symIsRO(sym) && isU32Bit(off+off2)) {
break
}
v.reset(OpWasmI64Const)
off2 := v_0.AuxInt
sym := v_0.Aux
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym) && isU32Bit(off+off2)) {
+ if v_0_0.Op != OpSB || !(symIsRO(sym) && isU32Bit(off+off2)) {
break
}
v.reset(OpWasmI64Const)
off2 := v_0.AuxInt
sym := v_0.Aux
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpSB {
- break
- }
- if !(symIsRO(sym) && isU32Bit(off+off2)) {
+ if v_0_0.Op != OpSB || !(symIsRO(sym) && isU32Bit(off+off2)) {
break
}
v.reset(OpWasmI64Const)
b := v.Block
typ := &b.Func.Config.Types
// match: (I64Mul (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [x * y])
for {
_ = v.Args[1]
return true
}
// match: (I64Mul (I64Const [x]) y)
- // cond:
// result: (I64Mul y (I64Const [x]))
for {
y := v.Args[1]
return true
}
// match: (I64Ne (I64Const [x]) y)
- // cond:
// result: (I64Ne y (I64Const [x]))
for {
y := v.Args[1]
return true
}
// match: (I64Ne x (I64Const [0]))
- // cond:
// result: (I64Eqz (I64Eqz x))
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpWasmI64Const {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpWasmI64Const || v_1.AuxInt != 0 {
break
}
v.reset(OpWasmI64Eqz)
b := v.Block
typ := &b.Func.Config.Types
// match: (I64Or (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [x | y])
for {
_ = v.Args[1]
return true
}
// match: (I64Or (I64Const [x]) y)
- // cond:
// result: (I64Or y (I64Const [x]))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpWasmI64Shl_0(v *Value) bool {
// match: (I64Shl (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [x << uint64(y)])
for {
_ = v.Args[1]
}
func rewriteValueWasm_OpWasmI64ShrS_0(v *Value) bool {
// match: (I64ShrS (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [x >> uint64(y)])
for {
_ = v.Args[1]
}
func rewriteValueWasm_OpWasmI64ShrU_0(v *Value) bool {
// match: (I64ShrU (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [int64(uint64(x) >> uint64(y))])
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (I64Xor (I64Const [x]) (I64Const [y]))
- // cond:
// result: (I64Const [x ^ y])
for {
_ = v.Args[1]
return true
}
// match: (I64Xor (I64Const [x]) y)
- // cond:
// result: (I64Xor y (I64Const [x]))
for {
y := v.Args[1]
}
func rewriteValueWasm_OpXor16_0(v *Value) bool {
// match: (Xor16 x y)
- // cond:
// result: (I64Xor x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpXor32_0(v *Value) bool {
// match: (Xor32 x y)
- // cond:
// result: (I64Xor x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpXor64_0(v *Value) bool {
// match: (Xor64 x y)
- // cond:
// result: (I64Xor x y)
for {
y := v.Args[1]
}
func rewriteValueWasm_OpXor8_0(v *Value) bool {
// match: (Xor8 x y)
- // cond:
// result: (I64Xor x y)
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Zero [0] _ mem)
- // cond:
// result: mem
for {
if v.AuxInt != 0 {
return true
}
// match: (Zero [1] destptr mem)
- // cond:
// result: (I64Store8 destptr (I64Const [0]) mem)
for {
if v.AuxInt != 1 {
return true
}
// match: (Zero [2] destptr mem)
- // cond:
// result: (I64Store16 destptr (I64Const [0]) mem)
for {
if v.AuxInt != 2 {
return true
}
// match: (Zero [4] destptr mem)
- // cond:
// result: (I64Store32 destptr (I64Const [0]) mem)
for {
if v.AuxInt != 4 {
return true
}
// match: (Zero [8] destptr mem)
- // cond:
// result: (I64Store destptr (I64Const [0]) mem)
for {
if v.AuxInt != 8 {
return true
}
// match: (Zero [3] destptr mem)
- // cond:
// result: (I64Store8 [2] destptr (I64Const [0]) (I64Store16 destptr (I64Const [0]) mem))
for {
if v.AuxInt != 3 {
return true
}
// match: (Zero [5] destptr mem)
- // cond:
// result: (I64Store8 [4] destptr (I64Const [0]) (I64Store32 destptr (I64Const [0]) mem))
for {
if v.AuxInt != 5 {
return true
}
// match: (Zero [6] destptr mem)
- // cond:
// result: (I64Store16 [4] destptr (I64Const [0]) (I64Store32 destptr (I64Const [0]) mem))
for {
if v.AuxInt != 6 {
return true
}
// match: (Zero [7] destptr mem)
- // cond:
// result: (I64Store32 [3] destptr (I64Const [0]) (I64Store32 destptr (I64Const [0]) mem))
for {
if v.AuxInt != 7 {
b := v.Block
typ := &b.Func.Config.Types
// match: (Zero [16] destptr mem)
- // cond:
// result: (I64Store [8] destptr (I64Const [0]) (I64Store destptr (I64Const [0]) mem))
for {
if v.AuxInt != 16 {
return true
}
// match: (Zero [24] destptr mem)
- // cond:
// result: (I64Store [16] destptr (I64Const [0]) (I64Store [8] destptr (I64Const [0]) (I64Store destptr (I64Const [0]) mem)))
for {
if v.AuxInt != 24 {
return true
}
// match: (Zero [32] destptr mem)
- // cond:
// result: (I64Store [24] destptr (I64Const [0]) (I64Store [16] destptr (I64Const [0]) (I64Store [8] destptr (I64Const [0]) (I64Store destptr (I64Const [0]) mem))))
for {
if v.AuxInt != 32 {
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt16to32 x:(I64Load16U _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (ZeroExt16to32 x)
- // cond:
// result: (I64And x (I64Const [0xffff]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt16to64 x:(I64Load16U _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (ZeroExt16to64 x)
- // cond:
// result: (I64And x (I64Const [0xffff]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt32to64 x:(I64Load32U _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (ZeroExt32to64 x)
- // cond:
// result: (I64And x (I64Const [0xffffffff]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt8to16 x:(I64Load8U _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (ZeroExt8to16 x)
- // cond:
// result: (I64And x (I64Const [0xff]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt8to32 x:(I64Load8U _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (ZeroExt8to32 x)
- // cond:
// result: (I64And x (I64Const [0xff]))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt8to64 x:(I64Load8U _ _))
- // cond:
// result: x
for {
x := v.Args[0]
return true
}
// match: (ZeroExt8to64 x)
- // cond:
// result: (I64And x (I64Const [0xff]))
for {
x := v.Args[0]
}
func rewriteValuedec_OpComplexImag_0(v *Value) bool {
// match: (ComplexImag (ComplexMake _ imag))
- // cond:
// result: imag
for {
v_0 := v.Args[0]
}
func rewriteValuedec_OpComplexReal_0(v *Value) bool {
// match: (ComplexReal (ComplexMake real _))
- // cond:
// result: real
for {
v_0 := v.Args[0]
}
func rewriteValuedec_OpIData_0(v *Value) bool {
// match: (IData (IMake _ data))
- // cond:
// result: data
for {
v_0 := v.Args[0]
}
func rewriteValuedec_OpITab_0(v *Value) bool {
// match: (ITab (IMake itab _))
- // cond:
// result: itab
for {
v_0 := v.Args[0]
}
func rewriteValuedec_OpSliceCap_0(v *Value) bool {
// match: (SliceCap (SliceMake _ _ cap))
- // cond:
// result: cap
for {
v_0 := v.Args[0]
}
func rewriteValuedec_OpSliceLen_0(v *Value) bool {
// match: (SliceLen (SliceMake _ len _))
- // cond:
// result: len
for {
v_0 := v.Args[0]
}
func rewriteValuedec_OpSlicePtr_0(v *Value) bool {
// match: (SlicePtr (SliceMake ptr _ _))
- // cond:
// result: ptr
for {
v_0 := v.Args[0]
return true
}
// match: (Store dst (StringMake ptr len) mem)
- // cond:
// result: (Store {typ.Int} (OffPtr <typ.IntPtr> [config.PtrSize] dst) len (Store {typ.BytePtr} dst ptr mem))
for {
mem := v.Args[2]
return true
}
// match: (Store dst (SliceMake ptr len cap) mem)
- // cond:
// result: (Store {typ.Int} (OffPtr <typ.IntPtr> [2*config.PtrSize] dst) cap (Store {typ.Int} (OffPtr <typ.IntPtr> [config.PtrSize] dst) len (Store {typ.BytePtr} dst ptr mem)))
for {
mem := v.Args[2]
return true
}
// match: (Store dst (IMake itab data) mem)
- // cond:
// result: (Store {typ.BytePtr} (OffPtr <typ.BytePtrPtr> [config.PtrSize] dst) data (Store {typ.Uintptr} dst itab mem))
for {
mem := v.Args[2]
}
func rewriteValuedec_OpStringLen_0(v *Value) bool {
// match: (StringLen (StringMake _ len))
- // cond:
// result: len
for {
v_0 := v.Args[0]
}
func rewriteValuedec_OpStringPtr_0(v *Value) bool {
// match: (StringPtr (StringMake ptr _))
- // cond:
// result: ptr
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Add64 x y)
- // cond:
// result: (Int64Make (Add32withcarry <typ.Int32> (Int64Hi x) (Int64Hi y) (Select1 <types.TypeFlags> (Add32carry (Int64Lo x) (Int64Lo y)))) (Select0 <typ.UInt32> (Add32carry (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (And64 x y)
- // cond:
// result: (Int64Make (And32 <typ.UInt32> (Int64Hi x) (Int64Hi y)) (And32 <typ.UInt32> (Int64Lo x) (Int64Lo y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (BitLen64 x)
- // cond:
// result: (Add32 <typ.Int> (BitLen32 <typ.Int> (Int64Hi x)) (BitLen32 <typ.Int> (Or32 <typ.UInt32> (Int64Lo x) (Zeromask (Int64Hi x)))))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Bswap64 x)
- // cond:
// result: (Int64Make (Bswap32 <typ.UInt32> (Int64Lo x)) (Bswap32 <typ.UInt32> (Int64Hi x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Com64 x)
- // cond:
// result: (Int64Make (Com32 <typ.UInt32> (Int64Hi x)) (Com32 <typ.UInt32> (Int64Lo x)))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Ctz64 x)
- // cond:
// result: (Add32 <typ.UInt32> (Ctz32 <typ.UInt32> (Int64Lo x)) (And32 <typ.UInt32> (Com32 <typ.UInt32> (Zeromask (Int64Lo x))) (Ctz32 <typ.UInt32> (Int64Hi x))))
for {
x := v.Args[0]
}
func rewriteValuedec64_OpCtz64NonZero_0(v *Value) bool {
// match: (Ctz64NonZero x)
- // cond:
// result: (Ctz64 x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq64 x y)
- // cond:
// result: (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Eq32 (Int64Lo x) (Int64Lo y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq64 x y)
- // cond:
// result: (OrB (Greater32 (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Geq32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Geq64U x y)
- // cond:
// result: (OrB (Greater32U (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Geq32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater64 x y)
- // cond:
// result: (OrB (Greater32 (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Greater32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Greater64U x y)
- // cond:
// result: (OrB (Greater32U (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Greater32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
}
func rewriteValuedec64_OpInt64Hi_0(v *Value) bool {
// match: (Int64Hi (Int64Make hi _))
- // cond:
// result: hi
for {
v_0 := v.Args[0]
}
func rewriteValuedec64_OpInt64Lo_0(v *Value) bool {
// match: (Int64Lo (Int64Make _ lo))
- // cond:
// result: lo
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq64 x y)
- // cond:
// result: (OrB (Less32 (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Leq32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Leq64U x y)
- // cond:
// result: (OrB (Less32U (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Leq32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less64 x y)
- // cond:
// result: (OrB (Less32 (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Less32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Less64U x y)
- // cond:
// result: (OrB (Less32U (Int64Hi x) (Int64Hi y)) (AndB (Eq32 (Int64Hi x) (Int64Hi y)) (Less32U (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
return true
}
// match: (Lsh16x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Lsh16x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpLsh16x32)
return true
}
// match: (Lsh32x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Lsh32x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpLsh32x32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x16 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Lsh32x16 <typ.UInt32> hi s) (Rsh32Ux16 <typ.UInt32> lo (Sub16 <typ.UInt16> (Const16 <typ.UInt16> [32]) s))) (Lsh32x16 <typ.UInt32> lo (Sub16 <typ.UInt16> s (Const16 <typ.UInt16> [32])))) (Lsh32x16 <typ.UInt32> lo s))
for {
s := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x32 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Lsh32x32 <typ.UInt32> hi s) (Rsh32Ux32 <typ.UInt32> lo (Sub32 <typ.UInt32> (Const32 <typ.UInt32> [32]) s))) (Lsh32x32 <typ.UInt32> lo (Sub32 <typ.UInt32> s (Const32 <typ.UInt32> [32])))) (Lsh32x32 <typ.UInt32> lo s))
for {
s := v.Args[1]
return true
}
// match: (Lsh64x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Lsh64x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpLsh64x32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x8 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Lsh32x8 <typ.UInt32> hi s) (Rsh32Ux8 <typ.UInt32> lo (Sub8 <typ.UInt8> (Const8 <typ.UInt8> [32]) s))) (Lsh32x8 <typ.UInt32> lo (Sub8 <typ.UInt8> s (Const8 <typ.UInt8> [32])))) (Lsh32x8 <typ.UInt32> lo s))
for {
s := v.Args[1]
return true
}
// match: (Lsh8x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Lsh8x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpLsh8x32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul64 x y)
- // cond:
// result: (Int64Make (Add32 <typ.UInt32> (Mul32 <typ.UInt32> (Int64Lo x) (Int64Hi y)) (Add32 <typ.UInt32> (Mul32 <typ.UInt32> (Int64Hi x) (Int64Lo y)) (Select0 <typ.UInt32> (Mul32uhilo (Int64Lo x) (Int64Lo y))))) (Select1 <typ.UInt32> (Mul32uhilo (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
func rewriteValuedec64_OpNeg64_0(v *Value) bool {
b := v.Block
// match: (Neg64 <t> x)
- // cond:
// result: (Sub64 (Const64 <t> [0]) x)
for {
t := v.Type
b := v.Block
typ := &b.Func.Config.Types
// match: (Neq64 x y)
- // cond:
// result: (OrB (Neq32 (Int64Hi x) (Int64Hi y)) (Neq32 (Int64Lo x) (Int64Lo y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Or64 x y)
- // cond:
// result: (Int64Make (Or32 <typ.UInt32> (Int64Hi x) (Int64Hi y)) (Or32 <typ.UInt32> (Int64Lo x) (Int64Lo y)))
for {
y := v.Args[1]
return true
}
// match: (Rsh16Ux64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh16Ux32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh16Ux32)
return true
}
// match: (Rsh16x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh16x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh16x32)
return true
}
// match: (Rsh32Ux64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh32Ux32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh32Ux32)
return true
}
// match: (Rsh32x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh32x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh32x32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux16 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Rsh32Ux16 <typ.UInt32> hi s) (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Rsh32Ux16 <typ.UInt32> lo s) (Lsh32x16 <typ.UInt32> hi (Sub16 <typ.UInt16> (Const16 <typ.UInt16> [32]) s))) (Rsh32Ux16 <typ.UInt32> hi (Sub16 <typ.UInt16> s (Const16 <typ.UInt16> [32])))))
for {
s := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux32 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Rsh32Ux32 <typ.UInt32> hi s) (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Rsh32Ux32 <typ.UInt32> lo s) (Lsh32x32 <typ.UInt32> hi (Sub32 <typ.UInt32> (Const32 <typ.UInt32> [32]) s))) (Rsh32Ux32 <typ.UInt32> hi (Sub32 <typ.UInt32> s (Const32 <typ.UInt32> [32])))))
for {
s := v.Args[1]
return true
}
// match: (Rsh64Ux64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh64Ux32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh64Ux32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux8 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Rsh32Ux8 <typ.UInt32> hi s) (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Rsh32Ux8 <typ.UInt32> lo s) (Lsh32x8 <typ.UInt32> hi (Sub8 <typ.UInt8> (Const8 <typ.UInt8> [32]) s))) (Rsh32Ux8 <typ.UInt32> hi (Sub8 <typ.UInt8> s (Const8 <typ.UInt8> [32])))))
for {
s := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x16 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Rsh32x16 <typ.UInt32> hi s) (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Rsh32Ux16 <typ.UInt32> lo s) (Lsh32x16 <typ.UInt32> hi (Sub16 <typ.UInt16> (Const16 <typ.UInt16> [32]) s))) (And32 <typ.UInt32> (Rsh32x16 <typ.UInt32> hi (Sub16 <typ.UInt16> s (Const16 <typ.UInt16> [32]))) (Zeromask (ZeroExt16to32 (Rsh16Ux32 <typ.UInt16> s (Const32 <typ.UInt32> [5])))))))
for {
s := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x32 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Rsh32x32 <typ.UInt32> hi s) (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Rsh32Ux32 <typ.UInt32> lo s) (Lsh32x32 <typ.UInt32> hi (Sub32 <typ.UInt32> (Const32 <typ.UInt32> [32]) s))) (And32 <typ.UInt32> (Rsh32x32 <typ.UInt32> hi (Sub32 <typ.UInt32> s (Const32 <typ.UInt32> [32]))) (Zeromask (Rsh32Ux32 <typ.UInt32> s (Const32 <typ.UInt32> [5]))))))
for {
s := v.Args[1]
return true
}
// match: (Rsh64x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh64x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh64x32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x8 (Int64Make hi lo) s)
- // cond:
// result: (Int64Make (Rsh32x8 <typ.UInt32> hi s) (Or32 <typ.UInt32> (Or32 <typ.UInt32> (Rsh32Ux8 <typ.UInt32> lo s) (Lsh32x8 <typ.UInt32> hi (Sub8 <typ.UInt8> (Const8 <typ.UInt8> [32]) s))) (And32 <typ.UInt32> (Rsh32x8 <typ.UInt32> hi (Sub8 <typ.UInt8> s (Const8 <typ.UInt8> [32]))) (Zeromask (ZeroExt8to32 (Rsh8Ux32 <typ.UInt8> s (Const32 <typ.UInt32> [5])))))))
for {
s := v.Args[1]
return true
}
// match: (Rsh8Ux64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh8Ux32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh8Ux32)
return true
}
// match: (Rsh8x64 x (Int64Make (Const32 [0]) lo))
- // cond:
// result: (Rsh8x32 x lo)
for {
_ = v.Args[1]
}
lo := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.AuxInt != 0 {
+ if v_1_0.Op != OpConst32 || v_1_0.AuxInt != 0 {
break
}
v.reset(OpRsh8x32)
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt16to64 x)
- // cond:
// result: (SignExt32to64 (SignExt16to32 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt32to64 x)
- // cond:
// result: (Int64Make (Signmask x) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (SignExt8to64 x)
- // cond:
// result: (SignExt32to64 (SignExt8to32 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Sub64 x y)
- // cond:
// result: (Int64Make (Sub32withcarry <typ.Int32> (Int64Hi x) (Int64Hi y) (Select1 <types.TypeFlags> (Sub32carry (Int64Lo x) (Int64Lo y)))) (Select0 <typ.UInt32> (Sub32carry (Int64Lo x) (Int64Lo y))))
for {
y := v.Args[1]
}
func rewriteValuedec64_OpTrunc64to16_0(v *Value) bool {
// match: (Trunc64to16 (Int64Make _ lo))
- // cond:
// result: (Trunc32to16 lo)
for {
v_0 := v.Args[0]
}
func rewriteValuedec64_OpTrunc64to32_0(v *Value) bool {
// match: (Trunc64to32 (Int64Make _ lo))
- // cond:
// result: lo
for {
v_0 := v.Args[0]
}
func rewriteValuedec64_OpTrunc64to8_0(v *Value) bool {
// match: (Trunc64to8 (Int64Make _ lo))
- // cond:
// result: (Trunc32to8 lo)
for {
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (Xor64 x y)
- // cond:
// result: (Int64Make (Xor32 <typ.UInt32> (Int64Hi x) (Int64Hi y)) (Xor32 <typ.UInt32> (Int64Lo x) (Int64Lo y)))
for {
y := v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt16to64 x)
- // cond:
// result: (ZeroExt32to64 (ZeroExt16to32 x))
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt32to64 x)
- // cond:
// result: (Int64Make (Const32 <typ.UInt32> [0]) x)
for {
x := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (ZeroExt8to64 x)
- // cond:
// result: (ZeroExt32to64 (ZeroExt8to32 x))
for {
x := v.Args[0]
func rewriteValuegeneric_OpAdd16_0(v *Value) bool {
b := v.Block
// match: (Add16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (Const16 [int64(int16(c+d))])
for {
_ = v.Args[1]
return true
}
// match: (Add16 (Const16 [d]) (Const16 [c]))
- // cond:
// result: (Const16 [int64(int16(c+d))])
for {
_ = v.Args[1]
return true
}
// match: (Add16 <t> (Mul16 x y) (Mul16 x z))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
return true
}
// match: (Add16 <t> (Mul16 y x) (Mul16 x z))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
return true
}
// match: (Add16 <t> (Mul16 x y) (Mul16 z x))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
return true
}
// match: (Add16 <t> (Mul16 y x) (Mul16 z x))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
return true
}
// match: (Add16 <t> (Mul16 x z) (Mul16 x y))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
return true
}
// match: (Add16 <t> (Mul16 z x) (Mul16 x y))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
return true
}
// match: (Add16 <t> (Mul16 x z) (Mul16 y x))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
return true
}
// match: (Add16 <t> (Mul16 z x) (Mul16 y x))
- // cond:
// result: (Mul16 x (Add16 <t> y z))
for {
t := v.Type
func rewriteValuegeneric_OpAdd16_10(v *Value) bool {
b := v.Block
// match: (Add16 (Const16 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add16 x (Const16 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add16 (Const16 [1]) (Com16 x))
- // cond:
// result: (Neg16 x)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 1 {
break
}
v_1 := v.Args[1]
return true
}
// match: (Add16 (Com16 x) (Const16 [1]))
- // cond:
// result: (Neg16 x)
for {
_ = v.Args[1]
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 1 {
break
}
v.reset(OpNeg16)
return true
}
// match: (Add16 (Const16 <t> [c]) (Add16 (Const16 <t> [d]) x))
- // cond:
// result: (Add16 (Const16 <t> [int64(int16(c+d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add16 (Const16 <t> [c]) (Add16 x (Const16 <t> [d])))
- // cond:
// result: (Add16 (Const16 <t> [int64(int16(c+d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add16 (Add16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (Add16 (Const16 <t> [int64(int16(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add16 (Add16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (Add16 (Const16 <t> [int64(int16(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpAdd16_30(v *Value) bool {
b := v.Block
// match: (Add16 (Const16 <t> [c]) (Sub16 (Const16 <t> [d]) x))
- // cond:
// result: (Sub16 (Const16 <t> [int64(int16(c+d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add16 (Sub16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (Sub16 (Const16 <t> [int64(int16(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add16 (Const16 <t> [c]) (Sub16 x (Const16 <t> [d])))
- // cond:
// result: (Add16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add16 (Sub16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (Add16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpAdd32_0(v *Value) bool {
b := v.Block
// match: (Add32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (Const32 [int64(int32(c+d))])
for {
_ = v.Args[1]
return true
}
// match: (Add32 (Const32 [d]) (Const32 [c]))
- // cond:
// result: (Const32 [int64(int32(c+d))])
for {
_ = v.Args[1]
return true
}
// match: (Add32 <t> (Mul32 x y) (Mul32 x z))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
return true
}
// match: (Add32 <t> (Mul32 y x) (Mul32 x z))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
return true
}
// match: (Add32 <t> (Mul32 x y) (Mul32 z x))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
return true
}
// match: (Add32 <t> (Mul32 y x) (Mul32 z x))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
return true
}
// match: (Add32 <t> (Mul32 x z) (Mul32 x y))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
return true
}
// match: (Add32 <t> (Mul32 z x) (Mul32 x y))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
return true
}
// match: (Add32 <t> (Mul32 x z) (Mul32 y x))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
return true
}
// match: (Add32 <t> (Mul32 z x) (Mul32 y x))
- // cond:
// result: (Mul32 x (Add32 <t> y z))
for {
t := v.Type
func rewriteValuegeneric_OpAdd32_10(v *Value) bool {
b := v.Block
// match: (Add32 (Const32 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add32 x (Const32 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add32 (Const32 [1]) (Com32 x))
- // cond:
// result: (Neg32 x)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 1 {
break
}
v_1 := v.Args[1]
return true
}
// match: (Add32 (Com32 x) (Const32 [1]))
- // cond:
// result: (Neg32 x)
for {
_ = v.Args[1]
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 1 {
break
}
v.reset(OpNeg32)
return true
}
// match: (Add32 (Const32 <t> [c]) (Add32 (Const32 <t> [d]) x))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c+d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add32 (Const32 <t> [c]) (Add32 x (Const32 <t> [d])))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c+d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add32 (Add32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add32 (Add32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpAdd32_30(v *Value) bool {
b := v.Block
// match: (Add32 (Const32 <t> [c]) (Sub32 (Const32 <t> [d]) x))
- // cond:
// result: (Sub32 (Const32 <t> [int64(int32(c+d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add32 (Sub32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Sub32 (Const32 <t> [int64(int32(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add32 (Const32 <t> [c]) (Sub32 x (Const32 <t> [d])))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add32 (Sub32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpAdd32F_0(v *Value) bool {
// match: (Add32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (Const32F [auxFrom32F(auxTo32F(c) + auxTo32F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Add32F (Const32F [d]) (Const32F [c]))
- // cond:
// result: (Const32F [auxFrom32F(auxTo32F(c) + auxTo32F(d))])
for {
_ = v.Args[1]
func rewriteValuegeneric_OpAdd64_0(v *Value) bool {
b := v.Block
// match: (Add64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c+d])
for {
_ = v.Args[1]
return true
}
// match: (Add64 (Const64 [d]) (Const64 [c]))
- // cond:
// result: (Const64 [c+d])
for {
_ = v.Args[1]
return true
}
// match: (Add64 <t> (Mul64 x y) (Mul64 x z))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
return true
}
// match: (Add64 <t> (Mul64 y x) (Mul64 x z))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
return true
}
// match: (Add64 <t> (Mul64 x y) (Mul64 z x))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
return true
}
// match: (Add64 <t> (Mul64 y x) (Mul64 z x))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
return true
}
// match: (Add64 <t> (Mul64 x z) (Mul64 x y))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
return true
}
// match: (Add64 <t> (Mul64 z x) (Mul64 x y))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
return true
}
// match: (Add64 <t> (Mul64 x z) (Mul64 y x))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
return true
}
// match: (Add64 <t> (Mul64 z x) (Mul64 y x))
- // cond:
// result: (Mul64 x (Add64 <t> y z))
for {
t := v.Type
func rewriteValuegeneric_OpAdd64_10(v *Value) bool {
b := v.Block
// match: (Add64 (Const64 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add64 (Const64 [1]) (Com64 x))
- // cond:
// result: (Neg64 x)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 1 {
break
}
v_1 := v.Args[1]
return true
}
// match: (Add64 (Com64 x) (Const64 [1]))
- // cond:
// result: (Neg64 x)
for {
_ = v.Args[1]
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 1 {
break
}
v.reset(OpNeg64)
return true
}
// match: (Add64 (Const64 <t> [c]) (Add64 (Const64 <t> [d]) x))
- // cond:
// result: (Add64 (Const64 <t> [c+d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add64 (Const64 <t> [c]) (Add64 x (Const64 <t> [d])))
- // cond:
// result: (Add64 (Const64 <t> [c+d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add64 (Add64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Add64 (Const64 <t> [c+d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add64 (Add64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Add64 (Const64 <t> [c+d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpAdd64_30(v *Value) bool {
b := v.Block
// match: (Add64 (Const64 <t> [c]) (Sub64 (Const64 <t> [d]) x))
- // cond:
// result: (Sub64 (Const64 <t> [c+d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add64 (Sub64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Sub64 (Const64 <t> [c+d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add64 (Const64 <t> [c]) (Sub64 x (Const64 <t> [d])))
- // cond:
// result: (Add64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add64 (Sub64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Add64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpAdd64F_0(v *Value) bool {
// match: (Add64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (Const64F [auxFrom64F(auxTo64F(c) + auxTo64F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Add64F (Const64F [d]) (Const64F [c]))
- // cond:
// result: (Const64F [auxFrom64F(auxTo64F(c) + auxTo64F(d))])
for {
_ = v.Args[1]
func rewriteValuegeneric_OpAdd8_0(v *Value) bool {
b := v.Block
// match: (Add8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (Const8 [int64(int8(c+d))])
for {
_ = v.Args[1]
return true
}
// match: (Add8 (Const8 [d]) (Const8 [c]))
- // cond:
// result: (Const8 [int64(int8(c+d))])
for {
_ = v.Args[1]
return true
}
// match: (Add8 <t> (Mul8 x y) (Mul8 x z))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
return true
}
// match: (Add8 <t> (Mul8 y x) (Mul8 x z))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
return true
}
// match: (Add8 <t> (Mul8 x y) (Mul8 z x))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
return true
}
// match: (Add8 <t> (Mul8 y x) (Mul8 z x))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
return true
}
// match: (Add8 <t> (Mul8 x z) (Mul8 x y))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
return true
}
// match: (Add8 <t> (Mul8 z x) (Mul8 x y))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
return true
}
// match: (Add8 <t> (Mul8 x z) (Mul8 y x))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
return true
}
// match: (Add8 <t> (Mul8 z x) (Mul8 y x))
- // cond:
// result: (Mul8 x (Add8 <t> y z))
for {
t := v.Type
func rewriteValuegeneric_OpAdd8_10(v *Value) bool {
b := v.Block
// match: (Add8 (Const8 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add8 x (Const8 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Add8 (Const8 [1]) (Com8 x))
- // cond:
// result: (Neg8 x)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 1 {
break
}
v_1 := v.Args[1]
return true
}
// match: (Add8 (Com8 x) (Const8 [1]))
- // cond:
// result: (Neg8 x)
for {
_ = v.Args[1]
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 1 {
break
}
v.reset(OpNeg8)
return true
}
// match: (Add8 (Const8 <t> [c]) (Add8 (Const8 <t> [d]) x))
- // cond:
// result: (Add8 (Const8 <t> [int64(int8(c+d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add8 (Const8 <t> [c]) (Add8 x (Const8 <t> [d])))
- // cond:
// result: (Add8 (Const8 <t> [int64(int8(c+d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add8 (Add8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (Add8 (Const8 <t> [int64(int8(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add8 (Add8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (Add8 (Const8 <t> [int64(int8(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpAdd8_30(v *Value) bool {
b := v.Block
// match: (Add8 (Const8 <t> [c]) (Sub8 (Const8 <t> [d]) x))
- // cond:
// result: (Sub8 (Const8 <t> [int64(int8(c+d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Add8 (Sub8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (Sub8 (Const8 <t> [int64(int8(c+d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Add8 (Const8 <t> [c]) (Sub8 x (Const8 <t> [d])))
- // cond:
// result: (Add8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Add8 (Sub8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (Add8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpAddPtr_0(v *Value) bool {
// match: (AddPtr <t> x (Const64 [c]))
- // cond:
// result: (OffPtr <t> x [c])
for {
t := v.Type
return true
}
// match: (AddPtr <t> x (Const32 [c]))
- // cond:
// result: (OffPtr <t> x [c])
for {
t := v.Type
}
func rewriteValuegeneric_OpAnd16_0(v *Value) bool {
// match: (And16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (Const16 [int64(int16(c&d))])
for {
_ = v.Args[1]
return true
}
// match: (And16 (Const16 [d]) (Const16 [c]))
- // cond:
// result: (Const16 [int64(int16(c&d))])
for {
_ = v.Args[1]
return true
}
// match: (And16 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (And16 (Const16 [-1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And16 x (Const16 [-1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And16 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpAnd16_10(v *Value) bool {
b := v.Block
// match: (And16 _ (Const16 [0]))
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst16)
return true
}
// match: (And16 x (And16 x y))
- // cond:
// result: (And16 x y)
for {
_ = v.Args[1]
return true
}
// match: (And16 x (And16 y x))
- // cond:
// result: (And16 x y)
for {
_ = v.Args[1]
return true
}
// match: (And16 (And16 x y) x)
- // cond:
// result: (And16 x y)
for {
x := v.Args[1]
return true
}
// match: (And16 (And16 y x) x)
- // cond:
// result: (And16 x y)
for {
x := v.Args[1]
return true
}
// match: (And16 (Const16 <t> [c]) (And16 (Const16 <t> [d]) x))
- // cond:
// result: (And16 (Const16 <t> [int64(int16(c&d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpAnd16_20(v *Value) bool {
b := v.Block
// match: (And16 (Const16 <t> [c]) (And16 x (Const16 <t> [d])))
- // cond:
// result: (And16 (Const16 <t> [int64(int16(c&d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (And16 (And16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (And16 (Const16 <t> [int64(int16(c&d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (And16 (And16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (And16 (Const16 <t> [int64(int16(c&d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpAnd32_0(v *Value) bool {
// match: (And32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (Const32 [int64(int32(c&d))])
for {
_ = v.Args[1]
return true
}
// match: (And32 (Const32 [d]) (Const32 [c]))
- // cond:
// result: (Const32 [int64(int32(c&d))])
for {
_ = v.Args[1]
return true
}
// match: (And32 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (And32 (Const32 [-1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And32 x (Const32 [-1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And32 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpAnd32_10(v *Value) bool {
b := v.Block
// match: (And32 _ (Const32 [0]))
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst32)
return true
}
// match: (And32 x (And32 x y))
- // cond:
// result: (And32 x y)
for {
_ = v.Args[1]
return true
}
// match: (And32 x (And32 y x))
- // cond:
// result: (And32 x y)
for {
_ = v.Args[1]
return true
}
// match: (And32 (And32 x y) x)
- // cond:
// result: (And32 x y)
for {
x := v.Args[1]
return true
}
// match: (And32 (And32 y x) x)
- // cond:
// result: (And32 x y)
for {
x := v.Args[1]
return true
}
// match: (And32 (Const32 <t> [c]) (And32 (Const32 <t> [d]) x))
- // cond:
// result: (And32 (Const32 <t> [int64(int32(c&d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpAnd32_20(v *Value) bool {
b := v.Block
// match: (And32 (Const32 <t> [c]) (And32 x (Const32 <t> [d])))
- // cond:
// result: (And32 (Const32 <t> [int64(int32(c&d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (And32 (And32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (And32 (Const32 <t> [int64(int32(c&d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (And32 (And32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (And32 (Const32 <t> [int64(int32(c&d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpAnd64_0(v *Value) bool {
// match: (And64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c&d])
for {
_ = v.Args[1]
return true
}
// match: (And64 (Const64 [d]) (Const64 [c]))
- // cond:
// result: (Const64 [c&d])
for {
_ = v.Args[1]
return true
}
// match: (And64 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (And64 (Const64 [-1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And64 x (Const64 [-1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And64 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpAnd64_10(v *Value) bool {
b := v.Block
// match: (And64 _ (Const64 [0]))
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst64)
return true
}
// match: (And64 x (And64 x y))
- // cond:
// result: (And64 x y)
for {
_ = v.Args[1]
return true
}
// match: (And64 x (And64 y x))
- // cond:
// result: (And64 x y)
for {
_ = v.Args[1]
return true
}
// match: (And64 (And64 x y) x)
- // cond:
// result: (And64 x y)
for {
x := v.Args[1]
return true
}
// match: (And64 (And64 y x) x)
- // cond:
// result: (And64 x y)
for {
x := v.Args[1]
return true
}
// match: (And64 (Const64 <t> [c]) (And64 (Const64 <t> [d]) x))
- // cond:
// result: (And64 (Const64 <t> [c&d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (And64 (Const64 <t> [c]) (And64 x (Const64 <t> [d])))
- // cond:
// result: (And64 (Const64 <t> [c&d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (And64 (And64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (And64 (Const64 <t> [c&d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (And64 (And64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (And64 (Const64 <t> [c&d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpAnd8_0(v *Value) bool {
// match: (And8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (Const8 [int64(int8(c&d))])
for {
_ = v.Args[1]
return true
}
// match: (And8 (Const8 [d]) (Const8 [c]))
- // cond:
// result: (Const8 [int64(int8(c&d))])
for {
_ = v.Args[1]
return true
}
// match: (And8 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (And8 (Const8 [-1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And8 x (Const8 [-1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != -1 {
break
}
v.reset(OpCopy)
return true
}
// match: (And8 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpAnd8_10(v *Value) bool {
b := v.Block
// match: (And8 _ (Const8 [0]))
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst8)
return true
}
// match: (And8 x (And8 x y))
- // cond:
// result: (And8 x y)
for {
_ = v.Args[1]
return true
}
// match: (And8 x (And8 y x))
- // cond:
// result: (And8 x y)
for {
_ = v.Args[1]
return true
}
// match: (And8 (And8 x y) x)
- // cond:
// result: (And8 x y)
for {
x := v.Args[1]
return true
}
// match: (And8 (And8 y x) x)
- // cond:
// result: (And8 x y)
for {
x := v.Args[1]
return true
}
// match: (And8 (Const8 <t> [c]) (And8 (Const8 <t> [d]) x))
- // cond:
// result: (And8 (Const8 <t> [int64(int8(c&d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpAnd8_20(v *Value) bool {
b := v.Block
// match: (And8 (Const8 <t> [c]) (And8 x (Const8 <t> [d])))
- // cond:
// result: (And8 (Const8 <t> [int64(int8(c&d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (And8 (And8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (And8 (Const8 <t> [int64(int8(c&d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (And8 (And8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (And8 (Const8 <t> [int64(int8(c&d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpArraySelect_0(v *Value) bool {
// match: (ArraySelect (ArrayMake1 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (ArraySelect [0] x:(IData _))
- // cond:
// result: x
for {
if v.AuxInt != 0 {
}
func rewriteValuegeneric_OpCom16_0(v *Value) bool {
// match: (Com16 (Com16 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Com16 (Const16 [c]))
- // cond:
// result: (Const16 [^c])
for {
v_0 := v.Args[0]
return true
}
// match: (Com16 (Add16 (Const16 [-1]) x))
- // cond:
// result: (Neg16 x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst16 {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpConst16 || v_0_0.AuxInt != -1 {
break
}
v.reset(OpNeg16)
return true
}
// match: (Com16 (Add16 x (Const16 [-1])))
- // cond:
// result: (Neg16 x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst16 {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpConst16 || v_0_1.AuxInt != -1 {
break
}
v.reset(OpNeg16)
}
func rewriteValuegeneric_OpCom32_0(v *Value) bool {
// match: (Com32 (Com32 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Com32 (Const32 [c]))
- // cond:
// result: (Const32 [^c])
for {
v_0 := v.Args[0]
return true
}
// match: (Com32 (Add32 (Const32 [-1]) x))
- // cond:
// result: (Neg32 x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst32 {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpConst32 || v_0_0.AuxInt != -1 {
break
}
v.reset(OpNeg32)
return true
}
// match: (Com32 (Add32 x (Const32 [-1])))
- // cond:
// result: (Neg32 x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst32 {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpConst32 || v_0_1.AuxInt != -1 {
break
}
v.reset(OpNeg32)
}
func rewriteValuegeneric_OpCom64_0(v *Value) bool {
// match: (Com64 (Com64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Com64 (Const64 [c]))
- // cond:
// result: (Const64 [^c])
for {
v_0 := v.Args[0]
return true
}
// match: (Com64 (Add64 (Const64 [-1]) x))
- // cond:
// result: (Neg64 x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst64 {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpConst64 || v_0_0.AuxInt != -1 {
break
}
v.reset(OpNeg64)
return true
}
// match: (Com64 (Add64 x (Const64 [-1])))
- // cond:
// result: (Neg64 x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != -1 {
break
}
v.reset(OpNeg64)
}
func rewriteValuegeneric_OpCom8_0(v *Value) bool {
// match: (Com8 (Com8 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Com8 (Const8 [c]))
- // cond:
// result: (Const8 [^c])
for {
v_0 := v.Args[0]
return true
}
// match: (Com8 (Add8 (Const8 [-1]) x))
- // cond:
// result: (Neg8 x)
for {
v_0 := v.Args[0]
}
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst8 {
- break
- }
- if v_0_0.AuxInt != -1 {
+ if v_0_0.Op != OpConst8 || v_0_0.AuxInt != -1 {
break
}
v.reset(OpNeg8)
return true
}
// match: (Com8 (Add8 x (Const8 [-1])))
- // cond:
// result: (Neg8 x)
for {
v_0 := v.Args[0]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst8 {
- break
- }
- if v_0_1.AuxInt != -1 {
+ if v_0_1.Op != OpConst8 || v_0_1.AuxInt != -1 {
break
}
v.reset(OpNeg8)
b := v.Block
typ := &b.Func.Config.Types
// match: (ConstInterface)
- // cond:
// result: (IMake (ConstNil <typ.Uintptr>) (ConstNil <typ.BytePtr>))
for {
v.reset(OpIMake)
}
func rewriteValuegeneric_OpConvert_0(v *Value) bool {
// match: (Convert (Add64 (Convert ptr mem) off) mem)
- // cond:
// result: (Add64 ptr off)
for {
mem := v.Args[1]
return true
}
// match: (Convert (Add64 off (Convert ptr mem)) mem)
- // cond:
// result: (Add64 ptr off)
for {
mem := v.Args[1]
return true
}
// match: (Convert (Add32 (Convert ptr mem) off) mem)
- // cond:
// result: (Add32 ptr off)
for {
mem := v.Args[1]
return true
}
// match: (Convert (Add32 off (Convert ptr mem)) mem)
- // cond:
// result: (Add32 ptr off)
for {
mem := v.Args[1]
return true
}
// match: (Convert (Convert ptr mem) mem)
- // cond:
// result: ptr
for {
mem := v.Args[1]
}
func rewriteValuegeneric_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 (Const32F [c]))
- // cond:
// result: (Const32 [int64(int32(auxTo32F(c)))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt32Fto64_0(v *Value) bool {
// match: (Cvt32Fto64 (Const32F [c]))
- // cond:
// result: (Const64 [int64(auxTo32F(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt32Fto64F_0(v *Value) bool {
// match: (Cvt32Fto64F (Const32F [c]))
- // cond:
// result: (Const64F [c])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt32to32F_0(v *Value) bool {
// match: (Cvt32to32F (Const32 [c]))
- // cond:
// result: (Const32F [auxFrom32F(float32(int32(c)))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt32to64F_0(v *Value) bool {
// match: (Cvt32to64F (Const32 [c]))
- // cond:
// result: (Const64F [auxFrom64F(float64(int32(c)))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt64Fto32_0(v *Value) bool {
// match: (Cvt64Fto32 (Const64F [c]))
- // cond:
// result: (Const32 [int64(int32(auxTo64F(c)))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt64Fto32F_0(v *Value) bool {
// match: (Cvt64Fto32F (Const64F [c]))
- // cond:
// result: (Const32F [auxFrom32F(float32(auxTo64F(c)))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt64Fto64_0(v *Value) bool {
// match: (Cvt64Fto64 (Const64F [c]))
- // cond:
// result: (Const64 [int64(auxTo64F(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt64to32F_0(v *Value) bool {
// match: (Cvt64to32F (Const64 [c]))
- // cond:
// result: (Const32F [auxFrom32F(float32(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpCvt64to64F_0(v *Value) bool {
// match: (Cvt64to64F (Const64 [c]))
- // cond:
// result: (Const64F [auxFrom64F(float64(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Div16 <t> x (Const16 [-1<<15]))
- // cond:
// result: (Rsh16Ux64 (And16 <t> x (Neg16 <t> x)) (Const64 <typ.UInt64> [15]))
for {
t := v.Type
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != -1<<15 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != -1<<15 {
break
}
v.reset(OpRsh16Ux64)
return true
}
// match: (Div32 <t> x (Const32 [-1<<31]))
- // cond:
// result: (Rsh32Ux64 (And32 <t> x (Neg32 <t> x)) (Const64 <typ.UInt64> [31]))
for {
t := v.Type
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != -1<<31 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != -1<<31 {
break
}
v.reset(OpRsh32Ux64)
func rewriteValuegeneric_OpDiv32F_0(v *Value) bool {
b := v.Block
// match: (Div32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (Const32F [auxFrom32F(auxTo32F(c) / auxTo32F(d))])
for {
_ = v.Args[1]
_ = v.Args[1]
n := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1<<63 {
- break
- }
- if !(isNonNegative(n)) {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1<<63 || !(isNonNegative(n)) {
break
}
v.reset(OpConst64)
return true
}
// match: (Div64 <t> x (Const64 [-1<<63]))
- // cond:
// result: (Rsh64Ux64 (And64 <t> x (Neg64 <t> x)) (Const64 <typ.UInt64> [63]))
for {
t := v.Type
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1<<63 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1<<63 {
break
}
v.reset(OpRsh64Ux64)
func rewriteValuegeneric_OpDiv64F_0(v *Value) bool {
b := v.Block
// match: (Div64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (Const64F [auxFrom64F(auxTo64F(c) / auxTo64F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Div64u n (Const64 [-1<<63]))
- // cond:
// result: (Rsh64Ux64 n (Const64 <typ.UInt64> [63]))
for {
_ = v.Args[1]
n := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1<<63 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1<<63 {
break
}
v.reset(OpRsh64Ux64)
return true
}
// match: (Div8 <t> x (Const8 [-1<<7 ]))
- // cond:
// result: (Rsh8Ux64 (And8 <t> x (Neg8 <t> x)) (Const64 <typ.UInt64> [7 ]))
for {
t := v.Type
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != -1<<7 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != -1<<7 {
break
}
v.reset(OpRsh8Ux64)
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Eq16 x x)
- // cond:
// result: (ConstBool [1])
for {
x := v.Args[1]
return true
}
// match: (Eq16 (Const16 <t> [c]) (Add16 (Const16 <t> [d]) x))
- // cond:
// result: (Eq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Eq16 (Const16 <t> [c]) (Add16 x (Const16 <t> [d])))
- // cond:
// result: (Eq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Eq16 (Add16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (Eq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq16 (Add16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (Eq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (Eq16 (Const16 [d]) (Const16 [c]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(x.Op != OpConst16 && udivisibleOK(16, c) && !hasSmallRotate(config)) {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 || !(x.Op != OpConst16 && udivisibleOK(16, c) && !hasSmallRotate(config)) {
break
}
v.reset(OpEq32)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(x.Op != OpConst16 && sdivisibleOK(16, c) && !hasSmallRotate(config)) {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 || !(x.Op != OpConst16 && sdivisibleOK(16, c) && !hasSmallRotate(config)) {
break
}
v.reset(OpEq32)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to64 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to64 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to64 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to64 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt16to32 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt16to32 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt16to32 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt16to32 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt16to32 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt16to32 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt16to32 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt16to32 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_1_0_0_0.Args[1]
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpZeroExt16to32 || x != v_1_1_0_0_0_0.Args[0] {
break
}
v_1_1_0_0_0_1 := v_1_1_0_0_0.Args[1]
- if v_1_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_1_0_0_0_1.AuxInt != 16 {
+ if v_1_1_0_0_0_1.Op != OpConst64 || v_1_1_0_0_0_1.AuxInt != 16 {
break
}
mul := v_1_1_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = v_1_1_0_0_0.Args[1]
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpZeroExt16to32 || x != v_1_1_0_0_0_0.Args[0] {
break
}
v_1_1_0_0_0_1 := v_1_1_0_0_0.Args[1]
- if v_1_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_1_0_0_0_1.AuxInt != 16 {
+ if v_1_1_0_0_0_1.Op != OpConst64 || v_1_1_0_0_0_1.AuxInt != 16 {
break
}
mul := v_1_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_0_0_0_0.Args[1]
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpZeroExt16to32 || x != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 16 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.AuxInt != 16 {
break
}
mul := v_1_0_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = v_1_0_0_0_0.Args[1]
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpZeroExt16to32 || x != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 16 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.AuxInt != 16 {
break
}
mul := v_1_0_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_1_0_0_0.Args[1]
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpZeroExt16to32 || x != v_0_1_0_0_0_0.Args[0] {
break
}
v_0_1_0_0_0_1 := v_0_1_0_0_0.Args[1]
- if v_0_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_1_0_0_0_1.AuxInt != 16 {
+ if v_0_1_0_0_0_1.Op != OpConst64 || v_0_1_0_0_0_1.AuxInt != 16 {
break
}
mul := v_0_1_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = v_0_1_0_0_0.Args[1]
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpZeroExt16to32 || x != v_0_1_0_0_0_0.Args[0] {
break
}
v_0_1_0_0_0_1 := v_0_1_0_0_0.Args[1]
- if v_0_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_1_0_0_0_1.AuxInt != 16 {
+ if v_0_1_0_0_0_1.Op != OpConst64 || v_0_1_0_0_0_1.AuxInt != 16 {
break
}
mul := v_0_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_0_0_0_0.Args[1]
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_0_0_0_0_0_0.Args[0] {
+ if v_0_0_0_0_0_0.Op != OpZeroExt16to32 || x != v_0_0_0_0_0_0.Args[0] {
break
}
v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 16 {
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.AuxInt != 16 {
break
}
mul := v_0_0_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt16to32 {
+ if mul_1.Op != OpZeroExt16to32 || x != mul_1.Args[0] {
break
}
- if x != mul_1.Args[0] {
+ v_0_0_0_1 := v_0_0_0.Args[1]
+ if v_0_0_0_1.Op != OpConst64 {
+ break
+ }
+ s := v_0_0_0_1.AuxInt
+ v_0_1 := v_0.Args[1]
+ if v_0_1.Op != OpConst16 {
+ break
+ }
+ c := v_0_1.AuxInt
+ if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(umagic(16, c).m) && s == 16+umagic(16, c).s-1 && x.Op != OpConst16 && udivisibleOK(16, c)) {
break
}
- v_0_0_0_1 := v_0_0_0.Args[1]
- if v_0_0_0_1.Op != OpConst64 {
- break
- }
- s := v_0_0_0_1.AuxInt
- v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst16 {
- break
- }
- c := v_0_1.AuxInt
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(umagic(16, c).m) && s == 16+umagic(16, c).s-1 && x.Op != OpConst16 && udivisibleOK(16, c)) {
- break
- }
- v.reset(OpLeq16U)
- v0 := b.NewValue0(v.Pos, OpRotateLeft16, typ.UInt16)
- v1 := b.NewValue0(v.Pos, OpMul16, typ.UInt16)
- v2 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
- v2.AuxInt = int64(int16(udivisible(16, c).m))
- v1.AddArg(v2)
- v1.AddArg(x)
- v0.AddArg(v1)
- v3 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
- v3.AuxInt = int64(16 - udivisible(16, c).k)
- v0.AddArg(v3)
- v.AddArg(v0)
- v4 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
- v4.AuxInt = int64(int16(udivisible(16, c).max))
- v.AddArg(v4)
- return true
- }
- // match: (Eq16 (Mul16 (Trunc32to16 (Rsh32Ux64 (Avg32u (Lsh32x64 (ZeroExt16to32 x) (Const64 [16])) mul:(Mul32 (ZeroExt16to32 x) (Const32 [m]))) (Const64 [s]))) (Const16 [c])) x)
- // cond: v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(umagic(16,c).m) && s == 16+umagic(16,c).s-1 && x.Op != OpConst16 && udivisibleOK(16,c)
- // result: (Leq16U (RotateLeft16 <typ.UInt16> (Mul16 <typ.UInt16> (Const16 <typ.UInt16> [int64(int16(udivisible(16,c).m))]) x) (Const16 <typ.UInt16> [int64(16-udivisible(16,c).k)]) ) (Const16 <typ.UInt16> [int64(int16(udivisible(16,c).max))]) )
- for {
- x := v.Args[1]
- v_0 := v.Args[0]
- if v_0.Op != OpMul16 {
- break
- }
- _ = v_0.Args[1]
- v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpTrunc32to16 {
- break
- }
- v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpRsh32Ux64 {
- break
- }
- _ = v_0_0_0.Args[1]
- v_0_0_0_0 := v_0_0_0.Args[0]
- if v_0_0_0_0.Op != OpAvg32u {
- break
- }
- _ = v_0_0_0_0.Args[1]
- v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpLsh32x64 {
- break
- }
- _ = v_0_0_0_0_0.Args[1]
- v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpZeroExt16to32 {
- break
- }
- if x != v_0_0_0_0_0_0.Args[0] {
- break
- }
- v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 16 {
- break
- }
- mul := v_0_0_0_0.Args[1]
- if mul.Op != OpMul32 {
- break
- }
- _ = mul.Args[1]
- mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
- break
- }
- mul_1 := mul.Args[1]
- if mul_1.Op != OpConst32 {
- break
- }
- m := mul_1.AuxInt
+ v.reset(OpLeq16U)
+ v0 := b.NewValue0(v.Pos, OpRotateLeft16, typ.UInt16)
+ v1 := b.NewValue0(v.Pos, OpMul16, typ.UInt16)
+ v2 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
+ v2.AuxInt = int64(int16(udivisible(16, c).m))
+ v1.AddArg(v2)
+ v1.AddArg(x)
+ v0.AddArg(v1)
+ v3 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
+ v3.AuxInt = int64(16 - udivisible(16, c).k)
+ v0.AddArg(v3)
+ v.AddArg(v0)
+ v4 := b.NewValue0(v.Pos, OpConst16, typ.UInt16)
+ v4.AuxInt = int64(int16(udivisible(16, c).max))
+ v.AddArg(v4)
+ return true
+ }
+ // match: (Eq16 (Mul16 (Trunc32to16 (Rsh32Ux64 (Avg32u (Lsh32x64 (ZeroExt16to32 x) (Const64 [16])) mul:(Mul32 (ZeroExt16to32 x) (Const32 [m]))) (Const64 [s]))) (Const16 [c])) x)
+ // cond: v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(umagic(16,c).m) && s == 16+umagic(16,c).s-1 && x.Op != OpConst16 && udivisibleOK(16,c)
+ // result: (Leq16U (RotateLeft16 <typ.UInt16> (Mul16 <typ.UInt16> (Const16 <typ.UInt16> [int64(int16(udivisible(16,c).m))]) x) (Const16 <typ.UInt16> [int64(16-udivisible(16,c).k)]) ) (Const16 <typ.UInt16> [int64(int16(udivisible(16,c).max))]) )
+ for {
+ x := v.Args[1]
+ v_0 := v.Args[0]
+ if v_0.Op != OpMul16 {
+ break
+ }
+ _ = v_0.Args[1]
+ v_0_0 := v_0.Args[0]
+ if v_0_0.Op != OpTrunc32to16 {
+ break
+ }
+ v_0_0_0 := v_0_0.Args[0]
+ if v_0_0_0.Op != OpRsh32Ux64 {
+ break
+ }
+ _ = v_0_0_0.Args[1]
+ v_0_0_0_0 := v_0_0_0.Args[0]
+ if v_0_0_0_0.Op != OpAvg32u {
+ break
+ }
+ _ = v_0_0_0_0.Args[1]
+ v_0_0_0_0_0 := v_0_0_0_0.Args[0]
+ if v_0_0_0_0_0.Op != OpLsh32x64 {
+ break
+ }
+ _ = v_0_0_0_0_0.Args[1]
+ v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
+ if v_0_0_0_0_0_0.Op != OpZeroExt16to32 || x != v_0_0_0_0_0_0.Args[0] {
+ break
+ }
+ v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.AuxInt != 16 {
+ break
+ }
+ mul := v_0_0_0_0.Args[1]
+ if mul.Op != OpMul32 {
+ break
+ }
+ _ = mul.Args[1]
+ mul_0 := mul.Args[0]
+ if mul_0.Op != OpZeroExt16to32 || x != mul_0.Args[0] {
+ break
+ }
+ mul_1 := mul.Args[1]
+ if mul_1.Op != OpConst32 {
+ break
+ }
+ m := mul_1.AuxInt
v_0_0_0_1 := v_0_0_0.Args[1]
if v_0_0_0_1.Op != OpConst64 {
break
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt16to32 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = v_1_1_1.Args[1]
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_1_1_1_0.Args[0] {
+ if v_1_1_1_0.Op != OpSignExt16to32 || x != v_1_1_1_0.Args[0] {
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
break
}
v.reset(OpLeq16U)
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_1_1.Args[1]
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_1_1_1_0.Args[0] {
+ if v_1_1_1_0.Op != OpSignExt16to32 || x != v_1_1_1_0.Args[0] {
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
break
}
v.reset(OpLeq16U)
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt16to32 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_1_0_1_0.Args[0] {
+ if v_1_0_1_0.Op != OpSignExt16to32 || x != v_1_0_1_0.Args[0] {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_1_0_1_0.Args[0] {
+ if v_1_0_1_0.Op != OpSignExt16to32 || x != v_1_0_1_0.Args[0] {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt16to32 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = v_0_1_1.Args[1]
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_0_1_1_0.Args[0] {
+ if v_0_1_1_0.Op != OpSignExt16to32 || x != v_0_1_1_0.Args[0] {
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
break
}
v.reset(OpLeq16U)
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_1_1.Args[1]
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_0_1_1_0.Args[0] {
+ if v_0_1_1_0.Op != OpSignExt16to32 || x != v_0_1_1_0.Args[0] {
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(16, c).m) && s == 16+smagic(16, c).s && x.Op != OpConst16 && sdivisibleOK(16, c)) {
break
}
v.reset(OpLeq16U)
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt16to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt16to32 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_0_0_1_0.Args[0] {
+ if v_0_0_1_0.Op != OpSignExt16to32 || x != v_0_0_1_0.Args[0] {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt16to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt16to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpSignExt16to32 {
- break
- }
- if x != v_0_0_1_0.Args[0] {
+ if v_0_0_1_0.Op != OpSignExt16to32 || x != v_0_0_1_0.Args[0] {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
- if v_1_0_0_1.Op != OpRsh16Ux64 {
- break
- }
- if v_1_0_0_1.Type != t {
+ if v_1_0_0_1.Op != OpRsh16Ux64 || v_1_0_0_1.Type != t {
break
}
_ = v_1_0_0_1.Args[1]
v_1_0_0_1_0 := v_1_0_0_1.Args[0]
- if v_1_0_0_1_0.Op != OpRsh16x64 {
- break
- }
- if v_1_0_0_1_0.Type != t {
+ if v_1_0_0_1_0.Op != OpRsh16x64 || v_1_0_0_1_0.Type != t {
break
}
_ = v_1_0_0_1_0.Args[1]
break
}
v_1_0_0_1_0_1 := v_1_0_0_1_0.Args[1]
- if v_1_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_1_0_1.AuxInt != 15 {
+ if v_1_0_0_1_0_1.Op != OpConst64 || v_1_0_0_1_0_1.Type != typ.UInt64 || v_1_0_0_1_0_1.AuxInt != 15 {
break
}
v_1_0_0_1_1 := v_1_0_0_1.Args[1]
- if v_1_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_1.Type != typ.UInt64 {
+ if v_1_0_0_1_1.Op != OpConst64 || v_1_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_1_1.AuxInt
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 15 && kbar == 16-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 15 && kbar == 16-k) {
break
}
v.reset(OpEq16)
t := v_1_0_0.Type
_ = v_1_0_0.Args[1]
v_1_0_0_0 := v_1_0_0.Args[0]
- if v_1_0_0_0.Op != OpRsh16Ux64 {
- break
- }
- if v_1_0_0_0.Type != t {
+ if v_1_0_0_0.Op != OpRsh16Ux64 || v_1_0_0_0.Type != t {
break
}
_ = v_1_0_0_0.Args[1]
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpRsh16x64 {
- break
- }
- if v_1_0_0_0_0.Type != t {
+ if v_1_0_0_0_0.Op != OpRsh16x64 || v_1_0_0_0_0.Type != t {
break
}
_ = v_1_0_0_0_0.Args[1]
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 15 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.Type != typ.UInt64 || v_1_0_0_0_0_1.AuxInt != 15 {
break
}
v_1_0_0_0_1 := v_1_0_0_0.Args[1]
- if v_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_1.Type != typ.UInt64 {
+ if v_1_0_0_0_1.Op != OpConst64 || v_1_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_0_1.AuxInt
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 15 && kbar == 16-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 15 && kbar == 16-k) {
break
}
v.reset(OpEq16)
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
- if v_0_0_0_1.Op != OpRsh16Ux64 {
- break
- }
- if v_0_0_0_1.Type != t {
+ if v_0_0_0_1.Op != OpRsh16Ux64 || v_0_0_0_1.Type != t {
break
}
_ = v_0_0_0_1.Args[1]
v_0_0_0_1_0 := v_0_0_0_1.Args[0]
- if v_0_0_0_1_0.Op != OpRsh16x64 {
- break
- }
- if v_0_0_0_1_0.Type != t {
+ if v_0_0_0_1_0.Op != OpRsh16x64 || v_0_0_0_1_0.Type != t {
break
}
_ = v_0_0_0_1_0.Args[1]
break
}
v_0_0_0_1_0_1 := v_0_0_0_1_0.Args[1]
- if v_0_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_1_0_1.AuxInt != 15 {
+ if v_0_0_0_1_0_1.Op != OpConst64 || v_0_0_0_1_0_1.Type != typ.UInt64 || v_0_0_0_1_0_1.AuxInt != 15 {
break
}
v_0_0_0_1_1 := v_0_0_0_1.Args[1]
- if v_0_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_1.Type != typ.UInt64 {
+ if v_0_0_0_1_1.Op != OpConst64 || v_0_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_1_1.AuxInt
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 15 && kbar == 16-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 15 && kbar == 16-k) {
break
}
v.reset(OpEq16)
t := v_0_0_0.Type
_ = v_0_0_0.Args[1]
v_0_0_0_0 := v_0_0_0.Args[0]
- if v_0_0_0_0.Op != OpRsh16Ux64 {
- break
- }
- if v_0_0_0_0.Type != t {
+ if v_0_0_0_0.Op != OpRsh16Ux64 || v_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0.Args[1]
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpRsh16x64 {
- break
- }
- if v_0_0_0_0_0.Type != t {
+ if v_0_0_0_0_0.Op != OpRsh16x64 || v_0_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0_0.Args[1]
break
}
v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 15 {
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.Type != typ.UInt64 || v_0_0_0_0_0_1.AuxInt != 15 {
break
}
v_0_0_0_0_1 := v_0_0_0_0.Args[1]
- if v_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_1.Type != typ.UInt64 {
+ if v_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_0_1.AuxInt
break
}
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 15 && kbar == 16-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 15 && kbar == 16-k) {
break
}
v.reset(OpEq16)
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpEq16)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst16 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst16 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst16 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq16)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst16 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst16 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst16 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq16)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd16 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq16)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd16 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq16)
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq32 x x)
- // cond:
// result: (ConstBool [1])
for {
x := v.Args[1]
return true
}
// match: (Eq32 (Const32 <t> [c]) (Add32 (Const32 <t> [d]) x))
- // cond:
// result: (Eq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Eq32 (Const32 <t> [c]) (Add32 x (Const32 <t> [d])))
- // cond:
// result: (Eq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Eq32 (Add32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Eq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq32 (Add32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Eq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (Eq32 (Const32 [d]) (Const32 [c]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpConst32 {
- break
- }
- if mul_0.Type != typ.UInt32 {
+ if mul_0.Op != OpConst32 || mul_0.Type != typ.UInt32 {
break
}
m := mul_0.AuxInt
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_1_1 := v_1_1.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
- if mul_1.Op != OpConst32 {
- break
- }
- if mul_1.Type != typ.UInt32 {
+ if mul_1.Op != OpConst32 || mul_1.Type != typ.UInt32 {
break
}
m := mul_1.AuxInt
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpConst32 {
- break
- }
- if mul_0.Type != typ.UInt32 {
+ if mul_0.Op != OpConst32 || mul_0.Type != typ.UInt32 {
break
}
m := mul_0.AuxInt
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_0_1 := v_1_0.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
- if mul_1.Op != OpConst32 {
- break
- }
- if mul_1.Type != typ.UInt32 {
+ if mul_1.Op != OpConst32 || mul_1.Type != typ.UInt32 {
break
}
m := mul_1.AuxInt
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpConst32 {
- break
- }
- if mul_0.Type != typ.UInt32 {
+ if mul_0.Op != OpConst32 || mul_0.Type != typ.UInt32 {
break
}
m := mul_0.AuxInt
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_1_1 := v_0_1.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
- if mul_1.Op != OpConst32 {
- break
- }
- if mul_1.Type != typ.UInt32 {
+ if mul_1.Op != OpConst32 || mul_1.Type != typ.UInt32 {
break
}
m := mul_1.AuxInt
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpConst32 {
- break
- }
- if mul_0.Type != typ.UInt32 {
+ if mul_0.Op != OpConst32 || mul_0.Type != typ.UInt32 {
break
}
m := mul_0.AuxInt
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_0_1 := v_0_0.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
- if mul_1.Op != OpConst32 {
- break
- }
- if mul_1.Type != typ.UInt32 {
+ if mul_1.Op != OpConst32 || mul_1.Type != typ.UInt32 {
break
}
m := mul_1.AuxInt
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt32to64 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt32to64 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt32to64 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt32to64 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt32to64 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt32to64 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = mul_1.Args[1]
mul_1_0 := mul_1.Args[0]
- if mul_1_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1_0.Args[0] {
+ if mul_1_0.Op != OpZeroExt32to64 || x != mul_1_0.Args[0] {
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = mul_0.Args[1]
mul_0_0 := mul_0.Args[0]
- if mul_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0_0.Args[0] {
+ if mul_0_0.Op != OpZeroExt32to64 || x != mul_0_0.Args[0] {
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_1_0_0_0.Args[1]
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpZeroExt32to64 || x != v_1_1_0_0_0_0.Args[0] {
break
}
v_1_1_0_0_0_1 := v_1_1_0_0_0.Args[1]
- if v_1_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_1_0_0_0_1.AuxInt != 32 {
+ if v_1_1_0_0_0_1.Op != OpConst64 || v_1_1_0_0_0_1.AuxInt != 32 {
break
}
mul := v_1_1_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = v_1_1_0_0_0.Args[1]
v_1_1_0_0_0_0 := v_1_1_0_0_0.Args[0]
- if v_1_1_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_1_1_0_0_0_0.Args[0] {
+ if v_1_1_0_0_0_0.Op != OpZeroExt32to64 || x != v_1_1_0_0_0_0.Args[0] {
break
}
v_1_1_0_0_0_1 := v_1_1_0_0_0.Args[1]
- if v_1_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_1_0_0_0_1.AuxInt != 32 {
+ if v_1_1_0_0_0_1.Op != OpConst64 || v_1_1_0_0_0_1.AuxInt != 32 {
break
}
mul := v_1_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_0_0_0_0.Args[1]
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpZeroExt32to64 || x != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 32 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.AuxInt != 32 {
break
}
mul := v_1_0_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = v_1_0_0_0_0.Args[1]
v_1_0_0_0_0_0 := v_1_0_0_0_0.Args[0]
- if v_1_0_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_1_0_0_0_0_0.Args[0] {
+ if v_1_0_0_0_0_0.Op != OpZeroExt32to64 || x != v_1_0_0_0_0_0.Args[0] {
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 32 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.AuxInt != 32 {
break
}
mul := v_1_0_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_1_0_0_0.Args[1]
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpZeroExt32to64 || x != v_0_1_0_0_0_0.Args[0] {
break
}
v_0_1_0_0_0_1 := v_0_1_0_0_0.Args[1]
- if v_0_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_1_0_0_0_1.AuxInt != 32 {
+ if v_0_1_0_0_0_1.Op != OpConst64 || v_0_1_0_0_0_1.AuxInt != 32 {
break
}
mul := v_0_1_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = v_0_1_0_0_0.Args[1]
v_0_1_0_0_0_0 := v_0_1_0_0_0.Args[0]
- if v_0_1_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_0_1_0_0_0_0.Args[0] {
+ if v_0_1_0_0_0_0.Op != OpZeroExt32to64 || x != v_0_1_0_0_0_0.Args[0] {
break
}
v_0_1_0_0_0_1 := v_0_1_0_0_0.Args[1]
- if v_0_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_1_0_0_0_1.AuxInt != 32 {
+ if v_0_1_0_0_0_1.Op != OpConst64 || v_0_1_0_0_0_1.AuxInt != 32 {
break
}
mul := v_0_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_0_0_0_0.Args[1]
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_0_0_0_0_0_0.Args[0] {
+ if v_0_0_0_0_0_0.Op != OpZeroExt32to64 || x != v_0_0_0_0_0_0.Args[0] {
break
}
v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 32 {
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.AuxInt != 32 {
break
}
mul := v_0_0_0_0.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt32to64 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = v_0_0_0_0_0.Args[1]
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpZeroExt32to64 {
- break
- }
- if x != v_0_0_0_0_0_0.Args[0] {
+ if v_0_0_0_0_0_0.Op != OpZeroExt32to64 || x != v_0_0_0_0_0_0.Args[0] {
break
}
v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 32 {
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.AuxInt != 32 {
break
}
mul := v_0_0_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt32to64 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = v_1_1_1.Args[1]
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_1_1_1_0.Args[0] {
+ if v_1_1_1_0.Op != OpSignExt32to64 || x != v_1_1_1_0.Args[0] {
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_1_1.Args[1]
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_1_1_1_0.Args[0] {
+ if v_1_1_1_0.Op != OpSignExt32to64 || x != v_1_1_1_0.Args[0] {
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt32to64 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_1_0_1_0.Args[0] {
+ if v_1_0_1_0.Op != OpSignExt32to64 || x != v_1_0_1_0.Args[0] {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_1_0_1_0.Args[0] {
+ if v_1_0_1_0.Op != OpSignExt32to64 || x != v_1_0_1_0.Args[0] {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt32to64 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = v_0_1_1.Args[1]
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_0_1_1_0.Args[0] {
+ if v_0_1_1_0.Op != OpSignExt32to64 || x != v_0_1_1_0.Args[0] {
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_1_1.Args[1]
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_0_1_1_0.Args[0] {
+ if v_0_1_1_0.Op != OpSignExt32to64 || x != v_0_1_1_0.Args[0] {
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(32, c).m) && s == 32+smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt32to64 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt32to64 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_0_0_1_0.Args[0] {
+ if v_0_0_1_0.Op != OpSignExt32to64 || x != v_0_0_1_0.Args[0] {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt32to64 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt32to64 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpSignExt32to64 {
- break
- }
- if x != v_0_0_1_0.Args[0] {
+ if v_0_0_1_0.Op != OpSignExt32to64 || x != v_0_0_1_0.Args[0] {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m/2)) && s == smagic(32, c).s-1 && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_1_1_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_1_1_0_0.Args[1] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_1_0_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_1_0_0_0.Args[1] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_0_1_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_0_1_0_0.Args[1] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(int32(smagic(32, c).m)) && s == smagic(32, c).s && x.Op != OpConst32 && sdivisibleOK(32, c)) {
break
}
v.reset(OpLeq32U)
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_0_0_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_0_0_0_0.Args[1] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
- if v_1_0_0_1.Op != OpRsh32Ux64 {
- break
- }
- if v_1_0_0_1.Type != t {
+ if v_1_0_0_1.Op != OpRsh32Ux64 || v_1_0_0_1.Type != t {
break
}
_ = v_1_0_0_1.Args[1]
v_1_0_0_1_0 := v_1_0_0_1.Args[0]
- if v_1_0_0_1_0.Op != OpRsh32x64 {
- break
- }
- if v_1_0_0_1_0.Type != t {
+ if v_1_0_0_1_0.Op != OpRsh32x64 || v_1_0_0_1_0.Type != t {
break
}
_ = v_1_0_0_1_0.Args[1]
break
}
v_1_0_0_1_0_1 := v_1_0_0_1_0.Args[1]
- if v_1_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_1_0_1.AuxInt != 31 {
+ if v_1_0_0_1_0_1.Op != OpConst64 || v_1_0_0_1_0_1.Type != typ.UInt64 || v_1_0_0_1_0_1.AuxInt != 31 {
break
}
v_1_0_0_1_1 := v_1_0_0_1.Args[1]
- if v_1_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_1.Type != typ.UInt64 {
+ if v_1_0_0_1_1.Op != OpConst64 || v_1_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_1_1.AuxInt
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 31 && kbar == 32-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 31 && kbar == 32-k) {
break
}
v.reset(OpEq32)
t := v_1_0_0.Type
_ = v_1_0_0.Args[1]
v_1_0_0_0 := v_1_0_0.Args[0]
- if v_1_0_0_0.Op != OpRsh32Ux64 {
- break
- }
- if v_1_0_0_0.Type != t {
+ if v_1_0_0_0.Op != OpRsh32Ux64 || v_1_0_0_0.Type != t {
break
}
_ = v_1_0_0_0.Args[1]
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpRsh32x64 {
- break
- }
- if v_1_0_0_0_0.Type != t {
+ if v_1_0_0_0_0.Op != OpRsh32x64 || v_1_0_0_0_0.Type != t {
break
}
_ = v_1_0_0_0_0.Args[1]
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 31 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.Type != typ.UInt64 || v_1_0_0_0_0_1.AuxInt != 31 {
break
}
v_1_0_0_0_1 := v_1_0_0_0.Args[1]
- if v_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_1.Type != typ.UInt64 {
+ if v_1_0_0_0_1.Op != OpConst64 || v_1_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_0_1.AuxInt
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 31 && kbar == 32-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 31 && kbar == 32-k) {
break
}
v.reset(OpEq32)
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
- if v_0_0_0_1.Op != OpRsh32Ux64 {
- break
- }
- if v_0_0_0_1.Type != t {
+ if v_0_0_0_1.Op != OpRsh32Ux64 || v_0_0_0_1.Type != t {
break
}
_ = v_0_0_0_1.Args[1]
v_0_0_0_1_0 := v_0_0_0_1.Args[0]
- if v_0_0_0_1_0.Op != OpRsh32x64 {
- break
- }
- if v_0_0_0_1_0.Type != t {
+ if v_0_0_0_1_0.Op != OpRsh32x64 || v_0_0_0_1_0.Type != t {
break
}
_ = v_0_0_0_1_0.Args[1]
break
}
v_0_0_0_1_0_1 := v_0_0_0_1_0.Args[1]
- if v_0_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_1_0_1.AuxInt != 31 {
+ if v_0_0_0_1_0_1.Op != OpConst64 || v_0_0_0_1_0_1.Type != typ.UInt64 || v_0_0_0_1_0_1.AuxInt != 31 {
break
}
v_0_0_0_1_1 := v_0_0_0_1.Args[1]
- if v_0_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_1.Type != typ.UInt64 {
+ if v_0_0_0_1_1.Op != OpConst64 || v_0_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_1_1.AuxInt
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 31 && kbar == 32-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 31 && kbar == 32-k) {
break
}
v.reset(OpEq32)
t := v_0_0_0.Type
_ = v_0_0_0.Args[1]
v_0_0_0_0 := v_0_0_0.Args[0]
- if v_0_0_0_0.Op != OpRsh32Ux64 {
- break
- }
- if v_0_0_0_0.Type != t {
+ if v_0_0_0_0.Op != OpRsh32Ux64 || v_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0.Args[1]
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpRsh32x64 {
- break
- }
- if v_0_0_0_0_0.Type != t {
+ if v_0_0_0_0_0.Op != OpRsh32x64 || v_0_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0_0.Args[1]
break
}
v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 31 {
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.Type != typ.UInt64 || v_0_0_0_0_0_1.AuxInt != 31 {
break
}
v_0_0_0_0_1 := v_0_0_0_0.Args[1]
- if v_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_1.Type != typ.UInt64 {
+ if v_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_0_1.AuxInt
break
}
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 31 && kbar == 32-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 31 && kbar == 32-k) {
break
}
v.reset(OpEq32)
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpEq32)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst32 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst32 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst32 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq32)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst32 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst32 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst32 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq32)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd32 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq32)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd32 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq32)
}
func rewriteValuegeneric_OpEq32F_0(v *Value) bool {
// match: (Eq32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) == auxTo32F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Eq32F (Const32F [d]) (Const32F [c]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) == auxTo32F(d))])
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (Eq64 x x)
- // cond:
// result: (ConstBool [1])
for {
x := v.Args[1]
return true
}
// match: (Eq64 (Const64 <t> [c]) (Add64 (Const64 <t> [d]) x))
- // cond:
// result: (Eq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Eq64 (Const64 <t> [c]) (Add64 x (Const64 <t> [d])))
- // cond:
// result: (Eq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Eq64 (Add64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Eq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq64 (Add64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Eq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (Eq64 (Const64 [d]) (Const64 [c]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_1_1 := v_1_1.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_1_0_1 := v_1_0.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_1_1 := v_0_1.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
break
}
mul_1_1 := mul_1.Args[1]
- if mul_1_1.Op != OpConst64 {
- break
- }
- if mul_1_1.AuxInt != 1 {
+ if mul_1_1.Op != OpConst64 || mul_1_1.AuxInt != 1 {
break
}
v_0_0_1 := v_0_0.Args[1]
break
}
mul_0_1 := mul_0.Args[1]
- if mul_0_1.Op != OpConst64 {
- break
- }
- if mul_0_1.AuxInt != 1 {
+ if mul_0_1.Op != OpConst64 || mul_0_1.AuxInt != 1 {
break
}
mul_1 := mul.Args[1]
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m/2) && s == smagic(64, c).s-1 && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_1_1_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_1_1_0_0.Args[1] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_1_0_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_1_0_0_0.Args[1] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 63 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 63 {
break
}
v_1_1 := v_1.Args[1]
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_0_1_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_0_1_0_0.Args[1] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 63 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 63 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(64, c).m) && s == smagic(64, c).s && x.Op != OpConst64 && sdivisibleOK(64, c)) {
break
}
v.reset(OpLeq64U)
break
}
m := mul_0.AuxInt
- if x != mul.Args[1] {
- break
- }
- if x != v_0_0_0_0.Args[1] {
+ if x != mul.Args[1] || x != v_0_0_0_0.Args[1] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 63 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 63 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
- if v_1_0_0_1.Op != OpRsh64Ux64 {
- break
- }
- if v_1_0_0_1.Type != t {
+ if v_1_0_0_1.Op != OpRsh64Ux64 || v_1_0_0_1.Type != t {
break
}
_ = v_1_0_0_1.Args[1]
v_1_0_0_1_0 := v_1_0_0_1.Args[0]
- if v_1_0_0_1_0.Op != OpRsh64x64 {
- break
- }
- if v_1_0_0_1_0.Type != t {
+ if v_1_0_0_1_0.Op != OpRsh64x64 || v_1_0_0_1_0.Type != t {
break
}
_ = v_1_0_0_1_0.Args[1]
break
}
v_1_0_0_1_0_1 := v_1_0_0_1_0.Args[1]
- if v_1_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_1_0_1.AuxInt != 63 {
+ if v_1_0_0_1_0_1.Op != OpConst64 || v_1_0_0_1_0_1.Type != typ.UInt64 || v_1_0_0_1_0_1.AuxInt != 63 {
break
}
v_1_0_0_1_1 := v_1_0_0_1.Args[1]
- if v_1_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_1.Type != typ.UInt64 {
+ if v_1_0_0_1_1.Op != OpConst64 || v_1_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_1_1.AuxInt
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 63 && kbar == 64-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 63 && kbar == 64-k) {
break
}
v.reset(OpEq64)
t := v_1_0_0.Type
_ = v_1_0_0.Args[1]
v_1_0_0_0 := v_1_0_0.Args[0]
- if v_1_0_0_0.Op != OpRsh64Ux64 {
- break
- }
- if v_1_0_0_0.Type != t {
+ if v_1_0_0_0.Op != OpRsh64Ux64 || v_1_0_0_0.Type != t {
break
}
_ = v_1_0_0_0.Args[1]
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpRsh64x64 {
- break
- }
- if v_1_0_0_0_0.Type != t {
+ if v_1_0_0_0_0.Op != OpRsh64x64 || v_1_0_0_0_0.Type != t {
break
}
_ = v_1_0_0_0_0.Args[1]
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 63 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.Type != typ.UInt64 || v_1_0_0_0_0_1.AuxInt != 63 {
break
}
v_1_0_0_0_1 := v_1_0_0_0.Args[1]
- if v_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_1.Type != typ.UInt64 {
+ if v_1_0_0_0_1.Op != OpConst64 || v_1_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_0_1.AuxInt
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 63 && kbar == 64-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 63 && kbar == 64-k) {
break
}
v.reset(OpEq64)
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
- if v_0_0_0_1.Op != OpRsh64Ux64 {
- break
- }
- if v_0_0_0_1.Type != t {
+ if v_0_0_0_1.Op != OpRsh64Ux64 || v_0_0_0_1.Type != t {
break
}
_ = v_0_0_0_1.Args[1]
v_0_0_0_1_0 := v_0_0_0_1.Args[0]
- if v_0_0_0_1_0.Op != OpRsh64x64 {
- break
- }
- if v_0_0_0_1_0.Type != t {
+ if v_0_0_0_1_0.Op != OpRsh64x64 || v_0_0_0_1_0.Type != t {
break
}
_ = v_0_0_0_1_0.Args[1]
break
}
v_0_0_0_1_0_1 := v_0_0_0_1_0.Args[1]
- if v_0_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_1_0_1.AuxInt != 63 {
+ if v_0_0_0_1_0_1.Op != OpConst64 || v_0_0_0_1_0_1.Type != typ.UInt64 || v_0_0_0_1_0_1.AuxInt != 63 {
break
}
v_0_0_0_1_1 := v_0_0_0_1.Args[1]
- if v_0_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_1.Type != typ.UInt64 {
+ if v_0_0_0_1_1.Op != OpConst64 || v_0_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_1_1.AuxInt
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 63 && kbar == 64-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 63 && kbar == 64-k) {
break
}
v.reset(OpEq64)
t := v_0_0_0.Type
_ = v_0_0_0.Args[1]
v_0_0_0_0 := v_0_0_0.Args[0]
- if v_0_0_0_0.Op != OpRsh64Ux64 {
- break
- }
- if v_0_0_0_0.Type != t {
+ if v_0_0_0_0.Op != OpRsh64Ux64 || v_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0.Args[1]
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpRsh64x64 {
- break
- }
- if v_0_0_0_0_0.Type != t {
+ if v_0_0_0_0_0.Op != OpRsh64x64 || v_0_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0_0.Args[1]
break
}
v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 63 {
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.Type != typ.UInt64 || v_0_0_0_0_0_1.AuxInt != 63 {
break
}
v_0_0_0_0_1 := v_0_0_0_0.Args[1]
- if v_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_1.Type != typ.UInt64 {
+ if v_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_0_1.AuxInt
break
}
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 63 && kbar == 64-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 63 && kbar == 64-k) {
break
}
v.reset(OpEq64)
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpEq64)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst64 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq64)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst64 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst64 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst64 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq64)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd64 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq64)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd64 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq64)
}
func rewriteValuegeneric_OpEq64F_0(v *Value) bool {
// match: (Eq64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) == auxTo64F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Eq64F (Const64F [d]) (Const64F [c]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) == auxTo64F(d))])
for {
_ = v.Args[1]
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Eq8 x x)
- // cond:
// result: (ConstBool [1])
for {
x := v.Args[1]
return true
}
// match: (Eq8 (Const8 <t> [c]) (Add8 (Const8 <t> [d]) x))
- // cond:
// result: (Eq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Eq8 (Const8 <t> [c]) (Add8 x (Const8 <t> [d])))
- // cond:
// result: (Eq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Eq8 (Add8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (Eq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq8 (Add8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (Eq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Eq8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (Eq8 (Const8 [d]) (Const8 [c]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(x.Op != OpConst8 && udivisibleOK(8, c) && !hasSmallRotate(config)) {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 || !(x.Op != OpConst8 && udivisibleOK(8, c) && !hasSmallRotate(config)) {
break
}
v.reset(OpEq32)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(x.Op != OpConst8 && sdivisibleOK(8, c) && !hasSmallRotate(config)) {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 || !(x.Op != OpConst8 && sdivisibleOK(8, c) && !hasSmallRotate(config)) {
break
}
v.reset(OpEq32)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v_1 := v.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt8to32 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt8to32 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt8to32 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpZeroExt8to32 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpZeroExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpZeroExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt8to32 || x != mul_1.Args[0] {
break
}
v_1_1_0_1 := v_1_1_0.Args[1]
}
_ = v_1_1_1.Args[1]
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_1_1_1_0.Args[0] {
+ if v_1_1_1_0.Op != OpSignExt8to32 || x != v_1_1_1_0.Args[0] {
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
break
}
v.reset(OpLeq8U)
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_1_1.Args[1]
v_1_1_1_0 := v_1_1_1.Args[0]
- if v_1_1_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_1_1_1_0.Args[0] {
+ if v_1_1_1_0.Op != OpSignExt8to32 || x != v_1_1_1_0.Args[0] {
break
}
v_1_1_1_1 := v_1_1_1.Args[1]
- if v_1_1_1_1.Op != OpConst64 {
- break
- }
- if v_1_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
+ if v_1_1_1_1.Op != OpConst64 || v_1_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
break
}
v.reset(OpLeq8U)
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt8to32 || x != mul_1.Args[0] {
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_1_0_1_0.Args[0] {
+ if v_1_0_1_0.Op != OpSignExt8to32 || x != v_1_0_1_0.Args[0] {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_1_0_1.Args[1]
v_1_0_1_0 := v_1_0_1.Args[0]
- if v_1_0_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_1_0_1_0.Args[0] {
+ if v_1_0_1_0.Op != OpSignExt8to32 || x != v_1_0_1_0.Args[0] {
break
}
v_1_0_1_1 := v_1_0_1.Args[1]
- if v_1_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_1_1.AuxInt != 31 {
+ if v_1_0_1_1.Op != OpConst64 || v_1_0_1_1.AuxInt != 31 {
break
}
v_1_1 := v_1.Args[1]
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt8to32 || x != mul_1.Args[0] {
break
}
v_0_1_0_1 := v_0_1_0.Args[1]
}
_ = v_0_1_1.Args[1]
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_0_1_1_0.Args[0] {
+ if v_0_1_1_0.Op != OpSignExt8to32 || x != v_0_1_1_0.Args[0] {
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
break
}
v.reset(OpLeq8U)
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_1_1.Args[1]
v_0_1_1_0 := v_0_1_1.Args[0]
- if v_0_1_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_0_1_1_0.Args[0] {
+ if v_0_1_1_0.Op != OpSignExt8to32 || x != v_0_1_1_0.Args[0] {
break
}
v_0_1_1_1 := v_0_1_1.Args[1]
- if v_0_1_1_1.Op != OpConst64 {
- break
- }
- if v_0_1_1_1.AuxInt != 31 {
- break
- }
- if !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
+ if v_0_1_1_1.Op != OpConst64 || v_0_1_1_1.AuxInt != 31 || !(v.Block.Func.pass.name != "opt" && mul.Uses == 1 && m == int64(smagic(8, c).m) && s == 8+smagic(8, c).s && x.Op != OpConst8 && sdivisibleOK(8, c)) {
break
}
v.reset(OpLeq8U)
}
m := mul_0.AuxInt
mul_1 := mul.Args[1]
- if mul_1.Op != OpSignExt8to32 {
- break
- }
- if x != mul_1.Args[0] {
+ if mul_1.Op != OpSignExt8to32 || x != mul_1.Args[0] {
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
}
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_0_0_1_0.Args[0] {
+ if v_0_0_1_0.Op != OpSignExt8to32 || x != v_0_0_1_0.Args[0] {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
}
_ = mul.Args[1]
mul_0 := mul.Args[0]
- if mul_0.Op != OpSignExt8to32 {
- break
- }
- if x != mul_0.Args[0] {
+ if mul_0.Op != OpSignExt8to32 || x != mul_0.Args[0] {
break
}
mul_1 := mul.Args[1]
}
_ = v_0_0_1.Args[1]
v_0_0_1_0 := v_0_0_1.Args[0]
- if v_0_0_1_0.Op != OpSignExt8to32 {
- break
- }
- if x != v_0_0_1_0.Args[0] {
+ if v_0_0_1_0.Op != OpSignExt8to32 || x != v_0_0_1_0.Args[0] {
break
}
v_0_0_1_1 := v_0_0_1.Args[1]
- if v_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_1_1.AuxInt != 31 {
+ if v_0_0_1_1.Op != OpConst64 || v_0_0_1_1.AuxInt != 31 {
break
}
v_0_1 := v_0.Args[1]
break
}
v_1_0_0_1 := v_1_0_0.Args[1]
- if v_1_0_0_1.Op != OpRsh8Ux64 {
- break
- }
- if v_1_0_0_1.Type != t {
+ if v_1_0_0_1.Op != OpRsh8Ux64 || v_1_0_0_1.Type != t {
break
}
_ = v_1_0_0_1.Args[1]
v_1_0_0_1_0 := v_1_0_0_1.Args[0]
- if v_1_0_0_1_0.Op != OpRsh8x64 {
- break
- }
- if v_1_0_0_1_0.Type != t {
+ if v_1_0_0_1_0.Op != OpRsh8x64 || v_1_0_0_1_0.Type != t {
break
}
_ = v_1_0_0_1_0.Args[1]
break
}
v_1_0_0_1_0_1 := v_1_0_0_1_0.Args[1]
- if v_1_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_1_0_1.AuxInt != 7 {
+ if v_1_0_0_1_0_1.Op != OpConst64 || v_1_0_0_1_0_1.Type != typ.UInt64 || v_1_0_0_1_0_1.AuxInt != 7 {
break
}
v_1_0_0_1_1 := v_1_0_0_1.Args[1]
- if v_1_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_1_1.Type != typ.UInt64 {
+ if v_1_0_0_1_1.Op != OpConst64 || v_1_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_1_1.AuxInt
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 7 && kbar == 8-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 7 && kbar == 8-k) {
break
}
v.reset(OpEq8)
t := v_1_0_0.Type
_ = v_1_0_0.Args[1]
v_1_0_0_0 := v_1_0_0.Args[0]
- if v_1_0_0_0.Op != OpRsh8Ux64 {
- break
- }
- if v_1_0_0_0.Type != t {
+ if v_1_0_0_0.Op != OpRsh8Ux64 || v_1_0_0_0.Type != t {
break
}
_ = v_1_0_0_0.Args[1]
v_1_0_0_0_0 := v_1_0_0_0.Args[0]
- if v_1_0_0_0_0.Op != OpRsh8x64 {
- break
- }
- if v_1_0_0_0_0.Type != t {
+ if v_1_0_0_0_0.Op != OpRsh8x64 || v_1_0_0_0_0.Type != t {
break
}
_ = v_1_0_0_0_0.Args[1]
break
}
v_1_0_0_0_0_1 := v_1_0_0_0_0.Args[1]
- if v_1_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_1_0_0_0_0_1.AuxInt != 7 {
+ if v_1_0_0_0_0_1.Op != OpConst64 || v_1_0_0_0_0_1.Type != typ.UInt64 || v_1_0_0_0_0_1.AuxInt != 7 {
break
}
v_1_0_0_0_1 := v_1_0_0_0.Args[1]
- if v_1_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_0_0_1.Type != typ.UInt64 {
+ if v_1_0_0_0_1.Op != OpConst64 || v_1_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_1_0_0_0_1.AuxInt
break
}
v_1_0_1 := v_1_0.Args[1]
- if v_1_0_1.Op != OpConst64 {
- break
- }
- if v_1_0_1.Type != typ.UInt64 {
+ if v_1_0_1.Op != OpConst64 || v_1_0_1.Type != typ.UInt64 {
break
}
k := v_1_0_1.AuxInt
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != typ.UInt64 {
- break
- }
- if v_1_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 7 && kbar == 8-k) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != typ.UInt64 || v_1_1.AuxInt != k || !(k > 0 && k < 7 && kbar == 8-k) {
break
}
v.reset(OpEq8)
break
}
v_0_0_0_1 := v_0_0_0.Args[1]
- if v_0_0_0_1.Op != OpRsh8Ux64 {
- break
- }
- if v_0_0_0_1.Type != t {
+ if v_0_0_0_1.Op != OpRsh8Ux64 || v_0_0_0_1.Type != t {
break
}
_ = v_0_0_0_1.Args[1]
v_0_0_0_1_0 := v_0_0_0_1.Args[0]
- if v_0_0_0_1_0.Op != OpRsh8x64 {
- break
- }
- if v_0_0_0_1_0.Type != t {
+ if v_0_0_0_1_0.Op != OpRsh8x64 || v_0_0_0_1_0.Type != t {
break
}
_ = v_0_0_0_1_0.Args[1]
break
}
v_0_0_0_1_0_1 := v_0_0_0_1_0.Args[1]
- if v_0_0_0_1_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_1_0_1.AuxInt != 7 {
+ if v_0_0_0_1_0_1.Op != OpConst64 || v_0_0_0_1_0_1.Type != typ.UInt64 || v_0_0_0_1_0_1.AuxInt != 7 {
break
}
v_0_0_0_1_1 := v_0_0_0_1.Args[1]
- if v_0_0_0_1_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_1_1.Type != typ.UInt64 {
+ if v_0_0_0_1_1.Op != OpConst64 || v_0_0_0_1_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_1_1.AuxInt
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 7 && kbar == 8-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 7 && kbar == 8-k) {
break
}
v.reset(OpEq8)
t := v_0_0_0.Type
_ = v_0_0_0.Args[1]
v_0_0_0_0 := v_0_0_0.Args[0]
- if v_0_0_0_0.Op != OpRsh8Ux64 {
- break
- }
- if v_0_0_0_0.Type != t {
+ if v_0_0_0_0.Op != OpRsh8Ux64 || v_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0.Args[1]
v_0_0_0_0_0 := v_0_0_0_0.Args[0]
- if v_0_0_0_0_0.Op != OpRsh8x64 {
- break
- }
- if v_0_0_0_0_0.Type != t {
+ if v_0_0_0_0_0.Op != OpRsh8x64 || v_0_0_0_0_0.Type != t {
break
}
_ = v_0_0_0_0_0.Args[1]
break
}
v_0_0_0_0_0_1 := v_0_0_0_0_0.Args[1]
- if v_0_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_0_0_0_0_1.AuxInt != 7 {
+ if v_0_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_0_1.Type != typ.UInt64 || v_0_0_0_0_0_1.AuxInt != 7 {
break
}
v_0_0_0_0_1 := v_0_0_0_0.Args[1]
- if v_0_0_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_0_0_1.Type != typ.UInt64 {
+ if v_0_0_0_0_1.Op != OpConst64 || v_0_0_0_0_1.Type != typ.UInt64 {
break
}
kbar := v_0_0_0_0_1.AuxInt
break
}
v_0_0_1 := v_0_0.Args[1]
- if v_0_0_1.Op != OpConst64 {
- break
- }
- if v_0_0_1.Type != typ.UInt64 {
+ if v_0_0_1.Op != OpConst64 || v_0_0_1.Type != typ.UInt64 {
break
}
k := v_0_0_1.AuxInt
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != typ.UInt64 {
- break
- }
- if v_0_1.AuxInt != k {
- break
- }
- if !(k > 0 && k < 7 && kbar == 8-k) {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != typ.UInt64 || v_0_1.AuxInt != k || !(k > 0 && k < 7 && kbar == 8-k) {
break
}
v.reset(OpEq8)
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpEq8)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst8 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst8 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst8 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq8)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst8 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst8 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst8 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq8)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd8 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq8)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd8 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpNeq8)
}
func rewriteValuegeneric_OpEqB_0(v *Value) bool {
// match: (EqB (ConstBool [c]) (ConstBool [d]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (EqB (ConstBool [d]) (ConstBool [c]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (EqB (ConstBool [0]) x)
- // cond:
// result: (Not x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConstBool {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConstBool || v_0.AuxInt != 0 {
break
}
v.reset(OpNot)
return true
}
// match: (EqB x (ConstBool [0]))
- // cond:
// result: (Not x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConstBool {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConstBool || v_1.AuxInt != 0 {
break
}
v.reset(OpNot)
return true
}
// match: (EqB (ConstBool [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConstBool {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConstBool || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (EqB x (ConstBool [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConstBool {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConstBool || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
b := v.Block
typ := &b.Func.Config.Types
// match: (EqInter x y)
- // cond:
// result: (EqPtr (ITab x) (ITab y))
for {
y := v.Args[1]
}
func rewriteValuegeneric_OpEqPtr_0(v *Value) bool {
// match: (EqPtr x x)
- // cond:
// result: (ConstBool [1])
for {
x := v.Args[1]
return true
}
// match: (EqPtr (Addr {a} _) (Addr {b} _))
- // cond:
// result: (ConstBool [b2i(a == b)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Addr {b} _) (Addr {a} _))
- // cond:
// result: (ConstBool [b2i(a == b)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _)))
- // cond:
// result: (ConstBool [b2i(a == b && o == 0)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr [o] (Addr {b} _)) (Addr {a} _))
- // cond:
// result: (ConstBool [b2i(a == b && o == 0)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _)))
- // cond:
// result: (ConstBool [b2i(a == b && o1 == o2)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr [o2] (Addr {b} _)) (OffPtr [o1] (Addr {a} _)))
- // cond:
// result: (ConstBool [b2i(a == b && o1 == o2)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _))
- // cond:
// result: (ConstBool [b2i(a == b)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (LocalAddr {b} _ _) (LocalAddr {a} _ _))
- // cond:
// result: (ConstBool [b2i(a == b)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _)))
- // cond:
// result: (ConstBool [b2i(a == b && o == 0)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpEqPtr_10(v *Value) bool {
// match: (EqPtr (OffPtr [o] (LocalAddr {b} _ _)) (LocalAddr {a} _ _))
- // cond:
// result: (ConstBool [b2i(a == b && o == 0)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _)))
- // cond:
// result: (ConstBool [b2i(a == b && o1 == o2)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr [o2] (LocalAddr {b} _ _)) (OffPtr [o1] (LocalAddr {a} _ _)))
- // cond:
// result: (ConstBool [b2i(a == b && o1 == o2)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Const32 [d]) (Const32 [c]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqPtr (Const64 [d]) (Const64 [c]))
- // cond:
// result: (ConstBool [b2i(c == d)])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (LocalAddr _ _) (Addr _))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Addr _) (LocalAddr _ _))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr (LocalAddr _ _)) (Addr _))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Addr _) (OffPtr (LocalAddr _ _)))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (LocalAddr _ _) (OffPtr (Addr _)))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr (Addr _)) (LocalAddr _ _))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _)))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (OffPtr (Addr _)) (OffPtr (LocalAddr _ _)))
- // cond:
// result: (ConstBool [0])
for {
_ = v.Args[1]
return true
}
// match: (EqPtr (Const32 [0]) p)
- // cond:
// result: (Not (IsNonNil p))
for {
p := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpNot)
return true
}
// match: (EqPtr p (Const32 [0]))
- // cond:
// result: (Not (IsNonNil p))
for {
_ = v.Args[1]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 {
break
}
v.reset(OpNot)
return true
}
// match: (EqPtr (Const64 [0]) p)
- // cond:
// result: (Not (IsNonNil p))
for {
p := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpNot)
return true
}
// match: (EqPtr p (Const64 [0]))
- // cond:
// result: (Not (IsNonNil p))
for {
_ = v.Args[1]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpNot)
return true
}
// match: (EqPtr (ConstNil) p)
- // cond:
// result: (Not (IsNonNil p))
for {
p := v.Args[1]
return true
}
// match: (EqPtr p (ConstNil))
- // cond:
// result: (Not (IsNonNil p))
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (EqSlice x y)
- // cond:
// result: (EqPtr (SlicePtr x) (SlicePtr y))
for {
y := v.Args[1]
}
func rewriteValuegeneric_OpGeq16_0(v *Value) bool {
// match: (Geq16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(c >= d)])
for {
_ = v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int16(c) >= 0) {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 || !(int16(c) >= 0) {
break
}
v.reset(OpConstBool)
}
c := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int16(c) >= 0) {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 || !(int16(c) >= 0) {
break
}
v.reset(OpConstBool)
}
func rewriteValuegeneric_OpGeq16U_0(v *Value) bool {
// match: (Geq16U (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(uint16(c) >= uint16(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGeq32_0(v *Value) bool {
// match: (Geq32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c >= d)])
for {
_ = v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int32(c) >= 0) {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 || !(int32(c) >= 0) {
break
}
v.reset(OpConstBool)
}
c := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int32(c) >= 0) {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 || !(int32(c) >= 0) {
break
}
v.reset(OpConstBool)
}
func rewriteValuegeneric_OpGeq32F_0(v *Value) bool {
// match: (Geq32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) >= auxTo32F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGeq32U_0(v *Value) bool {
// match: (Geq32U (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(uint32(c) >= uint32(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGeq64_0(v *Value) bool {
// match: (Geq64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c >= d)])
for {
_ = v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int64(c) >= 0) {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 || !(int64(c) >= 0) {
break
}
v.reset(OpConstBool)
}
c := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int64(c) >= 0) {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 || !(int64(c) >= 0) {
break
}
v.reset(OpConstBool)
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(c > 0) {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 || !(c > 0) {
break
}
v.reset(OpConstBool)
}
func rewriteValuegeneric_OpGeq64F_0(v *Value) bool {
// match: (Geq64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) >= auxTo64F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGeq64U_0(v *Value) bool {
// match: (Geq64U (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(uint64(c) >= uint64(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGeq8_0(v *Value) bool {
// match: (Geq8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(c >= d)])
for {
_ = v.Args[1]
}
c := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int8(c) >= 0) {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 || !(int8(c) >= 0) {
break
}
v.reset(OpConstBool)
}
c := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(int8(c) >= 0) {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 || !(int8(c) >= 0) {
break
}
v.reset(OpConstBool)
}
func rewriteValuegeneric_OpGeq8U_0(v *Value) bool {
// match: (Geq8U (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(uint8(c) >= uint8(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater16_0(v *Value) bool {
// match: (Greater16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(c > d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater16U_0(v *Value) bool {
// match: (Greater16U (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(uint16(c) > uint16(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater32_0(v *Value) bool {
// match: (Greater32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c > d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater32F_0(v *Value) bool {
// match: (Greater32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) > auxTo32F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater32U_0(v *Value) bool {
// match: (Greater32U (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(uint32(c) > uint32(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater64_0(v *Value) bool {
// match: (Greater64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c > d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater64F_0(v *Value) bool {
// match: (Greater64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) > auxTo64F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater64U_0(v *Value) bool {
// match: (Greater64U (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(uint64(c) > uint64(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater8_0(v *Value) bool {
// match: (Greater8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(c > d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpGreater8U_0(v *Value) bool {
// match: (Greater8U (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(uint8(c) > uint8(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpIMake_0(v *Value) bool {
// match: (IMake typ (StructMake1 val))
- // cond:
// result: (IMake typ val)
for {
_ = v.Args[1]
return true
}
// match: (IMake typ (ArrayMake1 val))
- // cond:
// result: (IMake typ val)
for {
_ = v.Args[1]
}
itab := v_0_0_0_0_0.Aux
v_0_0_0_0_0_0 := v_0_0_0_0_0.Args[0]
- if v_0_0_0_0_0_0.Op != OpSB {
- break
- }
- if !(devirt(v, itab, off) != nil) {
+ if v_0_0_0_0_0_0.Op != OpSB || !(devirt(v, itab, off) != nil) {
break
}
v.reset(OpStaticCall)
return true
}
// match: (IsInBounds x x)
- // cond:
// result: (ConstBool [0])
for {
x := v.Args[1]
return true
}
// match: (IsInBounds (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(0 <= c && c < d)])
for {
_ = v.Args[1]
return true
}
// match: (IsInBounds (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(0 <= c && c < d)])
for {
_ = v.Args[1]
return true
}
// match: (IsInBounds (Mod32u _ y) y)
- // cond:
// result: (ConstBool [1])
for {
y := v.Args[1]
return true
}
// match: (IsInBounds (Mod64u _ y) y)
- // cond:
// result: (ConstBool [1])
for {
y := v.Args[1]
}
func rewriteValuegeneric_OpIsNonNil_0(v *Value) bool {
// match: (IsNonNil (ConstNil))
- // cond:
// result: (ConstBool [0])
for {
v_0 := v.Args[0]
return true
}
// match: (IsNonNil (Const32 [c]))
- // cond:
// result: (ConstBool [b2i(c != 0)])
for {
v_0 := v.Args[0]
return true
}
// match: (IsNonNil (Const64 [c]))
- // cond:
// result: (ConstBool [b2i(c != 0)])
for {
v_0 := v.Args[0]
return true
}
// match: (IsNonNil (Addr _))
- // cond:
// result: (ConstBool [1])
for {
v_0 := v.Args[0]
return true
}
// match: (IsNonNil (LocalAddr _ _))
- // cond:
// result: (ConstBool [1])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpIsSliceInBounds_0(v *Value) bool {
// match: (IsSliceInBounds x x)
- // cond:
// result: (ConstBool [1])
for {
x := v.Args[1]
return true
}
// match: (IsSliceInBounds (Const32 [0]) _)
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConstBool)
return true
}
// match: (IsSliceInBounds (Const64 [0]) _)
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConstBool)
return true
}
// match: (IsSliceInBounds (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(0 <= c && c <= d)])
for {
_ = v.Args[1]
return true
}
// match: (IsSliceInBounds (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(0 <= c && c <= d)])
for {
_ = v.Args[1]
return true
}
// match: (IsSliceInBounds (SliceLen x) (SliceCap x))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
}
x := v_0.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpSliceCap {
- break
- }
- if x != v_1.Args[0] {
+ if v_1.Op != OpSliceCap || x != v_1.Args[0] {
break
}
v.reset(OpConstBool)
}
func rewriteValuegeneric_OpLeq16_0(v *Value) bool {
// match: (Leq16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(c <= d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq16U_0(v *Value) bool {
// match: (Leq16U (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(uint16(c) <= uint16(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq32_0(v *Value) bool {
// match: (Leq32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c <= d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq32F_0(v *Value) bool {
// match: (Leq32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) <= auxTo32F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq32U_0(v *Value) bool {
// match: (Leq32U (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(uint32(c) <= uint32(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq64_0(v *Value) bool {
// match: (Leq64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c <= d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq64F_0(v *Value) bool {
// match: (Leq64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) <= auxTo64F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq64U_0(v *Value) bool {
// match: (Leq64U (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(uint64(c) <= uint64(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq8_0(v *Value) bool {
// match: (Leq8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(c <= d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLeq8U_0(v *Value) bool {
// match: (Leq8U (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(uint8(c) <= uint8(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess16_0(v *Value) bool {
// match: (Less16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(c < d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess16U_0(v *Value) bool {
// match: (Less16U (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(uint16(c) < uint16(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess32_0(v *Value) bool {
// match: (Less32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c < d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess32F_0(v *Value) bool {
// match: (Less32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) < auxTo32F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess32U_0(v *Value) bool {
// match: (Less32U (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(uint32(c) < uint32(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess64_0(v *Value) bool {
// match: (Less64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c < d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess64F_0(v *Value) bool {
// match: (Less64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) < auxTo64F(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess64U_0(v *Value) bool {
// match: (Less64U (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(uint64(c) < uint64(d))])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess8_0(v *Value) bool {
// match: (Less8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(c < d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpLess8U_0(v *Value) bool {
// match: (Less8U (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(uint8(c) < uint8(d))])
for {
_ = v.Args[1]
func rewriteValuegeneric_OpLsh16x16_0(v *Value) bool {
b := v.Block
// match: (Lsh16x16 <t> x (Const16 [c]))
- // cond:
// result: (Lsh16x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Lsh16x16 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpLsh16x32_0(v *Value) bool {
b := v.Block
// match: (Lsh16x32 <t> x (Const32 [c]))
- // cond:
// result: (Lsh16x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Lsh16x32 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh16x64 (Const16 [c]) (Const64 [d]))
- // cond:
// result: (Const16 [int64(int16(c) << uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (Lsh16x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Lsh16x64 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpLsh16x8_0(v *Value) bool {
b := v.Block
// match: (Lsh16x8 <t> x (Const8 [c]))
- // cond:
// result: (Lsh16x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Lsh16x8 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpLsh32x16_0(v *Value) bool {
b := v.Block
// match: (Lsh32x16 <t> x (Const16 [c]))
- // cond:
// result: (Lsh32x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Lsh32x16 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpLsh32x32_0(v *Value) bool {
b := v.Block
// match: (Lsh32x32 <t> x (Const32 [c]))
- // cond:
// result: (Lsh32x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Lsh32x32 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh32x64 (Const32 [c]) (Const64 [d]))
- // cond:
// result: (Const32 [int64(int32(c) << uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (Lsh32x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Lsh32x64 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpLsh32x8_0(v *Value) bool {
b := v.Block
// match: (Lsh32x8 <t> x (Const8 [c]))
- // cond:
// result: (Lsh32x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Lsh32x8 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpLsh64x16_0(v *Value) bool {
b := v.Block
// match: (Lsh64x16 <t> x (Const16 [c]))
- // cond:
// result: (Lsh64x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Lsh64x16 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpLsh64x32_0(v *Value) bool {
b := v.Block
// match: (Lsh64x32 <t> x (Const32 [c]))
- // cond:
// result: (Lsh64x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Lsh64x32 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh64x64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c << uint64(d)])
for {
_ = v.Args[1]
return true
}
// match: (Lsh64x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Lsh64x64 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpLsh64x8_0(v *Value) bool {
b := v.Block
// match: (Lsh64x8 <t> x (Const8 [c]))
- // cond:
// result: (Lsh64x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Lsh64x8 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpLsh8x16_0(v *Value) bool {
b := v.Block
// match: (Lsh8x16 <t> x (Const16 [c]))
- // cond:
// result: (Lsh8x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Lsh8x16 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpLsh8x32_0(v *Value) bool {
b := v.Block
// match: (Lsh8x32 <t> x (Const32 [c]))
- // cond:
// result: (Lsh8x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Lsh8x32 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
b := v.Block
typ := &b.Func.Config.Types
// match: (Lsh8x64 (Const8 [c]) (Const64 [d]))
- // cond:
// result: (Const8 [int64(int8(c) << uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (Lsh8x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Lsh8x64 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpLsh8x8_0(v *Value) bool {
b := v.Block
// match: (Lsh8x8 <t> x (Const8 [c]))
- // cond:
// result: (Lsh8x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Lsh8x8 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
_ = v.Args[1]
n := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1<<63 {
- break
- }
- if !(isNonNegative(n)) {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1<<63 || !(isNonNegative(n)) {
break
}
v.reset(OpCopy)
return true
}
// match: (Mod64u <t> n (Const64 [-1<<63]))
- // cond:
// result: (And64 n (Const64 <t> [1<<63-1]))
for {
t := v.Type
_ = v.Args[1]
n := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1<<63 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1<<63 {
break
}
v.reset(OpAnd64)
dst1 := v.Args[0]
src := v.Args[1]
mem := v.Args[2]
- if mem.Op != OpZero {
- break
- }
- if mem.AuxInt != n {
- break
- }
- if mem.Aux != t {
+ if mem.Op != OpZero || mem.AuxInt != n || mem.Aux != t {
break
}
_ = mem.Args[1]
break
}
mem_0 := mem.Args[0]
- if mem_0.Op != OpZero {
- break
- }
- if mem_0.AuxInt != n {
- break
- }
- if mem_0.Aux != t {
+ if mem_0.Op != OpZero || mem_0.AuxInt != n || mem_0.Aux != t {
break
}
_ = mem_0.Args[1]
dst1 := v.Args[0]
src1 := v.Args[1]
move := v.Args[2]
- if move.Op != OpMove {
- break
- }
- if move.AuxInt != n {
- break
- }
- if move.Aux != t {
+ if move.Op != OpMove || move.AuxInt != n || move.Aux != t {
break
}
mem := move.Args[2]
}
x := vardef.Aux
move := vardef.Args[0]
- if move.Op != OpMove {
- break
- }
- if move.AuxInt != n {
- break
- }
- if move.Aux != t {
+ if move.Op != OpMove || move.AuxInt != n || move.Aux != t {
break
}
mem := move.Args[2]
dst1 := v.Args[0]
src1 := v.Args[1]
zero := v.Args[2]
- if zero.Op != OpZero {
- break
- }
- if zero.AuxInt != n {
- break
- }
- if zero.Aux != t {
+ if zero.Op != OpZero || zero.AuxInt != n || zero.Aux != t {
break
}
mem := zero.Args[1]
}
x := vardef.Aux
zero := vardef.Args[0]
- if zero.Op != OpZero {
- break
- }
- if zero.AuxInt != n {
- break
- }
- if zero.Aux != t {
+ if zero.Op != OpZero || zero.AuxInt != n || zero.Aux != t {
break
}
mem := zero.Args[1]
p2 := op2.Args[0]
d1 := mem.Args[1]
mem_2 := mem.Args[2]
- if mem_2.Op != OpZero {
- break
- }
- if mem_2.AuxInt != n {
+ if mem_2.Op != OpZero || mem_2.AuxInt != n {
break
}
t3 := mem_2.Aux
p3 := mem_2_0.Args[0]
d2 := mem_2.Args[1]
mem_2_2 := mem_2.Args[2]
- if mem_2_2.Op != OpZero {
- break
- }
- if mem_2_2.AuxInt != n {
+ if mem_2_2.Op != OpZero || mem_2_2.AuxInt != n {
break
}
t4 := mem_2_2.Aux
p4 := mem_2_2_0.Args[0]
d3 := mem_2_2.Args[1]
mem_2_2_2 := mem_2_2.Args[2]
- if mem_2_2_2.Op != OpZero {
- break
- }
- if mem_2_2_2.AuxInt != n {
+ if mem_2_2_2.Op != OpZero || mem_2_2_2.AuxInt != n {
break
}
t5 := mem_2_2_2.Aux
p5 := mem_2_2_2_0.Args[0]
d4 := mem_2_2_2.Args[1]
mem_2_2_2_2 := mem_2_2_2.Args[2]
- if mem_2_2_2_2.Op != OpZero {
- break
- }
- if mem_2_2_2_2.AuxInt != n {
+ if mem_2_2_2_2.Op != OpZero || mem_2_2_2_2.AuxInt != n {
break
}
t6 := mem_2_2_2_2.Aux
p2 := op2.Args[0]
d1 := mem_0.Args[1]
mem_0_2 := mem_0.Args[2]
- if mem_0_2.Op != OpZero {
- break
- }
- if mem_0_2.AuxInt != n {
+ if mem_0_2.Op != OpZero || mem_0_2.AuxInt != n {
break
}
t3 := mem_0_2.Aux
p3 := mem_0_2_0.Args[0]
d2 := mem_0_2.Args[1]
mem_0_2_2 := mem_0_2.Args[2]
- if mem_0_2_2.Op != OpZero {
- break
- }
- if mem_0_2_2.AuxInt != n {
+ if mem_0_2_2.Op != OpZero || mem_0_2_2.AuxInt != n {
break
}
t4 := mem_0_2_2.Aux
p4 := mem_0_2_2_0.Args[0]
d3 := mem_0_2_2.Args[1]
mem_0_2_2_2 := mem_0_2_2.Args[2]
- if mem_0_2_2_2.Op != OpZero {
- break
- }
- if mem_0_2_2_2.AuxInt != n {
+ if mem_0_2_2_2.Op != OpZero || mem_0_2_2_2.AuxInt != n {
break
}
t5 := mem_0_2_2_2.Aux
p5 := mem_0_2_2_2_0.Args[0]
d4 := mem_0_2_2_2.Args[1]
mem_0_2_2_2_2 := mem_0_2_2_2.Args[2]
- if mem_0_2_2_2_2.Op != OpZero {
- break
- }
- if mem_0_2_2_2_2.AuxInt != n {
+ if mem_0_2_2_2_2.Op != OpZero || mem_0_2_2_2_2.AuxInt != n {
break
}
t6 := mem_0_2_2_2_2.Aux
dst := v.Args[0]
tmp1 := v.Args[1]
midmem := v.Args[2]
- if midmem.Op != OpMove {
- break
- }
- if midmem.AuxInt != s {
+ if midmem.Op != OpMove || midmem.AuxInt != s {
break
}
t2 := midmem.Aux
break
}
midmem_0 := midmem.Args[0]
- if midmem_0.Op != OpMove {
- break
- }
- if midmem_0.AuxInt != s {
+ if midmem_0.Op != OpMove || midmem_0.AuxInt != s {
break
}
t2 := midmem_0.Aux
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (Const16 [int64(int16(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul16 (Const16 [d]) (Const16 [c]))
- // cond:
// result: (Const16 [int64(int16(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul16 (Const16 [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul16 x (Const16 [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul16 (Const16 [-1]) x)
- // cond:
// result: (Neg16 x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != -1 {
break
}
v.reset(OpNeg16)
return true
}
// match: (Mul16 x (Const16 [-1]))
- // cond:
// result: (Neg16 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != -1 {
break
}
v.reset(OpNeg16)
func rewriteValuegeneric_OpMul16_10(v *Value) bool {
b := v.Block
// match: (Mul16 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
return true
}
// match: (Mul16 _ (Const16 [0]))
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst16)
return true
}
// match: (Mul16 (Const16 <t> [c]) (Mul16 (Const16 <t> [d]) x))
- // cond:
// result: (Mul16 (Const16 <t> [int64(int16(c*d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Mul16 (Const16 <t> [c]) (Mul16 x (Const16 <t> [d])))
- // cond:
// result: (Mul16 (Const16 <t> [int64(int16(c*d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Mul16 (Mul16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (Mul16 (Const16 <t> [int64(int16(c*d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul16 (Mul16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (Mul16 (Const16 <t> [int64(int16(c*d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (Const32 [int64(int32(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul32 (Const32 [d]) (Const32 [c]))
- // cond:
// result: (Const32 [int64(int32(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul32 (Const32 [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul32 x (Const32 [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul32 (Const32 [-1]) x)
- // cond:
// result: (Neg32 x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != -1 {
break
}
v.reset(OpNeg32)
return true
}
// match: (Mul32 x (Const32 [-1]))
- // cond:
// result: (Neg32 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != -1 {
break
}
v.reset(OpNeg32)
func rewriteValuegeneric_OpMul32_10(v *Value) bool {
b := v.Block
// match: (Mul32 (Const32 <t> [c]) (Add32 <t> (Const32 <t> [d]) x))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c*d))]) (Mul32 <t> (Const32 <t> [c]) x))
for {
_ = v.Args[1]
t := v_0.Type
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAdd32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAdd32 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Mul32 (Const32 <t> [c]) (Add32 <t> x (Const32 <t> [d])))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c*d))]) (Mul32 <t> (Const32 <t> [c]) x))
for {
_ = v.Args[1]
t := v_0.Type
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAdd32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAdd32 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Mul32 (Add32 <t> (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c*d))]) (Mul32 <t> (Const32 <t> [c]) x))
for {
_ = v.Args[1]
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst32 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst32 || v_0_0.Type != t {
break
}
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul32 (Add32 <t> x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c*d))]) (Mul32 <t> (Const32 <t> [c]) x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst32 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst32 || v_0_1.Type != t {
break
}
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul32 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
return true
}
// match: (Mul32 _ (Const32 [0]))
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst32)
return true
}
// match: (Mul32 (Const32 <t> [c]) (Mul32 (Const32 <t> [d]) x))
- // cond:
// result: (Mul32 (Const32 <t> [int64(int32(c*d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Mul32 (Const32 <t> [c]) (Mul32 x (Const32 <t> [d])))
- // cond:
// result: (Mul32 (Const32 <t> [int64(int32(c*d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Mul32 (Mul32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Mul32 (Const32 <t> [int64(int32(c*d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul32 (Mul32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Mul32 (Const32 <t> [int64(int32(c*d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpMul32F_0(v *Value) bool {
// match: (Mul32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (Const32F [auxFrom32F(auxTo32F(c) * auxTo32F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul32F (Const32F [d]) (Const32F [c]))
- // cond:
// result: (Const32F [auxFrom32F(auxTo32F(c) * auxTo32F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul32F x (Const32F [auxFrom64F(1)]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32F {
- break
- }
- if v_1.AuxInt != auxFrom64F(1) {
+ if v_1.Op != OpConst32F || v_1.AuxInt != auxFrom64F(1) {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul32F (Const32F [auxFrom64F(1)]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32F {
- break
- }
- if v_0.AuxInt != auxFrom64F(1) {
+ if v_0.Op != OpConst32F || v_0.AuxInt != auxFrom64F(1) {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul32F x (Const32F [auxFrom32F(-1)]))
- // cond:
// result: (Neg32F x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32F {
- break
- }
- if v_1.AuxInt != auxFrom32F(-1) {
+ if v_1.Op != OpConst32F || v_1.AuxInt != auxFrom32F(-1) {
break
}
v.reset(OpNeg32F)
return true
}
// match: (Mul32F (Const32F [auxFrom32F(-1)]) x)
- // cond:
// result: (Neg32F x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32F {
- break
- }
- if v_0.AuxInt != auxFrom32F(-1) {
+ if v_0.Op != OpConst32F || v_0.AuxInt != auxFrom32F(-1) {
break
}
v.reset(OpNeg32F)
return true
}
// match: (Mul32F x (Const32F [auxFrom32F(2)]))
- // cond:
// result: (Add32F x x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32F {
- break
- }
- if v_1.AuxInt != auxFrom32F(2) {
+ if v_1.Op != OpConst32F || v_1.AuxInt != auxFrom32F(2) {
break
}
v.reset(OpAdd32F)
return true
}
// match: (Mul32F (Const32F [auxFrom32F(2)]) x)
- // cond:
// result: (Add32F x x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32F {
- break
- }
- if v_0.AuxInt != auxFrom32F(2) {
+ if v_0.Op != OpConst32F || v_0.AuxInt != auxFrom32F(2) {
break
}
v.reset(OpAdd32F)
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c*d])
for {
_ = v.Args[1]
return true
}
// match: (Mul64 (Const64 [d]) (Const64 [c]))
- // cond:
// result: (Const64 [c*d])
for {
_ = v.Args[1]
return true
}
// match: (Mul64 (Const64 [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul64 x (Const64 [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul64 (Const64 [-1]) x)
- // cond:
// result: (Neg64 x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != -1 {
break
}
v.reset(OpNeg64)
return true
}
// match: (Mul64 x (Const64 [-1]))
- // cond:
// result: (Neg64 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1 {
break
}
v.reset(OpNeg64)
func rewriteValuegeneric_OpMul64_10(v *Value) bool {
b := v.Block
// match: (Mul64 (Const64 <t> [c]) (Add64 <t> (Const64 <t> [d]) x))
- // cond:
// result: (Add64 (Const64 <t> [c*d]) (Mul64 <t> (Const64 <t> [c]) x))
for {
_ = v.Args[1]
t := v_0.Type
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAdd64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAdd64 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Mul64 (Const64 <t> [c]) (Add64 <t> x (Const64 <t> [d])))
- // cond:
// result: (Add64 (Const64 <t> [c*d]) (Mul64 <t> (Const64 <t> [c]) x))
for {
_ = v.Args[1]
t := v_0.Type
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAdd64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAdd64 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Mul64 (Add64 <t> (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Add64 (Const64 <t> [c*d]) (Mul64 <t> (Const64 <t> [c]) x))
for {
_ = v.Args[1]
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst64 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst64 || v_0_0.Type != t {
break
}
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul64 (Add64 <t> x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Add64 (Const64 <t> [c*d]) (Mul64 <t> (Const64 <t> [c]) x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != t {
break
}
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul64 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
return true
}
// match: (Mul64 _ (Const64 [0]))
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst64)
return true
}
// match: (Mul64 (Const64 <t> [c]) (Mul64 (Const64 <t> [d]) x))
- // cond:
// result: (Mul64 (Const64 <t> [c*d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Mul64 (Const64 <t> [c]) (Mul64 x (Const64 <t> [d])))
- // cond:
// result: (Mul64 (Const64 <t> [c*d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Mul64 (Mul64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Mul64 (Const64 <t> [c*d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul64 (Mul64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Mul64 (Const64 <t> [c*d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpMul64F_0(v *Value) bool {
// match: (Mul64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (Const64F [auxFrom64F(auxTo64F(c) * auxTo64F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul64F (Const64F [d]) (Const64F [c]))
- // cond:
// result: (Const64F [auxFrom64F(auxTo64F(c) * auxTo64F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul64F x (Const64F [auxFrom64F(1)]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64F {
- break
- }
- if v_1.AuxInt != auxFrom64F(1) {
+ if v_1.Op != OpConst64F || v_1.AuxInt != auxFrom64F(1) {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul64F (Const64F [auxFrom64F(1)]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64F {
- break
- }
- if v_0.AuxInt != auxFrom64F(1) {
+ if v_0.Op != OpConst64F || v_0.AuxInt != auxFrom64F(1) {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul64F x (Const64F [auxFrom64F(-1)]))
- // cond:
// result: (Neg64F x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64F {
- break
- }
- if v_1.AuxInt != auxFrom64F(-1) {
+ if v_1.Op != OpConst64F || v_1.AuxInt != auxFrom64F(-1) {
break
}
v.reset(OpNeg64F)
return true
}
// match: (Mul64F (Const64F [auxFrom64F(-1)]) x)
- // cond:
// result: (Neg64F x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64F {
- break
- }
- if v_0.AuxInt != auxFrom64F(-1) {
+ if v_0.Op != OpConst64F || v_0.AuxInt != auxFrom64F(-1) {
break
}
v.reset(OpNeg64F)
return true
}
// match: (Mul64F x (Const64F [auxFrom64F(2)]))
- // cond:
// result: (Add64F x x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64F {
- break
- }
- if v_1.AuxInt != auxFrom64F(2) {
+ if v_1.Op != OpConst64F || v_1.AuxInt != auxFrom64F(2) {
break
}
v.reset(OpAdd64F)
return true
}
// match: (Mul64F (Const64F [auxFrom64F(2)]) x)
- // cond:
// result: (Add64F x x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64F {
- break
- }
- if v_0.AuxInt != auxFrom64F(2) {
+ if v_0.Op != OpConst64F || v_0.AuxInt != auxFrom64F(2) {
break
}
v.reset(OpAdd64F)
b := v.Block
typ := &b.Func.Config.Types
// match: (Mul8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (Const8 [int64(int8(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul8 (Const8 [d]) (Const8 [c]))
- // cond:
// result: (Const8 [int64(int8(c*d))])
for {
_ = v.Args[1]
return true
}
// match: (Mul8 (Const8 [1]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul8 x (Const8 [1]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 1 {
break
}
v.reset(OpCopy)
return true
}
// match: (Mul8 (Const8 [-1]) x)
- // cond:
// result: (Neg8 x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != -1 {
break
}
v.reset(OpNeg8)
return true
}
// match: (Mul8 x (Const8 [-1]))
- // cond:
// result: (Neg8 x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != -1 {
break
}
v.reset(OpNeg8)
func rewriteValuegeneric_OpMul8_10(v *Value) bool {
b := v.Block
// match: (Mul8 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
return true
}
// match: (Mul8 _ (Const8 [0]))
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 {
break
}
v.reset(OpConst8)
return true
}
// match: (Mul8 (Const8 <t> [c]) (Mul8 (Const8 <t> [d]) x))
- // cond:
// result: (Mul8 (Const8 <t> [int64(int8(c*d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Mul8 (Const8 <t> [c]) (Mul8 x (Const8 <t> [d])))
- // cond:
// result: (Mul8 (Const8 <t> [int64(int8(c*d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Mul8 (Mul8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (Mul8 (Const8 <t> [int64(int8(c*d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Mul8 (Mul8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (Mul8 (Const8 <t> [int64(int8(c*d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpNeg16_0(v *Value) bool {
b := v.Block
// match: (Neg16 (Const16 [c]))
- // cond:
// result: (Const16 [int64(-int16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Neg16 (Sub16 x y))
- // cond:
// result: (Sub16 y x)
for {
v_0 := v.Args[0]
return true
}
// match: (Neg16 (Neg16 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Neg16 <t> (Com16 x))
- // cond:
// result: (Add16 (Const16 <t> [1]) x)
for {
t := v.Type
func rewriteValuegeneric_OpNeg32_0(v *Value) bool {
b := v.Block
// match: (Neg32 (Const32 [c]))
- // cond:
// result: (Const32 [int64(-int32(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Neg32 (Sub32 x y))
- // cond:
// result: (Sub32 y x)
for {
v_0 := v.Args[0]
return true
}
// match: (Neg32 (Neg32 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Neg32 <t> (Com32 x))
- // cond:
// result: (Add32 (Const32 <t> [1]) x)
for {
t := v.Type
func rewriteValuegeneric_OpNeg64_0(v *Value) bool {
b := v.Block
// match: (Neg64 (Const64 [c]))
- // cond:
// result: (Const64 [-c])
for {
v_0 := v.Args[0]
return true
}
// match: (Neg64 (Sub64 x y))
- // cond:
// result: (Sub64 y x)
for {
v_0 := v.Args[0]
return true
}
// match: (Neg64 (Neg64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Neg64 <t> (Com64 x))
- // cond:
// result: (Add64 (Const64 <t> [1]) x)
for {
t := v.Type
func rewriteValuegeneric_OpNeg8_0(v *Value) bool {
b := v.Block
// match: (Neg8 (Const8 [c]))
- // cond:
// result: (Const8 [int64( -int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Neg8 (Sub8 x y))
- // cond:
// result: (Sub8 y x)
for {
v_0 := v.Args[0]
return true
}
// match: (Neg8 (Neg8 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Neg8 <t> (Com8 x))
- // cond:
// result: (Add8 (Const8 <t> [1]) x)
for {
t := v.Type
func rewriteValuegeneric_OpNeq16_0(v *Value) bool {
b := v.Block
// match: (Neq16 x x)
- // cond:
// result: (ConstBool [0])
for {
x := v.Args[1]
return true
}
// match: (Neq16 (Const16 <t> [c]) (Add16 (Const16 <t> [d]) x))
- // cond:
// result: (Neq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Neq16 (Const16 <t> [c]) (Add16 x (Const16 <t> [d])))
- // cond:
// result: (Neq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Neq16 (Add16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (Neq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq16 (Add16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (Neq16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (Neq16 (Const16 [d]) (Const16 [c]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpNeq16)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst16 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst16 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst16 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq16)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst16 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst16 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst16 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq16)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd16 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq16)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd16 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq16)
func rewriteValuegeneric_OpNeq32_0(v *Value) bool {
b := v.Block
// match: (Neq32 x x)
- // cond:
// result: (ConstBool [0])
for {
x := v.Args[1]
return true
}
// match: (Neq32 (Const32 <t> [c]) (Add32 (Const32 <t> [d]) x))
- // cond:
// result: (Neq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Neq32 (Const32 <t> [c]) (Add32 x (Const32 <t> [d])))
- // cond:
// result: (Neq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Neq32 (Add32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Neq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq32 (Add32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Neq32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (Neq32 (Const32 [d]) (Const32 [c]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpNeq32)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst32 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst32 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst32 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq32)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst32 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst32 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst32 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq32)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd32 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq32)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd32 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq32)
}
func rewriteValuegeneric_OpNeq32F_0(v *Value) bool {
// match: (Neq32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) != auxTo32F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Neq32F (Const32F [d]) (Const32F [c]))
- // cond:
// result: (ConstBool [b2i(auxTo32F(c) != auxTo32F(d))])
for {
_ = v.Args[1]
func rewriteValuegeneric_OpNeq64_0(v *Value) bool {
b := v.Block
// match: (Neq64 x x)
- // cond:
// result: (ConstBool [0])
for {
x := v.Args[1]
return true
}
// match: (Neq64 (Const64 <t> [c]) (Add64 (Const64 <t> [d]) x))
- // cond:
// result: (Neq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Neq64 (Const64 <t> [c]) (Add64 x (Const64 <t> [d])))
- // cond:
// result: (Neq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Neq64 (Add64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Neq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq64 (Add64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Neq64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (Neq64 (Const64 [d]) (Const64 [c]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpNeq64)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst64 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst64 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq64)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst64 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst64 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst64 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq64)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd64 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq64)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd64 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq64)
}
func rewriteValuegeneric_OpNeq64F_0(v *Value) bool {
// match: (Neq64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) != auxTo64F(d))])
for {
_ = v.Args[1]
return true
}
// match: (Neq64F (Const64F [d]) (Const64F [c]))
- // cond:
// result: (ConstBool [b2i(auxTo64F(c) != auxTo64F(d))])
for {
_ = v.Args[1]
func rewriteValuegeneric_OpNeq8_0(v *Value) bool {
b := v.Block
// match: (Neq8 x x)
- // cond:
// result: (ConstBool [0])
for {
x := v.Args[1]
return true
}
// match: (Neq8 (Const8 <t> [c]) (Add8 (Const8 <t> [d]) x))
- // cond:
// result: (Neq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Neq8 (Const8 <t> [c]) (Add8 x (Const8 <t> [d])))
- // cond:
// result: (Neq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Neq8 (Add8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (Neq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq8 (Add8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (Neq8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Neq8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (Neq8 (Const8 [d]) (Const8 [c]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
y := s.Args[1]
x := s.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
- break
- }
- if !(s.Uses == 1) {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 || !(s.Uses == 1) {
break
}
v.reset(OpNeq8)
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
s := v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst8 {
- break
- }
- if v_0_1.Type != t {
+ if v_0_1.Op != OpConst8 || v_0_1.Type != t {
break
}
y := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst8 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq8)
t := v_0.Type
x := v_0.Args[1]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst8 {
- break
- }
- if v_0_0.Type != t {
+ if v_0_0.Op != OpConst8 || v_0_0.Type != t {
break
}
y := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
- break
- }
- if v_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1.Op != OpConst8 || v_1.Type != t || v_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq8)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd8 || v_1.Type != t {
break
}
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
- break
- }
- if v_1_1.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t || v_1_1.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq8)
t := v_0.Type
y := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpAnd8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpAnd8 || v_1.Type != t {
break
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
- break
- }
- if v_1_0.AuxInt != y {
- break
- }
- if !(isPowerOfTwo(y)) {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t || v_1_0.AuxInt != y || !(isPowerOfTwo(y)) {
break
}
v.reset(OpEq8)
}
func rewriteValuegeneric_OpNeqB_0(v *Value) bool {
// match: (NeqB (ConstBool [c]) (ConstBool [d]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (NeqB (ConstBool [d]) (ConstBool [c]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (NeqB (ConstBool [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConstBool {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConstBool || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (NeqB x (ConstBool [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConstBool {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConstBool || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (NeqB (ConstBool [1]) x)
- // cond:
// result: (Not x)
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConstBool {
- break
- }
- if v_0.AuxInt != 1 {
+ if v_0.Op != OpConstBool || v_0.AuxInt != 1 {
break
}
v.reset(OpNot)
return true
}
// match: (NeqB x (ConstBool [1]))
- // cond:
// result: (Not x)
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConstBool {
- break
- }
- if v_1.AuxInt != 1 {
+ if v_1.Op != OpConstBool || v_1.AuxInt != 1 {
break
}
v.reset(OpNot)
return true
}
// match: (NeqB (Not x) (Not y))
- // cond:
// result: (NeqB x y)
for {
_ = v.Args[1]
return true
}
// match: (NeqB (Not y) (Not x))
- // cond:
// result: (NeqB x y)
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (NeqInter x y)
- // cond:
// result: (NeqPtr (ITab x) (ITab y))
for {
y := v.Args[1]
}
func rewriteValuegeneric_OpNeqPtr_0(v *Value) bool {
// match: (NeqPtr x x)
- // cond:
// result: (ConstBool [0])
for {
x := v.Args[1]
return true
}
// match: (NeqPtr (Addr {a} _) (Addr {b} _))
- // cond:
// result: (ConstBool [b2i(a != b)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Addr {b} _) (Addr {a} _))
- // cond:
// result: (ConstBool [b2i(a != b)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _)))
- // cond:
// result: (ConstBool [b2i(a != b || o != 0)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr [o] (Addr {b} _)) (Addr {a} _))
- // cond:
// result: (ConstBool [b2i(a != b || o != 0)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _)))
- // cond:
// result: (ConstBool [b2i(a != b || o1 != o2)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr [o2] (Addr {b} _)) (OffPtr [o1] (Addr {a} _)))
- // cond:
// result: (ConstBool [b2i(a != b || o1 != o2)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _))
- // cond:
// result: (ConstBool [b2i(a != b)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (LocalAddr {b} _ _) (LocalAddr {a} _ _))
- // cond:
// result: (ConstBool [b2i(a != b)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _)))
- // cond:
// result: (ConstBool [b2i(a != b || o != 0)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpNeqPtr_10(v *Value) bool {
// match: (NeqPtr (OffPtr [o] (LocalAddr {b} _ _)) (LocalAddr {a} _ _))
- // cond:
// result: (ConstBool [b2i(a != b || o != 0)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _)))
- // cond:
// result: (ConstBool [b2i(a != b || o1 != o2)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr [o2] (LocalAddr {b} _ _)) (OffPtr [o1] (LocalAddr {a} _ _)))
- // cond:
// result: (ConstBool [b2i(a != b || o1 != o2)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Const32 [c]) (Const32 [d]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Const32 [d]) (Const32 [c]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Const64 [c]) (Const64 [d]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
}
func rewriteValuegeneric_OpNeqPtr_20(v *Value) bool {
// match: (NeqPtr (Const64 [d]) (Const64 [c]))
- // cond:
// result: (ConstBool [b2i(c != d)])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (LocalAddr _ _) (Addr _))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Addr _) (LocalAddr _ _))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr (LocalAddr _ _)) (Addr _))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Addr _) (OffPtr (LocalAddr _ _)))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (LocalAddr _ _) (OffPtr (Addr _)))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr (Addr _)) (LocalAddr _ _))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _)))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (OffPtr (Addr _)) (OffPtr (LocalAddr _ _)))
- // cond:
// result: (ConstBool [1])
for {
_ = v.Args[1]
return true
}
// match: (NeqPtr (Const32 [0]) p)
- // cond:
// result: (IsNonNil p)
for {
p := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpIsNonNil)
return true
}
// match: (NeqPtr p (Const32 [0]))
- // cond:
// result: (IsNonNil p)
for {
_ = v.Args[1]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 {
break
}
v.reset(OpIsNonNil)
return true
}
// match: (NeqPtr (Const64 [0]) p)
- // cond:
// result: (IsNonNil p)
for {
p := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpIsNonNil)
return true
}
// match: (NeqPtr p (Const64 [0]))
- // cond:
// result: (IsNonNil p)
for {
_ = v.Args[1]
p := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpIsNonNil)
return true
}
// match: (NeqPtr (ConstNil) p)
- // cond:
// result: (IsNonNil p)
for {
p := v.Args[1]
return true
}
// match: (NeqPtr p (ConstNil))
- // cond:
// result: (IsNonNil p)
for {
_ = v.Args[1]
b := v.Block
typ := &b.Func.Config.Types
// match: (NeqSlice x y)
- // cond:
// result: (NeqPtr (SlicePtr x) (SlicePtr y))
for {
y := v.Args[1]
config := b.Func.Config
fe := b.Func.fe
// match: (NilCheck (GetG mem) mem)
- // cond:
// result: mem
for {
mem := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpGetG {
- break
- }
- if mem != v_0.Args[0] {
+ if v_0.Op != OpGetG || mem != v_0.Args[0] {
break
}
v.reset(OpCopy)
}
func rewriteValuegeneric_OpNot_0(v *Value) bool {
// match: (Not (ConstBool [c]))
- // cond:
// result: (ConstBool [1-c])
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Eq64 x y))
- // cond:
// result: (Neq64 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Eq32 x y))
- // cond:
// result: (Neq32 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Eq16 x y))
- // cond:
// result: (Neq16 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Eq8 x y))
- // cond:
// result: (Neq8 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (EqB x y))
- // cond:
// result: (NeqB x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Neq64 x y))
- // cond:
// result: (Eq64 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Neq32 x y))
- // cond:
// result: (Eq32 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Neq16 x y))
- // cond:
// result: (Eq16 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Neq8 x y))
- // cond:
// result: (Eq8 x y)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpNot_10(v *Value) bool {
// match: (Not (NeqB x y))
- // cond:
// result: (EqB x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater64 x y))
- // cond:
// result: (Leq64 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater32 x y))
- // cond:
// result: (Leq32 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater16 x y))
- // cond:
// result: (Leq16 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater8 x y))
- // cond:
// result: (Leq8 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater64U x y))
- // cond:
// result: (Leq64U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater32U x y))
- // cond:
// result: (Leq32U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater16U x y))
- // cond:
// result: (Leq16U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Greater8U x y))
- // cond:
// result: (Leq8U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Geq64 x y))
- // cond:
// result: (Less64 x y)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpNot_20(v *Value) bool {
// match: (Not (Geq32 x y))
- // cond:
// result: (Less32 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Geq16 x y))
- // cond:
// result: (Less16 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Geq8 x y))
- // cond:
// result: (Less8 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Geq64U x y))
- // cond:
// result: (Less64U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Geq32U x y))
- // cond:
// result: (Less32U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Geq16U x y))
- // cond:
// result: (Less16U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Geq8U x y))
- // cond:
// result: (Less8U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Less64 x y))
- // cond:
// result: (Geq64 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Less32 x y))
- // cond:
// result: (Geq32 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Less16 x y))
- // cond:
// result: (Geq16 x y)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpNot_30(v *Value) bool {
// match: (Not (Less8 x y))
- // cond:
// result: (Geq8 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Less64U x y))
- // cond:
// result: (Geq64U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Less32U x y))
- // cond:
// result: (Geq32U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Less16U x y))
- // cond:
// result: (Geq16U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Less8U x y))
- // cond:
// result: (Geq8U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Leq64 x y))
- // cond:
// result: (Greater64 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Leq32 x y))
- // cond:
// result: (Greater32 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Leq16 x y))
- // cond:
// result: (Greater16 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Leq8 x y))
- // cond:
// result: (Greater8 x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Leq64U x y))
- // cond:
// result: (Greater64U x y)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpNot_40(v *Value) bool {
// match: (Not (Leq32U x y))
- // cond:
// result: (Greater32U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Leq16U x y))
- // cond:
// result: (Greater16U x y)
for {
v_0 := v.Args[0]
return true
}
// match: (Not (Leq8U x y))
- // cond:
// result: (Greater8U x y)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpOffPtr_0(v *Value) bool {
// match: (OffPtr (OffPtr p [b]) [a])
- // cond:
// result: (OffPtr p [a+b])
for {
a := v.AuxInt
}
func rewriteValuegeneric_OpOr16_0(v *Value) bool {
// match: (Or16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (Const16 [int64(int16(c|d))])
for {
_ = v.Args[1]
return true
}
// match: (Or16 (Const16 [d]) (Const16 [c]))
- // cond:
// result: (Const16 [int64(int16(c|d))])
for {
_ = v.Args[1]
return true
}
// match: (Or16 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (Or16 (Const16 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or16 x (Const16 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or16 (Const16 [-1]) _)
- // cond:
// result: (Const16 [-1])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != -1 {
break
}
v.reset(OpConst16)
return true
}
// match: (Or16 _ (Const16 [-1]))
- // cond:
// result: (Const16 [-1])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != -1 {
break
}
v.reset(OpConst16)
return true
}
// match: (Or16 x (Or16 x y))
- // cond:
// result: (Or16 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or16 x (Or16 y x))
- // cond:
// result: (Or16 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or16 (Or16 x y) x)
- // cond:
// result: (Or16 x y)
for {
x := v.Args[1]
func rewriteValuegeneric_OpOr16_10(v *Value) bool {
b := v.Block
// match: (Or16 (Or16 y x) x)
- // cond:
// result: (Or16 x y)
for {
x := v.Args[1]
return true
}
// match: (Or16 (Const16 <t> [c]) (Or16 (Const16 <t> [d]) x))
- // cond:
// result: (Or16 (Const16 <t> [int64(int16(c|d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpOr16_20(v *Value) bool {
b := v.Block
// match: (Or16 (Const16 <t> [c]) (Or16 x (Const16 <t> [d])))
- // cond:
// result: (Or16 (Const16 <t> [int64(int16(c|d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Or16 (Or16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (Or16 (Const16 <t> [int64(int16(c|d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Or16 (Or16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (Or16 (Const16 <t> [int64(int16(c|d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpOr32_0(v *Value) bool {
// match: (Or32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (Const32 [int64(int32(c|d))])
for {
_ = v.Args[1]
return true
}
// match: (Or32 (Const32 [d]) (Const32 [c]))
- // cond:
// result: (Const32 [int64(int32(c|d))])
for {
_ = v.Args[1]
return true
}
// match: (Or32 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (Or32 (Const32 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or32 x (Const32 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or32 (Const32 [-1]) _)
- // cond:
// result: (Const32 [-1])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != -1 {
break
}
v.reset(OpConst32)
return true
}
// match: (Or32 _ (Const32 [-1]))
- // cond:
// result: (Const32 [-1])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != -1 {
break
}
v.reset(OpConst32)
return true
}
// match: (Or32 x (Or32 x y))
- // cond:
// result: (Or32 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or32 x (Or32 y x))
- // cond:
// result: (Or32 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or32 (Or32 x y) x)
- // cond:
// result: (Or32 x y)
for {
x := v.Args[1]
func rewriteValuegeneric_OpOr32_10(v *Value) bool {
b := v.Block
// match: (Or32 (Or32 y x) x)
- // cond:
// result: (Or32 x y)
for {
x := v.Args[1]
return true
}
// match: (Or32 (Const32 <t> [c]) (Or32 (Const32 <t> [d]) x))
- // cond:
// result: (Or32 (Const32 <t> [int64(int32(c|d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpOr32_20(v *Value) bool {
b := v.Block
// match: (Or32 (Const32 <t> [c]) (Or32 x (Const32 <t> [d])))
- // cond:
// result: (Or32 (Const32 <t> [int64(int32(c|d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Or32 (Or32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Or32 (Const32 <t> [int64(int32(c|d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Or32 (Or32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Or32 (Const32 <t> [int64(int32(c|d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpOr64_0(v *Value) bool {
// match: (Or64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c|d])
for {
_ = v.Args[1]
return true
}
// match: (Or64 (Const64 [d]) (Const64 [c]))
- // cond:
// result: (Const64 [c|d])
for {
_ = v.Args[1]
return true
}
// match: (Or64 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (Or64 (Const64 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or64 (Const64 [-1]) _)
- // cond:
// result: (Const64 [-1])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != -1 {
break
}
v.reset(OpConst64)
return true
}
// match: (Or64 _ (Const64 [-1]))
- // cond:
// result: (Const64 [-1])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != -1 {
break
}
v.reset(OpConst64)
return true
}
// match: (Or64 x (Or64 x y))
- // cond:
// result: (Or64 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or64 x (Or64 y x))
- // cond:
// result: (Or64 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or64 (Or64 x y) x)
- // cond:
// result: (Or64 x y)
for {
x := v.Args[1]
func rewriteValuegeneric_OpOr64_10(v *Value) bool {
b := v.Block
// match: (Or64 (Or64 y x) x)
- // cond:
// result: (Or64 x y)
for {
x := v.Args[1]
return true
}
// match: (Or64 (Const64 <t> [c]) (Or64 (Const64 <t> [d]) x))
- // cond:
// result: (Or64 (Const64 <t> [c|d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpOr64_20(v *Value) bool {
b := v.Block
// match: (Or64 (Const64 <t> [c]) (Or64 x (Const64 <t> [d])))
- // cond:
// result: (Or64 (Const64 <t> [c|d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Or64 (Or64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Or64 (Const64 <t> [c|d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Or64 (Or64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Or64 (Const64 <t> [c|d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpOr8_0(v *Value) bool {
// match: (Or8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (Const8 [int64(int8(c|d))])
for {
_ = v.Args[1]
return true
}
// match: (Or8 (Const8 [d]) (Const8 [c]))
- // cond:
// result: (Const8 [int64(int8(c|d))])
for {
_ = v.Args[1]
return true
}
// match: (Or8 x x)
- // cond:
// result: x
for {
x := v.Args[1]
return true
}
// match: (Or8 (Const8 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or8 x (Const8 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Or8 (Const8 [-1]) _)
- // cond:
// result: (Const8 [-1])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != -1 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != -1 {
break
}
v.reset(OpConst8)
return true
}
// match: (Or8 _ (Const8 [-1]))
- // cond:
// result: (Const8 [-1])
for {
_ = v.Args[1]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != -1 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != -1 {
break
}
v.reset(OpConst8)
return true
}
// match: (Or8 x (Or8 x y))
- // cond:
// result: (Or8 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or8 x (Or8 y x))
- // cond:
// result: (Or8 x y)
for {
_ = v.Args[1]
return true
}
// match: (Or8 (Or8 x y) x)
- // cond:
// result: (Or8 x y)
for {
x := v.Args[1]
func rewriteValuegeneric_OpOr8_10(v *Value) bool {
b := v.Block
// match: (Or8 (Or8 y x) x)
- // cond:
// result: (Or8 x y)
for {
x := v.Args[1]
return true
}
// match: (Or8 (Const8 <t> [c]) (Or8 (Const8 <t> [d]) x))
- // cond:
// result: (Or8 (Const8 <t> [int64(int8(c|d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpOr8_20(v *Value) bool {
b := v.Block
// match: (Or8 (Const8 <t> [c]) (Or8 x (Const8 <t> [d])))
- // cond:
// result: (Or8 (Const8 <t> [int64(int8(c|d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Or8 (Or8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (Or8 (Const8 <t> [int64(int8(c|d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Or8 (Or8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (Or8 (Const8 <t> [int64(int8(c|d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
func rewriteValuegeneric_OpPhi_0(v *Value) bool {
// match: (Phi (Const8 [c]) (Const8 [c]))
- // cond:
// result: (Const8 [c])
for {
_ = v.Args[1]
}
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != c {
- break
- }
- if len(v.Args) != 2 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != c || len(v.Args) != 2 {
break
}
v.reset(OpConst8)
return true
}
// match: (Phi (Const16 [c]) (Const16 [c]))
- // cond:
// result: (Const16 [c])
for {
_ = v.Args[1]
}
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != c {
- break
- }
- if len(v.Args) != 2 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != c || len(v.Args) != 2 {
break
}
v.reset(OpConst16)
return true
}
// match: (Phi (Const32 [c]) (Const32 [c]))
- // cond:
// result: (Const32 [c])
for {
_ = v.Args[1]
}
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != c {
- break
- }
- if len(v.Args) != 2 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != c || len(v.Args) != 2 {
break
}
v.reset(OpConst32)
return true
}
// match: (Phi (Const64 [c]) (Const64 [c]))
- // cond:
// result: (Const64 [c])
for {
_ = v.Args[1]
}
c := v_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != c {
- break
- }
- if len(v.Args) != 2 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != c || len(v.Args) != 2 {
break
}
v.reset(OpConst64)
}
func rewriteValuegeneric_OpRound32F_0(v *Value) bool {
// match: (Round32F x:(Const32F))
- // cond:
// result: x
for {
x := v.Args[0]
}
func rewriteValuegeneric_OpRound64F_0(v *Value) bool {
// match: (Round64F x:(Const64F))
- // cond:
// result: x
for {
x := v.Args[0]
func rewriteValuegeneric_OpRsh16Ux16_0(v *Value) bool {
b := v.Block
// match: (Rsh16Ux16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh16Ux64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh16Ux16 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpRsh16Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh16Ux32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh16Ux64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh16Ux32 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16Ux64 (Const16 [c]) (Const64 [d]))
- // cond:
// result: (Const16 [int64(int16(uint16(c) >> uint64(d)))])
for {
_ = v.Args[1]
return true
}
// match: (Rsh16Ux64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh16Ux64 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
return true
}
// match: (Rsh16Ux64 (Rsh16x64 x _) (Const64 <t> [15]))
- // cond:
// result: (Rsh16Ux64 x (Const64 <t> [15]))
for {
_ = v.Args[1]
return true
}
// match: (Rsh16Ux64 (Lsh16x64 x (Const64 [8])) (Const64 [8]))
- // cond:
// result: (ZeroExt8to16 (Trunc16to8 <typ.UInt8> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 8 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 8 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 8 {
break
}
v.reset(OpZeroExt8to16)
func rewriteValuegeneric_OpRsh16Ux8_0(v *Value) bool {
b := v.Block
// match: (Rsh16Ux8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh16Ux64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh16Ux8 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpRsh16x16_0(v *Value) bool {
b := v.Block
// match: (Rsh16x16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh16x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh16x16 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpRsh16x32_0(v *Value) bool {
b := v.Block
// match: (Rsh16x32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh16x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh16x32 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh16x64 (Const16 [c]) (Const64 [d]))
- // cond:
// result: (Const16 [int64(int16(c) >> uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (Rsh16x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh16x64 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
return true
}
// match: (Rsh16x64 (Lsh16x64 x (Const64 [8])) (Const64 [8]))
- // cond:
// result: (SignExt8to16 (Trunc16to8 <typ.Int8> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 8 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 8 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 8 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 8 {
break
}
v.reset(OpSignExt8to16)
func rewriteValuegeneric_OpRsh16x8_0(v *Value) bool {
b := v.Block
// match: (Rsh16x8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh16x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh16x8 (Const16 [0]) _)
- // cond:
// result: (Const16 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst16)
func rewriteValuegeneric_OpRsh32Ux16_0(v *Value) bool {
b := v.Block
// match: (Rsh32Ux16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh32Ux64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh32Ux16 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpRsh32Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh32Ux32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh32Ux64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh32Ux32 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32Ux64 (Const32 [c]) (Const64 [d]))
- // cond:
// result: (Const32 [int64(int32(uint32(c) >> uint64(d)))])
for {
_ = v.Args[1]
return true
}
// match: (Rsh32Ux64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh32Ux64 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
return true
}
// match: (Rsh32Ux64 (Rsh32x64 x _) (Const64 <t> [31]))
- // cond:
// result: (Rsh32Ux64 x (Const64 <t> [31]))
for {
_ = v.Args[1]
return true
}
// match: (Rsh32Ux64 (Lsh32x64 x (Const64 [24])) (Const64 [24]))
- // cond:
// result: (ZeroExt8to32 (Trunc32to8 <typ.UInt8> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 24 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 24 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 24 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 24 {
break
}
v.reset(OpZeroExt8to32)
return true
}
// match: (Rsh32Ux64 (Lsh32x64 x (Const64 [16])) (Const64 [16]))
- // cond:
// result: (ZeroExt16to32 (Trunc32to16 <typ.UInt16> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 16 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 16 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 16 {
break
}
v.reset(OpZeroExt16to32)
func rewriteValuegeneric_OpRsh32Ux8_0(v *Value) bool {
b := v.Block
// match: (Rsh32Ux8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh32Ux64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh32Ux8 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpRsh32x16_0(v *Value) bool {
b := v.Block
// match: (Rsh32x16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh32x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh32x16 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpRsh32x32_0(v *Value) bool {
b := v.Block
// match: (Rsh32x32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh32x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh32x32 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh32x64 (Const32 [c]) (Const64 [d]))
- // cond:
// result: (Const32 [int64(int32(c) >> uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (Rsh32x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh32x64 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
return true
}
// match: (Rsh32x64 (Lsh32x64 x (Const64 [24])) (Const64 [24]))
- // cond:
// result: (SignExt8to32 (Trunc32to8 <typ.Int8> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 24 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 24 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 24 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 24 {
break
}
v.reset(OpSignExt8to32)
return true
}
// match: (Rsh32x64 (Lsh32x64 x (Const64 [16])) (Const64 [16]))
- // cond:
// result: (SignExt16to32 (Trunc32to16 <typ.Int16> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 16 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 16 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 16 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 16 {
break
}
v.reset(OpSignExt16to32)
func rewriteValuegeneric_OpRsh32x8_0(v *Value) bool {
b := v.Block
// match: (Rsh32x8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh32x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh32x8 (Const32 [0]) _)
- // cond:
// result: (Const32 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
func rewriteValuegeneric_OpRsh64Ux16_0(v *Value) bool {
b := v.Block
// match: (Rsh64Ux16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh64Ux64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh64Ux16 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpRsh64Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh64Ux32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh64Ux64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh64Ux32 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64Ux64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [int64(uint64(c) >> uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (Rsh64Ux64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh64Ux64 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
return true
}
// match: (Rsh64Ux64 (Rsh64x64 x _) (Const64 <t> [63]))
- // cond:
// result: (Rsh64Ux64 x (Const64 <t> [63]))
for {
_ = v.Args[1]
return true
}
// match: (Rsh64Ux64 (Lsh64x64 x (Const64 [56])) (Const64 [56]))
- // cond:
// result: (ZeroExt8to64 (Trunc64to8 <typ.UInt8> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 56 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 56 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 56 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 56 {
break
}
v.reset(OpZeroExt8to64)
return true
}
// match: (Rsh64Ux64 (Lsh64x64 x (Const64 [48])) (Const64 [48]))
- // cond:
// result: (ZeroExt16to64 (Trunc64to16 <typ.UInt16> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 48 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 48 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 48 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 48 {
break
}
v.reset(OpZeroExt16to64)
return true
}
// match: (Rsh64Ux64 (Lsh64x64 x (Const64 [32])) (Const64 [32]))
- // cond:
// result: (ZeroExt32to64 (Trunc64to32 <typ.UInt32> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 32 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 32 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 32 {
break
}
v.reset(OpZeroExt32to64)
func rewriteValuegeneric_OpRsh64Ux8_0(v *Value) bool {
b := v.Block
// match: (Rsh64Ux8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh64Ux64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh64Ux8 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpRsh64x16_0(v *Value) bool {
b := v.Block
// match: (Rsh64x16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh64x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh64x16 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpRsh64x32_0(v *Value) bool {
b := v.Block
// match: (Rsh64x32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh64x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh64x32 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh64x64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c >> uint64(d)])
for {
_ = v.Args[1]
return true
}
// match: (Rsh64x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh64x64 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
return true
}
// match: (Rsh64x64 (Lsh64x64 x (Const64 [56])) (Const64 [56]))
- // cond:
// result: (SignExt8to64 (Trunc64to8 <typ.Int8> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 56 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 56 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 56 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 56 {
break
}
v.reset(OpSignExt8to64)
return true
}
// match: (Rsh64x64 (Lsh64x64 x (Const64 [48])) (Const64 [48]))
- // cond:
// result: (SignExt16to64 (Trunc64to16 <typ.Int16> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 48 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 48 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 48 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 48 {
break
}
v.reset(OpSignExt16to64)
return true
}
// match: (Rsh64x64 (Lsh64x64 x (Const64 [32])) (Const64 [32]))
- // cond:
// result: (SignExt32to64 (Trunc64to32 <typ.Int32> x))
for {
_ = v.Args[1]
_ = v_0.Args[1]
x := v_0.Args[0]
v_0_1 := v_0.Args[1]
- if v_0_1.Op != OpConst64 {
- break
- }
- if v_0_1.AuxInt != 32 {
+ if v_0_1.Op != OpConst64 || v_0_1.AuxInt != 32 {
break
}
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 32 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 32 {
break
}
v.reset(OpSignExt32to64)
func rewriteValuegeneric_OpRsh64x8_0(v *Value) bool {
b := v.Block
// match: (Rsh64x8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh64x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh64x8 (Const64 [0]) _)
- // cond:
// result: (Const64 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
func rewriteValuegeneric_OpRsh8Ux16_0(v *Value) bool {
b := v.Block
// match: (Rsh8Ux16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh8Ux64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh8Ux16 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpRsh8Ux32_0(v *Value) bool {
b := v.Block
// match: (Rsh8Ux32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh8Ux64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh8Ux32 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
b := v.Block
typ := &b.Func.Config.Types
// match: (Rsh8Ux64 (Const8 [c]) (Const64 [d]))
- // cond:
// result: (Const8 [int64(int8(uint8(c) >> uint64(d)))])
for {
_ = v.Args[1]
return true
}
// match: (Rsh8Ux64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh8Ux64 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
return true
}
// match: (Rsh8Ux64 (Rsh8x64 x _) (Const64 <t> [7]))
- // cond:
// result: (Rsh8Ux64 x (Const64 <t> [7] ))
for {
_ = v.Args[1]
func rewriteValuegeneric_OpRsh8Ux8_0(v *Value) bool {
b := v.Block
// match: (Rsh8Ux8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh8Ux64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh8Ux8 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpRsh8x16_0(v *Value) bool {
b := v.Block
// match: (Rsh8x16 <t> x (Const16 [c]))
- // cond:
// result: (Rsh8x64 x (Const64 <t> [int64(uint16(c))]))
for {
t := v.Type
return true
}
// match: (Rsh8x16 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpRsh8x32_0(v *Value) bool {
b := v.Block
// match: (Rsh8x32 <t> x (Const32 [c]))
- // cond:
// result: (Rsh8x64 x (Const64 <t> [int64(uint32(c))]))
for {
t := v.Type
return true
}
// match: (Rsh8x32 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpRsh8x64_0(v *Value) bool {
b := v.Block
// match: (Rsh8x64 (Const8 [c]) (Const64 [d]))
- // cond:
// result: (Const8 [int64(int8(c) >> uint64(d))])
for {
_ = v.Args[1]
return true
}
// match: (Rsh8x64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Rsh8x64 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
func rewriteValuegeneric_OpRsh8x8_0(v *Value) bool {
b := v.Block
// match: (Rsh8x8 <t> x (Const8 [c]))
- // cond:
// result: (Rsh8x64 x (Const64 <t> [int64(uint8(c))]))
for {
t := v.Type
return true
}
// match: (Rsh8x8 (Const8 [0]) _)
- // cond:
// result: (Const8 [0])
for {
_ = v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst8)
}
func rewriteValuegeneric_OpSelect0_0(v *Value) bool {
// match: (Select0 (Div128u (Const64 [0]) lo y))
- // cond:
// result: (Div64u lo y)
for {
v_0 := v.Args[0]
}
y := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst64 {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpConst64 || v_0_0.AuxInt != 0 {
break
}
lo := v_0.Args[1]
}
func rewriteValuegeneric_OpSelect1_0(v *Value) bool {
// match: (Select1 (Div128u (Const64 [0]) lo y))
- // cond:
// result: (Mod64u lo y)
for {
v_0 := v.Args[0]
}
y := v_0.Args[2]
v_0_0 := v_0.Args[0]
- if v_0_0.Op != OpConst64 {
- break
- }
- if v_0_0.AuxInt != 0 {
+ if v_0_0.Op != OpConst64 || v_0_0.AuxInt != 0 {
break
}
lo := v_0.Args[1]
}
func rewriteValuegeneric_OpSignExt16to32_0(v *Value) bool {
// match: (SignExt16to32 (Const16 [c]))
- // cond:
// result: (Const32 [int64( int16(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSignExt16to64_0(v *Value) bool {
// match: (SignExt16to64 (Const16 [c]))
- // cond:
// result: (Const64 [int64( int16(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSignExt32to64_0(v *Value) bool {
// match: (SignExt32to64 (Const32 [c]))
- // cond:
// result: (Const64 [int64( int32(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSignExt8to16_0(v *Value) bool {
// match: (SignExt8to16 (Const8 [c]))
- // cond:
// result: (Const16 [int64( int8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSignExt8to32_0(v *Value) bool {
// match: (SignExt8to32 (Const8 [c]))
- // cond:
// result: (Const32 [int64( int8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSignExt8to64_0(v *Value) bool {
// match: (SignExt8to64 (Const8 [c]))
- // cond:
// result: (Const64 [int64( int8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSliceCap_0(v *Value) bool {
// match: (SliceCap (SliceMake _ _ (Const64 <t> [c])))
- // cond:
// result: (Const64 <t> [c])
for {
v_0 := v.Args[0]
return true
}
// match: (SliceCap (SliceMake _ _ (Const32 <t> [c])))
- // cond:
// result: (Const32 <t> [c])
for {
v_0 := v.Args[0]
return true
}
// match: (SliceCap (SliceMake _ _ (SliceCap x)))
- // cond:
// result: (SliceCap x)
for {
v_0 := v.Args[0]
return true
}
// match: (SliceCap (SliceMake _ _ (SliceLen x)))
- // cond:
// result: (SliceLen x)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSliceLen_0(v *Value) bool {
// match: (SliceLen (SliceMake _ (Const64 <t> [c]) _))
- // cond:
// result: (Const64 <t> [c])
for {
v_0 := v.Args[0]
return true
}
// match: (SliceLen (SliceMake _ (Const32 <t> [c]) _))
- // cond:
// result: (Const32 <t> [c])
for {
v_0 := v.Args[0]
return true
}
// match: (SliceLen (SliceMake _ (SliceLen x) _))
- // cond:
// result: (SliceLen x)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpSlicePtr_0(v *Value) bool {
// match: (SlicePtr (SliceMake (SlicePtr x) _ _))
- // cond:
// result: (SlicePtr x)
for {
v_0 := v.Args[0]
return true
}
// match: (Slicemask (Const32 [0]))
- // cond:
// result: (Const32 [0])
for {
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst32)
return true
}
// match: (Slicemask (Const64 [0]))
- // cond:
// result: (Const64 [0])
for {
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpConst64)
}
func rewriteValuegeneric_OpSqrt_0(v *Value) bool {
// match: (Sqrt (Const64F [c]))
- // cond:
// result: (Const64F [auxFrom64F(math.Sqrt(auxTo64F(c)))])
for {
v_0 := v.Args[0]
t2 := v_1.Type
_ = v_1.Args[1]
p2 := v_1.Args[0]
- if mem != v_1.Args[1] {
- break
- }
- if !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1)) {
+ if mem != v_1.Args[1] || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1)) {
break
}
v.reset(OpCopy)
t3 := mem.Aux
_ = mem.Args[2]
p3 := mem.Args[0]
- if oldmem != mem.Args[2] {
- break
- }
- if !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3))) {
+ if oldmem != mem.Args[2] || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3))) {
break
}
v.reset(OpCopy)
t4 := mem_2.Aux
_ = mem_2.Args[2]
p4 := mem_2.Args[0]
- if oldmem != mem_2.Args[2] {
- break
- }
- if !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3)) && disjoint(p1, sizeof(t1), p4, sizeof(t4))) {
+ if oldmem != mem_2.Args[2] || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3)) && disjoint(p1, sizeof(t1), p4, sizeof(t4))) {
break
}
v.reset(OpCopy)
t5 := mem_2_2.Aux
_ = mem_2_2.Args[2]
p5 := mem_2_2.Args[0]
- if oldmem != mem_2_2.Args[2] {
- break
- }
- if !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3)) && disjoint(p1, sizeof(t1), p4, sizeof(t4)) && disjoint(p1, sizeof(t1), p5, sizeof(t5))) {
+ if oldmem != mem_2_2.Args[2] || !(isSamePtr(p1, p2) && t2.Size() == sizeof(t1) && disjoint(p1, sizeof(t1), p3, sizeof(t3)) && disjoint(p1, sizeof(t1), p4, sizeof(t4)) && disjoint(p1, sizeof(t1), p5, sizeof(t5))) {
break
}
v.reset(OpCopy)
return true
}
// match: (Store _ (StructMake0) mem)
- // cond:
// result: mem
for {
mem := v.Args[2]
return true
}
// match: (Store dst (StructMake1 <t> f0) mem)
- // cond:
// result: (Store {t.FieldType(0)} (OffPtr <t.FieldType(0).PtrTo()> [0] dst) f0 mem)
for {
mem := v.Args[2]
config := b.Func.Config
fe := b.Func.fe
// match: (Store dst (StructMake2 <t> f0 f1) mem)
- // cond:
// result: (Store {t.FieldType(1)} (OffPtr <t.FieldType(1).PtrTo()> [t.FieldOff(1)] dst) f1 (Store {t.FieldType(0)} (OffPtr <t.FieldType(0).PtrTo()> [0] dst) f0 mem))
for {
mem := v.Args[2]
return true
}
// match: (Store dst (StructMake3 <t> f0 f1 f2) mem)
- // cond:
// result: (Store {t.FieldType(2)} (OffPtr <t.FieldType(2).PtrTo()> [t.FieldOff(2)] dst) f2 (Store {t.FieldType(1)} (OffPtr <t.FieldType(1).PtrTo()> [t.FieldOff(1)] dst) f1 (Store {t.FieldType(0)} (OffPtr <t.FieldType(0).PtrTo()> [0] dst) f0 mem)))
for {
mem := v.Args[2]
return true
}
// match: (Store dst (StructMake4 <t> f0 f1 f2 f3) mem)
- // cond:
// result: (Store {t.FieldType(3)} (OffPtr <t.FieldType(3).PtrTo()> [t.FieldOff(3)] dst) f3 (Store {t.FieldType(2)} (OffPtr <t.FieldType(2).PtrTo()> [t.FieldOff(2)] dst) f2 (Store {t.FieldType(1)} (OffPtr <t.FieldType(1).PtrTo()> [t.FieldOff(1)] dst) f1 (Store {t.FieldType(0)} (OffPtr <t.FieldType(0).PtrTo()> [0] dst) f0 mem))))
for {
mem := v.Args[2]
}
_ = v_1.Args[1]
src := v_1.Args[0]
- if mem != v_1.Args[1] {
- break
- }
- if !(!fe.CanSSA(t.(*types.Type))) {
+ if mem != v_1.Args[1] || !(!fe.CanSSA(t.(*types.Type))) {
break
}
v.reset(OpMove)
break
}
x := v_2.Aux
- if mem != v_2.Args[0] {
- break
- }
- if !(!fe.CanSSA(t.(*types.Type))) {
+ if mem != v_2.Args[0] || !(!fe.CanSSA(t.(*types.Type))) {
break
}
v.reset(OpMove)
return true
}
// match: (Store _ (ArrayMake0) mem)
- // cond:
// result: mem
for {
mem := v.Args[2]
return true
}
// match: (Store dst (ArrayMake1 e) mem)
- // cond:
// result: (Store {e.Type} dst e mem)
for {
mem := v.Args[2]
}
c := v_0_0.AuxInt
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpSP {
- break
- }
- if mem != v_0.Args[1] {
+ if v_0_0_0.Op != OpSP || mem != v_0.Args[1] {
break
}
x := v.Args[1]
}
c := v_0_0_0.AuxInt
v_0_0_0_0 := v_0_0_0.Args[0]
- if v_0_0_0_0.Op != OpSP {
- break
- }
- if mem != v_0_0.Args[1] {
+ if v_0_0_0_0.Op != OpSP || mem != v_0_0.Args[1] {
break
}
x := v.Args[1]
t2 := m2.Aux
_ = m2.Args[2]
op2 := m2.Args[0]
- if op2.Op != OpOffPtr {
- break
- }
- if op2.AuxInt != 0 {
+ if op2.Op != OpOffPtr || op2.AuxInt != 0 {
break
}
p2 := op2.Args[0]
t3 := m3.Aux
_ = m3.Args[2]
op3 := m3.Args[0]
- if op3.Op != OpOffPtr {
- break
- }
- if op3.AuxInt != 0 {
+ if op3.Op != OpOffPtr || op3.AuxInt != 0 {
break
}
p3 := op3.Args[0]
t4 := m4.Aux
_ = m4.Args[2]
op4 := m4.Args[0]
- if op4.Op != OpOffPtr {
- break
- }
- if op4.AuxInt != 0 {
+ if op4.Op != OpOffPtr || op4.AuxInt != 0 {
break
}
p4 := op4.Args[0]
t2 := m2.Aux
_ = m2.Args[2]
op2 := m2.Args[0]
- if op2.Op != OpOffPtr {
- break
- }
- if op2.AuxInt != 0 {
+ if op2.Op != OpOffPtr || op2.AuxInt != 0 {
break
}
p2 := op2.Args[0]
t3 := m3.Aux
_ = m3.Args[2]
op3 := m3.Args[0]
- if op3.Op != OpOffPtr {
- break
- }
- if op3.AuxInt != 0 {
+ if op3.Op != OpOffPtr || op3.AuxInt != 0 {
break
}
p3 := op3.Args[0]
t4 := m4.Aux
_ = m4.Args[2]
op4 := m4.Args[0]
- if op4.Op != OpOffPtr {
- break
- }
- if op4.AuxInt != 0 {
+ if op4.Op != OpOffPtr || op4.AuxInt != 0 {
break
}
p4 := op4.Args[0]
}
func rewriteValuegeneric_OpStringLen_0(v *Value) bool {
// match: (StringLen (StringMake _ (Const64 <t> [c])))
- // cond:
// result: (Const64 <t> [c])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpStringPtr_0(v *Value) bool {
// match: (StringPtr (StringMake (Addr <t> {s} base) _))
- // cond:
// result: (Addr <t> {s} base)
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpStructSelect_0(v *Value) bool {
// match: (StructSelect (StructMake1 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (StructSelect [0] (StructMake2 x _))
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (StructSelect [1] (StructMake2 _ x))
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (StructSelect [0] (StructMake3 x _ _))
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (StructSelect [1] (StructMake3 _ x _))
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (StructSelect [2] (StructMake3 _ _ x))
- // cond:
// result: x
for {
if v.AuxInt != 2 {
return true
}
// match: (StructSelect [0] (StructMake4 x _ _ _))
- // cond:
// result: x
for {
if v.AuxInt != 0 {
return true
}
// match: (StructSelect [1] (StructMake4 _ x _ _))
- // cond:
// result: x
for {
if v.AuxInt != 1 {
return true
}
// match: (StructSelect [2] (StructMake4 _ _ x _))
- // cond:
// result: x
for {
if v.AuxInt != 2 {
return true
}
// match: (StructSelect [3] (StructMake4 _ _ _ x))
- // cond:
// result: x
for {
if v.AuxInt != 3 {
return true
}
// match: (StructSelect [0] x:(IData _))
- // cond:
// result: x
for {
if v.AuxInt != 0 {
func rewriteValuegeneric_OpSub16_0(v *Value) bool {
b := v.Block
// match: (Sub16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (Const16 [int64(int16(c-d))])
for {
_ = v.Args[1]
return true
}
// match: (Sub16 <t> (Mul16 x y) (Mul16 x z))
- // cond:
// result: (Mul16 x (Sub16 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub16 <t> (Mul16 y x) (Mul16 x z))
- // cond:
// result: (Mul16 x (Sub16 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub16 <t> (Mul16 x y) (Mul16 z x))
- // cond:
// result: (Mul16 x (Sub16 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub16 <t> (Mul16 y x) (Mul16 z x))
- // cond:
// result: (Mul16 x (Sub16 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub16 x x)
- // cond:
// result: (Const16 [0])
for {
x := v.Args[1]
return true
}
// match: (Sub16 (Add16 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub16 (Add16 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub16 (Add16 x y) y)
- // cond:
// result: x
for {
y := v.Args[1]
func rewriteValuegeneric_OpSub16_10(v *Value) bool {
b := v.Block
// match: (Sub16 (Add16 y x) y)
- // cond:
// result: x
for {
y := v.Args[1]
return true
}
// match: (Sub16 (Const16 <t> [c]) (Sub16 x (Const16 <t> [d])))
- // cond:
// result: (Sub16 (Const16 <t> [int64(int16(c+d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Sub16 (Const16 <t> [c]) (Sub16 (Const16 <t> [d]) x))
- // cond:
// result: (Add16 (Const16 <t> [int64(int16(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
func rewriteValuegeneric_OpSub32_0(v *Value) bool {
b := v.Block
// match: (Sub32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (Const32 [int64(int32(c-d))])
for {
_ = v.Args[1]
return true
}
// match: (Sub32 <t> (Mul32 x y) (Mul32 x z))
- // cond:
// result: (Mul32 x (Sub32 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub32 <t> (Mul32 y x) (Mul32 x z))
- // cond:
// result: (Mul32 x (Sub32 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub32 <t> (Mul32 x y) (Mul32 z x))
- // cond:
// result: (Mul32 x (Sub32 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub32 <t> (Mul32 y x) (Mul32 z x))
- // cond:
// result: (Mul32 x (Sub32 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub32 x x)
- // cond:
// result: (Const32 [0])
for {
x := v.Args[1]
return true
}
// match: (Sub32 (Add32 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub32 (Add32 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub32 (Add32 x y) y)
- // cond:
// result: x
for {
y := v.Args[1]
func rewriteValuegeneric_OpSub32_10(v *Value) bool {
b := v.Block
// match: (Sub32 (Add32 y x) y)
- // cond:
// result: x
for {
y := v.Args[1]
return true
}
// match: (Sub32 (Const32 <t> [c]) (Sub32 x (Const32 <t> [d])))
- // cond:
// result: (Sub32 (Const32 <t> [int64(int32(c+d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Sub32 (Const32 <t> [c]) (Sub32 (Const32 <t> [d]) x))
- // cond:
// result: (Add32 (Const32 <t> [int64(int32(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
}
func rewriteValuegeneric_OpSub32F_0(v *Value) bool {
// match: (Sub32F (Const32F [c]) (Const32F [d]))
- // cond:
// result: (Const32F [auxFrom32F(auxTo32F(c) - auxTo32F(d))])
for {
_ = v.Args[1]
func rewriteValuegeneric_OpSub64_0(v *Value) bool {
b := v.Block
// match: (Sub64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c-d])
for {
_ = v.Args[1]
return true
}
// match: (Sub64 <t> (Mul64 x y) (Mul64 x z))
- // cond:
// result: (Mul64 x (Sub64 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub64 <t> (Mul64 y x) (Mul64 x z))
- // cond:
// result: (Mul64 x (Sub64 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub64 <t> (Mul64 x y) (Mul64 z x))
- // cond:
// result: (Mul64 x (Sub64 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub64 <t> (Mul64 y x) (Mul64 z x))
- // cond:
// result: (Mul64 x (Sub64 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub64 x x)
- // cond:
// result: (Const64 [0])
for {
x := v.Args[1]
return true
}
// match: (Sub64 (Add64 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub64 (Add64 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub64 (Add64 x y) y)
- // cond:
// result: x
for {
y := v.Args[1]
func rewriteValuegeneric_OpSub64_10(v *Value) bool {
b := v.Block
// match: (Sub64 (Add64 y x) y)
- // cond:
// result: x
for {
y := v.Args[1]
return true
}
// match: (Sub64 (Const64 <t> [c]) (Sub64 x (Const64 <t> [d])))
- // cond:
// result: (Sub64 (Const64 <t> [c+d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Sub64 (Const64 <t> [c]) (Sub64 (Const64 <t> [d]) x))
- // cond:
// result: (Add64 (Const64 <t> [c-d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
}
func rewriteValuegeneric_OpSub64F_0(v *Value) bool {
// match: (Sub64F (Const64F [c]) (Const64F [d]))
- // cond:
// result: (Const64F [auxFrom64F(auxTo64F(c) - auxTo64F(d))])
for {
_ = v.Args[1]
func rewriteValuegeneric_OpSub8_0(v *Value) bool {
b := v.Block
// match: (Sub8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (Const8 [int64(int8(c-d))])
for {
_ = v.Args[1]
return true
}
// match: (Sub8 <t> (Mul8 x y) (Mul8 x z))
- // cond:
// result: (Mul8 x (Sub8 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub8 <t> (Mul8 y x) (Mul8 x z))
- // cond:
// result: (Mul8 x (Sub8 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub8 <t> (Mul8 x y) (Mul8 z x))
- // cond:
// result: (Mul8 x (Sub8 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub8 <t> (Mul8 y x) (Mul8 z x))
- // cond:
// result: (Mul8 x (Sub8 <t> y z))
for {
t := v.Type
return true
}
// match: (Sub8 x x)
- // cond:
// result: (Const8 [0])
for {
x := v.Args[1]
return true
}
// match: (Sub8 (Add8 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub8 (Add8 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Sub8 (Add8 x y) y)
- // cond:
// result: x
for {
y := v.Args[1]
func rewriteValuegeneric_OpSub8_10(v *Value) bool {
b := v.Block
// match: (Sub8 (Add8 y x) y)
- // cond:
// result: x
for {
y := v.Args[1]
return true
}
// match: (Sub8 (Const8 <t> [c]) (Sub8 x (Const8 <t> [d])))
- // cond:
// result: (Sub8 (Const8 <t> [int64(int8(c+d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Sub8 (Const8 <t> [c]) (Sub8 (Const8 <t> [d]) x))
- // cond:
// result: (Add8 (Const8 <t> [int64(int8(c-d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
}
func rewriteValuegeneric_OpTrunc16to8_0(v *Value) bool {
// match: (Trunc16to8 (Const16 [c]))
- // cond:
// result: (Const8 [int64(int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc16to8 (ZeroExt8to16 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc16to8 (SignExt8to16 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpTrunc32to16_0(v *Value) bool {
// match: (Trunc32to16 (Const32 [c]))
- // cond:
// result: (Const16 [int64(int16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc32to16 (ZeroExt8to32 x))
- // cond:
// result: (ZeroExt8to16 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc32to16 (ZeroExt16to32 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc32to16 (SignExt8to32 x))
- // cond:
// result: (SignExt8to16 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc32to16 (SignExt16to32 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpTrunc32to8_0(v *Value) bool {
// match: (Trunc32to8 (Const32 [c]))
- // cond:
// result: (Const8 [int64(int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc32to8 (ZeroExt8to32 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc32to8 (SignExt8to32 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpTrunc64to16_0(v *Value) bool {
// match: (Trunc64to16 (Const64 [c]))
- // cond:
// result: (Const16 [int64(int16(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to16 (ZeroExt8to64 x))
- // cond:
// result: (ZeroExt8to16 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to16 (ZeroExt16to64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to16 (SignExt8to64 x))
- // cond:
// result: (SignExt8to16 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to16 (SignExt16to64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpTrunc64to32_0(v *Value) bool {
// match: (Trunc64to32 (Const64 [c]))
- // cond:
// result: (Const32 [int64(int32(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to32 (ZeroExt8to64 x))
- // cond:
// result: (ZeroExt8to32 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to32 (ZeroExt16to64 x))
- // cond:
// result: (ZeroExt16to32 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to32 (ZeroExt32to64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to32 (SignExt8to64 x))
- // cond:
// result: (SignExt8to32 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to32 (SignExt16to64 x))
- // cond:
// result: (SignExt16to32 x)
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to32 (SignExt32to64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpTrunc64to8_0(v *Value) bool {
// match: (Trunc64to8 (Const64 [c]))
- // cond:
// result: (Const8 [int64(int8(c))])
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to8 (ZeroExt8to64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
return true
}
// match: (Trunc64to8 (SignExt8to64 x))
- // cond:
// result: x
for {
v_0 := v.Args[0]
func rewriteValuegeneric_OpXor16_0(v *Value) bool {
b := v.Block
// match: (Xor16 (Const16 [c]) (Const16 [d]))
- // cond:
// result: (Const16 [int64(int16(c^d))])
for {
_ = v.Args[1]
return true
}
// match: (Xor16 (Const16 [d]) (Const16 [c]))
- // cond:
// result: (Const16 [int64(int16(c^d))])
for {
_ = v.Args[1]
return true
}
// match: (Xor16 x x)
- // cond:
// result: (Const16 [0])
for {
x := v.Args[1]
return true
}
// match: (Xor16 (Const16 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst16 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst16 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor16 x (Const16 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst16 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor16 x (Xor16 x y))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor16 x (Xor16 y x))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor16 (Xor16 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor16 (Xor16 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor16 (Const16 <t> [c]) (Xor16 (Const16 <t> [d]) x))
- // cond:
// result: (Xor16 (Const16 <t> [int64(int16(c^d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst16 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst16 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Xor16 (Const16 <t> [c]) (Xor16 x (Const16 <t> [d])))
- // cond:
// result: (Xor16 (Const16 <t> [int64(int16(c^d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst16 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst16 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Xor16 (Xor16 (Const16 <t> [d]) x) (Const16 <t> [c]))
- // cond:
// result: (Xor16 (Const16 <t> [int64(int16(c^d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Xor16 (Xor16 x (Const16 <t> [d])) (Const16 <t> [c]))
- // cond:
// result: (Xor16 (Const16 <t> [int64(int16(c^d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst16 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst16 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpXor32_0(v *Value) bool {
b := v.Block
// match: (Xor32 (Const32 [c]) (Const32 [d]))
- // cond:
// result: (Const32 [int64(int32(c^d))])
for {
_ = v.Args[1]
return true
}
// match: (Xor32 (Const32 [d]) (Const32 [c]))
- // cond:
// result: (Const32 [int64(int32(c^d))])
for {
_ = v.Args[1]
return true
}
// match: (Xor32 x x)
- // cond:
// result: (Const32 [0])
for {
x := v.Args[1]
return true
}
// match: (Xor32 (Const32 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst32 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst32 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor32 x (Const32 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst32 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor32 x (Xor32 x y))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor32 x (Xor32 y x))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor32 (Xor32 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor32 (Xor32 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor32 (Const32 <t> [c]) (Xor32 (Const32 <t> [d]) x))
- // cond:
// result: (Xor32 (Const32 <t> [int64(int32(c^d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst32 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst32 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Xor32 (Const32 <t> [c]) (Xor32 x (Const32 <t> [d])))
- // cond:
// result: (Xor32 (Const32 <t> [int64(int32(c^d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst32 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst32 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Xor32 (Xor32 (Const32 <t> [d]) x) (Const32 <t> [c]))
- // cond:
// result: (Xor32 (Const32 <t> [int64(int32(c^d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Xor32 (Xor32 x (Const32 <t> [d])) (Const32 <t> [c]))
- // cond:
// result: (Xor32 (Const32 <t> [int64(int32(c^d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst32 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst32 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpXor64_0(v *Value) bool {
b := v.Block
// match: (Xor64 (Const64 [c]) (Const64 [d]))
- // cond:
// result: (Const64 [c^d])
for {
_ = v.Args[1]
return true
}
// match: (Xor64 (Const64 [d]) (Const64 [c]))
- // cond:
// result: (Const64 [c^d])
for {
_ = v.Args[1]
return true
}
// match: (Xor64 x x)
- // cond:
// result: (Const64 [0])
for {
x := v.Args[1]
return true
}
// match: (Xor64 (Const64 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst64 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst64 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor64 x (Const64 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst64 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor64 x (Xor64 x y))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor64 x (Xor64 y x))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor64 (Xor64 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor64 (Xor64 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor64 (Const64 <t> [c]) (Xor64 (Const64 <t> [d]) x))
- // cond:
// result: (Xor64 (Const64 <t> [c^d]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst64 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst64 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Xor64 (Const64 <t> [c]) (Xor64 x (Const64 <t> [d])))
- // cond:
// result: (Xor64 (Const64 <t> [c^d]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst64 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst64 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Xor64 (Xor64 (Const64 <t> [d]) x) (Const64 <t> [c]))
- // cond:
// result: (Xor64 (Const64 <t> [c^d]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Xor64 (Xor64 x (Const64 <t> [d])) (Const64 <t> [c]))
- // cond:
// result: (Xor64 (Const64 <t> [c^d]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst64 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst64 || v_1.Type != t {
break
}
c := v_1.AuxInt
func rewriteValuegeneric_OpXor8_0(v *Value) bool {
b := v.Block
// match: (Xor8 (Const8 [c]) (Const8 [d]))
- // cond:
// result: (Const8 [int64(int8(c^d))])
for {
_ = v.Args[1]
return true
}
// match: (Xor8 (Const8 [d]) (Const8 [c]))
- // cond:
// result: (Const8 [int64(int8(c^d))])
for {
_ = v.Args[1]
return true
}
// match: (Xor8 x x)
- // cond:
// result: (Const8 [0])
for {
x := v.Args[1]
return true
}
// match: (Xor8 (Const8 [0]) x)
- // cond:
// result: x
for {
x := v.Args[1]
v_0 := v.Args[0]
- if v_0.Op != OpConst8 {
- break
- }
- if v_0.AuxInt != 0 {
+ if v_0.Op != OpConst8 || v_0.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor8 x (Const8 [0]))
- // cond:
// result: x
for {
_ = v.Args[1]
x := v.Args[0]
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.AuxInt != 0 {
+ if v_1.Op != OpConst8 || v_1.AuxInt != 0 {
break
}
v.reset(OpCopy)
return true
}
// match: (Xor8 x (Xor8 x y))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor8 x (Xor8 y x))
- // cond:
// result: y
for {
_ = v.Args[1]
return true
}
// match: (Xor8 (Xor8 x y) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor8 (Xor8 y x) x)
- // cond:
// result: y
for {
x := v.Args[1]
return true
}
// match: (Xor8 (Const8 <t> [c]) (Xor8 (Const8 <t> [d]) x))
- // cond:
// result: (Xor8 (Const8 <t> [int64(int8(c^d))]) x)
for {
_ = v.Args[1]
}
x := v_1.Args[1]
v_1_0 := v_1.Args[0]
- if v_1_0.Op != OpConst8 {
- break
- }
- if v_1_0.Type != t {
+ if v_1_0.Op != OpConst8 || v_1_0.Type != t {
break
}
d := v_1_0.AuxInt
return true
}
// match: (Xor8 (Const8 <t> [c]) (Xor8 x (Const8 <t> [d])))
- // cond:
// result: (Xor8 (Const8 <t> [int64(int8(c^d))]) x)
for {
_ = v.Args[1]
_ = v_1.Args[1]
x := v_1.Args[0]
v_1_1 := v_1.Args[1]
- if v_1_1.Op != OpConst8 {
- break
- }
- if v_1_1.Type != t {
+ if v_1_1.Op != OpConst8 || v_1_1.Type != t {
break
}
d := v_1_1.AuxInt
return true
}
// match: (Xor8 (Xor8 (Const8 <t> [d]) x) (Const8 <t> [c]))
- // cond:
// result: (Xor8 (Const8 <t> [int64(int8(c^d))]) x)
for {
_ = v.Args[1]
t := v_0_0.Type
d := v_0_0.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
return true
}
// match: (Xor8 (Xor8 x (Const8 <t> [d])) (Const8 <t> [c]))
- // cond:
// result: (Xor8 (Const8 <t> [int64(int8(c^d))]) x)
for {
_ = v.Args[1]
t := v_0_1.Type
d := v_0_1.AuxInt
v_1 := v.Args[1]
- if v_1.Op != OpConst8 {
- break
- }
- if v_1.Type != t {
+ if v_1.Op != OpConst8 || v_1.Type != t {
break
}
c := v_1.AuxInt
}
c := v_0_0.AuxInt
v_0_0_0 := v_0_0.Args[0]
- if v_0_0_0.Op != OpSP {
- break
- }
- if mem != v_0.Args[1] {
- break
- }
- if !(mem.Op == OpStaticCall && isSameSym(mem.Aux, "runtime.newobject") && c == config.ctxt.FixedFrameSize()+config.RegSize) {
+ if v_0_0_0.Op != OpSP || mem != v_0.Args[1] || !(mem.Op == OpStaticCall && isSameSym(mem.Aux, "runtime.newobject") && c == config.ctxt.FixedFrameSize()+config.RegSize) {
break
}
v.reset(OpCopy)
_ = v.Args[1]
dst1 := v.Args[0]
move := v.Args[1]
- if move.Op != OpMove {
- break
- }
- if move.AuxInt != n {
- break
- }
- if move.Aux != t {
+ if move.Op != OpMove || move.AuxInt != n || move.Aux != t {
break
}
mem := move.Args[2]
}
x := vardef.Aux
move := vardef.Args[0]
- if move.Op != OpMove {
- break
- }
- if move.AuxInt != n {
- break
- }
- if move.Aux != t {
+ if move.Op != OpMove || move.AuxInt != n || move.Aux != t {
break
}
mem := move.Args[2]
}
func rewriteValuegeneric_OpZeroExt16to32_0(v *Value) bool {
// match: (ZeroExt16to32 (Const16 [c]))
- // cond:
// result: (Const32 [int64(uint16(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpZeroExt16to64_0(v *Value) bool {
// match: (ZeroExt16to64 (Const16 [c]))
- // cond:
// result: (Const64 [int64(uint16(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpZeroExt32to64_0(v *Value) bool {
// match: (ZeroExt32to64 (Const32 [c]))
- // cond:
// result: (Const64 [int64(uint32(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpZeroExt8to16_0(v *Value) bool {
// match: (ZeroExt8to16 (Const8 [c]))
- // cond:
// result: (Const16 [int64( uint8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpZeroExt8to32_0(v *Value) bool {
// match: (ZeroExt8to32 (Const8 [c]))
- // cond:
// result: (Const32 [int64( uint8(c))])
for {
v_0 := v.Args[0]
}
func rewriteValuegeneric_OpZeroExt8to64_0(v *Value) bool {
// match: (ZeroExt8to64 (Const8 [c]))
- // cond:
// result: (Const64 [int64( uint8(c))])
for {
v_0 := v.Args[0]
switch b.Kind {
case BlockIf:
// match: (If (Not cond) yes no)
- // cond:
// result: (If cond no yes)
for v.Op == OpNot {
cond := v.Args[0]