1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/CodeGen/X86/pr43509.ll
Craig Topper 6890636bf7 [X86] Add ANY_EXTEND to switch in ReplaceNodeResults, but just fall back to default handling.
ANY_EXTEND of v8i8 is marked Custom on AVX512 for handling extends
from v8i8. But the type legalization infrastructure will call
ReplaceNodeResults for v8i8 results. We should just defer it the
default handling instead of asserting in the default of the switch.

Fixes PR43509.

llvm-svn: 373234
2019-09-30 17:14:22 +00:00

26 lines
1.2 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=skx | FileCheck %s
define <8 x i8> @foo(<8 x float> %arg) {
; CHECK-LABEL: foo:
; CHECK: # %bb.0: # %bb
; CHECK-NEXT: vcmpgtps {{.*}}(%rip){1to8}, %ymm0, %k0
; CHECK-NEXT: vpmovm2b %k0, %xmm1
; CHECK-NEXT: vxorps %xmm2, %xmm2, %xmm2
; CHECK-NEXT: vcmpltps %ymm2, %ymm0, %k1
; CHECK-NEXT: vmovdqu8 {{.*}}(%rip), %xmm0 {%k1} {z}
; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
; CHECK-NEXT: vzeroupper
; CHECK-NEXT: retq
bb:
%tmp = xor <8 x i8> zeroinitializer, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%tmp1 = fcmp reassoc nsz contract ogt <8 x float> %arg, <float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00, float 8.000000e+00>
%tmp2 = zext <8 x i1> %tmp1 to <8 x i8>
%tmp3 = and <8 x i8> %tmp, %tmp2
%tmp4 = fcmp reassoc nsz contract ogt <8 x float> zeroinitializer, %arg
%tmp5 = or <8 x i1> zeroinitializer, %tmp4
%tmp6 = zext <8 x i1> %tmp5 to <8 x i8>
%tmp7 = and <8 x i8> %tmp3, %tmp6
ret <8 x i8> %tmp7
}