This reverts CL 189277.
Reason for revert: broke 32-bit builders.
Updates #33902
Change-Id: Ie5f180d0371a90e5057ed578c334372e5fc3a286
Reviewed-on: https://go-review.googlesource.com/c/go/+/192097
Run-TryBot: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Daniel Martà <mvdan@mvdan.cc>
func(s *state, n *Node, args []*ssa.Value) *ssa.Value {
return s.newValue1(ssa.OpCtz16, types.Types[TINT], args[0])
},
- sys.AMD64, sys.ARM, sys.I386, sys.ARM64, sys.Wasm)
+ sys.AMD64, sys.ARM, sys.ARM64, sys.Wasm)
addF("math/bits", "TrailingZeros16",
func(s *state, n *Node, args []*ssa.Value) *ssa.Value {
x := s.newValue1(ssa.OpZeroExt16to64, types.Types[TUINT64], args[0])
(Sqrt x) -> (SQRTSD x)
-(Ctz16 x) -> (BSFL (ORLconst <typ.UInt32> [0x10000] x))
-
// Lowering extension
(SignExt8to16 x) -> (MOVBLSX x)
(SignExt8to32 x) -> (MOVBLSX x)
return rewriteValue386_OpConstBool_0(v)
case OpConstNil:
return rewriteValue386_OpConstNil_0(v)
- case OpCtz16:
- return rewriteValue386_OpCtz16_0(v)
case OpCvt32Fto32:
return rewriteValue386_OpCvt32Fto32_0(v)
case OpCvt32Fto64F:
return true
}
}
-func rewriteValue386_OpCtz16_0(v *Value) bool {
- b := v.Block
- typ := &b.Func.Config.Types
- // match: (Ctz16 x)
- // cond:
- // result: (BSFL (ORLconst <typ.UInt32> [0x10000] x))
- for {
- x := v.Args[0]
- v.reset(Op386BSFL)
- v0 := b.NewValue0(v.Pos, Op386ORLconst, typ.UInt32)
- v0.AuxInt = 0x10000
- v0.AddArg(x)
- v.AddArg(v0)
- return true
- }
-}
func rewriteValue386_OpCvt32Fto32_0(v *Value) bool {
// match: (Cvt32Fto32 x)
// cond:
func TrailingZeros16(n uint16) int {
// amd64:"BSFL","BTSL\\t\\$16"
- // 386:"BSFL\t"
// arm:"ORR\t\\$65536","CLZ",-"MOVHU\tR"
// arm64:"ORR\t\\$65536","RBITW","CLZW",-"MOVHU\tR",-"RBIT\t",-"CLZ\t"
// s390x:"FLOGR","OR\t\\$65536"