]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: improve PPC64.rules to reduce size of rewritePPC64.go
authorLynn Boger <laboger@linux.vnet.ibm.com>
Wed, 14 Mar 2018 15:25:02 +0000 (11:25 -0400)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Wed, 14 Mar 2018 19:03:05 +0000 (19:03 +0000)
Some rules in PPC64.rules cause an extremely large rewritePPC64.go
file to be generated, due to rules with commutative operations and
many operands. This happens with the existing
rules for combining byte loads in little endian order, and
also happens with the pending change to do the same for bytes
in big endian order.

The change improves the existing rules and reduces the size of
the rewrite file by more than 60%. Once this change is merged,
then the pending change for big endian ordered rules will be
updated to use rules that avoid generating an excessively large
rewrite file.

This also includes a fix to a performance regression for
littleEndian.PutUint16 on ppc64le.

Change-Id: I8d2ea42885fa2b84b30c63aa124b0a9b130564ff
Reviewed-on: https://go-review.googlesource.com/100675
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ssa/gen/PPC64.rules
src/cmd/compile/internal/ssa/rewritePPC64.go

index c8ecb55703c408db5609fe785f6d24482016826a..b8270eae357b79e77d9a838880a083c55e8574f8 100644 (file)
 (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 <typ.UInt32> x [c]) mem)
+(MOVBstore [off] {sym} ptr (SRWconst (MOV(W|WZ)reg x) [c]) mem) && c <= 24 -> (MOVBstore [off] {sym} ptr (SRWconst <typ.UInt32> x [c]) mem)
 
 // Lose W-widening ops fed to compare-W
 (CMPW x (MOVWreg y)) -> (CMPW x y)
 (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 <t> 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
         -> @mergePoint(b,x0,x1) (MOVHZload <t> {s} [i0] p mem)
 
 // b[0] | b[1]<<8 | b[2]<<16 | b[3]<<24 -> load 32-bit Little endian
-(OR <t> s1:(SLWconst x2:(MOVBZload [i3] {s} p mem) [24])
-       o0:(OR <t> s0:(SLWconst x1:(MOVBZload [i2] {s} p mem) [16]) x0:(MOVHZload [i0] {s} p mem)))
+(OR <t> s1:(SL(W|D)const x2:(MOVBZload [i3] {s} p mem) [24])
+       o0:(OR <t> 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
         -> @mergePoint(b,x0,x1,x2) (MOVWZload <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56])
        o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48])
        o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40])
        o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32])
-       o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24])
-       o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16])
-       o0:(OR <t> 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 <t> {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 <t> {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 <typ.UInt16> 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
          -> (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:
 //     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)
index db79d828de4401216460a298b4aeb8319cf51ae0..b407ce4ffd101b3d7b2935b07a5254c4be81c7fd 100644 (file)
@@ -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,145 +7277,293 @@ 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))
-       // cond: !config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)
-       // result: (MOVHstore [i0] {s} p w mem)
+       // match: (MOVBstore [off] {sym} ptr (MOVHreg x) mem)
+       // cond:
+       // result: (MOVBstore [off] {sym} ptr x mem)
        for {
-               i1 := v.AuxInt
-               s := v.Aux
+               off := v.AuxInt
+               sym := v.Aux
                _ = v.Args[2]
-               p := v.Args[0]
+               ptr := v.Args[0]
                v_1 := v.Args[1]
-               if v_1.Op != OpPPC64SRWconst {
-                       break
-               }
-               if v_1.AuxInt != 8 {
+               if v_1.Op != OpPPC64MOVHreg {
                        break
                }
-               v_1_0 := v_1.Args[0]
-               if v_1_0.Op != OpPPC64MOVHZreg {
+               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
                }
-               w := v_1_0.Args[0]
-               x0 := v.Args[2]
-               if x0.Op != OpPPC64MOVBstore {
+               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
                }
-               i0 := x0.AuxInt
-               if x0.Aux != s {
+               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
                }
-               _ = x0.Args[2]
-               if p != x0.Args[0] {
+               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 <typ.UInt32> 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
                }
-               if w != x0.Args[1] {
+               c := v_1.AuxInt
+               v_1_0 := v_1.Args[0]
+               if v_1_0.Op != OpPPC64MOVHreg {
                        break
                }
-               mem := x0.Args[2]
-               if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
+               x := v_1_0.Args[0]
+               mem := v.Args[2]
+               if !(c <= 8) {
                        break
                }
-               v.reset(OpPPC64MOVHstore)
-               v.AuxInt = i0
-               v.Aux = s
-               v.AddArg(p)
-               v.AddArg(w)
+               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 [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)
+       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 <typ.UInt32> x [c]) mem)
        for {
-               i3 := v.AuxInt
-               s := v.Aux
+               off := v.AuxInt
+               sym := v.Aux
                _ = v.Args[2]
-               p := v.Args[0]
+               ptr := 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 {
+               c := v_1.AuxInt
+               v_1_0 := v_1.Args[0]
+               if v_1_0.Op != OpPPC64MOVHZreg {
                        break
                }
-               i2 := x0.AuxInt
-               if x0.Aux != s {
+               x := v_1_0.Args[0]
+               mem := v.Args[2]
+               if !(c <= 8) {
                        break
                }
-               _ = x0.Args[2]
-               if p != x0.Args[0] {
+               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 <typ.UInt32> 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
                }
-               x0_1 := x0.Args[1]
-               if x0_1.Op != OpPPC64SRWconst {
+               c := v_1.AuxInt
+               v_1_0 := v_1.Args[0]
+               if v_1_0.Op != OpPPC64MOVWreg {
                        break
                }
-               if x0_1.AuxInt != 16 {
+               x := v_1_0.Args[0]
+               mem := v.Args[2]
+               if !(c <= 24) {
                        break
                }
-               if w != x0_1.Args[0] {
+               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 <typ.UInt32> 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
                }
-               x1 := x0.Args[2]
-               if x1.Op != OpPPC64MOVBstore {
+               c := v_1.AuxInt
+               v_1_0 := v_1.Args[0]
+               if v_1_0.Op != OpPPC64MOVWZreg {
                        break
                }
-               i1 := x1.AuxInt
-               if x1.Aux != s {
+               x := v_1_0.Args[0]
+               mem := v.Args[2]
+               if !(c <= 24) {
                        break
                }
-               _ = x1.Args[2]
-               if p != x1.Args[0] {
+               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 <typ.UInt16> 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
                }
-               x1_1 := x1.Args[1]
-               if x1_1.Op != OpPPC64SRWconst {
+               if v_1.AuxInt != 24 {
                        break
                }
-               if x1_1.AuxInt != 8 {
+               w := v_1.Args[0]
+               x0 := v.Args[2]
+               if x0.Op != OpPPC64MOVBstore {
                        break
                }
-               if w != x1_1.Args[0] {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               x2 := x1.Args[2]
-               if x2.Op != OpPPC64MOVBstore {
+               _ = x0.Args[2]
+               if p != x0.Args[0] {
                        break
                }
-               i0 := x2.AuxInt
-               if x2.Aux != s {
+               x0_1 := x0.Args[1]
+               if x0_1.Op != OpPPC64SRWconst {
                        break
                }
-               _ = x2.Args[2]
-               if p != x2.Args[0] {
+               if x0_1.AuxInt != 16 {
                        break
                }
-               if w != x2.Args[1] {
+               if w != x0_1.Args[0] {
                        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)) {
+               mem := x0.Args[2]
+               if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
                        break
                }
-               v.reset(OpPPC64MOVWstore)
+               v.reset(OpPPC64MOVHstore)
                v.AuxInt = i0
                v.Aux = s
                v.AddArg(p)
-               v.AddArg(w)
+               v0 := b.NewValue0(v.Pos, OpPPC64SRWconst, typ.UInt16)
+               v0.AuxInt = 16
+               v0.AddArg(w)
+               v.AddArg(v0)
                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)
-       // result: (MOVDstore [i0] {s} p w mem)
+       // 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 <typ.UInt16> w [16]) mem)
        for {
-               i7 := v.AuxInt
+               i1 := v.AuxInt
                s := v.Aux
                _ = v.Args[2]
                p := v.Args[0]
@@ -7423,7 +7571,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool {
                if v_1.Op != OpPPC64SRDconst {
                        break
                }
-               if v_1.AuxInt != 56 {
+               if v_1.AuxInt != 24 {
                        break
                }
                w := v_1.Args[0]
@@ -7431,7 +7579,7 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool {
                if x0.Op != OpPPC64MOVBstore {
                        break
                }
-               i6 := x0.AuxInt
+               i0 := x0.AuxInt
                if x0.Aux != s {
                        break
                }
@@ -7443,139 +7591,212 @@ func rewriteValuePPC64_OpPPC64MOVBstore_0(v *Value) bool {
                if x0_1.Op != OpPPC64SRDconst {
                        break
                }
-               if x0_1.AuxInt != 48 {
+               if x0_1.AuxInt != 16 {
                        break
                }
                if w != x0_1.Args[0] {
                        break
                }
-               x1 := x0.Args[2]
-               if x1.Op != OpPPC64MOVBstore {
+               mem := x0.Args[2]
+               if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
                        break
                }
-               i5 := x1.AuxInt
-               if x1.Aux != s {
+               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 {
+               i1 := v.AuxInt
+               s := v.Aux
+               _ = v.Args[2]
+               p := v.Args[0]
+               v_1 := v.Args[1]
+               if v_1.Op != OpPPC64SRWconst {
                        break
                }
-               _ = x1.Args[2]
-               if p != x1.Args[0] {
+               if v_1.AuxInt != 8 {
                        break
                }
-               x1_1 := x1.Args[1]
-               if x1_1.Op != OpPPC64SRDconst {
+               w := v_1.Args[0]
+               x0 := v.Args[2]
+               if x0.Op != OpPPC64MOVBstore {
                        break
                }
-               if x1_1.AuxInt != 40 {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               if w != x1_1.Args[0] {
+               _ = x0.Args[2]
+               if p != x0.Args[0] {
                        break
                }
-               x2 := x1.Args[2]
-               if x2.Op != OpPPC64MOVBstore {
+               if w != x0.Args[1] {
                        break
                }
-               i4 := x2.AuxInt
-               if x2.Aux != s {
+               mem := x0.Args[2]
+               if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
                        break
                }
-               _ = x2.Args[2]
-               if p != x2.Args[0] {
+               v.reset(OpPPC64MOVHstore)
+               v.AuxInt = i0
+               v.Aux = s
+               v.AddArg(p)
+               v.AddArg(w)
+               v.AddArg(mem)
+               return true
+       }
+       // 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 {
+               i1 := v.AuxInt
+               s := v.Aux
+               _ = v.Args[2]
+               p := v.Args[0]
+               v_1 := v.Args[1]
+               if v_1.Op != OpPPC64SRDconst {
                        break
                }
-               x2_1 := x2.Args[1]
-               if x2_1.Op != OpPPC64SRDconst {
+               if v_1.AuxInt != 8 {
                        break
                }
-               if x2_1.AuxInt != 32 {
+               w := v_1.Args[0]
+               x0 := v.Args[2]
+               if x0.Op != OpPPC64MOVBstore {
                        break
                }
-               if w != x2_1.Args[0] {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               x3 := x2.Args[2]
-               if x3.Op != OpPPC64MOVBstore {
+               _ = x0.Args[2]
+               if p != x0.Args[0] {
                        break
                }
-               i3 := x3.AuxInt
-               if x3.Aux != s {
+               if w != x0.Args[1] {
                        break
                }
-               _ = x3.Args[2]
-               if p != x3.Args[0] {
+               mem := x0.Args[2]
+               if !(!config.BigEndian && x0.Uses == 1 && i1 == i0+1 && clobber(x0)) {
                        break
                }
-               x3_1 := x3.Args[1]
-               if x3_1.Op != OpPPC64SRDconst {
+               v.reset(OpPPC64MOVHstore)
+               v.AuxInt = i0
+               v.Aux = s
+               v.AddArg(p)
+               v.AddArg(w)
+               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:(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
+               s := v.Aux
+               _ = v.Args[2]
+               p := v.Args[0]
+               v_1 := v.Args[1]
+               if v_1.Op != OpPPC64SRDconst {
                        break
                }
-               if x3_1.AuxInt != 24 {
+               if v_1.AuxInt != 56 {
                        break
                }
-               if w != x3_1.Args[0] {
+               w := v_1.Args[0]
+               x0 := v.Args[2]
+               if x0.Op != OpPPC64MOVBstore {
                        break
                }
-               x4 := x3.Args[2]
-               if x4.Op != OpPPC64MOVBstore {
+               i6 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               i2 := x4.AuxInt
-               if x4.Aux != s {
+               _ = x0.Args[2]
+               if p != x0.Args[0] {
                        break
                }
-               _ = x4.Args[2]
-               if p != x4.Args[0] {
+               x0_1 := x0.Args[1]
+               if x0_1.Op != OpPPC64SRDconst {
                        break
                }
-               x4_1 := x4.Args[1]
-               if x4_1.Op != OpPPC64SRDconst {
+               if x0_1.AuxInt != 48 {
                        break
                }
-               if x4_1.AuxInt != 16 {
+               if w != x0_1.Args[0] {
                        break
                }
-               if w != x4_1.Args[0] {
+               x1 := x0.Args[2]
+               if x1.Op != OpPPC64MOVBstore {
                        break
                }
-               x5 := x4.Args[2]
-               if x5.Op != OpPPC64MOVBstore {
+               i5 := x1.AuxInt
+               if x1.Aux != s {
                        break
                }
-               i1 := x5.AuxInt
-               if x5.Aux != s {
+               _ = x1.Args[2]
+               if p != x1.Args[0] {
                        break
                }
-               _ = x5.Args[2]
-               if p != x5.Args[0] {
+               x1_1 := x1.Args[1]
+               if x1_1.Op != OpPPC64SRDconst {
                        break
                }
-               x5_1 := x5.Args[1]
-               if x5_1.Op != OpPPC64SRDconst {
+               if x1_1.AuxInt != 40 {
                        break
                }
-               if x5_1.AuxInt != 8 {
+               if w != x1_1.Args[0] {
                        break
                }
-               if w != x5_1.Args[0] {
+               x2 := x1.Args[2]
+               if x2.Op != OpPPC64MOVBstore {
                        break
                }
-               x6 := x5.Args[2]
-               if x6.Op != OpPPC64MOVBstore {
+               i4 := x2.AuxInt
+               if x2.Aux != s {
                        break
                }
-               i0 := x6.AuxInt
-               if x6.Aux != s {
+               _ = x2.Args[2]
+               if p != x2.Args[0] {
                        break
                }
-               _ = x6.Args[2]
-               if p != x6.Args[0] {
+               x2_1 := x2.Args[1]
+               if x2_1.Op != OpPPC64SRDconst {
+                       break
+               }
+               if x2_1.AuxInt != 32 {
+                       break
+               }
+               if w != x2_1.Args[0] {
+                       break
+               }
+               x3 := x2.Args[2]
+               if x3.Op != OpPPC64MOVWstore {
+                       break
+               }
+               i0 := x3.AuxInt
+               if x3.Aux != s {
+                       break
+               }
+               _ = x3.Args[2]
+               if p != x3.Args[0] {
                        break
                }
-               if w != x6.Args[1] {
+               if w != x3.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,101 +8496,231 @@ func rewriteValuePPC64_OpPPC64MOVHstore_0(v *Value) bool {
                v.AddArg(mem)
                return true
        }
-       return false
-}
-func rewriteValuePPC64_OpPPC64MOVHstorezero_0(v *Value) bool {
-       // match: (MOVHstorezero [off1] {sym} (ADDconst [off2] x) mem)
-       // cond: is16Bit(off1+off2)
-       // result: (MOVHstorezero [off1+off2] {sym} x mem)
+       // match: (MOVHstore [off] {sym} ptr (MOVWreg x) mem)
+       // cond:
+       // result: (MOVHstore [off] {sym} ptr x mem)
        for {
-               off1 := v.AuxInt
+               off := v.AuxInt
                sym := v.Aux
-               _ = v.Args[1]
-               v_0 := v.Args[0]
-               if v_0.Op != OpPPC64ADDconst {
-                       break
-               }
-               off2 := v_0.AuxInt
-               x := v_0.Args[0]
-               mem := v.Args[1]
-               if !(is16Bit(off1 + off2)) {
+               _ = v.Args[2]
+               ptr := v.Args[0]
+               v_1 := v.Args[1]
+               if v_1.Op != OpPPC64MOVWreg {
                        break
                }
-               v.reset(OpPPC64MOVHstorezero)
-               v.AuxInt = off1 + off2
+               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: (MOVHstorezero [off1] {sym1} p:(MOVDaddr [off2] {sym2} x) mem)
-       // cond: canMergeSym(sym1,sym2) && (x.Op != OpSB || p.Uses == 1)
-       // result: (MOVHstorezero [off1+off2] {mergeSym(sym1,sym2)} x mem)
+       // match: (MOVHstore [off] {sym} ptr (MOVWZreg x) mem)
+       // cond:
+       // result: (MOVHstore [off] {sym} ptr x mem)
        for {
-               off1 := v.AuxInt
-               sym1 := v.Aux
-               _ = v.Args[1]
-               p := v.Args[0]
-               if p.Op != OpPPC64MOVDaddr {
-                       break
-               }
-               off2 := p.AuxInt
-               sym2 := p.Aux
-               x := p.Args[0]
-               mem := v.Args[1]
-               if !(canMergeSym(sym1, sym2) && (x.Op != OpSB || p.Uses == 1)) {
+               off := v.AuxInt
+               sym := v.Aux
+               _ = v.Args[2]
+               ptr := v.Args[0]
+               v_1 := v.Args[1]
+               if v_1.Op != OpPPC64MOVWZreg {
                        break
                }
-               v.reset(OpPPC64MOVHstorezero)
-               v.AuxInt = off1 + off2
-               v.Aux = mergeSym(sym1, sym2)
+               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
        }
-       return false
-}
-func rewriteValuePPC64_OpPPC64MOVWZload_0(v *Value) bool {
-       // match: (MOVWZload [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) mem)
-       // cond: canMergeSym(sym1,sym2) && (ptr.Op != OpSB || p.Uses == 1)
-       // result: (MOVWZload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
+       // 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 {
-               off1 := v.AuxInt
-               sym1 := v.Aux
-               _ = v.Args[1]
+               i1 := v.AuxInt
+               s := v.Aux
+               _ = v.Args[2]
                p := v.Args[0]
-               if p.Op != OpPPC64MOVDaddr {
+               v_1 := v.Args[1]
+               if v_1.Op != OpPPC64SRWconst {
                        break
                }
-               off2 := p.AuxInt
-               sym2 := p.Aux
-               ptr := p.Args[0]
-               mem := v.Args[1]
-               if !(canMergeSym(sym1, sym2) && (ptr.Op != OpSB || p.Uses == 1)) {
+               if v_1.AuxInt != 16 {
                        break
                }
-               v.reset(OpPPC64MOVWZload)
-               v.AuxInt = off1 + off2
-               v.Aux = mergeSym(sym1, sym2)
-               v.AddArg(ptr)
-               v.AddArg(mem)
-               return true
-       }
-       // match: (MOVWZload [off1] {sym} (ADDconst [off2] x) mem)
-       // cond: is16Bit(off1+off2)
-       // result: (MOVWZload [off1+off2] {sym} x mem)
-       for {
-               off1 := v.AuxInt
-               sym := v.Aux
-               _ = v.Args[1]
-               v_0 := v.Args[0]
-               if v_0.Op != OpPPC64ADDconst {
+               w := v_1.Args[0]
+               x0 := v.Args[2]
+               if x0.Op != OpPPC64MOVHstore {
                        break
                }
-               off2 := v_0.AuxInt
-               x := v_0.Args[0]
-               mem := v.Args[1]
-               if !(is16Bit(off1 + off2)) {
+               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 {
+       // match: (MOVHstorezero [off1] {sym} (ADDconst [off2] x) mem)
+       // cond: is16Bit(off1+off2)
+       // result: (MOVHstorezero [off1+off2] {sym} x mem)
+       for {
+               off1 := v.AuxInt
+               sym := v.Aux
+               _ = v.Args[1]
+               v_0 := v.Args[0]
+               if v_0.Op != OpPPC64ADDconst {
+                       break
+               }
+               off2 := v_0.AuxInt
+               x := v_0.Args[0]
+               mem := v.Args[1]
+               if !(is16Bit(off1 + off2)) {
+                       break
+               }
+               v.reset(OpPPC64MOVHstorezero)
+               v.AuxInt = off1 + off2
+               v.Aux = sym
+               v.AddArg(x)
+               v.AddArg(mem)
+               return true
+       }
+       // match: (MOVHstorezero [off1] {sym1} p:(MOVDaddr [off2] {sym2} x) mem)
+       // cond: canMergeSym(sym1,sym2) && (x.Op != OpSB || p.Uses == 1)
+       // result: (MOVHstorezero [off1+off2] {mergeSym(sym1,sym2)} x mem)
+       for {
+               off1 := v.AuxInt
+               sym1 := v.Aux
+               _ = v.Args[1]
+               p := v.Args[0]
+               if p.Op != OpPPC64MOVDaddr {
+                       break
+               }
+               off2 := p.AuxInt
+               sym2 := p.Aux
+               x := p.Args[0]
+               mem := v.Args[1]
+               if !(canMergeSym(sym1, sym2) && (x.Op != OpSB || p.Uses == 1)) {
+                       break
+               }
+               v.reset(OpPPC64MOVHstorezero)
+               v.AuxInt = off1 + off2
+               v.Aux = mergeSym(sym1, sym2)
+               v.AddArg(x)
+               v.AddArg(mem)
+               return true
+       }
+       return false
+}
+func rewriteValuePPC64_OpPPC64MOVWZload_0(v *Value) bool {
+       // match: (MOVWZload [off1] {sym1} p:(MOVDaddr [off2] {sym2} ptr) mem)
+       // cond: canMergeSym(sym1,sym2) && (ptr.Op != OpSB || p.Uses == 1)
+       // result: (MOVWZload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
+       for {
+               off1 := v.AuxInt
+               sym1 := v.Aux
+               _ = v.Args[1]
+               p := v.Args[0]
+               if p.Op != OpPPC64MOVDaddr {
+                       break
+               }
+               off2 := p.AuxInt
+               sym2 := p.Aux
+               ptr := p.Args[0]
+               mem := v.Args[1]
+               if !(canMergeSym(sym1, sym2) && (ptr.Op != OpSB || p.Uses == 1)) {
+                       break
+               }
+               v.reset(OpPPC64MOVWZload)
+               v.AuxInt = off1 + off2
+               v.Aux = mergeSym(sym1, sym2)
+               v.AddArg(ptr)
+               v.AddArg(mem)
+               return true
+       }
+       // match: (MOVWZload [off1] {sym} (ADDconst [off2] x) mem)
+       // cond: is16Bit(off1+off2)
+       // result: (MOVWZload [off1+off2] {sym} x mem)
+       for {
+               off1 := v.AuxInt
+               sym := v.Aux
+               _ = v.Args[1]
+               v_0 := v.Args[0]
+               if v_0.Op != OpPPC64ADDconst {
+                       break
+               }
+               off2 := v_0.AuxInt
+               x := v_0.Args[0]
+               mem := v.Args[1]
+               if !(is16Bit(off1 + off2)) {
                        break
                }
                v.reset(OpPPC64MOVWZload)
@@ -9507,6 +9862,106 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
+       // match: (OR <t> 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 <t> {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 <t> 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 <t> {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 <t> s1:(SLWconst x2:(MOVBZload [i3] {s} p mem) [24]) o0:(OR <t> 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 <t> {s} [i0] p mem)
@@ -9827,168 +10282,230 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {s} [i0] p mem)
-       for {
-               t := v.Type
-               _ = v.Args[1]
-               s6 := v.Args[0]
-               if s6.Op != OpPPC64SLDconst {
-                       break
-               }
-               if s6.AuxInt != 56 {
+       return false
+}
+func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
+       b := v.Block
+       _ = b
+       config := b.Func.Config
+       _ = config
+       // match: (OR <t> s1:(SLDconst x2:(MOVBZload [i3] {s} p mem) [24]) o0:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               s1 := v.Args[0]
+               if s1.Op != OpPPC64SLDconst {
                        break
                }
-               x7 := s6.Args[0]
-               if x7.Op != OpPPC64MOVBZload {
+               if s1.AuxInt != 24 {
                        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 {
+               x2 := s1.Args[0]
+               if x2.Op != OpPPC64MOVBZload {
                        break
                }
-               if o5.Type != t {
+               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
                }
-               _ = o5.Args[1]
-               s5 := o5.Args[0]
-               if s5.Op != OpPPC64SLDconst {
+               if o0.Type != t {
                        break
                }
-               if s5.AuxInt != 48 {
+               _ = o0.Args[1]
+               s0 := o0.Args[0]
+               if s0.Op != OpPPC64SLDconst {
                        break
                }
-               x6 := s5.Args[0]
-               if x6.Op != OpPPC64MOVBZload {
+               if s0.AuxInt != 16 {
                        break
                }
-               i6 := x6.AuxInt
-               if x6.Aux != s {
+               x1 := s0.Args[0]
+               if x1.Op != OpPPC64MOVBZload {
                        break
                }
-               _ = x6.Args[1]
-               if p != x6.Args[0] {
+               i2 := x1.AuxInt
+               if x1.Aux != s {
                        break
                }
-               if mem != x6.Args[1] {
+               _ = x1.Args[1]
+               if p != x1.Args[0] {
                        break
                }
-               o4 := o5.Args[1]
-               if o4.Op != OpPPC64OR {
+               if mem != x1.Args[1] {
                        break
                }
-               if o4.Type != t {
+               x0 := o0.Args[1]
+               if x0.Op != OpPPC64MOVHZload {
                        break
                }
-               _ = o4.Args[1]
-               s4 := o4.Args[0]
-               if s4.Op != OpPPC64SLDconst {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               if s4.AuxInt != 40 {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               x5 := s4.Args[0]
-               if x5.Op != OpPPC64MOVBZload {
+               if mem != x0.Args[1] {
                        break
                }
-               i5 := x5.AuxInt
-               if x5.Aux != s {
+               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
                }
-               _ = x5.Args[1]
-               if p != x5.Args[0] {
+               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 <t> s1:(SLDconst x2:(MOVBZload [i3] {s} p mem) [24]) o0:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               s1 := v.Args[0]
+               if s1.Op != OpPPC64SLDconst {
                        break
                }
-               if mem != x5.Args[1] {
+               if s1.AuxInt != 24 {
                        break
                }
-               o3 := o4.Args[1]
-               if o3.Op != OpPPC64OR {
+               x2 := s1.Args[0]
+               if x2.Op != OpPPC64MOVBZload {
                        break
                }
-               if o3.Type != t {
+               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
                }
-               _ = o3.Args[1]
-               s3 := o3.Args[0]
-               if s3.Op != OpPPC64SLDconst {
+               if o0.Type != t {
                        break
                }
-               if s3.AuxInt != 32 {
+               _ = o0.Args[1]
+               x0 := o0.Args[0]
+               if x0.Op != OpPPC64MOVHZload {
                        break
                }
-               x4 := s3.Args[0]
-               if x4.Op != OpPPC64MOVBZload {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               i4 := x4.AuxInt
-               if x4.Aux != s {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               _ = x4.Args[1]
-               if p != x4.Args[0] {
+               if mem != x0.Args[1] {
                        break
                }
-               if mem != x4.Args[1] {
+               s0 := o0.Args[1]
+               if s0.Op != OpPPC64SLDconst {
                        break
                }
-               o2 := o3.Args[1]
-               if o2.Op != OpPPC64OR {
+               if s0.AuxInt != 16 {
                        break
                }
-               if o2.Type != t {
+               x1 := s0.Args[0]
+               if x1.Op != OpPPC64MOVBZload {
                        break
                }
-               _ = o2.Args[1]
-               s2 := o2.Args[0]
-               if s2.Op != OpPPC64SLDconst {
+               i2 := x1.AuxInt
+               if x1.Aux != s {
                        break
                }
-               if s2.AuxInt != 24 {
+               _ = x1.Args[1]
+               if p != x1.Args[0] {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               if mem != x1.Args[1] {
                        break
                }
-               i3 := x3.AuxInt
-               if x3.Aux != s {
+               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
                }
-               _ = x3.Args[1]
-               if p != x3.Args[0] {
+               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 <t> o0:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               o0 := v.Args[0]
+               if o0.Op != OpPPC64OR {
                        break
                }
-               if mem != x3.Args[1] {
+               if o0.Type != t {
+                       break
+               }
+               _ = o0.Args[1]
+               s0 := o0.Args[0]
+               if s0.Op != OpPPC64SLDconst {
+                       break
+               }
+               if s0.AuxInt != 16 {
+                       break
+               }
+               x1 := s0.Args[0]
+               if x1.Op != OpPPC64MOVBZload {
+                       break
+               }
+               i2 := x1.AuxInt
+               s := x1.Aux
+               _ = x1.Args[1]
+               p := x1.Args[0]
+               mem := x1.Args[1]
+               x0 := o0.Args[1]
+               if x0.Op != OpPPC64MOVHZload {
+                       break
+               }
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               o1 := o2.Args[1]
-               if o1.Op != OpPPC64OR {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if o1.Type != t {
+               if mem != x0.Args[1] {
                        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
                }
@@ -9999,7 +10516,26 @@ func rewriteValuePPC64_OpPPC64OR_10(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 <t> o0:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               o0 := v.Args[0]
                if o0.Op != OpPPC64OR {
                        break
                }
@@ -10007,18 +10543,27 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool {
                        break
                }
                _ = o0.Args[1]
-               s0 := o0.Args[0]
+               x0 := o0.Args[0]
+               if x0.Op != OpPPC64MOVHZload {
+                       break
+               }
+               i0 := x0.AuxInt
+               s := x0.Aux
+               _ = x0.Args[1]
+               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
                }
@@ -10029,26 +10574,33 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool {
                if mem != x1.Args[1] {
                        break
                }
-               x0 := o0.Args[1]
-               if x0.Op != OpPPC64MOVBZload {
+               s1 := v.Args[1]
+               if s1.Op != OpPPC64SLDconst {
                        break
                }
-               i0 := x0.AuxInt
-               if x0.Aux != s {
+               if s1.AuxInt != 24 {
                        break
                }
-               _ = x0.Args[1]
-               if p != x0.Args[0] {
+               x2 := s1.Args[0]
+               if x2.Op != OpPPC64MOVBZload {
                        break
                }
-               if mem != x0.Args[1] {
+               i3 := 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)) {
+               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
@@ -10057,9 +10609,9 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -10169,115 +10721,25 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool {
                if mem != x4.Args[1] {
                        break
                }
-               o2 := o3.Args[1]
-               if o2.Op != OpPPC64OR {
+               x0 := o3.Args[1]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               if o2.Type != t {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               _ = o2.Args[1]
-               s2 := o2.Args[0]
-               if s2.Op != OpPPC64SLDconst {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if s2.AuxInt != 24 {
+               if mem != x0.Args[1] {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               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
                }
-               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)
+               b = mergePoint(b, x0, x4, x5, x6, x7)
                v0 := b.NewValue0(v.Pos, OpPPC64MOVDload, t)
                v.reset(OpCopy)
                v.AddArg(v0)
@@ -10287,16 +10749,9 @@ func rewriteValuePPC64_OpPPC64OR_10(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       return false
-}
-func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
-       b := v.Block
-       _ = b
-       config := b.Func.Config
-       _ = config
-       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -10384,7 +10839,22 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                        break
                }
                _ = o3.Args[1]
-               s3 := o3.Args[0]
+               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]
                if s3.Op != OpPPC64SLDconst {
                        break
                }
@@ -10406,76 +10876,111 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                if mem != x4.Args[1] {
                        break
                }
-               o2 := o3.Args[1]
-               if o2.Op != OpPPC64OR {
+               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 o2.Type != t {
+               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               s6 := v.Args[0]
+               if s6.Op != OpPPC64SLDconst {
                        break
                }
-               _ = o2.Args[1]
-               s2 := o2.Args[0]
-               if s2.Op != OpPPC64SLDconst {
+               if s6.AuxInt != 56 {
                        break
                }
-               if s2.AuxInt != 24 {
+               x7 := s6.Args[0]
+               if x7.Op != OpPPC64MOVBZload {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               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
                }
-               i3 := x3.AuxInt
-               if x3.Aux != s {
+               if o5.Type != t {
                        break
                }
-               _ = x3.Args[1]
-               if p != x3.Args[0] {
+               _ = o5.Args[1]
+               s5 := o5.Args[0]
+               if s5.Op != OpPPC64SLDconst {
+                       break
+               }
+               if s5.AuxInt != 48 {
                        break
                }
-               if mem != x3.Args[1] {
+               x6 := s5.Args[0]
+               if x6.Op != OpPPC64MOVBZload {
                        break
                }
-               o1 := o2.Args[1]
-               if o1.Op != OpPPC64OR {
+               i6 := x6.AuxInt
+               if x6.Aux != s {
                        break
                }
-               if o1.Type != t {
+               _ = x6.Args[1]
+               if p != x6.Args[0] {
                        break
                }
-               _ = o1.Args[1]
-               o0 := o1.Args[0]
-               if o0.Op != OpPPC64OR {
+               if mem != x6.Args[1] {
                        break
                }
-               if o0.Type != t {
+               o4 := o5.Args[1]
+               if o4.Op != OpPPC64OR {
                        break
                }
-               _ = o0.Args[1]
-               s0 := o0.Args[0]
-               if s0.Op != OpPPC64SLDconst {
+               if o4.Type != t {
                        break
                }
-               if s0.AuxInt != 8 {
+               _ = o4.Args[1]
+               o3 := o4.Args[0]
+               if o3.Op != OpPPC64OR {
                        break
                }
-               x1 := s0.Args[0]
-               if x1.Op != OpPPC64MOVBZload {
+               if o3.Type != t {
                        break
                }
-               i1 := x1.AuxInt
-               if x1.Aux != s {
+               _ = o3.Args[1]
+               s3 := o3.Args[0]
+               if s3.Op != OpPPC64SLDconst {
                        break
                }
-               _ = x1.Args[1]
-               if p != x1.Args[0] {
+               if s3.AuxInt != 32 {
                        break
                }
-               if mem != x1.Args[1] {
+               x4 := s3.Args[0]
+               if x4.Op != OpPPC64MOVBZload {
                        break
                }
-               x0 := o0.Args[1]
-               if x0.Op != OpPPC64MOVBZload {
+               i4 := x4.AuxInt
+               if x4.Aux != s {
+                       break
+               }
+               _ = x4.Args[1]
+               if p != x4.Args[0] {
+                       break
+               }
+               if mem != x4.Args[1] {
+                       break
+               }
+               x0 := o3.Args[1]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
                i0 := x0.AuxInt
@@ -10489,32 +10994,32 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                if mem != x0.Args[1] {
                        break
                }
-               s1 := o1.Args[1]
-               if s1.Op != OpPPC64SLDconst {
+               s4 := o4.Args[1]
+               if s4.Op != OpPPC64SLDconst {
                        break
                }
-               if s1.AuxInt != 16 {
+               if s4.AuxInt != 40 {
                        break
                }
-               x2 := s1.Args[0]
-               if x2.Op != OpPPC64MOVBZload {
+               x5 := s4.Args[0]
+               if x5.Op != OpPPC64MOVBZload {
                        break
                }
-               i2 := x2.AuxInt
-               if x2.Aux != s {
+               i5 := x5.AuxInt
+               if x5.Aux != s {
                        break
                }
-               _ = x2.Args[1]
-               if p != x2.Args[0] {
+               _ = x5.Args[1]
+               if p != x5.Args[0] {
                        break
                }
-               if mem != x2.Args[1] {
+               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)) {
+               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)
@@ -10524,9 +11029,9 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -10584,37 +11089,30 @@ 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 {
+               o3 := o4.Args[0]
+               if o3.Op != OpPPC64OR {
                        break
                }
-               i5 := x5.AuxInt
-               if x5.Aux != s {
+               if o3.Type != t {
                        break
                }
-               _ = x5.Args[1]
-               if p != x5.Args[0] {
+               _ = o3.Args[1]
+               x0 := o3.Args[0]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               if mem != x5.Args[1] {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               o3 := o4.Args[1]
-               if o3.Op != OpPPC64OR {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if o3.Type != t {
+               if mem != x0.Args[1] {
                        break
                }
-               _ = o3.Args[1]
-               s3 := o3.Args[0]
+               s3 := o3.Args[1]
                if s3.Op != OpPPC64SLDconst {
                        break
                }
@@ -10636,139 +11134,56 @@ 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]
-               s2 := o2.Args[0]
-               if s2.Op != OpPPC64SLDconst {
+               s4 := o4.Args[1]
+               if s4.Op != OpPPC64SLDconst {
                        break
                }
-               if s2.AuxInt != 24 {
+               if s4.AuxInt != 40 {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               x5 := s4.Args[0]
+               if x5.Op != OpPPC64MOVBZload {
                        break
                }
-               i3 := x3.AuxInt
-               if x3.Aux != s {
+               i5 := x5.AuxInt
+               if x5.Aux != s {
                        break
                }
-               _ = x3.Args[1]
-               if p != x3.Args[0] {
+               _ = x5.Args[1]
+               if p != x5.Args[0] {
                        break
                }
-               if mem != x3.Args[1] {
+               if mem != x5.Args[1] {
                        break
                }
-               o1 := o2.Args[1]
-               if o1.Op != OpPPC64OR {
+               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 o1.Type != t {
+               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               s6 := v.Args[0]
+               if s6.Op != OpPPC64SLDconst {
                        break
                }
-               _ = o1.Args[1]
-               o0 := o1.Args[0]
-               if o0.Op != OpPPC64OR {
+               if s6.AuxInt != 56 {
                        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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 {
+               x7 := s6.Args[0]
+               if x7.Op != OpPPC64MOVBZload {
                        break
                }
                i7 := x7.AuxInt
@@ -10784,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
                }
@@ -10866,76 +11259,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]
-               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
@@ -10949,32 +11274,32 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                if mem != x0.Args[1] {
                        break
                }
-               s2 := o2.Args[1]
-               if s2.Op != OpPPC64SLDconst {
+               s5 := o5.Args[1]
+               if s5.Op != OpPPC64SLDconst {
                        break
                }
-               if s2.AuxInt != 24 {
+               if s5.AuxInt != 48 {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               x6 := s5.Args[0]
+               if x6.Op != OpPPC64MOVBZload {
                        break
                }
-               i3 := x3.AuxInt
-               if x3.Aux != s {
+               i6 := x6.AuxInt
+               if x6.Aux != s {
                        break
                }
-               _ = x3.Args[1]
-               if p != x3.Args[0] {
+               _ = x6.Args[1]
+               if p != x6.Args[0] {
                        break
                }
-               if mem != x3.Args[1] {
+               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)
@@ -10984,9 +11309,9 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -11014,29 +11339,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
                }
@@ -11074,7 +11377,22 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                        break
                }
                _ = o3.Args[1]
-               s3 := o3.Args[0]
+               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]
                if s3.Op != OpPPC64SLDconst {
                        break
                }
@@ -11096,139 +11414,63 @@ func rewriteValuePPC64_OpPPC64OR_20(v *Value) bool {
                if mem != x4.Args[1] {
                        break
                }
-               o2 := o3.Args[1]
-               if o2.Op != OpPPC64OR {
+               s5 := o5.Args[1]
+               if s5.Op != OpPPC64SLDconst {
                        break
                }
-               if o2.Type != t {
+               if s5.AuxInt != 48 {
                        break
                }
-               _ = o2.Args[1]
-               o1 := o2.Args[0]
-               if o1.Op != OpPPC64OR {
+               x6 := s5.Args[0]
+               if x6.Op != OpPPC64MOVBZload {
                        break
                }
-               if o1.Type != t {
+               i6 := x6.AuxInt
+               if x6.Aux != s {
                        break
                }
-               _ = o1.Args[1]
-               s1 := o1.Args[0]
-               if s1.Op != OpPPC64SLDconst {
+               _ = x6.Args[1]
+               if p != x6.Args[0] {
                        break
                }
-               if s1.AuxInt != 16 {
+               if mem != x6.Args[1] {
                        break
                }
-               x2 := s1.Args[0]
-               if x2.Op != OpPPC64MOVBZload {
+               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
                }
-               i2 := x2.AuxInt
-               if x2.Aux != s {
+               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
+       }
+       return false
+}
+func rewriteValuePPC64_OpPPC64OR_30(v *Value) bool {
+       b := v.Block
+       _ = b
+       config := b.Func.Config
+       _ = config
+       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               s6 := v.Args[0]
+               if s6.Op != OpPPC64SLDconst {
                        break
                }
-               _ = x2.Args[1]
-               if p != x2.Args[0] {
+               if s6.AuxInt != 56 {
                        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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 {
+               x7 := s6.Args[0]
+               if x7.Op != OpPPC64MOVBZload {
                        break
                }
                i7 := x7.AuxInt
@@ -11244,29 +11486,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
                }
@@ -11274,29 +11494,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
                }
@@ -11326,26785 +11524,137 @@ 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
                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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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]
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 {
-                       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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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_30(v *Value) bool {
-       b := v.Block
-       _ = b
-       config := b.Func.Config
-       _ = config
-       // match: (OR <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 {
-                       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
-               }
-               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 {
-                       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
-               }
-               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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 {
-                       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
-               }
-               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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 {
-                       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
-               }
-               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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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
-               }
-               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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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]
-               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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> s3:(SLDconst x4:(MOVBZload [i4] {s} p mem) [32]) o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {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 {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               _ = o4.Args[1]
-               o3 := o4.Args[0]
-               if o3.Op != OpPPC64OR {
+               if mem != x0.Args[1] {
                        break
                }
-               if o3.Type != t {
+               s4 := o4.Args[1]
+               if s4.Op != OpPPC64SLDconst {
                        break
                }
-               _ = o3.Args[1]
-               o2 := o3.Args[0]
-               if o2.Op != OpPPC64OR {
+               if s4.AuxInt != 40 {
                        break
                }
-               if o2.Type != t {
+               x5 := s4.Args[0]
+               if x5.Op != OpPPC64MOVBZload {
                        break
                }
-               _ = o2.Args[1]
-               s2 := o2.Args[0]
-               if s2.Op != OpPPC64SLDconst {
+               i5 := x5.AuxInt
+               if x5.Aux != s {
                        break
                }
-               if s2.AuxInt != 24 {
+               _ = x5.Args[1]
+               if p != x5.Args[0] {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               if mem != x5.Args[1] {
                        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 {
+               s5 := o5.Args[1]
+               if s5.Op != OpPPC64SLDconst {
                        break
                }
-               if o1.Type != t {
+               if s5.AuxInt != 48 {
                        break
                }
-               _ = o1.Args[1]
-               o0 := o1.Args[0]
-               if o0.Op != OpPPC64OR {
+               x6 := s5.Args[0]
+               if x6.Op != OpPPC64MOVBZload {
                        break
                }
-               if o0.Type != t {
+               i6 := x6.AuxInt
+               if x6.Aux != s {
                        break
                }
-               _ = o0.Args[1]
-               s0 := o0.Args[0]
-               if s0.Op != OpPPC64SLDconst {
+               _ = x6.Args[1]
+               if p != x6.Args[0] {
                        break
                }
-               if s0.AuxInt != 8 {
+               if mem != x6.Args[1] {
                        break
                }
-               x1 := s0.Args[0]
-               if x1.Op != OpPPC64MOVBZload {
+               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
                }
-               i1 := x1.AuxInt
-               if x1.Aux != s {
+               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 <t> s6:(SLDconst x7:(MOVBZload [i7] {s} p mem) [56]) o5:(OR <t> o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               s6 := v.Args[0]
+               if s6.Op != OpPPC64SLDconst {
                        break
                }
-               _ = x1.Args[1]
-               if p != x1.Args[0] {
+               if s6.AuxInt != 56 {
                        break
                }
-               if mem != x1.Args[1] {
+               x7 := s6.Args[0]
+               if x7.Op != OpPPC64MOVBZload {
                        break
                }
-               x0 := o0.Args[1]
-               if x0.Op != OpPPC64MOVBZload {
+               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
                }
-               i0 := x0.AuxInt
-               if x0.Aux != s {
+               if o5.Type != t {
                        break
                }
-               _ = x0.Args[1]
-               if p != x0.Args[0] {
+               _ = o5.Args[1]
+               o4 := o5.Args[0]
+               if o4.Op != OpPPC64OR {
                        break
                }
-               if mem != x0.Args[1] {
+               if o4.Type != t {
                        break
                }
-               s1 := o1.Args[1]
-               if s1.Op != OpPPC64SLDconst {
+               _ = o4.Args[1]
+               o3 := o4.Args[0]
+               if o3.Op != OpPPC64OR {
                        break
                }
-               if s1.AuxInt != 16 {
+               if o3.Type != t {
                        break
                }
-               x2 := s1.Args[0]
-               if x2.Op != OpPPC64MOVBZload {
+               _ = o3.Args[1]
+               x0 := o3.Args[0]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               i2 := x2.AuxInt
-               if x2.Aux != s {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               _ = x2.Args[1]
-               if p != x2.Args[0] {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if mem != x2.Args[1] {
+               if mem != x0.Args[1] {
                        break
                }
                s3 := o3.Args[1]
@@ -38173,32 +11723,10 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                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)) {
+               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)
@@ -38208,9 +11736,9 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> s2:(SLDconst x3:(MOVBZload [i3] {s} p mem) [24]) o1:(OR <t> o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -38222,7 +11750,23 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                _ = o5.Args[1]
-               o4 := o5.Args[0]
+               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
                }
@@ -38230,56 +11774,60 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                _ = o4.Args[1]
-               o3 := o4.Args[0]
-               if o3.Op != OpPPC64OR {
+               s4 := o4.Args[0]
+               if s4.Op != OpPPC64SLDconst {
                        break
                }
-               if o3.Type != t {
+               if s4.AuxInt != 40 {
                        break
                }
-               _ = o3.Args[1]
-               o2 := o3.Args[0]
-               if o2.Op != OpPPC64OR {
+               x5 := s4.Args[0]
+               if x5.Op != OpPPC64MOVBZload {
                        break
                }
-               if o2.Type != t {
+               i5 := x5.AuxInt
+               if x5.Aux != s {
                        break
                }
-               _ = o2.Args[1]
-               s2 := o2.Args[0]
-               if s2.Op != OpPPC64SLDconst {
+               _ = x5.Args[1]
+               if p != x5.Args[0] {
                        break
                }
-               if s2.AuxInt != 24 {
+               if mem != x5.Args[1] {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               o3 := o4.Args[1]
+               if o3.Op != OpPPC64OR {
                        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 {
+               if o3.Type != t {
                        break
                }
-               if o1.Type != t {
+               _ = o3.Args[1]
+               s3 := o3.Args[0]
+               if s3.Op != OpPPC64SLDconst {
                        break
                }
-               _ = o1.Args[1]
-               o0 := o1.Args[0]
-               if o0.Op != OpPPC64OR {
+               if s3.AuxInt != 32 {
                        break
                }
-               if o0.Type != t {
+               x4 := s3.Args[0]
+               if x4.Op != OpPPC64MOVBZload {
                        break
                }
-               _ = o0.Args[1]
-               x0 := o0.Args[0]
-               if x0.Op != OpPPC64MOVBZload {
+               i4 := x4.AuxInt
+               if x4.Aux != s {
+                       break
+               }
+               _ = x4.Args[1]
+               if p != x4.Args[0] {
+                       break
+               }
+               if mem != x4.Args[1] {
+                       break
+               }
+               x0 := o3.Args[1]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
                i0 := x0.AuxInt
@@ -38293,114 +11841,144 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                if mem != x0.Args[1] {
                        break
                }
-               s0 := o0.Args[1]
-               if s0.Op != OpPPC64SLDconst {
+               s6 := v.Args[1]
+               if s6.Op != OpPPC64SLDconst {
                        break
                }
-               if s0.AuxInt != 8 {
+               if s6.AuxInt != 56 {
                        break
                }
-               x1 := s0.Args[0]
-               if x1.Op != OpPPC64MOVBZload {
+               x7 := s6.Args[0]
+               if x7.Op != OpPPC64MOVBZload {
                        break
                }
-               i1 := x1.AuxInt
-               if x1.Aux != s {
+               i7 := x7.AuxInt
+               if x7.Aux != s {
                        break
                }
-               _ = x1.Args[1]
-               if p != x1.Args[0] {
+               _ = x7.Args[1]
+               if p != x7.Args[0] {
                        break
                }
-               if mem != x1.Args[1] {
+               if mem != x7.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 <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               o5 := v.Args[0]
+               if o5.Op != OpPPC64OR {
                        break
                }
-               x2 := s1.Args[0]
-               if x2.Op != OpPPC64MOVBZload {
+               if o5.Type != t {
                        break
                }
-               i2 := x2.AuxInt
-               if x2.Aux != s {
+               _ = o5.Args[1]
+               s5 := o5.Args[0]
+               if s5.Op != OpPPC64SLDconst {
                        break
                }
-               _ = x2.Args[1]
-               if p != x2.Args[0] {
+               if s5.AuxInt != 48 {
                        break
                }
-               if mem != x2.Args[1] {
+               x6 := s5.Args[0]
+               if x6.Op != OpPPC64MOVBZload {
                        break
                }
-               s3 := o3.Args[1]
-               if s3.Op != OpPPC64SLDconst {
+               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 s3.AuxInt != 32 {
+               if o4.Type != t {
                        break
                }
-               x4 := s3.Args[0]
-               if x4.Op != OpPPC64MOVBZload {
+               _ = o4.Args[1]
+               s4 := o4.Args[0]
+               if s4.Op != OpPPC64SLDconst {
                        break
                }
-               i4 := x4.AuxInt
-               if x4.Aux != s {
+               if s4.AuxInt != 40 {
                        break
                }
-               _ = x4.Args[1]
-               if p != x4.Args[0] {
+               x5 := s4.Args[0]
+               if x5.Op != OpPPC64MOVBZload {
                        break
                }
-               if mem != x4.Args[1] {
+               i5 := x5.AuxInt
+               if x5.Aux != s {
                        break
                }
-               s4 := o4.Args[1]
-               if s4.Op != OpPPC64SLDconst {
+               _ = 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 s4.AuxInt != 40 {
+               if o3.Type != t {
                        break
                }
-               x5 := s4.Args[0]
-               if x5.Op != OpPPC64MOVBZload {
+               _ = o3.Args[1]
+               x0 := o3.Args[0]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               i5 := x5.AuxInt
-               if x5.Aux != s {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               _ = x5.Args[1]
-               if p != x5.Args[0] {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if mem != x5.Args[1] {
+               if mem != x0.Args[1] {
                        break
                }
-               s5 := o5.Args[1]
-               if s5.Op != OpPPC64SLDconst {
+               s3 := o3.Args[1]
+               if s3.Op != OpPPC64SLDconst {
                        break
                }
-               if s5.AuxInt != 48 {
+               if s3.AuxInt != 32 {
                        break
                }
-               x6 := s5.Args[0]
-               if x6.Op != OpPPC64MOVBZload {
+               x4 := s3.Args[0]
+               if x4.Op != OpPPC64MOVBZload {
                        break
                }
-               i6 := x6.AuxInt
-               if x6.Aux != s {
+               i4 := x4.AuxInt
+               if x4.Aux != s {
                        break
                }
-               _ = x6.Args[1]
-               if p != x6.Args[0] {
+               _ = x4.Args[1]
+               if p != x4.Args[0] {
                        break
                }
-               if mem != x6.Args[1] {
+               if mem != x4.Args[1] {
                        break
                }
                s6 := v.Args[1]
@@ -38425,10 +12003,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)
@@ -38438,9 +12016,9 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -38452,7 +12030,23 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                _ = o5.Args[1]
-               o4 := o5.Args[0]
+               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
                }
@@ -38468,70 +12062,30 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        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 {
+               s3 := o3.Args[0]
+               if s3.Op != OpPPC64SLDconst {
                        break
                }
-               if s0.AuxInt != 8 {
+               if s3.AuxInt != 32 {
                        break
                }
-               x1 := s0.Args[0]
-               if x1.Op != OpPPC64MOVBZload {
+               x4 := s3.Args[0]
+               if x4.Op != OpPPC64MOVBZload {
                        break
                }
-               i1 := x1.AuxInt
-               if x1.Aux != s {
+               i4 := x4.AuxInt
+               if x4.Aux != s {
                        break
                }
-               _ = x1.Args[1]
-               if p != x1.Args[0] {
+               _ = x4.Args[1]
+               if p != x4.Args[0] {
                        break
                }
-               if mem != x1.Args[1] {
+               if mem != x4.Args[1] {
                        break
                }
-               x0 := o0.Args[1]
-               if x0.Op != OpPPC64MOVBZload {
+               x0 := o3.Args[1]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
                i0 := x0.AuxInt
@@ -38545,50 +12099,6 @@ func rewriteValuePPC64_OpPPC64OR_140(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
-               }
-               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
@@ -38611,28 +12121,6 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                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
@@ -38655,10 +12143,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)
@@ -38668,9 +12156,9 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> s1:(SLDconst x2:(MOVBZload [i2] {s} p mem) [16]) o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> o5:(OR <t> s5:(SLDconst x6:(MOVBZload [i6] {s} p mem) [48]) o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -38682,7 +12170,23 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                _ = o5.Args[1]
-               o4 := o5.Args[0]
+               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
                }
@@ -38698,106 +12202,147 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                _ = o3.Args[1]
-               o2 := o3.Args[0]
-               if o2.Op != OpPPC64OR {
+               x0 := o3.Args[0]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               if o2.Type != t {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               _ = o2.Args[1]
-               o1 := o2.Args[0]
-               if o1.Op != OpPPC64OR {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if o1.Type != t {
+               if mem != x0.Args[1] {
                        break
                }
-               _ = o1.Args[1]
-               s1 := o1.Args[0]
-               if s1.Op != OpPPC64SLDconst {
+               s3 := o3.Args[1]
+               if s3.Op != OpPPC64SLDconst {
                        break
                }
-               if s1.AuxInt != 16 {
+               if s3.AuxInt != 32 {
                        break
                }
-               x2 := s1.Args[0]
-               if x2.Op != OpPPC64MOVBZload {
+               x4 := s3.Args[0]
+               if x4.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 {
+               i4 := x4.AuxInt
+               if x4.Aux != s {
                        break
                }
-               if o0.Type != t {
+               _ = x4.Args[1]
+               if p != x4.Args[0] {
                        break
                }
-               _ = o0.Args[1]
-               x0 := o0.Args[0]
-               if x0.Op != OpPPC64MOVBZload {
+               if mem != x4.Args[1] {
                        break
                }
-               i0 := x0.AuxInt
-               if x0.Aux != s {
+               s4 := o4.Args[1]
+               if s4.Op != OpPPC64SLDconst {
                        break
                }
-               _ = x0.Args[1]
-               if p != x0.Args[0] {
+               if s4.AuxInt != 40 {
                        break
                }
-               if mem != x0.Args[1] {
+               x5 := s4.Args[0]
+               if x5.Op != OpPPC64MOVBZload {
                        break
                }
-               s0 := o0.Args[1]
-               if s0.Op != OpPPC64SLDconst {
+               i5 := x5.AuxInt
+               if x5.Aux != s {
                        break
                }
-               if s0.AuxInt != 8 {
+               _ = x5.Args[1]
+               if p != x5.Args[0] {
                        break
                }
-               x1 := s0.Args[0]
-               if x1.Op != OpPPC64MOVBZload {
+               if mem != x5.Args[1] {
                        break
                }
-               i1 := x1.AuxInt
-               if x1.Aux != s {
+               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 && 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)
+               v0.AuxInt = i0
+               v0.Aux = s
+               v0.AddArg(p)
+               v0.AddArg(mem)
+               return true
+       }
+       // match: (OR <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               o5 := v.Args[0]
+               if o5.Op != OpPPC64OR {
                        break
                }
-               _ = x1.Args[1]
-               if p != x1.Args[0] {
+               if o5.Type != t {
                        break
                }
-               if mem != x1.Args[1] {
+               _ = o5.Args[1]
+               o4 := o5.Args[0]
+               if o4.Op != OpPPC64OR {
                        break
                }
-               s2 := o2.Args[1]
-               if s2.Op != OpPPC64SLDconst {
+               if o4.Type != t {
                        break
                }
-               if s2.AuxInt != 24 {
+               _ = o4.Args[1]
+               s4 := o4.Args[0]
+               if s4.Op != OpPPC64SLDconst {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               if s4.AuxInt != 40 {
                        break
                }
-               i3 := x3.AuxInt
-               if x3.Aux != s {
+               x5 := s4.Args[0]
+               if x5.Op != OpPPC64MOVBZload {
                        break
                }
-               _ = x3.Args[1]
-               if p != x3.Args[0] {
+               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 mem != x3.Args[1] {
+               if o3.Type != t {
                        break
                }
-               s3 := o3.Args[1]
+               _ = o3.Args[1]
+               s3 := o3.Args[0]
                if s3.Op != OpPPC64SLDconst {
                        break
                }
@@ -38819,26 +12364,19 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                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 {
+               x0 := o3.Args[1]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               i5 := x5.AuxInt
-               if x5.Aux != s {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               _ = x5.Args[1]
-               if p != x5.Args[0] {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if mem != x5.Args[1] {
+               if mem != x0.Args[1] {
                        break
                }
                s5 := o5.Args[1]
@@ -38885,10 +12423,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)
@@ -38898,9 +12436,9 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> o5:(OR <t> o4:(OR <t> s4:(SLDconst x5:(MOVBZload [i5] {s} p mem) [40]) o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -38920,7 +12458,23 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                _ = o4.Args[1]
-               o3 := o4.Args[0]
+               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
                }
@@ -38928,106 +12482,131 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                _ = o3.Args[1]
-               o2 := o3.Args[0]
-               if o2.Op != OpPPC64OR {
+               x0 := o3.Args[0]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               if o2.Type != t {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               _ = o2.Args[1]
-               o1 := o2.Args[0]
-               if o1.Op != OpPPC64OR {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
                        break
                }
-               if o1.Type != t {
+               if mem != x0.Args[1] {
                        break
                }
-               _ = o1.Args[1]
-               o0 := o1.Args[0]
-               if o0.Op != OpPPC64OR {
+               s3 := o3.Args[1]
+               if s3.Op != OpPPC64SLDconst {
                        break
                }
-               if o0.Type != t {
+               if s3.AuxInt != 32 {
                        break
                }
-               _ = o0.Args[1]
-               s0 := o0.Args[0]
-               if s0.Op != OpPPC64SLDconst {
+               x4 := s3.Args[0]
+               if x4.Op != OpPPC64MOVBZload {
                        break
                }
-               if s0.AuxInt != 8 {
+               i4 := x4.AuxInt
+               if x4.Aux != s {
                        break
                }
-               x1 := s0.Args[0]
-               if x1.Op != OpPPC64MOVBZload {
+               _ = x4.Args[1]
+               if p != x4.Args[0] {
                        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 {
+               if mem != x4.Args[1] {
                        break
                }
-               i0 := x0.AuxInt
-               if x0.Aux != s {
+               s5 := o5.Args[1]
+               if s5.Op != OpPPC64SLDconst {
                        break
                }
-               _ = x0.Args[1]
-               if p != x0.Args[0] {
+               if s5.AuxInt != 48 {
                        break
                }
-               if mem != x0.Args[1] {
+               x6 := s5.Args[0]
+               if x6.Op != OpPPC64MOVBZload {
                        break
                }
-               s1 := o1.Args[1]
-               if s1.Op != OpPPC64SLDconst {
+               i6 := x6.AuxInt
+               if x6.Aux != s {
                        break
                }
-               if s1.AuxInt != 16 {
+               _ = x6.Args[1]
+               if p != x6.Args[0] {
                        break
                }
-               x2 := s1.Args[0]
-               if x2.Op != OpPPC64MOVBZload {
+               if mem != x6.Args[1] {
                        break
                }
-               i2 := x2.AuxInt
-               if x2.Aux != s {
+               s6 := v.Args[1]
+               if s6.Op != OpPPC64SLDconst {
                        break
                }
-               _ = x2.Args[1]
-               if p != x2.Args[0] {
+               if s6.AuxInt != 56 {
                        break
                }
-               if mem != x2.Args[1] {
+               x7 := s6.Args[0]
+               if x7.Op != OpPPC64MOVBZload {
                        break
                }
-               s2 := o2.Args[1]
-               if s2.Op != OpPPC64SLDconst {
+               i7 := x7.AuxInt
+               if x7.Aux != s {
                        break
                }
-               if s2.AuxInt != 24 {
+               _ = x7.Args[1]
+               if p != x7.Args[0] {
                        break
                }
-               x3 := s2.Args[0]
-               if x3.Op != OpPPC64MOVBZload {
+               if mem != x7.Args[1] {
                        break
                }
-               i3 := x3.AuxInt
-               if x3.Aux != s {
+               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
                }
-               _ = x3.Args[1]
-               if p != x3.Args[0] {
+               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 <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
+       for {
+               t := v.Type
+               _ = v.Args[1]
+               o5 := v.Args[0]
+               if o5.Op != OpPPC64OR {
                        break
                }
-               if mem != x3.Args[1] {
+               if o5.Type != t {
                        break
                }
-               s3 := o3.Args[1]
+               _ = 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
                }
@@ -39039,14 +12618,23 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        break
                }
                i4 := x4.AuxInt
-               if x4.Aux != s {
+               s := x4.Aux
+               _ = x4.Args[1]
+               p := x4.Args[0]
+               mem := x4.Args[1]
+               x0 := o3.Args[1]
+               if x0.Op != OpPPC64MOVWZload {
                        break
                }
-               _ = x4.Args[1]
-               if p != x4.Args[0] {
+               i0 := x0.AuxInt
+               if x0.Aux != s {
                        break
                }
-               if mem != x4.Args[1] {
+               _ = x0.Args[1]
+               if p != x0.Args[0] {
+                       break
+               }
+               if mem != x0.Args[1] {
                        break
                }
                s4 := o4.Args[1]
@@ -39115,10 +12703,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)
@@ -39128,9 +12716,9 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                v0.AddArg(mem)
                return true
        }
-       // match: (OR <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> o2:(OR <t> o1:(OR <t> o0:(OR <t> 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 <t> {s} [i0] p mem)
+       // match: (OR <t> o5:(OR <t> o4:(OR <t> o3:(OR <t> 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 <t> {s} [i0] p mem)
        for {
                t := v.Type
                _ = v.Args[1]
@@ -39158,32 +12746,8 @@ func rewriteValuePPC64_OpPPC64OR_140(v *Value) bool {
                        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)