mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
aa17f2750f
If we go with D75412, we no longer depend on the scalar type directly. So we don't need to avoid using i64. We already have AVX1 fallback patterns with i32 and i64 scalar types so we don't need to avoid using integer types on AVX1. Differential Revision: https://reviews.llvm.org/D75413
39 lines
2.0 KiB
LLVM
39 lines
2.0 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -mattr=avx512dq | FileCheck %s
|
|
|
|
define void @undef_cond() {
|
|
; CHECK-LABEL: undef_cond:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: retl
|
|
%a_load22 = load <16 x i64>, <16 x i64>* null, align 1
|
|
%bitop = or <16 x i64> %a_load22, <i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736>
|
|
%v.i = load <16 x i64>, <16 x i64>* null
|
|
%v1.i41 = select <16 x i1> undef, <16 x i64> %bitop, <16 x i64> %v.i
|
|
store <16 x i64> %v1.i41, <16 x i64>* null
|
|
ret void
|
|
}
|
|
|
|
define void @f_f___un_3C_unf_3E_un_3C_unf_3E_(<16 x i1> %x) {
|
|
; CHECK-LABEL: f_f___un_3C_unf_3E_un_3C_unf_3E_:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: vpmovsxbd %xmm0, %zmm0
|
|
; CHECK-NEXT: vpslld $31, %zmm0, %zmm0
|
|
; CHECK-NEXT: vpmovd2m %zmm0, %k1
|
|
; CHECK-NEXT: vmovapd 0, %zmm0
|
|
; CHECK-NEXT: vmovapd 64, %zmm1
|
|
; CHECK-NEXT: vbroadcastsd {{.*#+}} zmm2 = [68719476736,68719476736,68719476736,68719476736,68719476736,68719476736,68719476736,68719476736]
|
|
; CHECK-NEXT: kshiftrw $8, %k1, %k2
|
|
; CHECK-NEXT: vorpd %zmm2, %zmm1, %zmm1 {%k2}
|
|
; CHECK-NEXT: vorpd %zmm2, %zmm0, %zmm0 {%k1}
|
|
; CHECK-NEXT: vmovapd %zmm0, 0
|
|
; CHECK-NEXT: vmovapd %zmm1, 64
|
|
; CHECK-NEXT: vzeroupper
|
|
; CHECK-NEXT: retl
|
|
%a_load22 = load <16 x i64>, <16 x i64>* null, align 1
|
|
%bitop = or <16 x i64> %a_load22, <i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736, i64 68719476736>
|
|
%v.i = load <16 x i64>, <16 x i64>* null
|
|
%v1.i41 = select <16 x i1> %x, <16 x i64> %bitop, <16 x i64> %v.i
|
|
store <16 x i64> %v1.i41, <16 x i64>* null
|
|
ret void
|
|
}
|