@@ -108,8 +108,7 @@ define i32 @one_demanded_low_bit(i32 %x) {
108
108
define i16 @squared_one_demanded_low_bit (i16 %x ) {
109
109
; CHECK-LABEL: squared_one_demanded_low_bit:
110
110
; CHECK: // %bb.0:
111
- ; CHECK-NEXT: mul w8, w0, w0
112
- ; CHECK-NEXT: and w0, w8, #0x1
111
+ ; CHECK-NEXT: and w0, w0, #0x1
113
112
; CHECK-NEXT: ret
114
113
%mul = mul i16 %x , %x
115
114
%and = and i16 %mul , 1
@@ -120,7 +119,6 @@ define <4 x i32> @squared_one_demanded_low_bit_splat(<4 x i32> %x) {
120
119
; CHECK-LABEL: squared_one_demanded_low_bit_splat:
121
120
; CHECK: // %bb.0:
122
121
; CHECK-NEXT: mvni v1.4s, #1
123
- ; CHECK-NEXT: mul v0.4s, v0.4s, v0.4s
124
122
; CHECK-NEXT: orr v0.16b, v0.16b, v1.16b
125
123
; CHECK-NEXT: ret
126
124
%mul = mul <4 x i32 > %x , %x
@@ -131,8 +129,7 @@ define <4 x i32> @squared_one_demanded_low_bit_splat(<4 x i32> %x) {
131
129
define i32 @squared_demanded_2_low_bits (i32 %x ) {
132
130
; CHECK-LABEL: squared_demanded_2_low_bits:
133
131
; CHECK: // %bb.0:
134
- ; CHECK-NEXT: mul w8, w0, w0
135
- ; CHECK-NEXT: and w0, w8, #0x3
132
+ ; CHECK-NEXT: and w0, w0, #0x1
136
133
; CHECK-NEXT: ret
137
134
%mul = mul i32 %x , %x
138
135
%and = and i32 %mul , 3
@@ -142,13 +139,7 @@ define i32 @squared_demanded_2_low_bits(i32 %x) {
142
139
define <2 x i64 > @squared_demanded_2_low_bits_splat (<2 x i64 > %x ) {
143
140
; CHECK-LABEL: squared_demanded_2_low_bits_splat:
144
141
; CHECK: // %bb.0:
145
- ; CHECK-NEXT: fmov x8, d0
146
- ; CHECK-NEXT: mov x9, v0.d[1]
147
- ; CHECK-NEXT: mul x8, x8, x8
148
- ; CHECK-NEXT: mul x9, x9, x9
149
- ; CHECK-NEXT: fmov d0, x8
150
142
; CHECK-NEXT: mov x8, #-2
151
- ; CHECK-NEXT: mov v0.d[1], x9
152
143
; CHECK-NEXT: dup v1.2d, x8
153
144
; CHECK-NEXT: orr v0.16b, v0.16b, v1.16b
154
145
; CHECK-NEXT: ret
0 commit comments