1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-- -target-feature +movrs -target-feature +avx10.2-256 -emit-llvm -o - -Wall -Werror | FileCheck %s
5 __m128i
test_mm_loadrs_epi8(const __m128i
* __A
) {
6 // CHECK-LABEL: @test_mm_loadrs_epi8(
7 // CHECK: call <16 x i8> @llvm.x86.avx10.vmovrsb128(
8 return _mm_loadrs_epi8(__A
);
11 __m128i
test_mm_mask_loadrs_epi8(__m128i __A
, __mmask16 __B
, const __m128i
* __C
) {
12 // CHECK-LABEL: @test_mm_mask_loadrs_epi8(
13 // CHECK: call <16 x i8> @llvm.x86.avx10.vmovrsb128(
14 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
15 return _mm_mask_loadrs_epi8(__A
, __B
, __C
);
18 __m128i
test_mm_maskz_loadrs_epi8(__mmask16 __A
, const __m128i
* __B
) {
19 // CHECK-LABEL: @test_mm_maskz_loadrs_epi8(
20 // CHECK: call <16 x i8> @llvm.x86.avx10.vmovrsb128(
21 // CHECK: store <2 x i64> zeroinitializer
22 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
23 return _mm_maskz_loadrs_epi8(__A
, __B
);
26 __m256i
test_mm256_loadrs_epi8(const __m256i
* __A
) {
27 // CHECK-LABEL: @test_mm256_loadrs_epi8(
28 // CHECK: call <32 x i8> @llvm.x86.avx10.vmovrsb256(
29 return _mm256_loadrs_epi8(__A
);
32 __m256i
test_mm256_mask_loadrs_epi8(__m256i __A
, __mmask32 __B
, const __m256i
* __C
) {
33 // CHECK-LABEL: @test_mm256_mask_loadrs_epi8(
34 // CHECK: call <32 x i8> @llvm.x86.avx10.vmovrsb256(
35 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
36 return _mm256_mask_loadrs_epi8(__A
, __B
, __C
);
39 __m256i
test_mm256_maskz_loadrs_epi8(__mmask32 __A
, const __m256i
* __B
) {
40 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi8(
41 // CHECK: call <32 x i8> @llvm.x86.avx10.vmovrsb256(
42 // CHECK: store <4 x i64> zeroinitializer
43 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
44 return _mm256_maskz_loadrs_epi8(__A
, __B
);
47 __m128i
test_mm_loadrs_epi32(const __m128i
* __A
) {
48 // CHECK-LABEL: @test_mm_loadrs_epi32(
49 // CHECK: call <4 x i32> @llvm.x86.avx10.vmovrsd128(
50 return _mm_loadrs_epi32(__A
);
53 __m128i
test_mm_mask_loadrs_epi32(__m128i __A
, __mmask8 __B
, const __m128i
* __C
) {
54 // CHECK-LABEL: @test_mm_mask_loadrs_epi32(
55 // CHECK: call <4 x i32> @llvm.x86.avx10.vmovrsd128(
56 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
57 return _mm_mask_loadrs_epi32(__A
, __B
, __C
);
60 __m128i
test_mm_maskz_loadrs_epi32(__mmask8 __A
, const __m128i
* __B
) {
61 // CHECK-LABEL: @test_mm_maskz_loadrs_epi32(
62 // CHECK: call <4 x i32> @llvm.x86.avx10.vmovrsd128(
63 // CHECK: store <2 x i64> zeroinitializer
64 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
65 return _mm_maskz_loadrs_epi32(__A
, __B
);
68 __m256i
test_mm256_loadrs_epi32(const __m256i
* __A
) {
69 // CHECK-LABEL: @test_mm256_loadrs_epi32(
70 // CHECK: call <8 x i32> @llvm.x86.avx10.vmovrsd256(
71 return _mm256_loadrs_epi32(__A
);
74 __m256i
test_mm256_mask_loadrs_epi32(__m256i __A
, __mmask8 __B
, const __m256i
* __C
) {
75 // CHECK-LABEL: @test_mm256_mask_loadrs_epi32(
76 // CHECK: call <8 x i32> @llvm.x86.avx10.vmovrsd256(
77 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
78 return _mm256_mask_loadrs_epi32(__A
, __B
, __C
);
81 __m256i
test_mm256_maskz_loadrs_epi32(__mmask8 __A
, const __m256i
* __B
) {
82 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi32(
83 // CHECK: call <8 x i32> @llvm.x86.avx10.vmovrsd256(
84 // CHECK: store <4 x i64> zeroinitializer
85 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
86 return _mm256_maskz_loadrs_epi32(__A
, __B
);
89 __m128i
test_mm_loadrs_epi64(const __m128i
* __A
) {
90 // CHECK-LABEL: @test_mm_loadrs_epi64(
91 // CHECK: call <2 x i64> @llvm.x86.avx10.vmovrsq128(
92 return _mm_loadrs_epi64(__A
);
95 __m128i
test_mm_mask_loadrs_epi64(__m128i __A
, __mmask8 __B
, const __m128i
* __C
) {
96 // CHECK-LABEL: @test_mm_mask_loadrs_epi64(
97 // CHECK: call <2 x i64> @llvm.x86.avx10.vmovrsq128(
98 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
99 return _mm_mask_loadrs_epi64(__A
, __B
, __C
);
102 __m128i
test_mm_maskz_loadrs_epi64(__mmask8 __A
, const __m128i
* __B
) {
103 // CHECK-LABEL: @test_mm_maskz_loadrs_epi64(
104 // CHECK: call <2 x i64> @llvm.x86.avx10.vmovrsq128(
105 // CHECK: store <2 x i64> zeroinitializer
106 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
107 return _mm_maskz_loadrs_epi64(__A
, __B
);
110 __m256i
test_mm256_loadrs_epi64(const __m256i
* __A
) {
111 // CHECK-LABEL: @test_mm256_loadrs_epi64(
112 // CHECK: call <4 x i64> @llvm.x86.avx10.vmovrsq256(
113 return _mm256_loadrs_epi64(__A
);
116 __m256i
test_mm256_mask_loadrs_epi64(__m256i __A
, __mmask8 __B
, const __m256i
* __C
) {
117 // CHECK-LABEL: @test_mm256_mask_loadrs_epi64(
118 // CHECK: call <4 x i64> @llvm.x86.avx10.vmovrsq256(
119 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
120 return _mm256_mask_loadrs_epi64(__A
, __B
, __C
);
123 __m256i
test_mm256_maskz_loadrs_epi64(__mmask8 __A
, const __m256i
* __B
) {
124 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi64(
125 // CHECK: call <4 x i64> @llvm.x86.avx10.vmovrsq256(
126 // CHECK: store <4 x i64> zeroinitializer
127 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
128 return _mm256_maskz_loadrs_epi64(__A
, __B
);
131 __m128i
test_mm_loadrs_epi16(const __m128i
* __A
) {
132 // CHECK-LABEL: @test_mm_loadrs_epi16(
133 // CHECK: call <8 x i16> @llvm.x86.avx10.vmovrsw128(
134 return _mm_loadrs_epi16(__A
);
137 __m128i
test_mm_mask_loadrs_epi16(__m128i __A
, __mmask8 __B
, const __m128i
* __C
) {
138 // CHECK-LABEL: @test_mm_mask_loadrs_epi16(
139 // CHECK: call <8 x i16> @llvm.x86.avx10.vmovrsw128(
140 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
141 return _mm_mask_loadrs_epi16(__A
, __B
, __C
);
144 __m128i
test_mm_maskz_loadrs_epi16(__mmask8 __A
, const __m128i
* __B
) {
145 // CHECK-LABEL: @test_mm_maskz_loadrs_epi16(
146 // CHECK: call <8 x i16> @llvm.x86.avx10.vmovrsw128(
147 // CHECK: store <2 x i64> zeroinitializer
148 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
149 return _mm_maskz_loadrs_epi16(__A
, __B
);
152 __m256i
test_mm256_loadrs_epi16(const __m256i
* __A
) {
153 // CHECK-LABEL: @test_mm256_loadrs_epi16(
154 // CHECK: call <16 x i16> @llvm.x86.avx10.vmovrsw256(
155 return _mm256_loadrs_epi16(__A
);
158 __m256i
test_mm256_mask_loadrs_epi16(__m256i __A
, __mmask16 __B
, const __m256i
* __C
) {
159 // CHECK-LABEL: @test_mm256_mask_loadrs_epi16(
160 // CHECK: call <16 x i16> @llvm.x86.avx10.vmovrsw256(
161 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
162 return _mm256_mask_loadrs_epi16(__A
, __B
, __C
);
165 __m256i
test_mm256_maskz_loadrs_epi16(__mmask16 __A
, const __m256i
* __B
) {
166 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi16(
167 // CHECK: call <16 x i16> @llvm.x86.avx10.vmovrsw256(
168 // CHECK: store <4 x i64> zeroinitializer
169 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
170 return _mm256_maskz_loadrs_epi16(__A
, __B
);