blob: f5059da10da7ccae4603d5b31cee429166ffd5a4 [file] [edit]
; 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
}