mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-28 22:00:30 +00:00
[X86][CGP] Pre-commit test cases for D86371.
This commit is contained in:
parent
55050110d2
commit
94e25784f5
@ -3319,3 +3319,57 @@ define void @scatter_16i64_constant_indices(i32* %ptr, <16 x i1> %mask, <16 x i3
|
||||
call void @llvm.masked.scatter.v16i32.v16p0i32(<16 x i32> %src0, <16 x i32*> %gep, i32 4, <16 x i1> %mask)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @splat_ptr(i32* %ptr, <4 x i1> %mask, <4 x i32> %val) {
|
||||
; CHECK-LABEL: @splat_ptr(
|
||||
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, i32* [[PTR:%.*]], <4 x i64> zeroinitializer
|
||||
; CHECK-NEXT: call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> [[VAL:%.*]], <4 x i32*> [[TMP1]], i32 4, <4 x i1> [[MASK:%.*]])
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
; KNL_64-LABEL: splat_ptr:
|
||||
; KNL_64: # %bb.0:
|
||||
; KNL_64-NEXT: # kill: def $xmm1 killed $xmm1 def $ymm1
|
||||
; KNL_64-NEXT: vpslld $31, %xmm0, %xmm0
|
||||
; KNL_64-NEXT: vptestmd %zmm0, %zmm0, %k0
|
||||
; KNL_64-NEXT: kshiftlw $12, %k0, %k0
|
||||
; KNL_64-NEXT: kshiftrw $12, %k0, %k1
|
||||
; KNL_64-NEXT: vmovq %rdi, %xmm0
|
||||
; KNL_64-NEXT: vpbroadcastq %xmm0, %ymm0
|
||||
; KNL_64-NEXT: vpscatterqd %ymm1, (,%zmm0) {%k1}
|
||||
; KNL_64-NEXT: vzeroupper
|
||||
; KNL_64-NEXT: retq
|
||||
;
|
||||
; KNL_32-LABEL: splat_ptr:
|
||||
; KNL_32: # %bb.0:
|
||||
; KNL_32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1
|
||||
; KNL_32-NEXT: vpslld $31, %xmm0, %xmm0
|
||||
; KNL_32-NEXT: vptestmd %zmm0, %zmm0, %k0
|
||||
; KNL_32-NEXT: kshiftlw $12, %k0, %k0
|
||||
; KNL_32-NEXT: kshiftrw $12, %k0, %k1
|
||||
; KNL_32-NEXT: vpbroadcastd {{[0-9]+}}(%esp), %xmm0
|
||||
; KNL_32-NEXT: vpscatterdd %zmm1, (,%zmm0) {%k1}
|
||||
; KNL_32-NEXT: vzeroupper
|
||||
; KNL_32-NEXT: retl
|
||||
;
|
||||
; SKX-LABEL: splat_ptr:
|
||||
; SKX: # %bb.0:
|
||||
; SKX-NEXT: vpslld $31, %xmm0, %xmm0
|
||||
; SKX-NEXT: vpmovd2m %xmm0, %k1
|
||||
; SKX-NEXT: vpbroadcastq %rdi, %ymm0
|
||||
; SKX-NEXT: vpscatterqd %xmm1, (,%ymm0) {%k1}
|
||||
; SKX-NEXT: vzeroupper
|
||||
; SKX-NEXT: retq
|
||||
;
|
||||
; SKX_32-LABEL: splat_ptr:
|
||||
; SKX_32: # %bb.0:
|
||||
; SKX_32-NEXT: vpslld $31, %xmm0, %xmm0
|
||||
; SKX_32-NEXT: vpmovd2m %xmm0, %k1
|
||||
; SKX_32-NEXT: vpbroadcastd {{[0-9]+}}(%esp), %xmm0
|
||||
; SKX_32-NEXT: vpscatterdd %xmm1, (,%xmm0) {%k1}
|
||||
; SKX_32-NEXT: retl
|
||||
%1 = insertelement <4 x i32*> undef, i32* %ptr, i32 0
|
||||
%2 = shufflevector <4 x i32*> %1, <4 x i32*> undef, <4 x i32> zeroinitializer
|
||||
call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> %val, <4 x i32*> %2, i32 4, <4 x i1> %mask)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -85,4 +85,18 @@ define <4 x i32> @global_struct_splat() {
|
||||
ret <4 x i32> %4
|
||||
}
|
||||
|
||||
define void @splat_ptr(i32* %ptr, <4 x i1> %mask, <4 x i32> %val) {
|
||||
; CHECK-LABEL: @splat_ptr(
|
||||
; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x i32*> undef, i32* [[PTR:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <4 x i32*> [[TMP1]], <4 x i32*> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> [[VAL:%.*]], <4 x i32*> [[TMP2]], i32 4, <4 x i1> [[MASK:%.*]])
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
%1 = insertelement <4 x i32*> undef, i32* %ptr, i32 0
|
||||
%2 = shufflevector <4 x i32*> %1, <4 x i32*> undef, <4 x i32> zeroinitializer
|
||||
call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> %val, <4 x i32*> %2, i32 4, <4 x i1> %mask)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare <4 x i32> @llvm.masked.gather.v4i32.v4p0i32(<4 x i32*>, i32, <4 x i1>, <4 x i32>)
|
||||
declare void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32>, <4 x i32*>, i32, <4 x i1>)
|
||||
|
Loading…
Reference in New Issue
Block a user