forked from OSchip/llvm-project
[AVX512] Test that _mm512_set1_* intrinsics generate broadcasts
llvm-svn: 214275
This commit is contained in:
parent
34b5749989
commit
f1a80c1e17
|
@ -63,3 +63,80 @@ entry:
|
|||
ret <16 x i32> %3
|
||||
}
|
||||
|
||||
; We implement the set1 intrinsics with vector initializers. Verify that the
|
||||
; IR generated will produce broadcasts at the end.
|
||||
define <8 x double> @test_set1_pd(double %d) #2 {
|
||||
; CHECK-LABEL: _test_set1_pd:
|
||||
; CHECK: vbroadcastsd
|
||||
entry:
|
||||
%vecinit.i = insertelement <8 x double> undef, double %d, i32 0
|
||||
%vecinit1.i = insertelement <8 x double> %vecinit.i, double %d, i32 1
|
||||
%vecinit2.i = insertelement <8 x double> %vecinit1.i, double %d, i32 2
|
||||
%vecinit3.i = insertelement <8 x double> %vecinit2.i, double %d, i32 3
|
||||
%vecinit4.i = insertelement <8 x double> %vecinit3.i, double %d, i32 4
|
||||
%vecinit5.i = insertelement <8 x double> %vecinit4.i, double %d, i32 5
|
||||
%vecinit6.i = insertelement <8 x double> %vecinit5.i, double %d, i32 6
|
||||
%vecinit7.i = insertelement <8 x double> %vecinit6.i, double %d, i32 7
|
||||
ret <8 x double> %vecinit7.i
|
||||
}
|
||||
|
||||
define <8 x i64> @test_set1_epi64(i64 %d) #2 {
|
||||
; CHECK-LABEL: _test_set1_epi64:
|
||||
; CHECK: vpbroadcastq
|
||||
entry:
|
||||
%vecinit.i = insertelement <8 x i64> undef, i64 %d, i32 0
|
||||
%vecinit1.i = insertelement <8 x i64> %vecinit.i, i64 %d, i32 1
|
||||
%vecinit2.i = insertelement <8 x i64> %vecinit1.i, i64 %d, i32 2
|
||||
%vecinit3.i = insertelement <8 x i64> %vecinit2.i, i64 %d, i32 3
|
||||
%vecinit4.i = insertelement <8 x i64> %vecinit3.i, i64 %d, i32 4
|
||||
%vecinit5.i = insertelement <8 x i64> %vecinit4.i, i64 %d, i32 5
|
||||
%vecinit6.i = insertelement <8 x i64> %vecinit5.i, i64 %d, i32 6
|
||||
%vecinit7.i = insertelement <8 x i64> %vecinit6.i, i64 %d, i32 7
|
||||
ret <8 x i64> %vecinit7.i
|
||||
}
|
||||
|
||||
define <16 x float> @test_set1_ps(float %f) #2 {
|
||||
; CHECK-LABEL: _test_set1_ps:
|
||||
; CHECK: vbroadcastss
|
||||
entry:
|
||||
%vecinit.i = insertelement <16 x float> undef, float %f, i32 0
|
||||
%vecinit1.i = insertelement <16 x float> %vecinit.i, float %f, i32 1
|
||||
%vecinit2.i = insertelement <16 x float> %vecinit1.i, float %f, i32 2
|
||||
%vecinit3.i = insertelement <16 x float> %vecinit2.i, float %f, i32 3
|
||||
%vecinit4.i = insertelement <16 x float> %vecinit3.i, float %f, i32 4
|
||||
%vecinit5.i = insertelement <16 x float> %vecinit4.i, float %f, i32 5
|
||||
%vecinit6.i = insertelement <16 x float> %vecinit5.i, float %f, i32 6
|
||||
%vecinit7.i = insertelement <16 x float> %vecinit6.i, float %f, i32 7
|
||||
%vecinit8.i = insertelement <16 x float> %vecinit7.i, float %f, i32 8
|
||||
%vecinit9.i = insertelement <16 x float> %vecinit8.i, float %f, i32 9
|
||||
%vecinit10.i = insertelement <16 x float> %vecinit9.i, float %f, i32 10
|
||||
%vecinit11.i = insertelement <16 x float> %vecinit10.i, float %f, i32 11
|
||||
%vecinit12.i = insertelement <16 x float> %vecinit11.i, float %f, i32 12
|
||||
%vecinit13.i = insertelement <16 x float> %vecinit12.i, float %f, i32 13
|
||||
%vecinit14.i = insertelement <16 x float> %vecinit13.i, float %f, i32 14
|
||||
%vecinit15.i = insertelement <16 x float> %vecinit14.i, float %f, i32 15
|
||||
ret <16 x float> %vecinit15.i
|
||||
}
|
||||
|
||||
define <16 x i32> @test_set1_epi32(i32 %f) #2 {
|
||||
; CHECK-LABEL: _test_set1_epi32:
|
||||
; CHECK: vpbroadcastd
|
||||
entry:
|
||||
%vecinit.i = insertelement <16 x i32> undef, i32 %f, i32 0
|
||||
%vecinit1.i = insertelement <16 x i32> %vecinit.i, i32 %f, i32 1
|
||||
%vecinit2.i = insertelement <16 x i32> %vecinit1.i, i32 %f, i32 2
|
||||
%vecinit3.i = insertelement <16 x i32> %vecinit2.i, i32 %f, i32 3
|
||||
%vecinit4.i = insertelement <16 x i32> %vecinit3.i, i32 %f, i32 4
|
||||
%vecinit5.i = insertelement <16 x i32> %vecinit4.i, i32 %f, i32 5
|
||||
%vecinit6.i = insertelement <16 x i32> %vecinit5.i, i32 %f, i32 6
|
||||
%vecinit7.i = insertelement <16 x i32> %vecinit6.i, i32 %f, i32 7
|
||||
%vecinit8.i = insertelement <16 x i32> %vecinit7.i, i32 %f, i32 8
|
||||
%vecinit9.i = insertelement <16 x i32> %vecinit8.i, i32 %f, i32 9
|
||||
%vecinit10.i = insertelement <16 x i32> %vecinit9.i, i32 %f, i32 10
|
||||
%vecinit11.i = insertelement <16 x i32> %vecinit10.i, i32 %f, i32 11
|
||||
%vecinit12.i = insertelement <16 x i32> %vecinit11.i, i32 %f, i32 12
|
||||
%vecinit13.i = insertelement <16 x i32> %vecinit12.i, i32 %f, i32 13
|
||||
%vecinit14.i = insertelement <16 x i32> %vecinit13.i, i32 %f, i32 14
|
||||
%vecinit15.i = insertelement <16 x i32> %vecinit14.i, i32 %f, i32 15
|
||||
ret <16 x i32> %vecinit15.i
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue