diff --git a/src/cmd/compile/internal/ssa/gen/PPC64.rules b/src/cmd/compile/internal/ssa/gen/PPC64.rules index c8ecb55703..b8270eae35 100644 --- a/src/cmd/compile/internal/ssa/gen/PPC64.rules +++ b/src/cmd/compile/internal/ssa/gen/PPC64.rules @@ -860,12 +860,11 @@ (MOVHreg (MOVDconst [c])) -> (MOVDconst [int64(int16(c))]) // Lose widening ops fed to to stores -(MOVBstore [off] {sym} ptr (MOVBreg x) mem) -> (MOVBstore [off] {sym} ptr x mem) -(MOVBstore [off] {sym} ptr (MOVBZreg x) mem) -> (MOVBstore [off] {sym} ptr x mem) -(MOVHstore [off] {sym} ptr (MOVHreg x) mem) -> (MOVHstore [off] {sym} ptr x mem) -(MOVHstore [off] {sym} ptr (MOVHZreg x) mem) -> (MOVHstore [off] {sym} ptr x mem) -(MOVWstore [off] {sym} ptr (MOVWreg x) mem) -> (MOVWstore [off] {sym} ptr x mem) -(MOVWstore [off] {sym} ptr (MOVWZreg x) mem) -> (MOVWstore [off] {sym} ptr x mem) +(MOVBstore [off] {sym} ptr (MOV(B|BZ|H|HZ|W|WZ)reg x) mem) -> (MOVBstore [off] {sym} ptr x mem) +(MOVHstore [off] {sym} ptr (MOV(H|HZ|W|WZ)reg x) mem) -> (MOVHstore [off] {sym} ptr x mem) +(MOVWstore [off] {sym} ptr (MOV(W|WZ)reg x) mem) -> (MOVWstore [off] {sym} ptr x mem) +(MOVBstore [off] {sym} ptr (SRWconst (MOV(H|HZ)reg x) [c]) mem) && c <= 8 -> (MOVBstore [off] {sym} ptr (SRWconst x [c]) mem) +(MOVBstore [off] {sym} ptr (SRWconst (MOV(W|WZ)reg x) [c]) mem) && c <= 24 -> (MOVBstore [off] {sym} ptr (SRWconst x [c]) mem) // Lose W-widening ops fed to compare-W (CMPW x (MOVWreg y)) -> (CMPW x y) @@ -898,16 +897,16 @@ (FSUBS (FMULS x y) z) -> (FMSUBS x y z) -// The following statements are found in encoding/binary functions UintXX (load) and PutUintXX (store) -// and convert the statements in these functions from multiple single byte loads or stores to -// the single largest possible load or store. For now only little endian loads and stores on -// little endian machines are implemented. Longer rules make use of the match with shorter rules -// where possible. +// The following rules are intended to match statements as are found in encoding/binary +// functions UintXX (load) and PutUintXX (store), combining multi-byte loads and stores +// into wider loads and stores. +// Initial implementation handles only little endian loads and stores on little endian +// targets. // TODO implement big endian loads and stores for little endian machines (using byte reverse // loads and stores). // b[0] | b[1]<<8 -> load 16-bit Little endian (OR x0:(MOVBZload [i0] {s} p mem) - o1:(SLWconst x1:(MOVBZload [i1] {s} p mem) [8])) + o1:(SL(W|D)const x1:(MOVBZload [i1] {s} p mem) [8])) && !config.BigEndian && i1 == i0+1 && x0.Uses ==1 && x1.Uses == 1 @@ -917,8 +916,8 @@ -> @mergePoint(b,x0,x1) (MOVHZload {s} [i0] p mem) // b[0] | b[1]<<8 | b[2]<<16 | b[3]<<24 -> load 32-bit Little endian -(OR s1:(SLWconst x2:(MOVBZload [i3] {s} p mem) [24]) - o0:(OR s0:(SLWconst x1:(MOVBZload [i2] {s} p mem) [16]) x0:(MOVHZload [i0] {s} p mem))) +(OR s1:(SL(W|D)const x2:(MOVBZload [i3] {s} p mem) [24]) + o0:(OR s0:(SL(W|D)const x1:(MOVBZload [i2] {s} p mem) [16]) x0:(MOVHZload [i0] {s} p mem))) && !config.BigEndian && i2 == i0+2 && i3 == i0+3 @@ -932,37 +931,45 @@ -> @mergePoint(b,x0,x1,x2) (MOVWZload {s} [i0] p mem) // b[0] | b[1]<<8 | b[2]<<16 | b[3]<<24 | b[4] <<32 | b[5]<<40 | b[6]<<48 | b[7]<<56 -> load 64-bit Little endian -// Can't build on shorter rules because they use SLW instead of SLD +// Note: long rules with commutative ops will result in very large functions in rewritePPC64, +// so shorter rules which make use of previously defined rules are preferred. // Offset must be multiple of 4 for MOVD (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) - o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) - o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) - o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))))))) + x0:(MOVWZload {s} [i0] p mem))))) && !config.BigEndian && i0%4 == 0 - && 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 - && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 - && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) - && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - -> @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + && 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) + -> @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + +// 2 byte store Little endian as in: +// b[0] = byte(v >> 16) +// b[1] = byte(v >> 24) +// Added mainly to use when matching longer rules below +(MOVBstore [i1] {s} p (SR(W|D)const w [24]) + x0:(MOVBstore [i0] {s} p (SR(W|D)const w [16]) mem)) + && !config.BigEndian + && x0.Uses == 1 + && i1 == i0+1 + && clobber(x0) + -> (MOVHstore [i0] {s} p (SRWconst w [16]) mem) // 2 byte store Little endian as in: // b[0] = byte(v) // b[1] = byte(v >> 8) -(MOVBstore [i1] {s} p (SRWconst (MOVHZreg w) [8]) +(MOVBstore [i1] {s} p (SR(W|D)const w [8]) x0:(MOVBstore [i0] {s} p w mem)) && !config.BigEndian && x0.Uses == 1 @@ -971,18 +978,14 @@ -> (MOVHstore [i0] {s} p w mem) // 4 byte store Little endian as in: -// b[0] = byte(v) -// b[1] = byte(v >> 8) -// b[2] = byte(v >> 16) -// b[3] = byte(v >> 24) -(MOVBstore [i3] {s} p (SRWconst w [24]) - x0:(MOVBstore [i2] {s} p (SRWconst w [16]) - x1:(MOVBstore [i1] {s} p (SRWconst w [8]) - x2:(MOVBstore [i0] {s} p w mem)))) +// b[0:1] = uint16(v) +// b[2:3] = uint16(v >> 16) +(MOVHstore [i1] {s} p (SR(W|D)const w [16]) + x0:(MOVHstore [i0] {s} p w mem)) && !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) + && x0.Uses == 1 + && i1 == i0+2 + && clobber(x0) -> (MOVWstore [i0] {s} p w mem) // 8 byte store Little endian as in: @@ -994,19 +997,16 @@ // b[5] = byte(v >> 40) // b[6] = byte(v >> 48) // b[7] = byte(v >> 56) +// Built on previously defined rules // Offset must be multiple of 4 for MOVDstore -// Can't build on previous rules for 2 or 4 bytes because they use SRW not SRD (MOVBstore [i7] {s} p (SRDconst w [56]) x0:(MOVBstore [i6] {s} p (SRDconst w [48]) x1:(MOVBstore [i5] {s} p (SRDconst w [40]) x2:(MOVBstore [i4] {s} p (SRDconst w [32]) - x3:(MOVBstore [i3] {s} p (SRDconst w [24]) - x4:(MOVBstore [i2] {s} p (SRDconst w [16]) - x5:(MOVBstore [i1] {s} p (SRDconst w [8]) - x6:(MOVBstore [i0] {s} p w mem)))))))) + x3:(MOVWstore [i0] {s} p w mem))))) && !config.BigEndian && i0%4 == 0 - && 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) + && 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) -> (MOVDstore [i0] {s} p w mem) diff --git a/src/cmd/compile/internal/ssa/rewritePPC64.go b/src/cmd/compile/internal/ssa/rewritePPC64.go index db79d828de..b407ce4ffd 100644 --- a/src/cmd/compile/internal/ssa/rewritePPC64.go +++ b/src/cmd/compile/internal/ssa/rewritePPC64.go @@ -448,7 +448,7 @@ func rewriteValuePPC64(v *Value) bool { case OpPPC64MOVBreg: return rewriteValuePPC64_OpPPC64MOVBreg_0(v) case OpPPC64MOVBstore: - return rewriteValuePPC64_OpPPC64MOVBstore_0(v) + return rewriteValuePPC64_OpPPC64MOVBstore_0(v) || rewriteValuePPC64_OpPPC64MOVBstore_10(v) case OpPPC64MOVBstorezero: return rewriteValuePPC64_OpPPC64MOVBstorezero_0(v) case OpPPC64MOVDload: @@ -488,7 +488,7 @@ func rewriteValuePPC64(v *Value) bool { case OpPPC64NotEqual: return rewriteValuePPC64_OpPPC64NotEqual_0(v) case OpPPC64OR: - return rewriteValuePPC64_OpPPC64OR_0(v) || rewriteValuePPC64_OpPPC64OR_10(v) || rewriteValuePPC64_OpPPC64OR_20(v) || rewriteValuePPC64_OpPPC64OR_30(v) || rewriteValuePPC64_OpPPC64OR_40(v) || rewriteValuePPC64_OpPPC64OR_50(v) || rewriteValuePPC64_OpPPC64OR_60(v) || rewriteValuePPC64_OpPPC64OR_70(v) || rewriteValuePPC64_OpPPC64OR_80(v) || rewriteValuePPC64_OpPPC64OR_90(v) || rewriteValuePPC64_OpPPC64OR_100(v) || rewriteValuePPC64_OpPPC64OR_110(v) || rewriteValuePPC64_OpPPC64OR_120(v) || rewriteValuePPC64_OpPPC64OR_130(v) || rewriteValuePPC64_OpPPC64OR_140(v) + return rewriteValuePPC64_OpPPC64OR_0(v) || rewriteValuePPC64_OpPPC64OR_10(v) || rewriteValuePPC64_OpPPC64OR_20(v) || rewriteValuePPC64_OpPPC64OR_30(v) case OpPPC64ORN: return rewriteValuePPC64_OpPPC64ORN_0(v) case OpPPC64ORconst: @@ -7154,8 +7154,8 @@ func rewriteValuePPC64_OpPPC64MOVBreg_0(v *Value) bool { func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { b := v.Block _ = b - config := b.Func.Config - _ = config + typ := &b.Func.Config.Types + _ = typ // match: (MOVBstore [off1] {sym} (ADDconst [off2] x) val mem) // cond: is16Bit(off1+off2) // result: (MOVBstore [off1+off2] {sym} x val mem) @@ -7277,7 +7277,342 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { v.AddArg(mem) return true } - // match: (MOVBstore [i1] {s} p (SRWconst (MOVHZreg w) [8]) x0:(MOVBstore [i0] {s} p w mem)) + // match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem) + // cond: + // result: (MOVBstore [off] {sym} ptr x mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64MOVHreg { + break + } + x := v_1.Args[0] + mem := v.Args[2] + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v.AddArg(x) + v.AddArg(mem) + return true + } + // match: (MOVBstore [off] {sym} ptr (MOVHZreg x) mem) + // cond: + // result: (MOVBstore [off] {sym} ptr x mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64MOVHZreg { + break + } + x := v_1.Args[0] + mem := v.Args[2] + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v.AddArg(x) + v.AddArg(mem) + return true + } + // match: (MOVBstore [off] {sym} ptr (MOVWreg x) mem) + // cond: + // result: (MOVBstore [off] {sym} ptr x mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64MOVWreg { + break + } + x := v_1.Args[0] + mem := v.Args[2] + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v.AddArg(x) + v.AddArg(mem) + return true + } + // match: (MOVBstore [off] {sym} ptr (MOVWZreg x) mem) + // cond: + // result: (MOVBstore [off] {sym} ptr x mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64MOVWZreg { + break + } + x := v_1.Args[0] + mem := v.Args[2] + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v.AddArg(x) + v.AddArg(mem) + return true + } + // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVHreg x) [c]) mem) + // cond: c <= 8 + // result: (MOVBstore [off] {sym} ptr (SRWconst x [c]) mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRWconst { + break + } + c := v_1.AuxInt + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpPPC64MOVHreg { + break + } + x := v_1_0.Args[0] + mem := v.Args[2] + if !(c <= 8) { + break + } + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32) + v0.AuxInt = c + v0.AddArg(x) + v.AddArg(v0) + v.AddArg(mem) + return true + } + return false +} +func rewriteValuePPC64_OpPPC64MOVBstore_10(v *Value) bool { + b := v.Block + _ = b + config := b.Func.Config + _ = config + typ := &b.Func.Config.Types + _ = typ + // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVHZreg x) [c]) mem) + // cond: c <= 8 + // result: (MOVBstore [off] {sym} ptr (SRWconst x [c]) mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRWconst { + break + } + c := v_1.AuxInt + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpPPC64MOVHZreg { + break + } + x := v_1_0.Args[0] + mem := v.Args[2] + if !(c <= 8) { + break + } + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32) + v0.AuxInt = c + v0.AddArg(x) + v.AddArg(v0) + v.AddArg(mem) + return true + } + // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVWreg x) [c]) mem) + // cond: c <= 24 + // result: (MOVBstore [off] {sym} ptr (SRWconst x [c]) mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRWconst { + break + } + c := v_1.AuxInt + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpPPC64MOVWreg { + break + } + x := v_1_0.Args[0] + mem := v.Args[2] + if !(c <= 24) { + break + } + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32) + v0.AuxInt = c + v0.AddArg(x) + v.AddArg(v0) + v.AddArg(mem) + return true + } + // match: (MOVBstore [off] {sym} ptr (SRWconst (MOVWZreg x) [c]) mem) + // cond: c <= 24 + // result: (MOVBstore [off] {sym} ptr (SRWconst x [c]) mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRWconst { + break + } + c := v_1.AuxInt + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpPPC64MOVWZreg { + break + } + x := v_1_0.Args[0] + mem := v.Args[2] + if !(c <= 24) { + break + } + v.reset(OpPPC64MOVBstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt32) + v0.AuxInt = c + v0.AddArg(x) + v.AddArg(v0) + v.AddArg(mem) + return true + } + // match: (MOVBstore [i1] {s} p (SRWconst w [24]) x0:(MOVBstore [i0] {s} p (SRWconst w [16]) mem)) + // cond: !config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0) + // result: (MOVHstore [i0] {s} p (SRWconst w [16]) mem) + for { + i1 := v.AuxInt + s := v.Aux + _ = v.Args[2] + p := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRWconst { + break + } + if v_1.AuxInt != 24 { + break + } + w := v_1.Args[0] + x0 := v.Args[2] + if x0.Op != OpPPC64MOVBstore { + break + } + i0 := x0.AuxInt + if x0.Aux != s { + break + } + _ = x0.Args[2] + if p != x0.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 + } + mem := x0.Args[2] + if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) { + break + } + v.reset(OpPPC64MOVHstore) + v.AuxInt = i0 + v.Aux = s + v.AddArg(p) + v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt16) + v0.AuxInt = 16 + v0.AddArg(w) + v.AddArg(v0) + v.AddArg(mem) + return true + } + // match: (MOVBstore [i1] {s} p (SRDconst w [24]) x0:(MOVBstore [i0] {s} p (SRDconst w [16]) mem)) + // cond: !config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0) + // result: (MOVHstore [i0] {s} p (SRWconst w [16]) mem) + for { + i1 := v.AuxInt + s := v.Aux + _ = v.Args[2] + p := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRDconst { + break + } + if v_1.AuxInt != 24 { + break + } + w := v_1.Args[0] + x0 := v.Args[2] + if x0.Op != OpPPC64MOVBstore { + break + } + i0 := x0.AuxInt + if x0.Aux != s { + break + } + _ = x0.Args[2] + if p != x0.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 + } + mem := x0.Args[2] + if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) { + break + } + v.reset(OpPPC64MOVHstore) + v.AuxInt = i0 + v.Aux = s + v.AddArg(p) + v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt16) + v0.AuxInt = 16 + v0.AddArg(w) + v.AddArg(v0) + v.AddArg(mem) + return true + } + // match: (MOVBstore [i1] {s} p (SRWconst w [8]) x0:(MOVBstore [i0] {s} p w mem)) // cond: !config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0) // result: (MOVHstore [i0] {s} p w mem) for { @@ -7292,11 +7627,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { if v_1.AuxInt != 8 { break } - v_1_0 := v_1.Args[0] - if v_1_0.Op != OpPPC64MOVHZreg { - break - } - w := v_1_0.Args[0] + w := v_1.Args[0] x0 := v.Args[2] if x0.Op != OpPPC64MOVBstore { break @@ -7324,19 +7655,19 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { v.AddArg(mem) return true } - // match: (MOVBstore [i3] {s} p (SRWconst w [24]) x0:(MOVBstore [i2] {s} p (SRWconst w [16]) x1:(MOVBstore [i1] {s} p (SRWconst w [8]) x2:(MOVBstore [i0] {s} p w mem)))) - // cond: !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) - // result: (MOVWstore [i0] {s} p w mem) + // match: (MOVBstore [i1] {s} p (SRDconst w [8]) x0:(MOVBstore [i0] {s} p w mem)) + // cond: !config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0) + // result: (MOVHstore [i0] {s} p w mem) for { - i3 := v.AuxInt + i1 := v.AuxInt s := v.Aux _ = v.Args[2] p := v.Args[0] v_1 := v.Args[1] - if v_1.Op != OpPPC64SRWconst { + if v_1.Op != OpPPC64SRDconst { break } - if v_1.AuxInt != 24 { + if v_1.AuxInt != 8 { break } w := v_1.Args[0] @@ -7344,7 +7675,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { if x0.Op != OpPPC64MOVBstore { break } - i2 := x0.AuxInt + i0 := x0.AuxInt if x0.Aux != s { break } @@ -7352,58 +7683,14 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { if p != x0.Args[0] { break } - x0_1 := x0.Args[1] - if x0_1.Op != OpPPC64SRWconst { + if w != x0.Args[1] { break } - if x0_1.AuxInt != 16 { + mem := x0.Args[2] + if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) { break } - if w != x0_1.Args[0] { - break - } - x1 := x0.Args[2] - if x1.Op != OpPPC64MOVBstore { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[2] - if p != x1.Args[0] { - break - } - x1_1 := x1.Args[1] - if x1_1.Op != OpPPC64SRWconst { - break - } - if x1_1.AuxInt != 8 { - break - } - if w != x1_1.Args[0] { - break - } - x2 := x1.Args[2] - if x2.Op != OpPPC64MOVBstore { - break - } - i0 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[2] - if p != x2.Args[0] { - break - } - if w != x2.Args[1] { - break - } - mem := x2.Args[2] - 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)) { - break - } - v.reset(OpPPC64MOVWstore) + v.reset(OpPPC64MOVHstore) v.AuxInt = i0 v.Aux = s v.AddArg(p) @@ -7411,8 +7698,8 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { v.AddArg(mem) return true } - // match: (MOVBstore [i7] {s} p (SRDconst w [56]) x0:(MOVBstore [i6] {s} p (SRDconst w [48]) x1:(MOVBstore [i5] {s} p (SRDconst w [40]) x2:(MOVBstore [i4] {s} p (SRDconst w [32]) x3:(MOVBstore [i3] {s} p (SRDconst w [24]) x4:(MOVBstore [i2] {s} p (SRDconst w [16]) x5:(MOVBstore [i1] {s} p (SRDconst w [8]) x6:(MOVBstore [i0] {s} p w mem)))))))) - // cond: !config.BigEndian && i0%4 == 0 && 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) + // match: (MOVBstore [i7] {s} p (SRDconst w [56]) x0:(MOVBstore [i6] {s} p (SRDconst w [48]) x1:(MOVBstore [i5] {s} p (SRDconst w [40]) x2:(MOVBstore [i4] {s} p (SRDconst w [32]) x3:(MOVWstore [i0] {s} p w mem))))) + // cond: !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) // result: (MOVDstore [i0] {s} p w mem) for { i7 := v.AuxInt @@ -7494,10 +7781,10 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { break } x3 := x2.Args[2] - if x3.Op != OpPPC64MOVBstore { + if x3.Op != OpPPC64MOVWstore { break } - i3 := x3.AuxInt + i0 := x3.AuxInt if x3.Aux != s { break } @@ -7505,77 +7792,11 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool { if p != x3.Args[0] { break } - x3_1 := x3.Args[1] - if x3_1.Op != OpPPC64SRDconst { + if w != x3.Args[1] { break } - if x3_1.AuxInt != 24 { - break - } - if w != x3_1.Args[0] { - break - } - x4 := x3.Args[2] - if x4.Op != OpPPC64MOVBstore { - break - } - i2 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[2] - if p != x4.Args[0] { - break - } - x4_1 := x4.Args[1] - if x4_1.Op != OpPPC64SRDconst { - break - } - if x4_1.AuxInt != 16 { - break - } - if w != x4_1.Args[0] { - break - } - x5 := x4.Args[2] - if x5.Op != OpPPC64MOVBstore { - break - } - i1 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[2] - if p != x5.Args[0] { - break - } - x5_1 := x5.Args[1] - if x5_1.Op != OpPPC64SRDconst { - break - } - if x5_1.AuxInt != 8 { - break - } - if w != x5_1.Args[0] { - break - } - x6 := x5.Args[2] - if x6.Op != OpPPC64MOVBstore { - break - } - i0 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[2] - if p != x6.Args[0] { - break - } - if w != x6.Args[1] { - break - } - mem := x6.Args[2] - if !(!config.BigEndian && i0%4 == 0 && 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)) { + mem := x3.Args[2] + 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)) { break } v.reset(OpPPC64MOVDstore) @@ -8150,6 +8371,10 @@ func rewriteValuePPC64_OpPPC64MOVHreg_0(v *Value) bool { return false } func rewriteValuePPC64_OpPPC64MOVHstore_0(v *Value) bool { + b := v.Block + _ = b + config := b.Func.Config + _ = config // match: (MOVHstore [off1] {sym} (ADDconst [off2] x) val mem) // cond: is16Bit(off1+off2) // result: (MOVHstore [off1+off2] {sym} x val mem) @@ -8271,6 +8496,136 @@ func rewriteValuePPC64_OpPPC64MOVHstore_0(v *Value) bool { v.AddArg(mem) return true } + // match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem) + // cond: + // result: (MOVHstore [off] {sym} ptr x mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64MOVWreg { + break + } + x := v_1.Args[0] + mem := v.Args[2] + v.reset(OpPPC64MOVHstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v.AddArg(x) + v.AddArg(mem) + return true + } + // match: (MOVHstore [off] {sym} ptr (MOVWZreg x) mem) + // cond: + // result: (MOVHstore [off] {sym} ptr x mem) + for { + off := v.AuxInt + sym := v.Aux + _ = v.Args[2] + ptr := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64MOVWZreg { + break + } + x := v_1.Args[0] + mem := v.Args[2] + v.reset(OpPPC64MOVHstore) + v.AuxInt = off + v.Aux = sym + v.AddArg(ptr) + v.AddArg(x) + v.AddArg(mem) + return true + } + // match: (MOVHstore [i1] {s} p (SRWconst w [16]) x0:(MOVHstore [i0] {s} p w mem)) + // cond: !config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0) + // result: (MOVWstore [i0] {s} p w mem) + for { + i1 := v.AuxInt + s := v.Aux + _ = v.Args[2] + p := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRWconst { + break + } + if v_1.AuxInt != 16 { + break + } + w := v_1.Args[0] + x0 := v.Args[2] + if x0.Op != OpPPC64MOVHstore { + break + } + i0 := x0.AuxInt + if x0.Aux != s { + break + } + _ = x0.Args[2] + if p != x0.Args[0] { + break + } + if w != x0.Args[1] { + break + } + mem := x0.Args[2] + if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0)) { + break + } + v.reset(OpPPC64MOVWstore) + v.AuxInt = i0 + v.Aux = s + v.AddArg(p) + v.AddArg(w) + v.AddArg(mem) + return true + } + // match: (MOVHstore [i1] {s} p (SRDconst w [16]) x0:(MOVHstore [i0] {s} p w mem)) + // cond: !config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0) + // result: (MOVWstore [i0] {s} p w mem) + for { + i1 := v.AuxInt + s := v.Aux + _ = v.Args[2] + p := v.Args[0] + v_1 := v.Args[1] + if v_1.Op != OpPPC64SRDconst { + break + } + if v_1.AuxInt != 16 { + break + } + w := v_1.Args[0] + x0 := v.Args[2] + if x0.Op != OpPPC64MOVHstore { + break + } + i0 := x0.AuxInt + if x0.Aux != s { + break + } + _ = x0.Args[2] + if p != x0.Args[0] { + break + } + if w != x0.Args[1] { + break + } + mem := x0.Args[2] + if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+2 && clobber(x0)) { + break + } + v.reset(OpPPC64MOVWstore) + v.AuxInt = i0 + v.Aux = s + v.AddArg(p) + v.AddArg(w) + v.AddArg(mem) + return true + } return false } func rewriteValuePPC64_OpPPC64MOVHstorezero_0(v *Value) bool { @@ -9507,6 +9862,106 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool { v0.AddArg(mem) return true } + // match: (OR x0:(MOVBZload [i0] {s} p mem) o1:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) + // cond: !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) + // result: @mergePoint(b,x0,x1) (MOVHZload {s} [i0] p mem) + for { + t := v.Type + _ = v.Args[1] + x0 := v.Args[0] + if x0.Op != OpPPC64MOVBZload { + break + } + i0 := x0.AuxInt + s := x0.Aux + _ = x0.Args[1] + p := x0.Args[0] + mem := x0.Args[1] + o1 := v.Args[1] + if o1.Op != OpPPC64SLDconst { + break + } + if o1.AuxInt != 8 { + break + } + x1 := o1.Args[0] + if x1.Op != OpPPC64MOVBZload { + break + } + i1 := x1.AuxInt + if x1.Aux != s { + 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)) { + break + } + b = mergePoint(b, x0, x1) + v0 := b.NewValue0(v.Pos, OpPPC64MOVHZload, t) + v.reset(OpCopy) + v.AddArg(v0) + v0.AuxInt = i0 + v0.Aux = s + v0.AddArg(p) + v0.AddArg(mem) + return true + } + // match: (OR o1:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) + // cond: !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) + // result: @mergePoint(b,x0,x1) (MOVHZload {s} [i0] p mem) + for { + t := v.Type + _ = v.Args[1] + o1 := v.Args[0] + if o1.Op != OpPPC64SLDconst { + break + } + if o1.AuxInt != 8 { + break + } + x1 := o1.Args[0] + if x1.Op != OpPPC64MOVBZload { + break + } + i1 := x1.AuxInt + s := x1.Aux + _ = x1.Args[1] + p := x1.Args[0] + mem := x1.Args[1] + x0 := v.Args[1] + if x0.Op != OpPPC64MOVBZload { + break + } + i0 := x0.AuxInt + if x0.Aux != s { + 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)) { + break + } + b = mergePoint(b, x0, x1) + v0 := b.NewValue0(v.Pos, OpPPC64MOVHZload, t) + v.reset(OpCopy) + v.AddArg(v0) + v0.AuxInt = i0 + v0.Aux = s + v0.AddArg(p) + v0.AddArg(mem) + return true + } // match: (OR s1:(SLWconst x2:(MOVBZload [i3] {s} p mem) [24]) o0:(OR s0:(SLWconst x1:(MOVBZload [i2] {s} p mem) [16]) x0:(MOVHZload [i0] {s} p mem))) // cond: !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) // result: @mergePoint(b,x0,x1,x2) (MOVWZload {s} [i0] p mem) @@ -9827,466 +10282,6 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } return false } func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { @@ -10294,157 +10289,29 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { _ = b config := b.Func.Config _ = config - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s1:(SLDconst x2:(MOVBZload [i3] {s} p mem) [24]) o0:(OR s0:(SLDconst x1:(MOVBZload [i2] {s} p mem) [16]) x0:(MOVHZload [i0] {s} p mem))) + // cond: !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) + // result: @mergePoint(b,x0,x1,x2) (MOVWZload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { + s1 := v.Args[0] + if s1.Op != OpPPC64SLDconst { break } - if s6.AuxInt != 56 { + if s1.AuxInt != 24 { break } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { + x2 := s1.Args[0] + if x2.Op != OpPPC64MOVBZload { break } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] + i3 := x2.AuxInt + s := x2.Aux + _ = x2.Args[1] + p := x2.Args[0] + mem := x2.Args[1] + o0 := v.Args[1] if o0.Op != OpPPC64OR { break } @@ -10456,14 +10323,14 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if s0.Op != OpPPC64SLDconst { break } - if s0.AuxInt != 8 { + if s0.AuxInt != 16 { break } x1 := s0.Args[0] if x1.Op != OpPPC64MOVBZload { break } - i1 := x1.AuxInt + i2 := x1.AuxInt if x1.Aux != s { break } @@ -10475,7 +10342,7 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + if x0.Op != OpPPC64MOVHZload { break } i0 := x0.AuxInt @@ -10489,33 +10356,11 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x0.Args[1] { break } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { + 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)) { break } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) + b = mergePoint(b, x0, x1, x2) + v0 := b.NewValue0(v.Pos, OpPPC64MOVWZload, t) v.reset(OpCopy) v.AddArg(v0) v0.AuxInt = i0 @@ -10524,157 +10369,29 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s1:(SLDconst x2:(MOVBZload [i3] {s} p mem) [24]) o0:(OR x0:(MOVHZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i2] {s} p mem) [16]))) + // cond: !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) + // result: @mergePoint(b,x0,x1,x2) (MOVWZload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { + s1 := v.Args[0] + if s1.Op != OpPPC64SLDconst { break } - if s6.AuxInt != 56 { + if s1.AuxInt != 24 { break } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { + x2 := s1.Args[0] + if x2.Op != OpPPC64MOVBZload { break } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] + i3 := x2.AuxInt + s := x2.Aux + _ = x2.Args[1] + p := x2.Args[0] + mem := x2.Args[1] + o0 := v.Args[1] if o0.Op != OpPPC64OR { break } @@ -10683,7 +10400,7 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { } _ = o0.Args[1] x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { + if x0.Op != OpPPC64MOVHZload { break } i0 := x0.AuxInt @@ -10701,14 +10418,14 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if s0.Op != OpPPC64SLDconst { break } - if s0.AuxInt != 8 { + if s0.AuxInt != 16 { break } x1 := s0.Args[0] if x1.Op != OpPPC64MOVBZload { break } - i1 := x1.AuxInt + i2 := x1.AuxInt if x1.Aux != s { break } @@ -10719,33 +10436,11 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x1.Args[1] { break } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { + 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)) { break } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) + b = mergePoint(b, x0, x1, x2) + v0 := b.NewValue0(v.Pos, OpPPC64MOVWZload, t) v.reset(OpCopy) v.AddArg(v0) v0.AuxInt = i0 @@ -10754,157 +10449,13 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o0:(OR s0:(SLDconst x1:(MOVBZload [i2] {s} p mem) [16]) x0:(MOVHZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i3] {s} p mem) [24])) + // cond: !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) + // result: @mergePoint(b,x0,x1,x2) (MOVWZload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] + o0 := v.Args[0] if o0.Op != OpPPC64OR { break } @@ -10916,26 +10467,20 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if s0.Op != OpPPC64SLDconst { break } - if s0.AuxInt != 8 { + if s0.AuxInt != 16 { break } x1 := s0.Args[0] if x1.Op != OpPPC64MOVBZload { break } - i1 := x1.AuxInt - if x1.Aux != s { - break - } + i2 := x1.AuxInt + s := x1.Aux _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } + p := x1.Args[0] + mem := x1.Args[1] x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + if x0.Op != OpPPC64MOVHZload { break } i0 := x0.AuxInt @@ -10949,181 +10494,18 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x0.Args[1] { break } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] + s1 := v.Args[1] if s1.Op != OpPPC64SLDconst { break } - if s1.AuxInt != 16 { + if s1.AuxInt != 24 { break } x2 := s1.Args[0] if x2.Op != OpPPC64MOVBZload { break } - i2 := x2.AuxInt + i3 := x2.AuxInt if x2.Aux != s { break } @@ -11134,7 +10516,26 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x2.Args[1] { break } - o0 := o1.Args[1] + 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)) { + break + } + b = mergePoint(b, x0, x1, x2) + v0 := b.NewValue0(v.Pos, OpPPC64MOVWZload, t) + v.reset(OpCopy) + v.AddArg(v0) + v0.AuxInt = i0 + v0.Aux = s + v0.AddArg(p) + v0.AddArg(mem) + return true + } + // match: (OR o0:(OR x0:(MOVHZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i2] {s} p mem) [16])) s1:(SLDconst x2:(MOVBZload [i3] {s} p mem) [24])) + // cond: !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) + // result: @mergePoint(b,x0,x1,x2) (MOVWZload {s} [i0] p mem) + for { + t := v.Type + _ = v.Args[1] + o0 := v.Args[0] if o0.Op != OpPPC64OR { break } @@ -11143,32 +10544,26 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { } _ = o0.Args[1] x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { + if x0.Op != OpPPC64MOVHZload { break } i0 := x0.AuxInt - if x0.Aux != s { - break - } + s := x0.Aux _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } + p := x0.Args[0] + mem := x0.Args[1] s0 := o0.Args[1] if s0.Op != OpPPC64SLDconst { break } - if s0.AuxInt != 8 { + if s0.AuxInt != 16 { break } x1 := s0.Args[0] if x1.Op != OpPPC64MOVBZload { break } - i1 := x1.AuxInt + i2 := x1.AuxInt if x1.Aux != s { break } @@ -11179,33 +10574,33 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x1.Args[1] { break } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { + s1 := v.Args[1] + if s1.Op != OpPPC64SLDconst { break } - if s2.AuxInt != 24 { + if s1.AuxInt != 24 { break } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { + x2 := s1.Args[0] + if x2.Op != OpPPC64MOVBZload { break } - i3 := x3.AuxInt - if x3.Aux != s { + i3 := x2.AuxInt + if x2.Aux != s { break } - _ = x3.Args[1] - if p != x3.Args[0] { + _ = x2.Args[1] + if p != x2.Args[0] { break } - if mem != x3.Args[1] { + if mem != x2.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) + b = mergePoint(b, x0, x1, x2) + v0 := b.NewValue0(v.Pos, OpPPC64MOVWZload, t) v.reset(OpCopy) v.AddArg(v0) v0.AuxInt = i0 @@ -11214,9 +10609,9 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem))))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -11326,54 +10721,8 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x4.Args[1] { break } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -11387,54 +10736,10 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x0.Args[1] { break } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { + 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)) { break } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -11444,9 +10749,9 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -11534,328 +10839,8 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -11891,10 +10876,10 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x4.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -11904,9 +10889,9 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem)) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -11964,29 +10949,7 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] + o3 := o4.Args[0] if o3.Op != OpPPC64OR { break } @@ -11994,112 +10957,7 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] + s3 := o3.Args[0] if s3.Op != OpPPC64SLDconst { break } @@ -12121,10 +10979,47 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x4.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + i0 := x0.AuxInt + if x0.Aux != s { + break + } + _ = x0.Args[1] + if p != x0.Args[0] { + break + } + if mem != x0.Args[1] { + break + } + s4 := o4.Args[1] + if s4.Op != OpPPC64SLDconst { + break + } + if s4.AuxInt != 40 { + break + } + x5 := s4.Args[0] + if x5.Op != OpPPC64MOVBZload { + break + } + i5 := x5.AuxInt + if x5.Aux != s { + 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)) { + break + } + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -12134,9 +11029,9 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -12194,29 +11089,7 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] + o3 := o4.Args[0] if o3.Op != OpPPC64OR { break } @@ -12224,76 +11097,8 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -12307,28 +11112,6 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x0.Args[1] { break } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } s3 := o3.Args[1] if s3.Op != OpPPC64SLDconst { break @@ -12351,10 +11134,32 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x4.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + s4 := o4.Args[1] + if s4.Op != OpPPC64SLDconst { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + if s4.AuxInt != 40 { + break + } + x5 := s4.Args[0] + if x5.Op != OpPPC64MOVBZload { + break + } + i5 := x5.AuxInt + if x5.Aux != s { + 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)) { + break + } + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -12364,9 +11169,9 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -12394,29 +11199,7 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] + o4 := o5.Args[0] if o4.Op != OpPPC64OR { break } @@ -12454,54 +11237,30 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { break } _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { + s3 := o3.Args[0] + if s3.Op != OpPPC64SLDconst { break } - if o2.Type != t { + if s3.AuxInt != 32 { break } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { + x4 := s3.Args[0] + if x4.Op != OpPPC64MOVBZload { break } - if s2.AuxInt != 24 { + i4 := x4.AuxInt + if x4.Aux != s { break } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { + _ = x4.Args[1] + if p != x4.Args[0] { break } - i3 := x3.AuxInt - if x3.Aux != s { + if mem != x4.Args[1] { break } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -12515,48 +11274,122 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x0.Args[1] { break } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { + s5 := o5.Args[1] + if s5.Op != OpPPC64SLDconst { break } - if s0.AuxInt != 8 { + if s5.AuxInt != 48 { break } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { + x6 := s5.Args[0] + if x6.Op != OpPPC64MOVBZload { break } - i1 := x1.AuxInt - if x1.Aux != s { + i6 := x6.AuxInt + if x6.Aux != s { break } - _ = x1.Args[1] - if p != x1.Args[0] { + _ = x6.Args[1] + if p != x6.Args[0] { break } - if mem != x1.Args[1] { + if mem != x6.Args[1] { break } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { + 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)) { break } - if s1.AuxInt != 16 { + b = mergePoint(b, x0, x4, x5, x6, x7) + v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) + v.reset(OpCopy) + v.AddArg(v0) + v0.AuxInt = i0 + v0.Aux = s + v0.AddArg(p) + v0.AddArg(mem) + return true + } + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + for { + t := v.Type + _ = v.Args[1] + s6 := v.Args[0] + if s6.Op != OpPPC64SLDconst { break } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { + if s6.AuxInt != 56 { break } - i2 := x2.AuxInt - if x2.Aux != s { + x7 := s6.Args[0] + if x7.Op != OpPPC64MOVBZload { break } - _ = x2.Args[1] - if p != x2.Args[0] { + i7 := x7.AuxInt + s := x7.Aux + _ = x7.Args[1] + p := x7.Args[0] + mem := x7.Args[1] + o5 := v.Args[1] + if o5.Op != OpPPC64OR { break } - if mem != x2.Args[1] { + if o5.Type != t { + break + } + _ = o5.Args[1] + o4 := o5.Args[0] + if o4.Op != OpPPC64OR { + break + } + if o4.Type != t { + break + } + _ = o4.Args[1] + s4 := o4.Args[0] + if s4.Op != OpPPC64SLDconst { + break + } + if s4.AuxInt != 40 { + break + } + x5 := s4.Args[0] + if x5.Op != OpPPC64MOVBZload { + break + } + i5 := x5.AuxInt + if x5.Aux != s { + break + } + _ = x5.Args[1] + if p != x5.Args[0] { + break + } + if mem != x5.Args[1] { + break + } + o3 := o4.Args[1] + if o3.Op != OpPPC64OR { + break + } + if o3.Type != t { + break + } + _ = o3.Args[1] + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { + break + } + i0 := x0.AuxInt + if x0.Aux != s { + break + } + _ = x0.Args[1] + if p != x0.Args[0] { + break + } + if mem != x0.Args[1] { break } s3 := o3.Args[1] @@ -12581,10 +11414,32 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool { if mem != x4.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + s5 := o5.Args[1] + if s5.Op != OpPPC64SLDconst { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + if s5.AuxInt != 48 { + break + } + x6 := s5.Args[0] + if x6.Op != OpPPC64MOVBZload { + break + } + i6 := x6.AuxInt + if x6.Aux != s { + 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)) { + break + } + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -12601,8310 +11456,9 @@ func rewriteValuePPC64_OpPPC64OR_30(v *Value) bool { _ = b config := b.Func.Config _ = config - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_40(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_50(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_60(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem)) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -20970,98 +11524,8 @@ func rewriteValuePPC64_OpPPC64OR_60(v *Value) bool { if mem != x4.Args[1] { break } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -21119,10 +11583,10 @@ func rewriteValuePPC64_OpPPC64OR_60(v *Value) bool { if mem != x6.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -21132,9 +11596,9 @@ func rewriteValuePPC64_OpPPC64OR_60(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -21178,1715 +11642,8 @@ func rewriteValuePPC64_OpPPC64OR_60(v *Value) bool { break } _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_70(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -22966,10 +11723,10 @@ func rewriteValuePPC64_OpPPC64OR_70(v *Value) bool { if mem != x6.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -22979,1626 +11736,9 @@ func rewriteValuePPC64_OpPPC64OR_70(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_80(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]))) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - s6 := v.Args[0] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - s := x7.Aux - _ = x7.Args[1] - p := x7.Args[0] - mem := x7.Args[1] - o5 := v.Args[1] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem)))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -24686,98 +11826,8 @@ func rewriteValuePPC64_OpPPC64OR_80(v *Value) bool { if mem != x4.Args[1] { break } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -24813,10 +11863,10 @@ func rewriteValuePPC64_OpPPC64OR_80(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -24826,9 +11876,9 @@ func rewriteValuePPC64_OpPPC64OR_80(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -24894,1715 +11944,8 @@ func rewriteValuePPC64_OpPPC64OR_80(v *Value) bool { break } _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_90(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -26660,10 +12003,10 @@ func rewriteValuePPC64_OpPPC64OR_90(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -26673,1619 +12016,9 @@ func rewriteValuePPC64_OpPPC64OR_90(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem)) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -28351,98 +12084,8 @@ func rewriteValuePPC64_OpPPC64OR_90(v *Value) bool { if mem != x4.Args[1] { break } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -28500,10 +12143,10 @@ func rewriteValuePPC64_OpPPC64OR_90(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -28513,9 +12156,9 @@ func rewriteValuePPC64_OpPPC64OR_90(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -28559,1715 +12202,8 @@ func rewriteValuePPC64_OpPPC64OR_90(v *Value) bool { break } _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_100(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -30347,10 +12283,10 @@ func rewriteValuePPC64_OpPPC64OR_100(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -30360,1626 +12296,9 @@ func rewriteValuePPC64_OpPPC64OR_100(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_110(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]))) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - s5 := o5.Args[0] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - s := x6.Aux - _ = x6.Args[1] - p := x6.Args[0] - mem := x6.Args[1] - o4 := o5.Args[1] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -32045,98 +12364,8 @@ func rewriteValuePPC64_OpPPC64OR_110(v *Value) bool { if mem != x4.Args[1] { break } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -32194,10 +12423,10 @@ func rewriteValuePPC64_OpPPC64OR_110(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -32207,9 +12436,9 @@ func rewriteValuePPC64_OpPPC64OR_110(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -32253,1715 +12482,8 @@ func rewriteValuePPC64_OpPPC64OR_110(v *Value) bool { break } _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_120(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -34041,10 +12563,10 @@ func rewriteValuePPC64_OpPPC64OR_120(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -34054,1626 +12576,9 @@ func rewriteValuePPC64_OpPPC64OR_120(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]))) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - s4 := o4.Args[0] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - s := x5.Aux - _ = x5.Args[1] - p := x5.Args[0] - mem := x5.Args[1] - o3 := o4.Args[1] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_130(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) x0:(MOVWZload {s} [i0] p mem)) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -35717,98 +12622,8 @@ func rewriteValuePPC64_OpPPC64OR_130(v *Value) bool { _ = x4.Args[1] p := x4.Args[0] mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[1] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -35888,10 +12703,10 @@ func rewriteValuePPC64_OpPPC64OR_130(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0) @@ -35901,9 +12716,9 @@ func rewriteValuePPC64_OpPPC64OR_130(v *Value) bool { v0.AddArg(mem) return true } - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) + // match: (OR o5:(OR o4:(OR o3:(OR x0:(MOVWZload {s} [i0] p mem) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) + // cond: !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) + // result: @mergePoint(b,x0,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) for { t := v.Type _ = v.Args[1] @@ -35931,3259 +12746,8 @@ func rewriteValuePPC64_OpPPC64OR_130(v *Value) bool { break } _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - s := x4.Aux - _ = x4.Args[1] - p := x4.Args[0] - mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - s := x4.Aux - _ = x4.Args[1] - p := x4.Args[0] - mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - s := x4.Aux - _ = x4.Args[1] - p := x4.Args[0] - mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - s := x4.Aux - _ = x4.Args[1] - p := x4.Args[0] - mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - s := x4.Aux - _ = x4.Args[1] - p := x4.Args[0] - mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - s := x4.Aux - _ = x4.Args[1] - p := x4.Args[0] - mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]))) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - s3 := o3.Args[0] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - s := x4.Aux - _ = x4.Args[1] - p := x4.Args[0] - mem := x4.Args[1] - o2 := o3.Args[1] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - s := x3.Aux - _ = x3.Args[1] - p := x3.Args[0] - mem := x3.Args[1] - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - s := x3.Aux - _ = x3.Args[1] - p := x3.Args[0] - mem := x3.Args[1] - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - return false -} -func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool { - b := v.Block - _ = b - config := b.Func.Config - _ = config - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - s := x3.Aux - _ = x3.Args[1] - p := x3.Args[0] - mem := x3.Args[1] - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]))) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - s2 := o2.Args[0] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - s := x3.Aux - _ = x3.Args[1] - p := x3.Args[0] - mem := x3.Args[1] - o1 := o2.Args[1] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - s := x2.Aux - _ = x2.Args[1] - p := x2.Args[0] - mem := x2.Args[1] - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]))) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - s1 := o1.Args[0] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - s := x2.Aux - _ = x2.Args[1] - p := x2.Args[0] - mem := x2.Args[1] - o0 := o1.Args[1] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8]) x0:(MOVBZload [i0] {s} p mem)) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - s0 := o0.Args[0] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - s := x1.Aux - _ = x1.Args[1] - p := x1.Args[0] - mem := x1.Args[1] - x0 := o0.Args[1] - if x0.Op != OpPPC64MOVBZload { - break - } - i0 := x0.AuxInt - if x0.Aux != s { - break - } - _ = x0.Args[1] - if p != x0.Args[0] { - break - } - if mem != x0.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } - s3 := o3.Args[1] - if s3.Op != OpPPC64SLDconst { - break - } - if s3.AuxInt != 32 { - break - } - x4 := s3.Args[0] - if x4.Op != OpPPC64MOVBZload { - break - } - i4 := x4.AuxInt - if x4.Aux != s { - break - } - _ = x4.Args[1] - if p != x4.Args[0] { - break - } - if mem != x4.Args[1] { - break - } - s4 := o4.Args[1] - if s4.Op != OpPPC64SLDconst { - break - } - if s4.AuxInt != 40 { - break - } - x5 := s4.Args[0] - if x5.Op != OpPPC64MOVBZload { - break - } - i5 := x5.AuxInt - if x5.Aux != s { - break - } - _ = x5.Args[1] - if p != x5.Args[0] { - break - } - if mem != x5.Args[1] { - break - } - s5 := o5.Args[1] - if s5.Op != OpPPC64SLDconst { - break - } - if s5.AuxInt != 48 { - break - } - x6 := s5.Args[0] - if x6.Op != OpPPC64MOVBZload { - break - } - i6 := x6.AuxInt - if x6.Aux != s { - break - } - _ = x6.Args[1] - if p != x6.Args[0] { - break - } - if mem != x6.Args[1] { - break - } - s6 := v.Args[1] - if s6.Op != OpPPC64SLDconst { - break - } - if s6.AuxInt != 56 { - break - } - x7 := s6.Args[0] - if x7.Op != OpPPC64MOVBZload { - break - } - i7 := x7.AuxInt - if x7.Aux != s { - break - } - _ = x7.Args[1] - if p != x7.Args[0] { - break - } - if mem != x7.Args[1] { - break - } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { - break - } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) - v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) - v.reset(OpCopy) - v.AddArg(v0) - v0.AuxInt = i0 - v0.Aux = s - v0.AddArg(p) - v0.AddArg(mem) - return true - } - // match: (OR o5:(OR o4:(OR o3:(OR o2:(OR o1:(OR o0:(OR x0:(MOVBZload [i0] {s} p mem) s0:(SLDconst x1:(MOVBZload [i1] {s} p mem) [8])) s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])) s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])) s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])) s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])) s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])) s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])) - // cond: !config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber (s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5) - // result: @mergePoint(b,x0,x1,x2,x3,x4,x5,x6,x7) (MOVDload {s} [i0] p mem) - for { - t := v.Type - _ = v.Args[1] - o5 := v.Args[0] - if o5.Op != OpPPC64OR { - break - } - if o5.Type != t { - break - } - _ = o5.Args[1] - o4 := o5.Args[0] - if o4.Op != OpPPC64OR { - break - } - if o4.Type != t { - break - } - _ = o4.Args[1] - o3 := o4.Args[0] - if o3.Op != OpPPC64OR { - break - } - if o3.Type != t { - break - } - _ = o3.Args[1] - o2 := o3.Args[0] - if o2.Op != OpPPC64OR { - break - } - if o2.Type != t { - break - } - _ = o2.Args[1] - o1 := o2.Args[0] - if o1.Op != OpPPC64OR { - break - } - if o1.Type != t { - break - } - _ = o1.Args[1] - o0 := o1.Args[0] - if o0.Op != OpPPC64OR { - break - } - if o0.Type != t { - break - } - _ = o0.Args[1] - x0 := o0.Args[0] - if x0.Op != OpPPC64MOVBZload { + x0 := o3.Args[0] + if x0.Op != OpPPC64MOVWZload { break } i0 := x0.AuxInt @@ -39191,72 +12755,6 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool { _ = x0.Args[1] p := x0.Args[0] mem := x0.Args[1] - s0 := o0.Args[1] - if s0.Op != OpPPC64SLDconst { - break - } - if s0.AuxInt != 8 { - break - } - x1 := s0.Args[0] - if x1.Op != OpPPC64MOVBZload { - break - } - i1 := x1.AuxInt - if x1.Aux != s { - break - } - _ = x1.Args[1] - if p != x1.Args[0] { - break - } - if mem != x1.Args[1] { - break - } - s1 := o1.Args[1] - if s1.Op != OpPPC64SLDconst { - break - } - if s1.AuxInt != 16 { - break - } - x2 := s1.Args[0] - if x2.Op != OpPPC64MOVBZload { - break - } - i2 := x2.AuxInt - if x2.Aux != s { - break - } - _ = x2.Args[1] - if p != x2.Args[0] { - break - } - if mem != x2.Args[1] { - break - } - s2 := o2.Args[1] - if s2.Op != OpPPC64SLDconst { - break - } - if s2.AuxInt != 24 { - break - } - x3 := s2.Args[0] - if x3.Op != OpPPC64MOVBZload { - break - } - i3 := x3.AuxInt - if x3.Aux != s { - break - } - _ = x3.Args[1] - if p != x3.Args[0] { - break - } - if mem != x3.Args[1] { - break - } s3 := o3.Args[1] if s3.Op != OpPPC64SLDconst { break @@ -39345,10 +12843,10 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool { if mem != x7.Args[1] { break } - if !(!config.BigEndian && i0%4 == 0 && 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 && o0.Uses == 1 && o1.Uses == 1 && o2.Uses == 1 && o3.Uses == 1 && o4.Uses == 1 && o5.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && s2.Uses == 1 && s3.Uses == 1 && s4.Uses == 1 && s5.Uses == 1 && s6.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(s0) && clobber(s1) && clobber(s2) && clobber(s3) && clobber(s4) && clobber(s5) && clobber(s6) && clobber(o0) && clobber(o1) && clobber(o2) && clobber(o3) && clobber(o4) && clobber(o5)) { + 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)) { break } - b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7) + b = mergePoint(b, x0, x4, x5, x6, x7) v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t) v.reset(OpCopy) v.AddArg(v0)