@@ -141,6 +141,24 @@ for.cond.cleanup:
141141}
142142
143143
144+ define i32 @issue_121372 (<4 x i32 > %0 ) {
145+ ; CHECK-LABEL: issue_121372:
146+ ; CHECK: // %bb.0:
147+ ; CHECK-NEXT: fmov w8, s0
148+ ; CHECK-NEXT: cmp w8, #0
149+ ; CHECK-NEXT: cset w8, eq
150+ ; CHECK-NEXT: cmp w8, #1
151+ ; CHECK-NEXT: csetm w0, lt
152+ ; CHECK-NEXT: ret
153+ %2 = icmp ule <4 x i32 > %0 , zeroinitializer
154+ %3 = sext <4 x i1 > %2 to <4 x i32 >
155+ %4 = icmp sge <4 x i32 > zeroinitializer , %3
156+ %5 = extractelement <4 x i1 > %4 , i32 0
157+ %6 = sext i1 %5 to i32
158+ ret i32 %6
159+ }
160+
161+
144162; Negative tests
145163
146164define i1 @extract_icmp_v4i32_splat_rhs (<4 x i32 > %a , i32 %b ) {
@@ -163,9 +181,9 @@ define i1 @extract_icmp_v4i32_splat_rhs_mul_use(<4 x i32> %a, ptr %p) {
163181; CHECK-LABEL: extract_icmp_v4i32_splat_rhs_mul_use:
164182; CHECK: // %bb.0:
165183; CHECK-NEXT: movi v1.4s, #235
166- ; CHECK-NEXT: adrp x9, .LCPI7_0
184+ ; CHECK-NEXT: adrp x9, .LCPI8_0
167185; CHECK-NEXT: mov x8, x0
168- ; CHECK-NEXT: ldr q2, [x9, :lo12:.LCPI7_0 ]
186+ ; CHECK-NEXT: ldr q2, [x9, :lo12:.LCPI8_0 ]
169187; CHECK-NEXT: cmhi v0.4s, v1.4s, v0.4s
170188; CHECK-NEXT: xtn v1.4h, v0.4s
171189; CHECK-NEXT: and v0.16b, v0.16b, v2.16b
0 commit comments