@@ -46,3 +46,171 @@ void test_mm_mask_store_sd(double * __P, __mmask8 __U, __m128d __A){
4646 // LLVM: call void @llvm.masked.store.v2f64.p0(<2 x double> %{{.*}}, ptr %{{.*}}, i32 1, <2 x i1> %{{.*}})
4747 _mm_mask_store_sd (__P , __U , __A );
4848}
49+ __m512 test_mm512_mask_loadu_ps (__m512 __W , __mmask16 __U , void * __P )
50+ {
51+ // CIR-LABEL: _mm512_mask_loadu_ps
52+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.float>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!cir.float x 16>) -> !cir.vector<!cir.float x 16>
53+
54+ // LLVM-LABEL: test_mm512_mask_loadu_ps
55+ // LLVM: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
56+ return _mm512_mask_loadu_ps (__W ,__U , __P );
57+ }
58+
59+ __m512 test_mm512_maskz_load_ps (__mmask16 __U , void * __P )
60+ {
61+
62+ // CIR-LABEL: _mm512_maskz_load_ps
63+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 16>>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!cir.float x 16>) -> !cir.vector<!cir.float x 16>
64+
65+ // LLVM-LABEL: test_mm512_maskz_load_ps
66+ // LLVM: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
67+ return _mm512_maskz_load_ps (__U , __P );
68+ }
69+
70+ __m512d test_mm512_mask_loadu_pd (__m512d __W , __mmask8 __U , void * __P )
71+ {
72+ // CIR-LABEL: _mm512_mask_loadu_pd
73+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.double>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!cir.double x 8>) -> !cir.vector<!cir.double x 8>
74+
75+ // LLVM-LABEL: test_mm512_mask_loadu_pd
76+ // LLVM: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
77+ return _mm512_mask_loadu_pd (__W ,__U , __P );
78+ }
79+
80+ __m512d test_mm512_maskz_load_pd (__mmask8 __U , void * __P )
81+ {
82+ // CIR-LABEL: _mm512_maskz_load_pd
83+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!cir.double x 8>) -> !cir.vector<!cir.double x 8>
84+
85+ // LLVM-LABEL: test_mm512_maskz_load_pd
86+ // LLVM: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
87+ return _mm512_maskz_load_pd (__U , __P );
88+ }
89+
90+ __m512i test_mm512_mask_loadu_epi32 (__m512i __W , __mmask16 __U , void * __P )
91+ {
92+ // CIR-LABEL: _mm512_mask_loadu_epi32
93+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s32i>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!s32i x 16>) -> !cir.vector<!s32i x 16>
94+
95+ // LLVM-LABEL: test_mm512_mask_loadu_epi32
96+ // LLVM: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
97+ return _mm512_mask_loadu_epi32 (__W ,__U , __P );
98+ }
99+
100+ __m512i test_mm512_maskz_loadu_epi32 (__mmask16 __U , void * __P )
101+ {
102+ // CIR-LABEL: _mm512_maskz_loadu_epi32
103+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s32i>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!s32i x 16>) -> !cir.vector<!s32i x 16>
104+
105+ // LLVM-LABEL: test_mm512_maskz_loadu_epi32
106+ // LLVM: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
107+ return _mm512_maskz_loadu_epi32 (__U , __P );
108+ }
109+
110+ __m512i test_mm512_mask_loadu_epi64 (__m512i __W , __mmask8 __U , void * __P )
111+ {
112+ // CIR-LABEL: _mm512_mask_loadu_epi64
113+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s64i>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
114+
115+ // LLVM-LABEL: test_mm512_mask_loadu_epi64
116+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
117+ return _mm512_mask_loadu_epi64 (__W ,__U , __P );
118+ }
119+
120+ __m512i test_mm512_maskz_loadu_epi64 (__mmask16 __U , void * __P )
121+ {
122+ // CIR-LABEL: _mm512_maskz_loadu_epi64
123+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s64i>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
124+
125+ // LLVM-LABEL: test_mm512_maskz_loadu_epi64
126+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
127+ return _mm512_maskz_loadu_epi64 (__U , __P );
128+ }
129+
130+ __m128 test_mm_mask_load_ss (__m128 __A , __mmask8 __U , const float * __W )
131+ {
132+ // CIR-LABEL: _mm_mask_load_ss
133+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 4>>, !u32i, !cir.vector<!cir.int<s, 1> x 4>, !cir.vector<!cir.float x 4>) -> !cir.vector<!cir.float x 4>
134+
135+ // LLVM-LABEL: test_mm_mask_load_ss
136+ // LLVM: call {{.*}}<4 x float> @llvm.masked.load.v4f32.p0(ptr %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
137+ return _mm_mask_load_ss (__A , __U , __W );
138+ }
139+
140+ __m128 test_mm_maskz_load_ss (__mmask8 __U , const float * __W )
141+ {
142+ // CIR-LABEL: _mm_maskz_load_ss
143+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 4>>, !u32i, !cir.vector<!cir.int<s, 1> x 4>, !cir.vector<!cir.float x 4>) -> !cir.vector<!cir.float x 4>
144+
145+ // LLVM-LABEL: test_mm_maskz_load_ss
146+ // LLVM: call {{.*}}<4 x float> @llvm.masked.load.v4f32.p0(ptr %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
147+ return _mm_maskz_load_ss (__U , __W );
148+ }
149+
150+ __m128d test_mm_mask_load_sd (__m128d __A , __mmask8 __U , const double * __W )
151+ {
152+ // CIR-LABEL: _mm_mask_load_sd
153+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 2>>, !u32i, !cir.vector<!cir.int<s, 1> x 2>, !cir.vector<!cir.double x 2>) -> !cir.vector<!cir.double x 2>
154+
155+ // LLVM-LABEL: test_mm_mask_load_sd
156+ // LLVM: call {{.*}}<2 x double> @llvm.masked.load.v2f64.p0(ptr %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
157+ return _mm_mask_load_sd (__A , __U , __W );
158+ }
159+
160+ __m128d test_mm_maskz_load_sd (__mmask8 __U , const double * __W )
161+ {
162+ // CIR-LABEL: _mm_maskz_load_sd
163+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 2>>, !u32i, !cir.vector<!cir.int<s, 1> x 2>, !cir.vector<!cir.double x 2>) -> !cir.vector<!cir.double x 2>
164+
165+ // LLVM-LABEL: test_mm_maskz_load_sd
166+ // LLVM: call {{.*}}<2 x double> @llvm.masked.load.v2f64.p0(ptr %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
167+ return _mm_maskz_load_sd (__U , __W );
168+ }
169+
170+ __m512 test_mm512_mask_load_ps (__m512 __W , __mmask16 __U , void * __P )
171+ {
172+ // CIR-LABEL: _mm512_mask_load_ps
173+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 16>>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!cir.float x 16>) -> !cir.vector<!cir.float x 16>
174+
175+ // LLVM-LABEL: test_mm512_mask_load_ps
176+ // LLVM: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
177+ return _mm512_mask_load_ps (__W ,__U , __P );
178+ }
179+
180+ __m512d test_mm512_mask_load_pd (__m512d __W , __mmask8 __U , void * __P )
181+ {
182+ // CIR-LABEL: _mm512_mask_load_pd
183+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!cir.double x 8>) -> !cir.vector<!cir.double x 8>
184+
185+ // LLVM-LABEL: test_mm512_mask_load_pd
186+ // LLVM: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
187+ return _mm512_mask_load_pd (__W ,__U , __P );
188+ }
189+
190+ __m512i test_mm512_mask_load_epi32 (__m512i __W , __mmask16 __U , void const * __P ) {
191+ // CIR-LABEL: _mm512_mask_load_epi32
192+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!s32i x 16>>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!s32i x 16>) -> !cir.vector<!s32i x 16>
193+
194+ // LLVM-LABEL: test_mm512_mask_load_epi32
195+ // LLVM: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
196+ return _mm512_mask_load_epi32 (__W , __U , __P );
197+ }
198+
199+ __m512i test_mm512_mask_load_epi64 (__m512i __W , __mmask8 __U , void const * __P ) {
200+ // CIR-LABEL: _mm512_mask_load_epi64
201+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!s64i x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
202+
203+ // LLVM-LABEL: test_mm512_mask_load_epi64
204+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
205+ return _mm512_mask_load_epi64 (__W , __U , __P );
206+ }
207+
208+ __m512i test_mm512_maskz_load_epi64 (__mmask8 __U , void const * __P ) {
209+ // CIR-LABEL: _mm512_maskz_load_epi64
210+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!s64i x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
211+
212+ // LLVM-LABEL: test_mm512_maskz_load_epi64
213+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
214+ return _mm512_maskz_load_epi64 (__U , __P );
215+ }
216+
0 commit comments