Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / pr53247.ll
blob2fc2ffb414e0e63f14fca46222e23e5ed5cc802c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ssse3 | FileCheck %s --check-prefixes=SSE
3 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX
5 define i32 @PR53247(){
6 ; SSE-LABEL: PR53247:
7 ; SSE:       # %bb.0: # %entry
8 ; SSE-NEXT:    pxor %xmm0, %xmm0
9 ; SSE-NEXT:    phaddd %xmm0, %xmm0
10 ; SSE-NEXT:    phaddd %xmm0, %xmm0
11 ; SSE-NEXT:    movd %xmm0, %eax
12 ; SSE-NEXT:    retq
14 ; AVX-LABEL: PR53247:
15 ; AVX:       # %bb.0: # %entry
16 ; AVX-NEXT:    vpxor %xmm0, %xmm0, %xmm0
17 ; AVX-NEXT:    vphaddd %xmm0, %xmm0, %xmm0
18 ; AVX-NEXT:    vphaddd %xmm0, %xmm0, %xmm0
19 ; AVX-NEXT:    vmovd %xmm0, %eax
20 ; AVX-NEXT:    retq
21 entry:
22   %0 = call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> zeroinitializer, <4 x i32> zeroinitializer)
23   %1 = call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> %0, <4 x i32> zeroinitializer)
24   %vecext.i = extractelement <4 x i32> %1, i32 0
25   ret i32 %vecext.i
27 declare <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32>, <4 x i32>)