@@ -302,3 +302,21 @@ define i32 @wrong_min_signbits(<2 x i16> %x) { |
|
|
302 |
302 |
%t1 = bitcast <2 x i16> %sel to i32 |
303 |
303 |
ret i32 %t1 |
304 |
304 |
} |
|
305 |
+ |
|
306 |
+define i32 @pr129181() { |
|
307 |
+; SSE-LABEL: pr129181: |
|
308 |
+; SSE: # %bb.0: # %entry |
|
309 |
+; SSE-NEXT: xorl %eax, %eax |
|
310 |
+; SSE-NEXT: retq |
|
311 |
+; |
|
312 |
+; AVX-LABEL: pr129181: |
|
313 |
+; AVX: # %bb.0: # %entry |
|
314 |
+; AVX-NEXT: xorl %eax, %eax |
|
315 |
+; AVX-NEXT: retq |
|
316 |
+entry: |
|
317 |
+%x = insertelement <4 x i32> zeroinitializer, i32 0, i32 0 |
|
318 |
+%cmp = icmp ult <4 x i32> %x, splat (i32 1) |
|
319 |
+%sel = select <4 x i1> %cmp, <4 x i32> zeroinitializer, <4 x i32> <i32 0, i32 0, i32 1, i32 poison> |
|
320 |
+%reduce = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %sel) |
|
321 |
+ret i32 %reduce |
|
322 |
+} |