| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64-v3 | FileCheck %s |
| ; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64-v4 | FileCheck %s |
| |
| define i256 @PR173924(<8 x i256> %a0) { |
| ; CHECK-LABEL: PR173924: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: movq %rdi, %rax |
| ; CHECK-NEXT: movl {{[0-9]+}}(%rsp), %edi |
| ; CHECK-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero |
| ; CHECK-NEXT: movl {{[0-9]+}}(%rsp), %edx |
| ; CHECK-NEXT: movl {{[0-9]+}}(%rsp), %ecx |
| ; CHECK-NEXT: movl {{[0-9]+}}(%rsp), %r8d |
| ; CHECK-NEXT: movl {{[0-9]+}}(%rsp), %r10d |
| ; CHECK-NEXT: andl $1, %r10d |
| ; CHECK-NEXT: andl $1, %esi |
| ; CHECK-NEXT: addl %r10d, %esi |
| ; CHECK-NEXT: andl $1, %r8d |
| ; CHECK-NEXT: andl $1, %ecx |
| ; CHECK-NEXT: addl %r8d, %ecx |
| ; CHECK-NEXT: addl %esi, %ecx |
| ; CHECK-NEXT: andl $1, %edx |
| ; CHECK-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 |
| ; CHECK-NEXT: vmovq %xmm0, %rsi |
| ; CHECK-NEXT: andl $1, %edi |
| ; CHECK-NEXT: andl $1, %r9d |
| ; CHECK-NEXT: addl %edi, %r9d |
| ; CHECK-NEXT: addl %edx, %esi |
| ; CHECK-NEXT: addl %r9d, %esi |
| ; CHECK-NEXT: addl %ecx, %esi |
| ; CHECK-NEXT: vmovd %esi, %xmm0 |
| ; CHECK-NEXT: vmovdqu %ymm0, (%rax) |
| ; CHECK-NEXT: vzeroupper |
| ; CHECK-NEXT: retq |
| %m = and <8 x i256> %a0, splat (i256 1) |
| %r = call i256 @llvm.vector.reduce.add.v8i256(<8 x i256> %m) |
| ret i256 %r |
| } |