@@ -66,7 +66,7 @@ define <4 x i32> @combine_mul_self_demandedbits_vector(<4 x i32> %x) {
66
66
define i8 @one_demanded_bit (i8 %x ) {
67
67
; CHECK-LABEL: one_demanded_bit:
68
68
; CHECK: // %bb.0:
69
- ; CHECK-NEXT: neg w8, w0, lsl #6
69
+ ; CHECK-NEXT: lsl w8, w0, #6
70
70
; CHECK-NEXT: orr w0, w8, #0xffffffbf
71
71
; CHECK-NEXT: ret
72
72
%m = mul i8 %x , 192 ; 0b1100_0000
@@ -77,16 +77,9 @@ define i8 @one_demanded_bit(i8 %x) {
77
77
define <2 x i64 > @one_demanded_bit_splat (<2 x i64 > %x ) {
78
78
; CHECK-LABEL: one_demanded_bit_splat:
79
79
; CHECK: // %bb.0:
80
- ; CHECK-NEXT: fmov x8, d0
81
- ; CHECK-NEXT: mov x9, v0.d[1]
82
- ; CHECK-NEXT: add x8, x8, x8, lsl #2
83
- ; CHECK-NEXT: lsl x8, x8, #5
84
- ; CHECK-NEXT: add x9, x9, x9, lsl #2
85
- ; CHECK-NEXT: fmov d0, x8
86
- ; CHECK-NEXT: lsl x8, x9, #5
87
- ; CHECK-NEXT: mov w9, #32
88
- ; CHECK-NEXT: mov v0.d[1], x8
89
- ; CHECK-NEXT: dup v1.2d, x9
80
+ ; CHECK-NEXT: mov w8, #32
81
+ ; CHECK-NEXT: shl v0.2d, v0.2d, #5
82
+ ; CHECK-NEXT: dup v1.2d, x8
90
83
; CHECK-NEXT: and v0.16b, v0.16b, v1.16b
91
84
; CHECK-NEXT: ret
92
85
%m = mul <2 x i64 > %x , <i64 160 , i64 160 > ; 0b1010_0000
@@ -97,8 +90,7 @@ define <2 x i64> @one_demanded_bit_splat(<2 x i64> %x) {
97
90
define i32 @one_demanded_low_bit (i32 %x ) {
98
91
; CHECK-LABEL: one_demanded_low_bit:
99
92
; CHECK: // %bb.0:
100
- ; CHECK-NEXT: neg w8, w0
101
- ; CHECK-NEXT: and w0, w8, #0x1
93
+ ; CHECK-NEXT: and w0, w0, #0x1
102
94
; CHECK-NEXT: ret
103
95
%m = mul i32 %x , -63 ; any odd number will do
104
96
%r = and i32 %m , 1
0 commit comments