(GT (CMPWconst [0] z:(MSUBW a x y)) yes no) && z.Uses==1 -> (GT (CMPW a (MULW <x.Type> x y)) yes no)
// Absorb bit-tests into block
-(Z (ANDconst [c] x) yes no) && oneBit(c) -> (TBZ {ntz(c)} x yes no)
-(NZ (ANDconst [c] x) yes no) && oneBit(c) -> (TBNZ {ntz(c)} x yes no)
-(ZW (ANDconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBZ {ntz(int64(uint32(c)))} x yes no)
-(NZW (ANDconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBNZ {ntz(int64(uint32(c)))} x yes no)
-(EQ (TSTconst [c] x) yes no) && oneBit(c) -> (TBZ {ntz(c)} x yes no)
-(NE (TSTconst [c] x) yes no) && oneBit(c) -> (TBNZ {ntz(c)} x yes no)
-(EQ (TSTWconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBZ {ntz(int64(uint32(c)))} x yes no)
-(NE (TSTWconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBNZ {ntz(int64(uint32(c)))} x yes no)
+(Z (ANDconst [c] x) yes no) && oneBit(c) -> (TBZ {int64(ntz64(c))} x yes no)
+(NZ (ANDconst [c] x) yes no) && oneBit(c) -> (TBNZ {int64(ntz64(c))} x yes no)
+(ZW (ANDconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBZ {int64(ntz64(int64(uint32(c))))} x yes no)
+(NZW (ANDconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBNZ {int64(ntz64(int64(uint32(c))))} x yes no)
+(EQ (TSTconst [c] x) yes no) && oneBit(c) -> (TBZ {int64(ntz64(c))} x yes no)
+(NE (TSTconst [c] x) yes no) && oneBit(c) -> (TBNZ {int64(ntz64(c))} x yes no)
+(EQ (TSTWconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBZ {int64(ntz64(int64(uint32(c))))} x yes no)
+(NE (TSTWconst [c] x) yes no) && oneBit(int64(uint32(c))) -> (TBNZ {int64(ntz64(int64(uint32(c))))} x yes no)
// Test sign-bit for signed comparisons against zero
(GE (CMPWconst [0] x) yes no) -> (TBZ {int64(31)} x yes no)
}
// match: (EQ (TSTconst [c] x) yes no)
// cond: oneBit(c)
- // result: (TBZ {ntz(c)} x yes no)
+ // result: (TBZ {int64(ntz64(c))} x yes no)
for b.Controls[0].Op == OpARM64TSTconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBZ, x)
- b.Aux = ntz(c)
+ b.Aux = int64(ntz64(c))
return true
}
// match: (EQ (TSTWconst [c] x) yes no)
// cond: oneBit(int64(uint32(c)))
- // result: (TBZ {ntz(int64(uint32(c)))} x yes no)
+ // result: (TBZ {int64(ntz64(int64(uint32(c))))} x yes no)
for b.Controls[0].Op == OpARM64TSTWconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBZ, x)
- b.Aux = ntz(int64(uint32(c)))
+ b.Aux = int64(ntz64(int64(uint32(c))))
return true
}
// match: (EQ (FlagEQ) yes no)
}
// match: (NE (TSTconst [c] x) yes no)
// cond: oneBit(c)
- // result: (TBNZ {ntz(c)} x yes no)
+ // result: (TBNZ {int64(ntz64(c))} x yes no)
for b.Controls[0].Op == OpARM64TSTconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBNZ, x)
- b.Aux = ntz(c)
+ b.Aux = int64(ntz64(c))
return true
}
// match: (NE (TSTWconst [c] x) yes no)
// cond: oneBit(int64(uint32(c)))
- // result: (TBNZ {ntz(int64(uint32(c)))} x yes no)
+ // result: (TBNZ {int64(ntz64(int64(uint32(c))))} x yes no)
for b.Controls[0].Op == OpARM64TSTWconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBNZ, x)
- b.Aux = ntz(int64(uint32(c)))
+ b.Aux = int64(ntz64(int64(uint32(c))))
return true
}
// match: (NE (FlagEQ) yes no)
}
// match: (NZ (ANDconst [c] x) yes no)
// cond: oneBit(c)
- // result: (TBNZ {ntz(c)} x yes no)
+ // result: (TBNZ {int64(ntz64(c))} x yes no)
for b.Controls[0].Op == OpARM64ANDconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBNZ, x)
- b.Aux = ntz(c)
+ b.Aux = int64(ntz64(c))
return true
}
// match: (NZ (MOVDconst [0]) yes no)
case BlockARM64NZW:
// match: (NZW (ANDconst [c] x) yes no)
// cond: oneBit(int64(uint32(c)))
- // result: (TBNZ {ntz(int64(uint32(c)))} x yes no)
+ // result: (TBNZ {int64(ntz64(int64(uint32(c))))} x yes no)
for b.Controls[0].Op == OpARM64ANDconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBNZ, x)
- b.Aux = ntz(int64(uint32(c)))
+ b.Aux = int64(ntz64(int64(uint32(c))))
return true
}
// match: (NZW (MOVDconst [c]) yes no)
case BlockARM64Z:
// match: (Z (ANDconst [c] x) yes no)
// cond: oneBit(c)
- // result: (TBZ {ntz(c)} x yes no)
+ // result: (TBZ {int64(ntz64(c))} x yes no)
for b.Controls[0].Op == OpARM64ANDconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBZ, x)
- b.Aux = ntz(c)
+ b.Aux = int64(ntz64(c))
return true
}
// match: (Z (MOVDconst [0]) yes no)
case BlockARM64ZW:
// match: (ZW (ANDconst [c] x) yes no)
// cond: oneBit(int64(uint32(c)))
- // result: (TBZ {ntz(int64(uint32(c)))} x yes no)
+ // result: (TBZ {int64(ntz64(int64(uint32(c))))} x yes no)
for b.Controls[0].Op == OpARM64ANDconst {
v_0 := b.Controls[0]
c := v_0.AuxInt
break
}
b.resetWithControl(BlockARM64TBZ, x)
- b.Aux = ntz(int64(uint32(c)))
+ b.Aux = int64(ntz64(int64(uint32(c))))
return true
}
// match: (ZW (MOVDconst [c]) yes no)