mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
9380d5daff
DomainValues that are only used by "don't care" instructions are now collapsed to the first possible execution domain after all basic blocks have been processed. This typically means the PS domain on x86. For example, the vsel_i64 and vsel_double functions in sse2-blend.ll are completely collapsed to the PS domain instead of containing a mix of execution domains created by isel. llvm-svn: 144037
23 lines
866 B
LLVM
23 lines
866 B
LLVM
; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s
|
|
|
|
define void @f(<4 x float> %A, i8* %B, <2 x double> %C, i32 %D, <2 x i64> %E) {
|
|
; CHECK: movntps
|
|
%cast = bitcast i8* %B to <4 x float>*
|
|
%A2 = fadd <4 x float> %A, <float 0x0, float 0x0, float 0x0, float 0x4200000000000000>
|
|
store <4 x float> %A2, <4 x float>* %cast, align 16, !nontemporal !0
|
|
; CHECK: movntdq
|
|
%cast1 = bitcast i8* %B to <2 x i64>*
|
|
%E2 = add <2 x i64> %E, <i64 1, i64 2>
|
|
store <2 x i64> %E2, <2 x i64>* %cast1, align 16, !nontemporal !0
|
|
; CHECK: movntpd
|
|
%cast2 = bitcast i8* %B to <2 x double>*
|
|
%C2 = fadd <2 x double> %C, <double 0x0, double 0x4200000000000000>
|
|
store <2 x double> %C2, <2 x double>* %cast2, align 16, !nontemporal !0
|
|
; CHECK: movnti
|
|
%cast3 = bitcast i8* %B to i32*
|
|
store i32 %D, i32* %cast3, align 16, !nontemporal !0
|
|
ret void
|
|
}
|
|
|
|
!0 = metadata !{i32 1}
|