mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
263a203b09
As part of the fix for rL364264 + rL364272 - limit the *_EXTEND conversion to !TLO.LegalOperations || isOperationLegal cases. We'll improve X86 legality in future commits. llvm-svn: 364290
39 lines
2.1 KiB
LLVM
39 lines
2.1 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 = [3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313,3.3951932655444357E-313]
|
|
; 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
|
|
}
|