diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/vector-reduce-add.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-reduce-add.ll | 70 | 
1 files changed, 20 insertions, 50 deletions
| diff --git a/llvm/test/CodeGen/X86/vector-reduce-add.ll b/llvm/test/CodeGen/X86/vector-reduce-add.ll index cd1147aff88..86c8b982cb0 100644 --- a/llvm/test/CodeGen/X86/vector-reduce-add.ll +++ b/llvm/test/CodeGen/X86/vector-reduce-add.ll @@ -1101,57 +1101,27 @@ define i8 @test_v4i8_load(<4 x i8>* %p) {  ; SSE41-NEXT:    # kill: def $al killed $al killed $eax  ; SSE41-NEXT:    retq  ; -; AVX1-LABEL: test_v4i8_load: -; AVX1:       # %bb.0: -; AVX1-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero -; AVX1-NEXT:    vpsrld $16, %xmm0, %xmm1 -; AVX1-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX1-NEXT:    vpsrlw $8, %xmm0, %xmm1 -; AVX1-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX1-NEXT:    vpextrb $0, %xmm0, %eax -; AVX1-NEXT:    # kill: def $al killed $al killed $eax -; AVX1-NEXT:    retq -; -; AVX2-LABEL: test_v4i8_load: -; AVX2:       # %bb.0: -; AVX2-NEXT:    movl (%rdi), %eax -; AVX2-NEXT:    vmovd %eax, %xmm0 -; AVX2-NEXT:    shrl $16, %eax -; AVX2-NEXT:    vmovd %eax, %xmm1 -; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm1 -; AVX2-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX2-NEXT:    vpsrlw $8, %xmm0, %xmm1 -; AVX2-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX2-NEXT:    vpextrb $0, %xmm0, %eax -; AVX2-NEXT:    # kill: def $al killed $al killed $eax -; AVX2-NEXT:    retq +; AVX-LABEL: test_v4i8_load: +; AVX:       # %bb.0: +; AVX-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero +; AVX-NEXT:    vpsrld $16, %xmm0, %xmm1 +; AVX-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 +; AVX-NEXT:    vpsrlw $8, %xmm0, %xmm1 +; AVX-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 +; AVX-NEXT:    vpextrb $0, %xmm0, %eax +; AVX-NEXT:    # kill: def $al killed $al killed $eax +; AVX-NEXT:    retq  ; -; AVX512BW-LABEL: test_v4i8_load: -; AVX512BW:       # %bb.0: -; AVX512BW-NEXT:    movl (%rdi), %eax -; AVX512BW-NEXT:    vmovd %eax, %xmm0 -; AVX512BW-NEXT:    shrl $16, %eax -; AVX512BW-NEXT:    vmovd %eax, %xmm1 -; AVX512BW-NEXT:    vpbroadcastw %xmm1, %xmm1 -; AVX512BW-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX512BW-NEXT:    vpsrlw $8, %xmm0, %xmm1 -; AVX512BW-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX512BW-NEXT:    vpextrb $0, %xmm0, %eax -; AVX512BW-NEXT:    # kill: def $al killed $al killed $eax -; AVX512BW-NEXT:    retq -; -; AVX512VL-LABEL: test_v4i8_load: -; AVX512VL:       # %bb.0: -; AVX512VL-NEXT:    movl (%rdi), %eax -; AVX512VL-NEXT:    vmovd %eax, %xmm0 -; AVX512VL-NEXT:    shrl $16, %eax -; AVX512VL-NEXT:    vpbroadcastw %eax, %xmm1 -; AVX512VL-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX512VL-NEXT:    vpsrlw $8, %xmm0, %xmm1 -; AVX512VL-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 -; AVX512VL-NEXT:    vpextrb $0, %xmm0, %eax -; AVX512VL-NEXT:    # kill: def $al killed $al killed $eax -; AVX512VL-NEXT:    retq +; AVX512-LABEL: test_v4i8_load: +; AVX512:       # %bb.0: +; AVX512-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero +; AVX512-NEXT:    vpsrld $16, %xmm0, %xmm1 +; AVX512-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 +; AVX512-NEXT:    vpsrlw $8, %xmm0, %xmm1 +; AVX512-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 +; AVX512-NEXT:    vpextrb $0, %xmm0, %eax +; AVX512-NEXT:    # kill: def $al killed $al killed $eax +; AVX512-NEXT:    retq    %a0 = load <4 x i8>, <4 x i8>* %p    %1 = call i8 @llvm.experimental.vector.reduce.add.v4i8(<4 x i8> %a0)    ret i8 %1 | 

