[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang / test / CodeGen / LoongArch / lsx / builtin-alias.c
blob331e29fb7d17f7c6e836cbb2746c205d069a2afa
1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // RUN: %clang_cc1 -triple loongarch64 -target-feature +lsx -O2 -emit-llvm %s -o - | FileCheck %s
4 #include <lsxintrin.h>
6 // CHECK-LABEL: @vsll_b(
7 // CHECK-NEXT: entry:
8 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsll.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
9 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
11 v16i8 vsll_b(v16i8 _1, v16i8 _2) { return __lsx_vsll_b(_1, _2); }
12 // CHECK-LABEL: @vsll_h(
13 // CHECK-NEXT: entry:
14 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsll.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
15 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
17 v8i16 vsll_h(v8i16 _1, v8i16 _2) { return __lsx_vsll_h(_1, _2); }
18 // CHECK-LABEL: @vsll_w(
19 // CHECK-NEXT: entry:
20 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsll.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
21 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
23 v4i32 vsll_w(v4i32 _1, v4i32 _2) { return __lsx_vsll_w(_1, _2); }
24 // CHECK-LABEL: @vsll_d(
25 // CHECK-NEXT: entry:
26 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsll.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
27 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
29 v2i64 vsll_d(v2i64 _1, v2i64 _2) { return __lsx_vsll_d(_1, _2); }
30 // CHECK-LABEL: @vslli_b(
31 // CHECK-NEXT: entry:
32 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vslli.b(<16 x i8> [[_1:%.*]], i32 1)
33 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
35 v16i8 vslli_b(v16i8 _1) { return __lsx_vslli_b(_1, 1); }
36 // CHECK-LABEL: @vslli_h(
37 // CHECK-NEXT: entry:
38 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vslli.h(<8 x i16> [[_1:%.*]], i32 1)
39 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
41 v8i16 vslli_h(v8i16 _1) { return __lsx_vslli_h(_1, 1); }
42 // CHECK-LABEL: @vslli_w(
43 // CHECK-NEXT: entry:
44 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vslli.w(<4 x i32> [[_1:%.*]], i32 1)
45 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
47 v4i32 vslli_w(v4i32 _1) { return __lsx_vslli_w(_1, 1); }
48 // CHECK-LABEL: @vslli_d(
49 // CHECK-NEXT: entry:
50 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vslli.d(<2 x i64> [[_1:%.*]], i32 1)
51 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
53 v2i64 vslli_d(v2i64 _1) { return __lsx_vslli_d(_1, 1); }
54 // CHECK-LABEL: @vsra_b(
55 // CHECK-NEXT: entry:
56 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsra.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
57 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
59 v16i8 vsra_b(v16i8 _1, v16i8 _2) { return __lsx_vsra_b(_1, _2); }
60 // CHECK-LABEL: @vsra_h(
61 // CHECK-NEXT: entry:
62 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsra.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
63 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
65 v8i16 vsra_h(v8i16 _1, v8i16 _2) { return __lsx_vsra_h(_1, _2); }
66 // CHECK-LABEL: @vsra_w(
67 // CHECK-NEXT: entry:
68 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsra.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
69 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
71 v4i32 vsra_w(v4i32 _1, v4i32 _2) { return __lsx_vsra_w(_1, _2); }
72 // CHECK-LABEL: @vsra_d(
73 // CHECK-NEXT: entry:
74 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsra.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
75 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
77 v2i64 vsra_d(v2i64 _1, v2i64 _2) { return __lsx_vsra_d(_1, _2); }
78 // CHECK-LABEL: @vsrai_b(
79 // CHECK-NEXT: entry:
80 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrai.b(<16 x i8> [[_1:%.*]], i32 1)
81 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
83 v16i8 vsrai_b(v16i8 _1) { return __lsx_vsrai_b(_1, 1); }
84 // CHECK-LABEL: @vsrai_h(
85 // CHECK-NEXT: entry:
86 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrai.h(<8 x i16> [[_1:%.*]], i32 1)
87 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
89 v8i16 vsrai_h(v8i16 _1) { return __lsx_vsrai_h(_1, 1); }
90 // CHECK-LABEL: @vsrai_w(
91 // CHECK-NEXT: entry:
92 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrai.w(<4 x i32> [[_1:%.*]], i32 1)
93 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
95 v4i32 vsrai_w(v4i32 _1) { return __lsx_vsrai_w(_1, 1); }
96 // CHECK-LABEL: @vsrai_d(
97 // CHECK-NEXT: entry:
98 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrai.d(<2 x i64> [[_1:%.*]], i32 1)
99 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
101 v2i64 vsrai_d(v2i64 _1) { return __lsx_vsrai_d(_1, 1); }
102 // CHECK-LABEL: @vsrar_b(
103 // CHECK-NEXT: entry:
104 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrar.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
105 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
107 v16i8 vsrar_b(v16i8 _1, v16i8 _2) { return __lsx_vsrar_b(_1, _2); }
108 // CHECK-LABEL: @vsrar_h(
109 // CHECK-NEXT: entry:
110 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrar.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
111 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
113 v8i16 vsrar_h(v8i16 _1, v8i16 _2) { return __lsx_vsrar_h(_1, _2); }
114 // CHECK-LABEL: @vsrar_w(
115 // CHECK-NEXT: entry:
116 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrar.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
117 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
119 v4i32 vsrar_w(v4i32 _1, v4i32 _2) { return __lsx_vsrar_w(_1, _2); }
120 // CHECK-LABEL: @vsrar_d(
121 // CHECK-NEXT: entry:
122 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrar.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
123 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
125 v2i64 vsrar_d(v2i64 _1, v2i64 _2) { return __lsx_vsrar_d(_1, _2); }
126 // CHECK-LABEL: @vsrari_b(
127 // CHECK-NEXT: entry:
128 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrari.b(<16 x i8> [[_1:%.*]], i32 1)
129 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
131 v16i8 vsrari_b(v16i8 _1) { return __lsx_vsrari_b(_1, 1); }
132 // CHECK-LABEL: @vsrari_h(
133 // CHECK-NEXT: entry:
134 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrari.h(<8 x i16> [[_1:%.*]], i32 1)
135 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
137 v8i16 vsrari_h(v8i16 _1) { return __lsx_vsrari_h(_1, 1); }
138 // CHECK-LABEL: @vsrari_w(
139 // CHECK-NEXT: entry:
140 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrari.w(<4 x i32> [[_1:%.*]], i32 1)
141 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
143 v4i32 vsrari_w(v4i32 _1) { return __lsx_vsrari_w(_1, 1); }
144 // CHECK-LABEL: @vsrari_d(
145 // CHECK-NEXT: entry:
146 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrari.d(<2 x i64> [[_1:%.*]], i32 1)
147 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
149 v2i64 vsrari_d(v2i64 _1) { return __lsx_vsrari_d(_1, 1); }
150 // CHECK-LABEL: @vsrl_b(
151 // CHECK-NEXT: entry:
152 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrl.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
153 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
155 v16i8 vsrl_b(v16i8 _1, v16i8 _2) { return __lsx_vsrl_b(_1, _2); }
156 // CHECK-LABEL: @vsrl_h(
157 // CHECK-NEXT: entry:
158 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrl.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
159 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
161 v8i16 vsrl_h(v8i16 _1, v8i16 _2) { return __lsx_vsrl_h(_1, _2); }
162 // CHECK-LABEL: @vsrl_w(
163 // CHECK-NEXT: entry:
164 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrl.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
165 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
167 v4i32 vsrl_w(v4i32 _1, v4i32 _2) { return __lsx_vsrl_w(_1, _2); }
168 // CHECK-LABEL: @vsrl_d(
169 // CHECK-NEXT: entry:
170 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrl.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
171 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
173 v2i64 vsrl_d(v2i64 _1, v2i64 _2) { return __lsx_vsrl_d(_1, _2); }
174 // CHECK-LABEL: @vsrli_b(
175 // CHECK-NEXT: entry:
176 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrli.b(<16 x i8> [[_1:%.*]], i32 1)
177 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
179 v16i8 vsrli_b(v16i8 _1) { return __lsx_vsrli_b(_1, 1); }
180 // CHECK-LABEL: @vsrli_h(
181 // CHECK-NEXT: entry:
182 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrli.h(<8 x i16> [[_1:%.*]], i32 1)
183 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
185 v8i16 vsrli_h(v8i16 _1) { return __lsx_vsrli_h(_1, 1); }
186 // CHECK-LABEL: @vsrli_w(
187 // CHECK-NEXT: entry:
188 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrli.w(<4 x i32> [[_1:%.*]], i32 1)
189 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
191 v4i32 vsrli_w(v4i32 _1) { return __lsx_vsrli_w(_1, 1); }
192 // CHECK-LABEL: @vsrli_d(
193 // CHECK-NEXT: entry:
194 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrli.d(<2 x i64> [[_1:%.*]], i32 1)
195 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
197 v2i64 vsrli_d(v2i64 _1) { return __lsx_vsrli_d(_1, 1); }
198 // CHECK-LABEL: @vsrlr_b(
199 // CHECK-NEXT: entry:
200 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrlr.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
201 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
203 v16i8 vsrlr_b(v16i8 _1, v16i8 _2) { return __lsx_vsrlr_b(_1, _2); }
204 // CHECK-LABEL: @vsrlr_h(
205 // CHECK-NEXT: entry:
206 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrlr.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
207 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
209 v8i16 vsrlr_h(v8i16 _1, v8i16 _2) { return __lsx_vsrlr_h(_1, _2); }
210 // CHECK-LABEL: @vsrlr_w(
211 // CHECK-NEXT: entry:
212 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrlr.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
213 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
215 v4i32 vsrlr_w(v4i32 _1, v4i32 _2) { return __lsx_vsrlr_w(_1, _2); }
216 // CHECK-LABEL: @vsrlr_d(
217 // CHECK-NEXT: entry:
218 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrlr.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
219 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
221 v2i64 vsrlr_d(v2i64 _1, v2i64 _2) { return __lsx_vsrlr_d(_1, _2); }
222 // CHECK-LABEL: @vsrlri_b(
223 // CHECK-NEXT: entry:
224 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrlri.b(<16 x i8> [[_1:%.*]], i32 1)
225 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
227 v16i8 vsrlri_b(v16i8 _1) { return __lsx_vsrlri_b(_1, 1); }
228 // CHECK-LABEL: @vsrlri_h(
229 // CHECK-NEXT: entry:
230 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrlri.h(<8 x i16> [[_1:%.*]], i32 1)
231 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
233 v8i16 vsrlri_h(v8i16 _1) { return __lsx_vsrlri_h(_1, 1); }
234 // CHECK-LABEL: @vsrlri_w(
235 // CHECK-NEXT: entry:
236 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrlri.w(<4 x i32> [[_1:%.*]], i32 1)
237 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
239 v4i32 vsrlri_w(v4i32 _1) { return __lsx_vsrlri_w(_1, 1); }
240 // CHECK-LABEL: @vsrlri_d(
241 // CHECK-NEXT: entry:
242 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrlri.d(<2 x i64> [[_1:%.*]], i32 1)
243 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
245 v2i64 vsrlri_d(v2i64 _1) { return __lsx_vsrlri_d(_1, 1); }
246 // CHECK-LABEL: @vbitclr_b(
247 // CHECK-NEXT: entry:
248 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitclr.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
249 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
251 v16u8 vbitclr_b(v16u8 _1, v16u8 _2) { return __lsx_vbitclr_b(_1, _2); }
252 // CHECK-LABEL: @vbitclr_h(
253 // CHECK-NEXT: entry:
254 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vbitclr.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
255 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
257 v8u16 vbitclr_h(v8u16 _1, v8u16 _2) { return __lsx_vbitclr_h(_1, _2); }
258 // CHECK-LABEL: @vbitclr_w(
259 // CHECK-NEXT: entry:
260 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vbitclr.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
261 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
263 v4u32 vbitclr_w(v4u32 _1, v4u32 _2) { return __lsx_vbitclr_w(_1, _2); }
264 // CHECK-LABEL: @vbitclr_d(
265 // CHECK-NEXT: entry:
266 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vbitclr.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
267 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
269 v2u64 vbitclr_d(v2u64 _1, v2u64 _2) { return __lsx_vbitclr_d(_1, _2); }
270 // CHECK-LABEL: @vbitclri_b(
271 // CHECK-NEXT: entry:
272 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitclri.b(<16 x i8> [[_1:%.*]], i32 1)
273 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
275 v16u8 vbitclri_b(v16u8 _1) { return __lsx_vbitclri_b(_1, 1); }
276 // CHECK-LABEL: @vbitclri_h(
277 // CHECK-NEXT: entry:
278 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vbitclri.h(<8 x i16> [[_1:%.*]], i32 1)
279 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
281 v8u16 vbitclri_h(v8u16 _1) { return __lsx_vbitclri_h(_1, 1); }
282 // CHECK-LABEL: @vbitclri_w(
283 // CHECK-NEXT: entry:
284 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vbitclri.w(<4 x i32> [[_1:%.*]], i32 1)
285 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
287 v4u32 vbitclri_w(v4u32 _1) { return __lsx_vbitclri_w(_1, 1); }
288 // CHECK-LABEL: @vbitclri_d(
289 // CHECK-NEXT: entry:
290 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vbitclri.d(<2 x i64> [[_1:%.*]], i32 1)
291 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
293 v2u64 vbitclri_d(v2u64 _1) { return __lsx_vbitclri_d(_1, 1); }
294 // CHECK-LABEL: @vbitset_b(
295 // CHECK-NEXT: entry:
296 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitset.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
297 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
299 v16u8 vbitset_b(v16u8 _1, v16u8 _2) { return __lsx_vbitset_b(_1, _2); }
300 // CHECK-LABEL: @vbitset_h(
301 // CHECK-NEXT: entry:
302 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vbitset.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
303 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
305 v8u16 vbitset_h(v8u16 _1, v8u16 _2) { return __lsx_vbitset_h(_1, _2); }
306 // CHECK-LABEL: @vbitset_w(
307 // CHECK-NEXT: entry:
308 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vbitset.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
309 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
311 v4u32 vbitset_w(v4u32 _1, v4u32 _2) { return __lsx_vbitset_w(_1, _2); }
312 // CHECK-LABEL: @vbitset_d(
313 // CHECK-NEXT: entry:
314 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vbitset.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
315 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
317 v2u64 vbitset_d(v2u64 _1, v2u64 _2) { return __lsx_vbitset_d(_1, _2); }
318 // CHECK-LABEL: @vbitseti_b(
319 // CHECK-NEXT: entry:
320 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitseti.b(<16 x i8> [[_1:%.*]], i32 1)
321 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
323 v16u8 vbitseti_b(v16u8 _1) { return __lsx_vbitseti_b(_1, 1); }
324 // CHECK-LABEL: @vbitseti_h(
325 // CHECK-NEXT: entry:
326 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vbitseti.h(<8 x i16> [[_1:%.*]], i32 1)
327 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
329 v8u16 vbitseti_h(v8u16 _1) { return __lsx_vbitseti_h(_1, 1); }
330 // CHECK-LABEL: @vbitseti_w(
331 // CHECK-NEXT: entry:
332 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vbitseti.w(<4 x i32> [[_1:%.*]], i32 1)
333 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
335 v4u32 vbitseti_w(v4u32 _1) { return __lsx_vbitseti_w(_1, 1); }
336 // CHECK-LABEL: @vbitseti_d(
337 // CHECK-NEXT: entry:
338 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vbitseti.d(<2 x i64> [[_1:%.*]], i32 1)
339 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
341 v2u64 vbitseti_d(v2u64 _1) { return __lsx_vbitseti_d(_1, 1); }
342 // CHECK-LABEL: @vbitrev_b(
343 // CHECK-NEXT: entry:
344 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitrev.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
345 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
347 v16u8 vbitrev_b(v16u8 _1, v16u8 _2) { return __lsx_vbitrev_b(_1, _2); }
348 // CHECK-LABEL: @vbitrev_h(
349 // CHECK-NEXT: entry:
350 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vbitrev.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
351 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
353 v8u16 vbitrev_h(v8u16 _1, v8u16 _2) { return __lsx_vbitrev_h(_1, _2); }
354 // CHECK-LABEL: @vbitrev_w(
355 // CHECK-NEXT: entry:
356 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vbitrev.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
357 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
359 v4u32 vbitrev_w(v4u32 _1, v4u32 _2) { return __lsx_vbitrev_w(_1, _2); }
360 // CHECK-LABEL: @vbitrev_d(
361 // CHECK-NEXT: entry:
362 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vbitrev.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
363 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
365 v2u64 vbitrev_d(v2u64 _1, v2u64 _2) { return __lsx_vbitrev_d(_1, _2); }
366 // CHECK-LABEL: @vbitrevi_b(
367 // CHECK-NEXT: entry:
368 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitrevi.b(<16 x i8> [[_1:%.*]], i32 1)
369 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
371 v16u8 vbitrevi_b(v16u8 _1) { return __lsx_vbitrevi_b(_1, 1); }
372 // CHECK-LABEL: @vbitrevi_h(
373 // CHECK-NEXT: entry:
374 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vbitrevi.h(<8 x i16> [[_1:%.*]], i32 1)
375 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
377 v8u16 vbitrevi_h(v8u16 _1) { return __lsx_vbitrevi_h(_1, 1); }
378 // CHECK-LABEL: @vbitrevi_w(
379 // CHECK-NEXT: entry:
380 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vbitrevi.w(<4 x i32> [[_1:%.*]], i32 1)
381 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
383 v4u32 vbitrevi_w(v4u32 _1) { return __lsx_vbitrevi_w(_1, 1); }
384 // CHECK-LABEL: @vbitrevi_d(
385 // CHECK-NEXT: entry:
386 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vbitrevi.d(<2 x i64> [[_1:%.*]], i32 1)
387 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
389 v2u64 vbitrevi_d(v2u64 _1) { return __lsx_vbitrevi_d(_1, 1); }
390 // CHECK-LABEL: @vadd_b(
391 // CHECK-NEXT: entry:
392 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vadd.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
393 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
395 v16i8 vadd_b(v16i8 _1, v16i8 _2) { return __lsx_vadd_b(_1, _2); }
396 // CHECK-LABEL: @vadd_h(
397 // CHECK-NEXT: entry:
398 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vadd.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
399 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
401 v8i16 vadd_h(v8i16 _1, v8i16 _2) { return __lsx_vadd_h(_1, _2); }
402 // CHECK-LABEL: @vadd_w(
403 // CHECK-NEXT: entry:
404 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vadd.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
405 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
407 v4i32 vadd_w(v4i32 _1, v4i32 _2) { return __lsx_vadd_w(_1, _2); }
408 // CHECK-LABEL: @vadd_d(
409 // CHECK-NEXT: entry:
410 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vadd.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
411 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
413 v2i64 vadd_d(v2i64 _1, v2i64 _2) { return __lsx_vadd_d(_1, _2); }
414 // CHECK-LABEL: @vaddi_bu(
415 // CHECK-NEXT: entry:
416 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vaddi.bu(<16 x i8> [[_1:%.*]], i32 1)
417 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
419 v16i8 vaddi_bu(v16i8 _1) { return __lsx_vaddi_bu(_1, 1); }
420 // CHECK-LABEL: @vaddi_hu(
421 // CHECK-NEXT: entry:
422 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vaddi.hu(<8 x i16> [[_1:%.*]], i32 1)
423 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
425 v8i16 vaddi_hu(v8i16 _1) { return __lsx_vaddi_hu(_1, 1); }
426 // CHECK-LABEL: @vaddi_wu(
427 // CHECK-NEXT: entry:
428 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vaddi.wu(<4 x i32> [[_1:%.*]], i32 1)
429 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
431 v4i32 vaddi_wu(v4i32 _1) { return __lsx_vaddi_wu(_1, 1); }
432 // CHECK-LABEL: @vaddi_du(
433 // CHECK-NEXT: entry:
434 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddi.du(<2 x i64> [[_1:%.*]], i32 1)
435 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
437 v2i64 vaddi_du(v2i64 _1) { return __lsx_vaddi_du(_1, 1); }
438 // CHECK-LABEL: @vsub_b(
439 // CHECK-NEXT: entry:
440 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsub.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
441 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
443 v16i8 vsub_b(v16i8 _1, v16i8 _2) { return __lsx_vsub_b(_1, _2); }
444 // CHECK-LABEL: @vsub_h(
445 // CHECK-NEXT: entry:
446 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsub.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
447 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
449 v8i16 vsub_h(v8i16 _1, v8i16 _2) { return __lsx_vsub_h(_1, _2); }
450 // CHECK-LABEL: @vsub_w(
451 // CHECK-NEXT: entry:
452 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsub.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
453 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
455 v4i32 vsub_w(v4i32 _1, v4i32 _2) { return __lsx_vsub_w(_1, _2); }
456 // CHECK-LABEL: @vsub_d(
457 // CHECK-NEXT: entry:
458 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsub.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
459 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
461 v2i64 vsub_d(v2i64 _1, v2i64 _2) { return __lsx_vsub_d(_1, _2); }
462 // CHECK-LABEL: @vsubi_bu(
463 // CHECK-NEXT: entry:
464 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsubi.bu(<16 x i8> [[_1:%.*]], i32 1)
465 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
467 v16i8 vsubi_bu(v16i8 _1) { return __lsx_vsubi_bu(_1, 1); }
468 // CHECK-LABEL: @vsubi_hu(
469 // CHECK-NEXT: entry:
470 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsubi.hu(<8 x i16> [[_1:%.*]], i32 1)
471 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
473 v8i16 vsubi_hu(v8i16 _1) { return __lsx_vsubi_hu(_1, 1); }
474 // CHECK-LABEL: @vsubi_wu(
475 // CHECK-NEXT: entry:
476 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsubi.wu(<4 x i32> [[_1:%.*]], i32 1)
477 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
479 v4i32 vsubi_wu(v4i32 _1) { return __lsx_vsubi_wu(_1, 1); }
480 // CHECK-LABEL: @vsubi_du(
481 // CHECK-NEXT: entry:
482 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubi.du(<2 x i64> [[_1:%.*]], i32 1)
483 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
485 v2i64 vsubi_du(v2i64 _1) { return __lsx_vsubi_du(_1, 1); }
486 // CHECK-LABEL: @vmax_b(
487 // CHECK-NEXT: entry:
488 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmax.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
489 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
491 v16i8 vmax_b(v16i8 _1, v16i8 _2) { return __lsx_vmax_b(_1, _2); }
492 // CHECK-LABEL: @vmax_h(
493 // CHECK-NEXT: entry:
494 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmax.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
495 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
497 v8i16 vmax_h(v8i16 _1, v8i16 _2) { return __lsx_vmax_h(_1, _2); }
498 // CHECK-LABEL: @vmax_w(
499 // CHECK-NEXT: entry:
500 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmax.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
501 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
503 v4i32 vmax_w(v4i32 _1, v4i32 _2) { return __lsx_vmax_w(_1, _2); }
504 // CHECK-LABEL: @vmax_d(
505 // CHECK-NEXT: entry:
506 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmax.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
507 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
509 v2i64 vmax_d(v2i64 _1, v2i64 _2) { return __lsx_vmax_d(_1, _2); }
510 // CHECK-LABEL: @vmaxi_b(
511 // CHECK-NEXT: entry:
512 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmaxi.b(<16 x i8> [[_1:%.*]], i32 1)
513 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
515 v16i8 vmaxi_b(v16i8 _1) { return __lsx_vmaxi_b(_1, 1); }
516 // CHECK-LABEL: @vmaxi_h(
517 // CHECK-NEXT: entry:
518 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaxi.h(<8 x i16> [[_1:%.*]], i32 1)
519 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
521 v8i16 vmaxi_h(v8i16 _1) { return __lsx_vmaxi_h(_1, 1); }
522 // CHECK-LABEL: @vmaxi_w(
523 // CHECK-NEXT: entry:
524 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaxi.w(<4 x i32> [[_1:%.*]], i32 1)
525 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
527 v4i32 vmaxi_w(v4i32 _1) { return __lsx_vmaxi_w(_1, 1); }
528 // CHECK-LABEL: @vmaxi_d(
529 // CHECK-NEXT: entry:
530 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaxi.d(<2 x i64> [[_1:%.*]], i32 1)
531 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
533 v2i64 vmaxi_d(v2i64 _1) { return __lsx_vmaxi_d(_1, 1); }
534 // CHECK-LABEL: @vmax_bu(
535 // CHECK-NEXT: entry:
536 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmax.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
537 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
539 v16u8 vmax_bu(v16u8 _1, v16u8 _2) { return __lsx_vmax_bu(_1, _2); }
540 // CHECK-LABEL: @vmax_hu(
541 // CHECK-NEXT: entry:
542 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmax.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
543 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
545 v8u16 vmax_hu(v8u16 _1, v8u16 _2) { return __lsx_vmax_hu(_1, _2); }
546 // CHECK-LABEL: @vmax_wu(
547 // CHECK-NEXT: entry:
548 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmax.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
549 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
551 v4u32 vmax_wu(v4u32 _1, v4u32 _2) { return __lsx_vmax_wu(_1, _2); }
552 // CHECK-LABEL: @vmax_du(
553 // CHECK-NEXT: entry:
554 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmax.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
555 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
557 v2u64 vmax_du(v2u64 _1, v2u64 _2) { return __lsx_vmax_du(_1, _2); }
558 // CHECK-LABEL: @vmaxi_bu(
559 // CHECK-NEXT: entry:
560 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmaxi.bu(<16 x i8> [[_1:%.*]], i32 1)
561 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
563 v16u8 vmaxi_bu(v16u8 _1) { return __lsx_vmaxi_bu(_1, 1); }
564 // CHECK-LABEL: @vmaxi_hu(
565 // CHECK-NEXT: entry:
566 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaxi.hu(<8 x i16> [[_1:%.*]], i32 1)
567 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
569 v8u16 vmaxi_hu(v8u16 _1) { return __lsx_vmaxi_hu(_1, 1); }
570 // CHECK-LABEL: @vmaxi_wu(
571 // CHECK-NEXT: entry:
572 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaxi.wu(<4 x i32> [[_1:%.*]], i32 1)
573 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
575 v4u32 vmaxi_wu(v4u32 _1) { return __lsx_vmaxi_wu(_1, 1); }
576 // CHECK-LABEL: @vmaxi_du(
577 // CHECK-NEXT: entry:
578 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaxi.du(<2 x i64> [[_1:%.*]], i32 1)
579 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
581 v2u64 vmaxi_du(v2u64 _1) { return __lsx_vmaxi_du(_1, 1); }
582 // CHECK-LABEL: @vmin_b(
583 // CHECK-NEXT: entry:
584 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmin.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
585 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
587 v16i8 vmin_b(v16i8 _1, v16i8 _2) { return __lsx_vmin_b(_1, _2); }
588 // CHECK-LABEL: @vmin_h(
589 // CHECK-NEXT: entry:
590 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmin.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
591 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
593 v8i16 vmin_h(v8i16 _1, v8i16 _2) { return __lsx_vmin_h(_1, _2); }
594 // CHECK-LABEL: @vmin_w(
595 // CHECK-NEXT: entry:
596 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmin.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
597 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
599 v4i32 vmin_w(v4i32 _1, v4i32 _2) { return __lsx_vmin_w(_1, _2); }
600 // CHECK-LABEL: @vmin_d(
601 // CHECK-NEXT: entry:
602 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmin.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
603 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
605 v2i64 vmin_d(v2i64 _1, v2i64 _2) { return __lsx_vmin_d(_1, _2); }
606 // CHECK-LABEL: @vmini_b(
607 // CHECK-NEXT: entry:
608 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmini.b(<16 x i8> [[_1:%.*]], i32 1)
609 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
611 v16i8 vmini_b(v16i8 _1) { return __lsx_vmini_b(_1, 1); }
612 // CHECK-LABEL: @vmini_h(
613 // CHECK-NEXT: entry:
614 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmini.h(<8 x i16> [[_1:%.*]], i32 1)
615 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
617 v8i16 vmini_h(v8i16 _1) { return __lsx_vmini_h(_1, 1); }
618 // CHECK-LABEL: @vmini_w(
619 // CHECK-NEXT: entry:
620 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmini.w(<4 x i32> [[_1:%.*]], i32 1)
621 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
623 v4i32 vmini_w(v4i32 _1) { return __lsx_vmini_w(_1, 1); }
624 // CHECK-LABEL: @vmini_d(
625 // CHECK-NEXT: entry:
626 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmini.d(<2 x i64> [[_1:%.*]], i32 1)
627 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
629 v2i64 vmini_d(v2i64 _1) { return __lsx_vmini_d(_1, 1); }
630 // CHECK-LABEL: @vmin_bu(
631 // CHECK-NEXT: entry:
632 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmin.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
633 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
635 v16u8 vmin_bu(v16u8 _1, v16u8 _2) { return __lsx_vmin_bu(_1, _2); }
636 // CHECK-LABEL: @vmin_hu(
637 // CHECK-NEXT: entry:
638 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmin.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
639 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
641 v8u16 vmin_hu(v8u16 _1, v8u16 _2) { return __lsx_vmin_hu(_1, _2); }
642 // CHECK-LABEL: @vmin_wu(
643 // CHECK-NEXT: entry:
644 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmin.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
645 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
647 v4u32 vmin_wu(v4u32 _1, v4u32 _2) { return __lsx_vmin_wu(_1, _2); }
648 // CHECK-LABEL: @vmin_du(
649 // CHECK-NEXT: entry:
650 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmin.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
651 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
653 v2u64 vmin_du(v2u64 _1, v2u64 _2) { return __lsx_vmin_du(_1, _2); }
654 // CHECK-LABEL: @vmini_bu(
655 // CHECK-NEXT: entry:
656 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmini.bu(<16 x i8> [[_1:%.*]], i32 1)
657 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
659 v16u8 vmini_bu(v16u8 _1) { return __lsx_vmini_bu(_1, 1); }
660 // CHECK-LABEL: @vmini_hu(
661 // CHECK-NEXT: entry:
662 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmini.hu(<8 x i16> [[_1:%.*]], i32 1)
663 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
665 v8u16 vmini_hu(v8u16 _1) { return __lsx_vmini_hu(_1, 1); }
666 // CHECK-LABEL: @vmini_wu(
667 // CHECK-NEXT: entry:
668 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmini.wu(<4 x i32> [[_1:%.*]], i32 1)
669 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
671 v4u32 vmini_wu(v4u32 _1) { return __lsx_vmini_wu(_1, 1); }
672 // CHECK-LABEL: @vmini_du(
673 // CHECK-NEXT: entry:
674 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmini.du(<2 x i64> [[_1:%.*]], i32 1)
675 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
677 v2u64 vmini_du(v2u64 _1) { return __lsx_vmini_du(_1, 1); }
678 // CHECK-LABEL: @vseq_b(
679 // CHECK-NEXT: entry:
680 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vseq.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
681 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
683 v16i8 vseq_b(v16i8 _1, v16i8 _2) { return __lsx_vseq_b(_1, _2); }
684 // CHECK-LABEL: @vseq_h(
685 // CHECK-NEXT: entry:
686 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vseq.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
687 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
689 v8i16 vseq_h(v8i16 _1, v8i16 _2) { return __lsx_vseq_h(_1, _2); }
690 // CHECK-LABEL: @vseq_w(
691 // CHECK-NEXT: entry:
692 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vseq.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
693 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
695 v4i32 vseq_w(v4i32 _1, v4i32 _2) { return __lsx_vseq_w(_1, _2); }
696 // CHECK-LABEL: @vseq_d(
697 // CHECK-NEXT: entry:
698 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vseq.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
699 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
701 v2i64 vseq_d(v2i64 _1, v2i64 _2) { return __lsx_vseq_d(_1, _2); }
702 // CHECK-LABEL: @vseqi_b(
703 // CHECK-NEXT: entry:
704 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vseqi.b(<16 x i8> [[_1:%.*]], i32 1)
705 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
707 v16i8 vseqi_b(v16i8 _1) { return __lsx_vseqi_b(_1, 1); }
708 // CHECK-LABEL: @vseqi_h(
709 // CHECK-NEXT: entry:
710 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vseqi.h(<8 x i16> [[_1:%.*]], i32 1)
711 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
713 v8i16 vseqi_h(v8i16 _1) { return __lsx_vseqi_h(_1, 1); }
714 // CHECK-LABEL: @vseqi_w(
715 // CHECK-NEXT: entry:
716 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vseqi.w(<4 x i32> [[_1:%.*]], i32 1)
717 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
719 v4i32 vseqi_w(v4i32 _1) { return __lsx_vseqi_w(_1, 1); }
720 // CHECK-LABEL: @vseqi_d(
721 // CHECK-NEXT: entry:
722 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vseqi.d(<2 x i64> [[_1:%.*]], i32 1)
723 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
725 v2i64 vseqi_d(v2i64 _1) { return __lsx_vseqi_d(_1, 1); }
726 // CHECK-LABEL: @vslti_b(
727 // CHECK-NEXT: entry:
728 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vslti.b(<16 x i8> [[_1:%.*]], i32 1)
729 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
731 v16i8 vslti_b(v16i8 _1) { return __lsx_vslti_b(_1, 1); }
732 // CHECK-LABEL: @vslt_b(
733 // CHECK-NEXT: entry:
734 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vslt.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
735 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
737 v16i8 vslt_b(v16i8 _1, v16i8 _2) { return __lsx_vslt_b(_1, _2); }
738 // CHECK-LABEL: @vslt_h(
739 // CHECK-NEXT: entry:
740 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vslt.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
741 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
743 v8i16 vslt_h(v8i16 _1, v8i16 _2) { return __lsx_vslt_h(_1, _2); }
744 // CHECK-LABEL: @vslt_w(
745 // CHECK-NEXT: entry:
746 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vslt.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
747 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
749 v4i32 vslt_w(v4i32 _1, v4i32 _2) { return __lsx_vslt_w(_1, _2); }
750 // CHECK-LABEL: @vslt_d(
751 // CHECK-NEXT: entry:
752 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vslt.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
753 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
755 v2i64 vslt_d(v2i64 _1, v2i64 _2) { return __lsx_vslt_d(_1, _2); }
756 // CHECK-LABEL: @vslti_h(
757 // CHECK-NEXT: entry:
758 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vslti.h(<8 x i16> [[_1:%.*]], i32 1)
759 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
761 v8i16 vslti_h(v8i16 _1) { return __lsx_vslti_h(_1, 1); }
762 // CHECK-LABEL: @vslti_w(
763 // CHECK-NEXT: entry:
764 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vslti.w(<4 x i32> [[_1:%.*]], i32 1)
765 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
767 v4i32 vslti_w(v4i32 _1) { return __lsx_vslti_w(_1, 1); }
768 // CHECK-LABEL: @vslti_d(
769 // CHECK-NEXT: entry:
770 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vslti.d(<2 x i64> [[_1:%.*]], i32 1)
771 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
773 v2i64 vslti_d(v2i64 _1) { return __lsx_vslti_d(_1, 1); }
774 // CHECK-LABEL: @vslt_bu(
775 // CHECK-NEXT: entry:
776 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vslt.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
777 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
779 v16i8 vslt_bu(v16u8 _1, v16u8 _2) { return __lsx_vslt_bu(_1, _2); }
780 // CHECK-LABEL: @vslt_hu(
781 // CHECK-NEXT: entry:
782 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vslt.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
783 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
785 v8i16 vslt_hu(v8u16 _1, v8u16 _2) { return __lsx_vslt_hu(_1, _2); }
786 // CHECK-LABEL: @vslt_wu(
787 // CHECK-NEXT: entry:
788 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vslt.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
789 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
791 v4i32 vslt_wu(v4u32 _1, v4u32 _2) { return __lsx_vslt_wu(_1, _2); }
792 // CHECK-LABEL: @vslt_du(
793 // CHECK-NEXT: entry:
794 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vslt.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
795 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
797 v2i64 vslt_du(v2u64 _1, v2u64 _2) { return __lsx_vslt_du(_1, _2); }
798 // CHECK-LABEL: @vslti_bu(
799 // CHECK-NEXT: entry:
800 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vslti.bu(<16 x i8> [[_1:%.*]], i32 1)
801 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
803 v16i8 vslti_bu(v16u8 _1) { return __lsx_vslti_bu(_1, 1); }
804 // CHECK-LABEL: @vslti_hu(
805 // CHECK-NEXT: entry:
806 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vslti.hu(<8 x i16> [[_1:%.*]], i32 1)
807 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
809 v8i16 vslti_hu(v8u16 _1) { return __lsx_vslti_hu(_1, 1); }
810 // CHECK-LABEL: @vslti_wu(
811 // CHECK-NEXT: entry:
812 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vslti.wu(<4 x i32> [[_1:%.*]], i32 1)
813 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
815 v4i32 vslti_wu(v4u32 _1) { return __lsx_vslti_wu(_1, 1); }
816 // CHECK-LABEL: @vslti_du(
817 // CHECK-NEXT: entry:
818 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vslti.du(<2 x i64> [[_1:%.*]], i32 1)
819 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
821 v2i64 vslti_du(v2u64 _1) { return __lsx_vslti_du(_1, 1); }
822 // CHECK-LABEL: @vsle_b(
823 // CHECK-NEXT: entry:
824 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsle.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
825 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
827 v16i8 vsle_b(v16i8 _1, v16i8 _2) { return __lsx_vsle_b(_1, _2); }
828 // CHECK-LABEL: @vsle_h(
829 // CHECK-NEXT: entry:
830 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsle.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
831 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
833 v8i16 vsle_h(v8i16 _1, v8i16 _2) { return __lsx_vsle_h(_1, _2); }
834 // CHECK-LABEL: @vsle_w(
835 // CHECK-NEXT: entry:
836 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsle.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
837 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
839 v4i32 vsle_w(v4i32 _1, v4i32 _2) { return __lsx_vsle_w(_1, _2); }
840 // CHECK-LABEL: @vsle_d(
841 // CHECK-NEXT: entry:
842 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsle.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
843 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
845 v2i64 vsle_d(v2i64 _1, v2i64 _2) { return __lsx_vsle_d(_1, _2); }
846 // CHECK-LABEL: @vslei_b(
847 // CHECK-NEXT: entry:
848 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vslei.b(<16 x i8> [[_1:%.*]], i32 1)
849 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
851 v16i8 vslei_b(v16i8 _1) { return __lsx_vslei_b(_1, 1); }
852 // CHECK-LABEL: @vslei_h(
853 // CHECK-NEXT: entry:
854 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vslei.h(<8 x i16> [[_1:%.*]], i32 1)
855 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
857 v8i16 vslei_h(v8i16 _1) { return __lsx_vslei_h(_1, 1); }
858 // CHECK-LABEL: @vslei_w(
859 // CHECK-NEXT: entry:
860 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vslei.w(<4 x i32> [[_1:%.*]], i32 1)
861 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
863 v4i32 vslei_w(v4i32 _1) { return __lsx_vslei_w(_1, 1); }
864 // CHECK-LABEL: @vslei_d(
865 // CHECK-NEXT: entry:
866 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vslei.d(<2 x i64> [[_1:%.*]], i32 1)
867 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
869 v2i64 vslei_d(v2i64 _1) { return __lsx_vslei_d(_1, 1); }
870 // CHECK-LABEL: @vsle_bu(
871 // CHECK-NEXT: entry:
872 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsle.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
873 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
875 v16i8 vsle_bu(v16u8 _1, v16u8 _2) { return __lsx_vsle_bu(_1, _2); }
876 // CHECK-LABEL: @vsle_hu(
877 // CHECK-NEXT: entry:
878 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsle.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
879 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
881 v8i16 vsle_hu(v8u16 _1, v8u16 _2) { return __lsx_vsle_hu(_1, _2); }
882 // CHECK-LABEL: @vsle_wu(
883 // CHECK-NEXT: entry:
884 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsle.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
885 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
887 v4i32 vsle_wu(v4u32 _1, v4u32 _2) { return __lsx_vsle_wu(_1, _2); }
888 // CHECK-LABEL: @vsle_du(
889 // CHECK-NEXT: entry:
890 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsle.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
891 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
893 v2i64 vsle_du(v2u64 _1, v2u64 _2) { return __lsx_vsle_du(_1, _2); }
894 // CHECK-LABEL: @vslei_bu(
895 // CHECK-NEXT: entry:
896 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vslei.bu(<16 x i8> [[_1:%.*]], i32 1)
897 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
899 v16i8 vslei_bu(v16u8 _1) { return __lsx_vslei_bu(_1, 1); }
900 // CHECK-LABEL: @vslei_hu(
901 // CHECK-NEXT: entry:
902 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vslei.hu(<8 x i16> [[_1:%.*]], i32 1)
903 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
905 v8i16 vslei_hu(v8u16 _1) { return __lsx_vslei_hu(_1, 1); }
906 // CHECK-LABEL: @vslei_wu(
907 // CHECK-NEXT: entry:
908 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vslei.wu(<4 x i32> [[_1:%.*]], i32 1)
909 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
911 v4i32 vslei_wu(v4u32 _1) { return __lsx_vslei_wu(_1, 1); }
912 // CHECK-LABEL: @vslei_du(
913 // CHECK-NEXT: entry:
914 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vslei.du(<2 x i64> [[_1:%.*]], i32 1)
915 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
917 v2i64 vslei_du(v2u64 _1) { return __lsx_vslei_du(_1, 1); }
918 // CHECK-LABEL: @vsat_b(
919 // CHECK-NEXT: entry:
920 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsat.b(<16 x i8> [[_1:%.*]], i32 1)
921 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
923 v16i8 vsat_b(v16i8 _1) { return __lsx_vsat_b(_1, 1); }
924 // CHECK-LABEL: @vsat_h(
925 // CHECK-NEXT: entry:
926 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsat.h(<8 x i16> [[_1:%.*]], i32 1)
927 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
929 v8i16 vsat_h(v8i16 _1) { return __lsx_vsat_h(_1, 1); }
930 // CHECK-LABEL: @vsat_w(
931 // CHECK-NEXT: entry:
932 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsat.w(<4 x i32> [[_1:%.*]], i32 1)
933 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
935 v4i32 vsat_w(v4i32 _1) { return __lsx_vsat_w(_1, 1); }
936 // CHECK-LABEL: @vsat_d(
937 // CHECK-NEXT: entry:
938 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsat.d(<2 x i64> [[_1:%.*]], i32 1)
939 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
941 v2i64 vsat_d(v2i64 _1) { return __lsx_vsat_d(_1, 1); }
942 // CHECK-LABEL: @vsat_bu(
943 // CHECK-NEXT: entry:
944 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsat.bu(<16 x i8> [[_1:%.*]], i32 1)
945 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
947 v16u8 vsat_bu(v16u8 _1) { return __lsx_vsat_bu(_1, 1); }
948 // CHECK-LABEL: @vsat_hu(
949 // CHECK-NEXT: entry:
950 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsat.hu(<8 x i16> [[_1:%.*]], i32 1)
951 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
953 v8u16 vsat_hu(v8u16 _1) { return __lsx_vsat_hu(_1, 1); }
954 // CHECK-LABEL: @vsat_wu(
955 // CHECK-NEXT: entry:
956 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsat.wu(<4 x i32> [[_1:%.*]], i32 1)
957 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
959 v4u32 vsat_wu(v4u32 _1) { return __lsx_vsat_wu(_1, 1); }
960 // CHECK-LABEL: @vsat_du(
961 // CHECK-NEXT: entry:
962 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsat.du(<2 x i64> [[_1:%.*]], i32 1)
963 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
965 v2u64 vsat_du(v2u64 _1) { return __lsx_vsat_du(_1, 1); }
966 // CHECK-LABEL: @vadda_b(
967 // CHECK-NEXT: entry:
968 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vadda.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
969 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
971 v16i8 vadda_b(v16i8 _1, v16i8 _2) { return __lsx_vadda_b(_1, _2); }
972 // CHECK-LABEL: @vadda_h(
973 // CHECK-NEXT: entry:
974 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vadda.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
975 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
977 v8i16 vadda_h(v8i16 _1, v8i16 _2) { return __lsx_vadda_h(_1, _2); }
978 // CHECK-LABEL: @vadda_w(
979 // CHECK-NEXT: entry:
980 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vadda.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
981 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
983 v4i32 vadda_w(v4i32 _1, v4i32 _2) { return __lsx_vadda_w(_1, _2); }
984 // CHECK-LABEL: @vadda_d(
985 // CHECK-NEXT: entry:
986 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vadda.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
987 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
989 v2i64 vadda_d(v2i64 _1, v2i64 _2) { return __lsx_vadda_d(_1, _2); }
990 // CHECK-LABEL: @vsadd_b(
991 // CHECK-NEXT: entry:
992 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsadd.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
993 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
995 v16i8 vsadd_b(v16i8 _1, v16i8 _2) { return __lsx_vsadd_b(_1, _2); }
996 // CHECK-LABEL: @vsadd_h(
997 // CHECK-NEXT: entry:
998 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsadd.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
999 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1001 v8i16 vsadd_h(v8i16 _1, v8i16 _2) { return __lsx_vsadd_h(_1, _2); }
1002 // CHECK-LABEL: @vsadd_w(
1003 // CHECK-NEXT: entry:
1004 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsadd.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1005 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1007 v4i32 vsadd_w(v4i32 _1, v4i32 _2) { return __lsx_vsadd_w(_1, _2); }
1008 // CHECK-LABEL: @vsadd_d(
1009 // CHECK-NEXT: entry:
1010 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsadd.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1011 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1013 v2i64 vsadd_d(v2i64 _1, v2i64 _2) { return __lsx_vsadd_d(_1, _2); }
1014 // CHECK-LABEL: @vsadd_bu(
1015 // CHECK-NEXT: entry:
1016 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsadd.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1017 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1019 v16u8 vsadd_bu(v16u8 _1, v16u8 _2) { return __lsx_vsadd_bu(_1, _2); }
1020 // CHECK-LABEL: @vsadd_hu(
1021 // CHECK-NEXT: entry:
1022 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsadd.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1023 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1025 v8u16 vsadd_hu(v8u16 _1, v8u16 _2) { return __lsx_vsadd_hu(_1, _2); }
1026 // CHECK-LABEL: @vsadd_wu(
1027 // CHECK-NEXT: entry:
1028 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsadd.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1029 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1031 v4u32 vsadd_wu(v4u32 _1, v4u32 _2) { return __lsx_vsadd_wu(_1, _2); }
1032 // CHECK-LABEL: @vsadd_du(
1033 // CHECK-NEXT: entry:
1034 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsadd.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1035 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1037 v2u64 vsadd_du(v2u64 _1, v2u64 _2) { return __lsx_vsadd_du(_1, _2); }
1038 // CHECK-LABEL: @vavg_b(
1039 // CHECK-NEXT: entry:
1040 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vavg.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1041 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1043 v16i8 vavg_b(v16i8 _1, v16i8 _2) { return __lsx_vavg_b(_1, _2); }
1044 // CHECK-LABEL: @vavg_h(
1045 // CHECK-NEXT: entry:
1046 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vavg.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1047 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1049 v8i16 vavg_h(v8i16 _1, v8i16 _2) { return __lsx_vavg_h(_1, _2); }
1050 // CHECK-LABEL: @vavg_w(
1051 // CHECK-NEXT: entry:
1052 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vavg.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1053 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1055 v4i32 vavg_w(v4i32 _1, v4i32 _2) { return __lsx_vavg_w(_1, _2); }
1056 // CHECK-LABEL: @vavg_d(
1057 // CHECK-NEXT: entry:
1058 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vavg.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1059 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1061 v2i64 vavg_d(v2i64 _1, v2i64 _2) { return __lsx_vavg_d(_1, _2); }
1062 // CHECK-LABEL: @vavg_bu(
1063 // CHECK-NEXT: entry:
1064 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vavg.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1065 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1067 v16u8 vavg_bu(v16u8 _1, v16u8 _2) { return __lsx_vavg_bu(_1, _2); }
1068 // CHECK-LABEL: @vavg_hu(
1069 // CHECK-NEXT: entry:
1070 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vavg.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1071 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1073 v8u16 vavg_hu(v8u16 _1, v8u16 _2) { return __lsx_vavg_hu(_1, _2); }
1074 // CHECK-LABEL: @vavg_wu(
1075 // CHECK-NEXT: entry:
1076 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vavg.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1077 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1079 v4u32 vavg_wu(v4u32 _1, v4u32 _2) { return __lsx_vavg_wu(_1, _2); }
1080 // CHECK-LABEL: @vavg_du(
1081 // CHECK-NEXT: entry:
1082 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vavg.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1083 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1085 v2u64 vavg_du(v2u64 _1, v2u64 _2) { return __lsx_vavg_du(_1, _2); }
1086 // CHECK-LABEL: @vavgr_b(
1087 // CHECK-NEXT: entry:
1088 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vavgr.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1089 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1091 v16i8 vavgr_b(v16i8 _1, v16i8 _2) { return __lsx_vavgr_b(_1, _2); }
1092 // CHECK-LABEL: @vavgr_h(
1093 // CHECK-NEXT: entry:
1094 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vavgr.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1095 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1097 v8i16 vavgr_h(v8i16 _1, v8i16 _2) { return __lsx_vavgr_h(_1, _2); }
1098 // CHECK-LABEL: @vavgr_w(
1099 // CHECK-NEXT: entry:
1100 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vavgr.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1101 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1103 v4i32 vavgr_w(v4i32 _1, v4i32 _2) { return __lsx_vavgr_w(_1, _2); }
1104 // CHECK-LABEL: @vavgr_d(
1105 // CHECK-NEXT: entry:
1106 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vavgr.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1107 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1109 v2i64 vavgr_d(v2i64 _1, v2i64 _2) { return __lsx_vavgr_d(_1, _2); }
1110 // CHECK-LABEL: @vavgr_bu(
1111 // CHECK-NEXT: entry:
1112 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vavgr.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1113 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1115 v16u8 vavgr_bu(v16u8 _1, v16u8 _2) { return __lsx_vavgr_bu(_1, _2); }
1116 // CHECK-LABEL: @vavgr_hu(
1117 // CHECK-NEXT: entry:
1118 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vavgr.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1119 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1121 v8u16 vavgr_hu(v8u16 _1, v8u16 _2) { return __lsx_vavgr_hu(_1, _2); }
1122 // CHECK-LABEL: @vavgr_wu(
1123 // CHECK-NEXT: entry:
1124 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vavgr.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1125 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1127 v4u32 vavgr_wu(v4u32 _1, v4u32 _2) { return __lsx_vavgr_wu(_1, _2); }
1128 // CHECK-LABEL: @vavgr_du(
1129 // CHECK-NEXT: entry:
1130 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vavgr.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1131 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1133 v2u64 vavgr_du(v2u64 _1, v2u64 _2) { return __lsx_vavgr_du(_1, _2); }
1134 // CHECK-LABEL: @vssub_b(
1135 // CHECK-NEXT: entry:
1136 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssub.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1137 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1139 v16i8 vssub_b(v16i8 _1, v16i8 _2) { return __lsx_vssub_b(_1, _2); }
1140 // CHECK-LABEL: @vssub_h(
1141 // CHECK-NEXT: entry:
1142 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssub.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1143 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1145 v8i16 vssub_h(v8i16 _1, v8i16 _2) { return __lsx_vssub_h(_1, _2); }
1146 // CHECK-LABEL: @vssub_w(
1147 // CHECK-NEXT: entry:
1148 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssub.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1149 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1151 v4i32 vssub_w(v4i32 _1, v4i32 _2) { return __lsx_vssub_w(_1, _2); }
1152 // CHECK-LABEL: @vssub_d(
1153 // CHECK-NEXT: entry:
1154 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssub.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1155 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1157 v2i64 vssub_d(v2i64 _1, v2i64 _2) { return __lsx_vssub_d(_1, _2); }
1158 // CHECK-LABEL: @vssub_bu(
1159 // CHECK-NEXT: entry:
1160 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssub.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1161 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1163 v16u8 vssub_bu(v16u8 _1, v16u8 _2) { return __lsx_vssub_bu(_1, _2); }
1164 // CHECK-LABEL: @vssub_hu(
1165 // CHECK-NEXT: entry:
1166 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssub.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1167 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1169 v8u16 vssub_hu(v8u16 _1, v8u16 _2) { return __lsx_vssub_hu(_1, _2); }
1170 // CHECK-LABEL: @vssub_wu(
1171 // CHECK-NEXT: entry:
1172 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssub.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1173 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1175 v4u32 vssub_wu(v4u32 _1, v4u32 _2) { return __lsx_vssub_wu(_1, _2); }
1176 // CHECK-LABEL: @vssub_du(
1177 // CHECK-NEXT: entry:
1178 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssub.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1179 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1181 v2u64 vssub_du(v2u64 _1, v2u64 _2) { return __lsx_vssub_du(_1, _2); }
1182 // CHECK-LABEL: @vabsd_b(
1183 // CHECK-NEXT: entry:
1184 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vabsd.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1185 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1187 v16i8 vabsd_b(v16i8 _1, v16i8 _2) { return __lsx_vabsd_b(_1, _2); }
1188 // CHECK-LABEL: @vabsd_h(
1189 // CHECK-NEXT: entry:
1190 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vabsd.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1191 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1193 v8i16 vabsd_h(v8i16 _1, v8i16 _2) { return __lsx_vabsd_h(_1, _2); }
1194 // CHECK-LABEL: @vabsd_w(
1195 // CHECK-NEXT: entry:
1196 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vabsd.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1197 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1199 v4i32 vabsd_w(v4i32 _1, v4i32 _2) { return __lsx_vabsd_w(_1, _2); }
1200 // CHECK-LABEL: @vabsd_d(
1201 // CHECK-NEXT: entry:
1202 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vabsd.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1203 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1205 v2i64 vabsd_d(v2i64 _1, v2i64 _2) { return __lsx_vabsd_d(_1, _2); }
1206 // CHECK-LABEL: @vabsd_bu(
1207 // CHECK-NEXT: entry:
1208 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vabsd.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1209 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1211 v16u8 vabsd_bu(v16u8 _1, v16u8 _2) { return __lsx_vabsd_bu(_1, _2); }
1212 // CHECK-LABEL: @vabsd_hu(
1213 // CHECK-NEXT: entry:
1214 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vabsd.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1215 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1217 v8u16 vabsd_hu(v8u16 _1, v8u16 _2) { return __lsx_vabsd_hu(_1, _2); }
1218 // CHECK-LABEL: @vabsd_wu(
1219 // CHECK-NEXT: entry:
1220 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vabsd.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1221 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1223 v4u32 vabsd_wu(v4u32 _1, v4u32 _2) { return __lsx_vabsd_wu(_1, _2); }
1224 // CHECK-LABEL: @vabsd_du(
1225 // CHECK-NEXT: entry:
1226 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vabsd.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1227 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1229 v2u64 vabsd_du(v2u64 _1, v2u64 _2) { return __lsx_vabsd_du(_1, _2); }
1230 // CHECK-LABEL: @vmul_b(
1231 // CHECK-NEXT: entry:
1232 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmul.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1233 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1235 v16i8 vmul_b(v16i8 _1, v16i8 _2) { return __lsx_vmul_b(_1, _2); }
1236 // CHECK-LABEL: @vmul_h(
1237 // CHECK-NEXT: entry:
1238 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmul.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1239 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1241 v8i16 vmul_h(v8i16 _1, v8i16 _2) { return __lsx_vmul_h(_1, _2); }
1242 // CHECK-LABEL: @vmul_w(
1243 // CHECK-NEXT: entry:
1244 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmul.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1245 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1247 v4i32 vmul_w(v4i32 _1, v4i32 _2) { return __lsx_vmul_w(_1, _2); }
1248 // CHECK-LABEL: @vmul_d(
1249 // CHECK-NEXT: entry:
1250 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmul.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1251 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1253 v2i64 vmul_d(v2i64 _1, v2i64 _2) { return __lsx_vmul_d(_1, _2); }
1254 // CHECK-LABEL: @vmadd_b(
1255 // CHECK-NEXT: entry:
1256 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmadd.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
1257 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1259 v16i8 vmadd_b(v16i8 _1, v16i8 _2, v16i8 _3) {
1260 return __lsx_vmadd_b(_1, _2, _3);
1262 // CHECK-LABEL: @vmadd_h(
1263 // CHECK-NEXT: entry:
1264 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmadd.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
1265 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1267 v8i16 vmadd_h(v8i16 _1, v8i16 _2, v8i16 _3) {
1268 return __lsx_vmadd_h(_1, _2, _3);
1270 // CHECK-LABEL: @vmadd_w(
1271 // CHECK-NEXT: entry:
1272 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmadd.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
1273 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1275 v4i32 vmadd_w(v4i32 _1, v4i32 _2, v4i32 _3) {
1276 return __lsx_vmadd_w(_1, _2, _3);
1278 // CHECK-LABEL: @vmadd_d(
1279 // CHECK-NEXT: entry:
1280 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmadd.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
1281 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1283 v2i64 vmadd_d(v2i64 _1, v2i64 _2, v2i64 _3) {
1284 return __lsx_vmadd_d(_1, _2, _3);
1286 // CHECK-LABEL: @vmsub_b(
1287 // CHECK-NEXT: entry:
1288 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmsub.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
1289 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1291 v16i8 vmsub_b(v16i8 _1, v16i8 _2, v16i8 _3) {
1292 return __lsx_vmsub_b(_1, _2, _3);
1294 // CHECK-LABEL: @vmsub_h(
1295 // CHECK-NEXT: entry:
1296 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmsub.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
1297 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1299 v8i16 vmsub_h(v8i16 _1, v8i16 _2, v8i16 _3) {
1300 return __lsx_vmsub_h(_1, _2, _3);
1302 // CHECK-LABEL: @vmsub_w(
1303 // CHECK-NEXT: entry:
1304 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmsub.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
1305 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1307 v4i32 vmsub_w(v4i32 _1, v4i32 _2, v4i32 _3) {
1308 return __lsx_vmsub_w(_1, _2, _3);
1310 // CHECK-LABEL: @vmsub_d(
1311 // CHECK-NEXT: entry:
1312 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmsub.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
1313 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1315 v2i64 vmsub_d(v2i64 _1, v2i64 _2, v2i64 _3) {
1316 return __lsx_vmsub_d(_1, _2, _3);
1318 // CHECK-LABEL: @vdiv_b(
1319 // CHECK-NEXT: entry:
1320 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vdiv.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1321 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1323 v16i8 vdiv_b(v16i8 _1, v16i8 _2) { return __lsx_vdiv_b(_1, _2); }
1324 // CHECK-LABEL: @vdiv_h(
1325 // CHECK-NEXT: entry:
1326 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vdiv.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1327 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1329 v8i16 vdiv_h(v8i16 _1, v8i16 _2) { return __lsx_vdiv_h(_1, _2); }
1330 // CHECK-LABEL: @vdiv_w(
1331 // CHECK-NEXT: entry:
1332 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vdiv.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1333 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1335 v4i32 vdiv_w(v4i32 _1, v4i32 _2) { return __lsx_vdiv_w(_1, _2); }
1336 // CHECK-LABEL: @vdiv_d(
1337 // CHECK-NEXT: entry:
1338 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vdiv.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1339 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1341 v2i64 vdiv_d(v2i64 _1, v2i64 _2) { return __lsx_vdiv_d(_1, _2); }
1342 // CHECK-LABEL: @vdiv_bu(
1343 // CHECK-NEXT: entry:
1344 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vdiv.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1345 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1347 v16u8 vdiv_bu(v16u8 _1, v16u8 _2) { return __lsx_vdiv_bu(_1, _2); }
1348 // CHECK-LABEL: @vdiv_hu(
1349 // CHECK-NEXT: entry:
1350 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vdiv.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1351 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1353 v8u16 vdiv_hu(v8u16 _1, v8u16 _2) { return __lsx_vdiv_hu(_1, _2); }
1354 // CHECK-LABEL: @vdiv_wu(
1355 // CHECK-NEXT: entry:
1356 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vdiv.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1357 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1359 v4u32 vdiv_wu(v4u32 _1, v4u32 _2) { return __lsx_vdiv_wu(_1, _2); }
1360 // CHECK-LABEL: @vdiv_du(
1361 // CHECK-NEXT: entry:
1362 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vdiv.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1363 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1365 v2u64 vdiv_du(v2u64 _1, v2u64 _2) { return __lsx_vdiv_du(_1, _2); }
1366 // CHECK-LABEL: @vhaddw_h_b(
1367 // CHECK-NEXT: entry:
1368 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vhaddw.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1369 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1371 v8i16 vhaddw_h_b(v16i8 _1, v16i8 _2) { return __lsx_vhaddw_h_b(_1, _2); }
1372 // CHECK-LABEL: @vhaddw_w_h(
1373 // CHECK-NEXT: entry:
1374 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vhaddw.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1375 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1377 v4i32 vhaddw_w_h(v8i16 _1, v8i16 _2) { return __lsx_vhaddw_w_h(_1, _2); }
1378 // CHECK-LABEL: @vhaddw_d_w(
1379 // CHECK-NEXT: entry:
1380 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhaddw.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1381 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1383 v2i64 vhaddw_d_w(v4i32 _1, v4i32 _2) { return __lsx_vhaddw_d_w(_1, _2); }
1384 // CHECK-LABEL: @vhaddw_hu_bu(
1385 // CHECK-NEXT: entry:
1386 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vhaddw.hu.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1387 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1389 v8u16 vhaddw_hu_bu(v16u8 _1, v16u8 _2) { return __lsx_vhaddw_hu_bu(_1, _2); }
1390 // CHECK-LABEL: @vhaddw_wu_hu(
1391 // CHECK-NEXT: entry:
1392 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vhaddw.wu.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1393 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1395 v4u32 vhaddw_wu_hu(v8u16 _1, v8u16 _2) { return __lsx_vhaddw_wu_hu(_1, _2); }
1396 // CHECK-LABEL: @vhaddw_du_wu(
1397 // CHECK-NEXT: entry:
1398 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhaddw.du.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1399 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1401 v2u64 vhaddw_du_wu(v4u32 _1, v4u32 _2) { return __lsx_vhaddw_du_wu(_1, _2); }
1402 // CHECK-LABEL: @vhsubw_h_b(
1403 // CHECK-NEXT: entry:
1404 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vhsubw.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1405 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1407 v8i16 vhsubw_h_b(v16i8 _1, v16i8 _2) { return __lsx_vhsubw_h_b(_1, _2); }
1408 // CHECK-LABEL: @vhsubw_w_h(
1409 // CHECK-NEXT: entry:
1410 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vhsubw.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1411 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1413 v4i32 vhsubw_w_h(v8i16 _1, v8i16 _2) { return __lsx_vhsubw_w_h(_1, _2); }
1414 // CHECK-LABEL: @vhsubw_d_w(
1415 // CHECK-NEXT: entry:
1416 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhsubw.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1417 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1419 v2i64 vhsubw_d_w(v4i32 _1, v4i32 _2) { return __lsx_vhsubw_d_w(_1, _2); }
1420 // CHECK-LABEL: @vhsubw_hu_bu(
1421 // CHECK-NEXT: entry:
1422 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vhsubw.hu.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1423 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1425 v8i16 vhsubw_hu_bu(v16u8 _1, v16u8 _2) { return __lsx_vhsubw_hu_bu(_1, _2); }
1426 // CHECK-LABEL: @vhsubw_wu_hu(
1427 // CHECK-NEXT: entry:
1428 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vhsubw.wu.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1429 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1431 v4i32 vhsubw_wu_hu(v8u16 _1, v8u16 _2) { return __lsx_vhsubw_wu_hu(_1, _2); }
1432 // CHECK-LABEL: @vhsubw_du_wu(
1433 // CHECK-NEXT: entry:
1434 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhsubw.du.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1435 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1437 v2i64 vhsubw_du_wu(v4u32 _1, v4u32 _2) { return __lsx_vhsubw_du_wu(_1, _2); }
1438 // CHECK-LABEL: @vmod_b(
1439 // CHECK-NEXT: entry:
1440 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmod.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1441 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1443 v16i8 vmod_b(v16i8 _1, v16i8 _2) { return __lsx_vmod_b(_1, _2); }
1444 // CHECK-LABEL: @vmod_h(
1445 // CHECK-NEXT: entry:
1446 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmod.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1447 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1449 v8i16 vmod_h(v8i16 _1, v8i16 _2) { return __lsx_vmod_h(_1, _2); }
1450 // CHECK-LABEL: @vmod_w(
1451 // CHECK-NEXT: entry:
1452 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmod.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1453 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1455 v4i32 vmod_w(v4i32 _1, v4i32 _2) { return __lsx_vmod_w(_1, _2); }
1456 // CHECK-LABEL: @vmod_d(
1457 // CHECK-NEXT: entry:
1458 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmod.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1459 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1461 v2i64 vmod_d(v2i64 _1, v2i64 _2) { return __lsx_vmod_d(_1, _2); }
1462 // CHECK-LABEL: @vmod_bu(
1463 // CHECK-NEXT: entry:
1464 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmod.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1465 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1467 v16u8 vmod_bu(v16u8 _1, v16u8 _2) { return __lsx_vmod_bu(_1, _2); }
1468 // CHECK-LABEL: @vmod_hu(
1469 // CHECK-NEXT: entry:
1470 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmod.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1471 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1473 v8u16 vmod_hu(v8u16 _1, v8u16 _2) { return __lsx_vmod_hu(_1, _2); }
1474 // CHECK-LABEL: @vmod_wu(
1475 // CHECK-NEXT: entry:
1476 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmod.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1477 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1479 v4u32 vmod_wu(v4u32 _1, v4u32 _2) { return __lsx_vmod_wu(_1, _2); }
1480 // CHECK-LABEL: @vmod_du(
1481 // CHECK-NEXT: entry:
1482 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmod.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1483 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1485 v2u64 vmod_du(v2u64 _1, v2u64 _2) { return __lsx_vmod_du(_1, _2); }
1486 // CHECK-LABEL: @vreplve_b(
1487 // CHECK-NEXT: entry:
1488 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vreplve.b(<16 x i8> [[_1:%.*]], i32 [[_2:%.*]])
1489 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1491 v16i8 vreplve_b(v16i8 _1, int _2) { return __lsx_vreplve_b(_1, _2); }
1492 // CHECK-LABEL: @vreplve_h(
1493 // CHECK-NEXT: entry:
1494 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vreplve.h(<8 x i16> [[_1:%.*]], i32 [[_2:%.*]])
1495 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1497 v8i16 vreplve_h(v8i16 _1, int _2) { return __lsx_vreplve_h(_1, _2); }
1498 // CHECK-LABEL: @vreplve_w(
1499 // CHECK-NEXT: entry:
1500 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vreplve.w(<4 x i32> [[_1:%.*]], i32 [[_2:%.*]])
1501 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1503 v4i32 vreplve_w(v4i32 _1, int _2) { return __lsx_vreplve_w(_1, _2); }
1504 // CHECK-LABEL: @vreplve_d(
1505 // CHECK-NEXT: entry:
1506 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vreplve.d(<2 x i64> [[_1:%.*]], i32 [[_2:%.*]])
1507 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1509 v2i64 vreplve_d(v2i64 _1, int _2) { return __lsx_vreplve_d(_1, _2); }
1510 // CHECK-LABEL: @vreplvei_b(
1511 // CHECK-NEXT: entry:
1512 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vreplvei.b(<16 x i8> [[_1:%.*]], i32 1)
1513 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1515 v16i8 vreplvei_b(v16i8 _1) { return __lsx_vreplvei_b(_1, 1); }
1516 // CHECK-LABEL: @vreplvei_h(
1517 // CHECK-NEXT: entry:
1518 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vreplvei.h(<8 x i16> [[_1:%.*]], i32 1)
1519 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1521 v8i16 vreplvei_h(v8i16 _1) { return __lsx_vreplvei_h(_1, 1); }
1522 // CHECK-LABEL: @vreplvei_w(
1523 // CHECK-NEXT: entry:
1524 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vreplvei.w(<4 x i32> [[_1:%.*]], i32 1)
1525 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1527 v4i32 vreplvei_w(v4i32 _1) { return __lsx_vreplvei_w(_1, 1); }
1528 // CHECK-LABEL: @vreplvei_d(
1529 // CHECK-NEXT: entry:
1530 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vreplvei.d(<2 x i64> [[_1:%.*]], i32 1)
1531 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1533 v2i64 vreplvei_d(v2i64 _1) { return __lsx_vreplvei_d(_1, 1); }
1534 // CHECK-LABEL: @vpickev_b(
1535 // CHECK-NEXT: entry:
1536 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vpickev.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1537 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1539 v16i8 vpickev_b(v16i8 _1, v16i8 _2) { return __lsx_vpickev_b(_1, _2); }
1540 // CHECK-LABEL: @vpickev_h(
1541 // CHECK-NEXT: entry:
1542 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vpickev.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1543 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1545 v8i16 vpickev_h(v8i16 _1, v8i16 _2) { return __lsx_vpickev_h(_1, _2); }
1546 // CHECK-LABEL: @vpickev_w(
1547 // CHECK-NEXT: entry:
1548 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vpickev.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1549 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1551 v4i32 vpickev_w(v4i32 _1, v4i32 _2) { return __lsx_vpickev_w(_1, _2); }
1552 // CHECK-LABEL: @vpickev_d(
1553 // CHECK-NEXT: entry:
1554 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vpickev.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1555 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1557 v2i64 vpickev_d(v2i64 _1, v2i64 _2) { return __lsx_vpickev_d(_1, _2); }
1558 // CHECK-LABEL: @vpickod_b(
1559 // CHECK-NEXT: entry:
1560 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vpickod.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1561 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1563 v16i8 vpickod_b(v16i8 _1, v16i8 _2) { return __lsx_vpickod_b(_1, _2); }
1564 // CHECK-LABEL: @vpickod_h(
1565 // CHECK-NEXT: entry:
1566 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vpickod.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1567 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1569 v8i16 vpickod_h(v8i16 _1, v8i16 _2) { return __lsx_vpickod_h(_1, _2); }
1570 // CHECK-LABEL: @vpickod_w(
1571 // CHECK-NEXT: entry:
1572 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vpickod.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1573 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1575 v4i32 vpickod_w(v4i32 _1, v4i32 _2) { return __lsx_vpickod_w(_1, _2); }
1576 // CHECK-LABEL: @vpickod_d(
1577 // CHECK-NEXT: entry:
1578 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vpickod.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1579 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1581 v2i64 vpickod_d(v2i64 _1, v2i64 _2) { return __lsx_vpickod_d(_1, _2); }
1582 // CHECK-LABEL: @vilvh_b(
1583 // CHECK-NEXT: entry:
1584 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vilvh.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1585 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1587 v16i8 vilvh_b(v16i8 _1, v16i8 _2) { return __lsx_vilvh_b(_1, _2); }
1588 // CHECK-LABEL: @vilvh_h(
1589 // CHECK-NEXT: entry:
1590 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vilvh.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1591 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1593 v8i16 vilvh_h(v8i16 _1, v8i16 _2) { return __lsx_vilvh_h(_1, _2); }
1594 // CHECK-LABEL: @vilvh_w(
1595 // CHECK-NEXT: entry:
1596 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vilvh.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1597 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1599 v4i32 vilvh_w(v4i32 _1, v4i32 _2) { return __lsx_vilvh_w(_1, _2); }
1600 // CHECK-LABEL: @vilvh_d(
1601 // CHECK-NEXT: entry:
1602 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vilvh.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1603 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1605 v2i64 vilvh_d(v2i64 _1, v2i64 _2) { return __lsx_vilvh_d(_1, _2); }
1606 // CHECK-LABEL: @vilvl_b(
1607 // CHECK-NEXT: entry:
1608 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vilvl.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1609 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1611 v16i8 vilvl_b(v16i8 _1, v16i8 _2) { return __lsx_vilvl_b(_1, _2); }
1612 // CHECK-LABEL: @vilvl_h(
1613 // CHECK-NEXT: entry:
1614 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vilvl.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1615 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1617 v8i16 vilvl_h(v8i16 _1, v8i16 _2) { return __lsx_vilvl_h(_1, _2); }
1618 // CHECK-LABEL: @vilvl_w(
1619 // CHECK-NEXT: entry:
1620 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vilvl.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1621 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1623 v4i32 vilvl_w(v4i32 _1, v4i32 _2) { return __lsx_vilvl_w(_1, _2); }
1624 // CHECK-LABEL: @vilvl_d(
1625 // CHECK-NEXT: entry:
1626 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vilvl.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1627 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1629 v2i64 vilvl_d(v2i64 _1, v2i64 _2) { return __lsx_vilvl_d(_1, _2); }
1630 // CHECK-LABEL: @vpackev_b(
1631 // CHECK-NEXT: entry:
1632 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vpackev.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1633 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1635 v16i8 vpackev_b(v16i8 _1, v16i8 _2) { return __lsx_vpackev_b(_1, _2); }
1636 // CHECK-LABEL: @vpackev_h(
1637 // CHECK-NEXT: entry:
1638 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vpackev.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1639 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1641 v8i16 vpackev_h(v8i16 _1, v8i16 _2) { return __lsx_vpackev_h(_1, _2); }
1642 // CHECK-LABEL: @vpackev_w(
1643 // CHECK-NEXT: entry:
1644 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vpackev.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1645 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1647 v4i32 vpackev_w(v4i32 _1, v4i32 _2) { return __lsx_vpackev_w(_1, _2); }
1648 // CHECK-LABEL: @vpackev_d(
1649 // CHECK-NEXT: entry:
1650 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vpackev.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1651 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1653 v2i64 vpackev_d(v2i64 _1, v2i64 _2) { return __lsx_vpackev_d(_1, _2); }
1654 // CHECK-LABEL: @vpackod_b(
1655 // CHECK-NEXT: entry:
1656 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vpackod.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1657 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1659 v16i8 vpackod_b(v16i8 _1, v16i8 _2) { return __lsx_vpackod_b(_1, _2); }
1660 // CHECK-LABEL: @vpackod_h(
1661 // CHECK-NEXT: entry:
1662 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vpackod.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
1663 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1665 v8i16 vpackod_h(v8i16 _1, v8i16 _2) { return __lsx_vpackod_h(_1, _2); }
1666 // CHECK-LABEL: @vpackod_w(
1667 // CHECK-NEXT: entry:
1668 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vpackod.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
1669 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1671 v4i32 vpackod_w(v4i32 _1, v4i32 _2) { return __lsx_vpackod_w(_1, _2); }
1672 // CHECK-LABEL: @vpackod_d(
1673 // CHECK-NEXT: entry:
1674 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vpackod.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
1675 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1677 v2i64 vpackod_d(v2i64 _1, v2i64 _2) { return __lsx_vpackod_d(_1, _2); }
1678 // CHECK-LABEL: @vshuf_h(
1679 // CHECK-NEXT: entry:
1680 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vshuf.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
1681 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1683 v8i16 vshuf_h(v8i16 _1, v8i16 _2, v8i16 _3) {
1684 return __lsx_vshuf_h(_1, _2, _3);
1686 // CHECK-LABEL: @vshuf_w(
1687 // CHECK-NEXT: entry:
1688 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vshuf.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
1689 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1691 v4i32 vshuf_w(v4i32 _1, v4i32 _2, v4i32 _3) {
1692 return __lsx_vshuf_w(_1, _2, _3);
1694 // CHECK-LABEL: @vshuf_d(
1695 // CHECK-NEXT: entry:
1696 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vshuf.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
1697 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1699 v2i64 vshuf_d(v2i64 _1, v2i64 _2, v2i64 _3) {
1700 return __lsx_vshuf_d(_1, _2, _3);
1702 // CHECK-LABEL: @vand_v(
1703 // CHECK-NEXT: entry:
1704 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vand.v(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1705 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1707 v16u8 vand_v(v16u8 _1, v16u8 _2) { return __lsx_vand_v(_1, _2); }
1708 // CHECK-LABEL: @vandi_b(
1709 // CHECK-NEXT: entry:
1710 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vandi.b(<16 x i8> [[_1:%.*]], i32 1)
1711 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1713 v16u8 vandi_b(v16u8 _1) { return __lsx_vandi_b(_1, 1); }
1714 // CHECK-LABEL: @vor_v(
1715 // CHECK-NEXT: entry:
1716 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vor.v(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1717 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1719 v16u8 vor_v(v16u8 _1, v16u8 _2) { return __lsx_vor_v(_1, _2); }
1720 // CHECK-LABEL: @vori_b(
1721 // CHECK-NEXT: entry:
1722 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vori.b(<16 x i8> [[_1:%.*]], i32 1)
1723 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1725 v16u8 vori_b(v16u8 _1) { return __lsx_vori_b(_1, 1); }
1726 // CHECK-LABEL: @vnor_v(
1727 // CHECK-NEXT: entry:
1728 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vnor.v(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1729 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1731 v16u8 vnor_v(v16u8 _1, v16u8 _2) { return __lsx_vnor_v(_1, _2); }
1732 // CHECK-LABEL: @vnori_b(
1733 // CHECK-NEXT: entry:
1734 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vnori.b(<16 x i8> [[_1:%.*]], i32 1)
1735 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1737 v16u8 vnori_b(v16u8 _1) { return __lsx_vnori_b(_1, 1); }
1738 // CHECK-LABEL: @vxor_v(
1739 // CHECK-NEXT: entry:
1740 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vxor.v(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
1741 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1743 v16u8 vxor_v(v16u8 _1, v16u8 _2) { return __lsx_vxor_v(_1, _2); }
1744 // CHECK-LABEL: @vxori_b(
1745 // CHECK-NEXT: entry:
1746 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vxori.b(<16 x i8> [[_1:%.*]], i32 1)
1747 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1749 v16u8 vxori_b(v16u8 _1) { return __lsx_vxori_b(_1, 1); }
1750 // CHECK-LABEL: @vbitsel_v(
1751 // CHECK-NEXT: entry:
1752 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitsel.v(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
1753 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1755 v16u8 vbitsel_v(v16u8 _1, v16u8 _2, v16u8 _3) {
1756 return __lsx_vbitsel_v(_1, _2, _3);
1758 // CHECK-LABEL: @vbitseli_b(
1759 // CHECK-NEXT: entry:
1760 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbitseli.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
1761 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1763 v16u8 vbitseli_b(v16u8 _1, v16u8 _2) { return __lsx_vbitseli_b(_1, _2, 1); }
1764 // CHECK-LABEL: @vshuf4i_b(
1765 // CHECK-NEXT: entry:
1766 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vshuf4i.b(<16 x i8> [[_1:%.*]], i32 1)
1767 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1769 v16i8 vshuf4i_b(v16i8 _1) { return __lsx_vshuf4i_b(_1, 1); }
1770 // CHECK-LABEL: @vshuf4i_h(
1771 // CHECK-NEXT: entry:
1772 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vshuf4i.h(<8 x i16> [[_1:%.*]], i32 1)
1773 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1775 v8i16 vshuf4i_h(v8i16 _1) { return __lsx_vshuf4i_h(_1, 1); }
1776 // CHECK-LABEL: @vshuf4i_w(
1777 // CHECK-NEXT: entry:
1778 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vshuf4i.w(<4 x i32> [[_1:%.*]], i32 1)
1779 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1781 v4i32 vshuf4i_w(v4i32 _1) { return __lsx_vshuf4i_w(_1, 1); }
1782 // CHECK-LABEL: @vreplgr2vr_b(
1783 // CHECK-NEXT: entry:
1784 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vreplgr2vr.b(i32 [[_1:%.*]])
1785 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1787 v16i8 vreplgr2vr_b(int _1) { return __lsx_vreplgr2vr_b(_1); }
1788 // CHECK-LABEL: @vreplgr2vr_h(
1789 // CHECK-NEXT: entry:
1790 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vreplgr2vr.h(i32 [[_1:%.*]])
1791 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1793 v8i16 vreplgr2vr_h(int _1) { return __lsx_vreplgr2vr_h(_1); }
1794 // CHECK-LABEL: @vreplgr2vr_w(
1795 // CHECK-NEXT: entry:
1796 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vreplgr2vr.w(i32 [[_1:%.*]])
1797 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1799 v4i32 vreplgr2vr_w(int _1) { return __lsx_vreplgr2vr_w(_1); }
1800 // CHECK-LABEL: @vreplgr2vr_d(
1801 // CHECK-NEXT: entry:
1802 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vreplgr2vr.d(i64 [[_1:%.*]])
1803 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1805 v2i64 vreplgr2vr_d(long _1) { return __lsx_vreplgr2vr_d(_1); }
1806 // CHECK-LABEL: @vpcnt_b(
1807 // CHECK-NEXT: entry:
1808 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vpcnt.b(<16 x i8> [[_1:%.*]])
1809 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1811 v16i8 vpcnt_b(v16i8 _1) { return __lsx_vpcnt_b(_1); }
1812 // CHECK-LABEL: @vpcnt_h(
1813 // CHECK-NEXT: entry:
1814 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vpcnt.h(<8 x i16> [[_1:%.*]])
1815 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1817 v8i16 vpcnt_h(v8i16 _1) { return __lsx_vpcnt_h(_1); }
1818 // CHECK-LABEL: @vpcnt_w(
1819 // CHECK-NEXT: entry:
1820 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vpcnt.w(<4 x i32> [[_1:%.*]])
1821 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1823 v4i32 vpcnt_w(v4i32 _1) { return __lsx_vpcnt_w(_1); }
1824 // CHECK-LABEL: @vpcnt_d(
1825 // CHECK-NEXT: entry:
1826 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vpcnt.d(<2 x i64> [[_1:%.*]])
1827 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1829 v2i64 vpcnt_d(v2i64 _1) { return __lsx_vpcnt_d(_1); }
1830 // CHECK-LABEL: @vclo_b(
1831 // CHECK-NEXT: entry:
1832 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vclo.b(<16 x i8> [[_1:%.*]])
1833 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1835 v16i8 vclo_b(v16i8 _1) { return __lsx_vclo_b(_1); }
1836 // CHECK-LABEL: @vclo_h(
1837 // CHECK-NEXT: entry:
1838 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vclo.h(<8 x i16> [[_1:%.*]])
1839 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1841 v8i16 vclo_h(v8i16 _1) { return __lsx_vclo_h(_1); }
1842 // CHECK-LABEL: @vclo_w(
1843 // CHECK-NEXT: entry:
1844 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vclo.w(<4 x i32> [[_1:%.*]])
1845 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1847 v4i32 vclo_w(v4i32 _1) { return __lsx_vclo_w(_1); }
1848 // CHECK-LABEL: @vclo_d(
1849 // CHECK-NEXT: entry:
1850 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vclo.d(<2 x i64> [[_1:%.*]])
1851 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1853 v2i64 vclo_d(v2i64 _1) { return __lsx_vclo_d(_1); }
1854 // CHECK-LABEL: @vclz_b(
1855 // CHECK-NEXT: entry:
1856 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vclz.b(<16 x i8> [[_1:%.*]])
1857 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1859 v16i8 vclz_b(v16i8 _1) { return __lsx_vclz_b(_1); }
1860 // CHECK-LABEL: @vclz_h(
1861 // CHECK-NEXT: entry:
1862 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vclz.h(<8 x i16> [[_1:%.*]])
1863 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1865 v8i16 vclz_h(v8i16 _1) { return __lsx_vclz_h(_1); }
1866 // CHECK-LABEL: @vclz_w(
1867 // CHECK-NEXT: entry:
1868 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vclz.w(<4 x i32> [[_1:%.*]])
1869 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1871 v4i32 vclz_w(v4i32 _1) { return __lsx_vclz_w(_1); }
1872 // CHECK-LABEL: @vclz_d(
1873 // CHECK-NEXT: entry:
1874 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vclz.d(<2 x i64> [[_1:%.*]])
1875 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1877 v2i64 vclz_d(v2i64 _1) { return __lsx_vclz_d(_1); }
1878 // CHECK-LABEL: @vpickve2gr_b(
1879 // CHECK-NEXT: entry:
1880 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.vpickve2gr.b(<16 x i8> [[_1:%.*]], i32 1)
1881 // CHECK-NEXT: ret i32 [[TMP0]]
1883 int vpickve2gr_b(v16i8 _1) { return __lsx_vpickve2gr_b(_1, 1); }
1884 // CHECK-LABEL: @vpickve2gr_h(
1885 // CHECK-NEXT: entry:
1886 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.vpickve2gr.h(<8 x i16> [[_1:%.*]], i32 1)
1887 // CHECK-NEXT: ret i32 [[TMP0]]
1889 int vpickve2gr_h(v8i16 _1) { return __lsx_vpickve2gr_h(_1, 1); }
1890 // CHECK-LABEL: @vpickve2gr_w(
1891 // CHECK-NEXT: entry:
1892 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.vpickve2gr.w(<4 x i32> [[_1:%.*]], i32 1)
1893 // CHECK-NEXT: ret i32 [[TMP0]]
1895 int vpickve2gr_w(v4i32 _1) { return __lsx_vpickve2gr_w(_1, 1); }
1896 // CHECK-LABEL: @vpickve2gr_d(
1897 // CHECK-NEXT: entry:
1898 // CHECK-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.loongarch.lsx.vpickve2gr.d(<2 x i64> [[_1:%.*]], i32 1)
1899 // CHECK-NEXT: ret i64 [[TMP0]]
1901 long vpickve2gr_d(v2i64 _1) { return __lsx_vpickve2gr_d(_1, 1); }
1902 // CHECK-LABEL: @vpickve2gr_bu(
1903 // CHECK-NEXT: entry:
1904 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.vpickve2gr.bu(<16 x i8> [[_1:%.*]], i32 1)
1905 // CHECK-NEXT: ret i32 [[TMP0]]
1907 unsigned int vpickve2gr_bu(v16i8 _1) { return __lsx_vpickve2gr_bu(_1, 1); }
1908 // CHECK-LABEL: @vpickve2gr_hu(
1909 // CHECK-NEXT: entry:
1910 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.vpickve2gr.hu(<8 x i16> [[_1:%.*]], i32 1)
1911 // CHECK-NEXT: ret i32 [[TMP0]]
1913 unsigned int vpickve2gr_hu(v8i16 _1) { return __lsx_vpickve2gr_hu(_1, 1); }
1914 // CHECK-LABEL: @vpickve2gr_wu(
1915 // CHECK-NEXT: entry:
1916 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.vpickve2gr.wu(<4 x i32> [[_1:%.*]], i32 1)
1917 // CHECK-NEXT: ret i32 [[TMP0]]
1919 unsigned int vpickve2gr_wu(v4i32 _1) { return __lsx_vpickve2gr_wu(_1, 1); }
1920 // CHECK-LABEL: @vpickve2gr_du(
1921 // CHECK-NEXT: entry:
1922 // CHECK-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.loongarch.lsx.vpickve2gr.du(<2 x i64> [[_1:%.*]], i32 1)
1923 // CHECK-NEXT: ret i64 [[TMP0]]
1925 unsigned long int vpickve2gr_du(v2i64 _1) { return __lsx_vpickve2gr_du(_1, 1); }
1926 // CHECK-LABEL: @vinsgr2vr_b(
1927 // CHECK-NEXT: entry:
1928 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vinsgr2vr.b(<16 x i8> [[_1:%.*]], i32 1, i32 1)
1929 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
1931 v16i8 vinsgr2vr_b(v16i8 _1) { return __lsx_vinsgr2vr_b(_1, 1, 1); }
1932 // CHECK-LABEL: @vinsgr2vr_h(
1933 // CHECK-NEXT: entry:
1934 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vinsgr2vr.h(<8 x i16> [[_1:%.*]], i32 1, i32 1)
1935 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
1937 v8i16 vinsgr2vr_h(v8i16 _1) { return __lsx_vinsgr2vr_h(_1, 1, 1); }
1938 // CHECK-LABEL: @vinsgr2vr_w(
1939 // CHECK-NEXT: entry:
1940 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vinsgr2vr.w(<4 x i32> [[_1:%.*]], i32 1, i32 1)
1941 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
1943 v4i32 vinsgr2vr_w(v4i32 _1) { return __lsx_vinsgr2vr_w(_1, 1, 1); }
1944 // CHECK-LABEL: @vinsgr2vr_d(
1945 // CHECK-NEXT: entry:
1946 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vinsgr2vr.d(<2 x i64> [[_1:%.*]], i64 1, i32 1)
1947 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
1949 v2i64 vinsgr2vr_d(v2i64 _1) { return __lsx_vinsgr2vr_d(_1, 1, 1); }
1950 // CHECK-LABEL: @vfadd_s(
1951 // CHECK-NEXT: entry:
1952 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfadd.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
1953 // CHECK-NEXT: ret <4 x float> [[TMP0]]
1955 v4f32 vfadd_s(v4f32 _1, v4f32 _2) { return __lsx_vfadd_s(_1, _2); }
1956 // CHECK-LABEL: @vfadd_d(
1957 // CHECK-NEXT: entry:
1958 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfadd.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
1959 // CHECK-NEXT: ret <2 x double> [[TMP0]]
1961 v2f64 vfadd_d(v2f64 _1, v2f64 _2) { return __lsx_vfadd_d(_1, _2); }
1962 // CHECK-LABEL: @vfsub_s(
1963 // CHECK-NEXT: entry:
1964 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfsub.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
1965 // CHECK-NEXT: ret <4 x float> [[TMP0]]
1967 v4f32 vfsub_s(v4f32 _1, v4f32 _2) { return __lsx_vfsub_s(_1, _2); }
1968 // CHECK-LABEL: @vfsub_d(
1969 // CHECK-NEXT: entry:
1970 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfsub.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
1971 // CHECK-NEXT: ret <2 x double> [[TMP0]]
1973 v2f64 vfsub_d(v2f64 _1, v2f64 _2) { return __lsx_vfsub_d(_1, _2); }
1974 // CHECK-LABEL: @vfmul_s(
1975 // CHECK-NEXT: entry:
1976 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfmul.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
1977 // CHECK-NEXT: ret <4 x float> [[TMP0]]
1979 v4f32 vfmul_s(v4f32 _1, v4f32 _2) { return __lsx_vfmul_s(_1, _2); }
1980 // CHECK-LABEL: @vfmul_d(
1981 // CHECK-NEXT: entry:
1982 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfmul.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
1983 // CHECK-NEXT: ret <2 x double> [[TMP0]]
1985 v2f64 vfmul_d(v2f64 _1, v2f64 _2) { return __lsx_vfmul_d(_1, _2); }
1986 // CHECK-LABEL: @vfdiv_s(
1987 // CHECK-NEXT: entry:
1988 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfdiv.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
1989 // CHECK-NEXT: ret <4 x float> [[TMP0]]
1991 v4f32 vfdiv_s(v4f32 _1, v4f32 _2) { return __lsx_vfdiv_s(_1, _2); }
1992 // CHECK-LABEL: @vfdiv_d(
1993 // CHECK-NEXT: entry:
1994 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfdiv.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
1995 // CHECK-NEXT: ret <2 x double> [[TMP0]]
1997 v2f64 vfdiv_d(v2f64 _1, v2f64 _2) { return __lsx_vfdiv_d(_1, _2); }
1998 // CHECK-LABEL: @vfcvt_h_s(
1999 // CHECK-NEXT: entry:
2000 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vfcvt.h.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
2001 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2003 v8i16 vfcvt_h_s(v4f32 _1, v4f32 _2) { return __lsx_vfcvt_h_s(_1, _2); }
2004 // CHECK-LABEL: @vfcvt_s_d(
2005 // CHECK-NEXT: entry:
2006 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfcvt.s.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2007 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2009 v4f32 vfcvt_s_d(v2f64 _1, v2f64 _2) { return __lsx_vfcvt_s_d(_1, _2); }
2010 // CHECK-LABEL: @vfmin_s(
2011 // CHECK-NEXT: entry:
2012 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfmin.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
2013 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2015 v4f32 vfmin_s(v4f32 _1, v4f32 _2) { return __lsx_vfmin_s(_1, _2); }
2016 // CHECK-LABEL: @vfmin_d(
2017 // CHECK-NEXT: entry:
2018 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfmin.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2019 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2021 v2f64 vfmin_d(v2f64 _1, v2f64 _2) { return __lsx_vfmin_d(_1, _2); }
2022 // CHECK-LABEL: @vfmina_s(
2023 // CHECK-NEXT: entry:
2024 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfmina.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
2025 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2027 v4f32 vfmina_s(v4f32 _1, v4f32 _2) { return __lsx_vfmina_s(_1, _2); }
2028 // CHECK-LABEL: @vfmina_d(
2029 // CHECK-NEXT: entry:
2030 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfmina.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2031 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2033 v2f64 vfmina_d(v2f64 _1, v2f64 _2) { return __lsx_vfmina_d(_1, _2); }
2034 // CHECK-LABEL: @vfmax_s(
2035 // CHECK-NEXT: entry:
2036 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfmax.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
2037 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2039 v4f32 vfmax_s(v4f32 _1, v4f32 _2) { return __lsx_vfmax_s(_1, _2); }
2040 // CHECK-LABEL: @vfmax_d(
2041 // CHECK-NEXT: entry:
2042 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfmax.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2043 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2045 v2f64 vfmax_d(v2f64 _1, v2f64 _2) { return __lsx_vfmax_d(_1, _2); }
2046 // CHECK-LABEL: @vfmaxa_s(
2047 // CHECK-NEXT: entry:
2048 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfmaxa.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
2049 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2051 v4f32 vfmaxa_s(v4f32 _1, v4f32 _2) { return __lsx_vfmaxa_s(_1, _2); }
2052 // CHECK-LABEL: @vfmaxa_d(
2053 // CHECK-NEXT: entry:
2054 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfmaxa.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2055 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2057 v2f64 vfmaxa_d(v2f64 _1, v2f64 _2) { return __lsx_vfmaxa_d(_1, _2); }
2058 // CHECK-LABEL: @vfclass_s(
2059 // CHECK-NEXT: entry:
2060 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfclass.s(<4 x float> [[_1:%.*]])
2061 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2063 v4i32 vfclass_s(v4f32 _1) { return __lsx_vfclass_s(_1); }
2064 // CHECK-LABEL: @vfclass_d(
2065 // CHECK-NEXT: entry:
2066 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfclass.d(<2 x double> [[_1:%.*]])
2067 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2069 v2i64 vfclass_d(v2f64 _1) { return __lsx_vfclass_d(_1); }
2070 // CHECK-LABEL: @vfsqrt_s(
2071 // CHECK-NEXT: entry:
2072 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfsqrt.s(<4 x float> [[_1:%.*]])
2073 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2075 v4f32 vfsqrt_s(v4f32 _1) { return __lsx_vfsqrt_s(_1); }
2076 // CHECK-LABEL: @vfsqrt_d(
2077 // CHECK-NEXT: entry:
2078 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfsqrt.d(<2 x double> [[_1:%.*]])
2079 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2081 v2f64 vfsqrt_d(v2f64 _1) { return __lsx_vfsqrt_d(_1); }
2082 // CHECK-LABEL: @vfrecip_s(
2083 // CHECK-NEXT: entry:
2084 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfrecip.s(<4 x float> [[_1:%.*]])
2085 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2087 v4f32 vfrecip_s(v4f32 _1) { return __lsx_vfrecip_s(_1); }
2088 // CHECK-LABEL: @vfrecip_d(
2089 // CHECK-NEXT: entry:
2090 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfrecip.d(<2 x double> [[_1:%.*]])
2091 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2093 v2f64 vfrecip_d(v2f64 _1) { return __lsx_vfrecip_d(_1); }
2094 // CHECK-LABEL: @vfrint_s(
2095 // CHECK-NEXT: entry:
2096 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfrint.s(<4 x float> [[_1:%.*]])
2097 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2099 v4f32 vfrint_s(v4f32 _1) { return __lsx_vfrint_s(_1); }
2100 // CHECK-LABEL: @vfrint_d(
2101 // CHECK-NEXT: entry:
2102 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfrint.d(<2 x double> [[_1:%.*]])
2103 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2105 v2f64 vfrint_d(v2f64 _1) { return __lsx_vfrint_d(_1); }
2106 // CHECK-LABEL: @vfrsqrt_s(
2107 // CHECK-NEXT: entry:
2108 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfrsqrt.s(<4 x float> [[_1:%.*]])
2109 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2111 v4f32 vfrsqrt_s(v4f32 _1) { return __lsx_vfrsqrt_s(_1); }
2112 // CHECK-LABEL: @vfrsqrt_d(
2113 // CHECK-NEXT: entry:
2114 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfrsqrt.d(<2 x double> [[_1:%.*]])
2115 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2117 v2f64 vfrsqrt_d(v2f64 _1) { return __lsx_vfrsqrt_d(_1); }
2118 // CHECK-LABEL: @vflogb_s(
2119 // CHECK-NEXT: entry:
2120 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vflogb.s(<4 x float> [[_1:%.*]])
2121 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2123 v4f32 vflogb_s(v4f32 _1) { return __lsx_vflogb_s(_1); }
2124 // CHECK-LABEL: @vflogb_d(
2125 // CHECK-NEXT: entry:
2126 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vflogb.d(<2 x double> [[_1:%.*]])
2127 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2129 v2f64 vflogb_d(v2f64 _1) { return __lsx_vflogb_d(_1); }
2130 // CHECK-LABEL: @vfcvth_s_h(
2131 // CHECK-NEXT: entry:
2132 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfcvth.s.h(<8 x i16> [[_1:%.*]])
2133 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2135 v4f32 vfcvth_s_h(v8i16 _1) { return __lsx_vfcvth_s_h(_1); }
2136 // CHECK-LABEL: @vfcvth_d_s(
2137 // CHECK-NEXT: entry:
2138 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfcvth.d.s(<4 x float> [[_1:%.*]])
2139 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2141 v2f64 vfcvth_d_s(v4f32 _1) { return __lsx_vfcvth_d_s(_1); }
2142 // CHECK-LABEL: @vfcvtl_s_h(
2143 // CHECK-NEXT: entry:
2144 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfcvtl.s.h(<8 x i16> [[_1:%.*]])
2145 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2147 v4f32 vfcvtl_s_h(v8i16 _1) { return __lsx_vfcvtl_s_h(_1); }
2148 // CHECK-LABEL: @vfcvtl_d_s(
2149 // CHECK-NEXT: entry:
2150 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfcvtl.d.s(<4 x float> [[_1:%.*]])
2151 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2153 v2f64 vfcvtl_d_s(v4f32 _1) { return __lsx_vfcvtl_d_s(_1); }
2154 // CHECK-LABEL: @vftint_w_s(
2155 // CHECK-NEXT: entry:
2156 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftint.w.s(<4 x float> [[_1:%.*]])
2157 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2159 v4i32 vftint_w_s(v4f32 _1) { return __lsx_vftint_w_s(_1); }
2160 // CHECK-LABEL: @vftint_l_d(
2161 // CHECK-NEXT: entry:
2162 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftint.l.d(<2 x double> [[_1:%.*]])
2163 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2165 v2i64 vftint_l_d(v2f64 _1) { return __lsx_vftint_l_d(_1); }
2166 // CHECK-LABEL: @vftint_wu_s(
2167 // CHECK-NEXT: entry:
2168 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftint.wu.s(<4 x float> [[_1:%.*]])
2169 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2171 v4u32 vftint_wu_s(v4f32 _1) { return __lsx_vftint_wu_s(_1); }
2172 // CHECK-LABEL: @vftint_lu_d(
2173 // CHECK-NEXT: entry:
2174 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftint.lu.d(<2 x double> [[_1:%.*]])
2175 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2177 v2u64 vftint_lu_d(v2f64 _1) { return __lsx_vftint_lu_d(_1); }
2178 // CHECK-LABEL: @vftintrz_w_s(
2179 // CHECK-NEXT: entry:
2180 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrz.w.s(<4 x float> [[_1:%.*]])
2181 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2183 v4i32 vftintrz_w_s(v4f32 _1) { return __lsx_vftintrz_w_s(_1); }
2184 // CHECK-LABEL: @vftintrz_l_d(
2185 // CHECK-NEXT: entry:
2186 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrz.l.d(<2 x double> [[_1:%.*]])
2187 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2189 v2i64 vftintrz_l_d(v2f64 _1) { return __lsx_vftintrz_l_d(_1); }
2190 // CHECK-LABEL: @vftintrz_wu_s(
2191 // CHECK-NEXT: entry:
2192 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrz.wu.s(<4 x float> [[_1:%.*]])
2193 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2195 v4u32 vftintrz_wu_s(v4f32 _1) { return __lsx_vftintrz_wu_s(_1); }
2196 // CHECK-LABEL: @vftintrz_lu_d(
2197 // CHECK-NEXT: entry:
2198 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrz.lu.d(<2 x double> [[_1:%.*]])
2199 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2201 v2u64 vftintrz_lu_d(v2f64 _1) { return __lsx_vftintrz_lu_d(_1); }
2202 // CHECK-LABEL: @vffint_s_w(
2203 // CHECK-NEXT: entry:
2204 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vffint.s.w(<4 x i32> [[_1:%.*]])
2205 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2207 v4f32 vffint_s_w(v4i32 _1) { return __lsx_vffint_s_w(_1); }
2208 // CHECK-LABEL: @vffint_d_l(
2209 // CHECK-NEXT: entry:
2210 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vffint.d.l(<2 x i64> [[_1:%.*]])
2211 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2213 v2f64 vffint_d_l(v2i64 _1) { return __lsx_vffint_d_l(_1); }
2214 // CHECK-LABEL: @vffint_s_wu(
2215 // CHECK-NEXT: entry:
2216 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vffint.s.wu(<4 x i32> [[_1:%.*]])
2217 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2219 v4f32 vffint_s_wu(v4u32 _1) { return __lsx_vffint_s_wu(_1); }
2220 // CHECK-LABEL: @vffint_d_lu(
2221 // CHECK-NEXT: entry:
2222 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vffint.d.lu(<2 x i64> [[_1:%.*]])
2223 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2225 v2f64 vffint_d_lu(v2u64 _1) { return __lsx_vffint_d_lu(_1); }
2226 // CHECK-LABEL: @vandn_v(
2227 // CHECK-NEXT: entry:
2228 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vandn.v(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2229 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2231 v16u8 vandn_v(v16u8 _1, v16u8 _2) { return __lsx_vandn_v(_1, _2); }
2232 // CHECK-LABEL: @vneg_b(
2233 // CHECK-NEXT: entry:
2234 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vneg.b(<16 x i8> [[_1:%.*]])
2235 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2237 v16i8 vneg_b(v16i8 _1) { return __lsx_vneg_b(_1); }
2238 // CHECK-LABEL: @vneg_h(
2239 // CHECK-NEXT: entry:
2240 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vneg.h(<8 x i16> [[_1:%.*]])
2241 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2243 v8i16 vneg_h(v8i16 _1) { return __lsx_vneg_h(_1); }
2244 // CHECK-LABEL: @vneg_w(
2245 // CHECK-NEXT: entry:
2246 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vneg.w(<4 x i32> [[_1:%.*]])
2247 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2249 v4i32 vneg_w(v4i32 _1) { return __lsx_vneg_w(_1); }
2250 // CHECK-LABEL: @vneg_d(
2251 // CHECK-NEXT: entry:
2252 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vneg.d(<2 x i64> [[_1:%.*]])
2253 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2255 v2i64 vneg_d(v2i64 _1) { return __lsx_vneg_d(_1); }
2256 // CHECK-LABEL: @vmuh_b(
2257 // CHECK-NEXT: entry:
2258 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmuh.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2259 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2261 v16i8 vmuh_b(v16i8 _1, v16i8 _2) { return __lsx_vmuh_b(_1, _2); }
2262 // CHECK-LABEL: @vmuh_h(
2263 // CHECK-NEXT: entry:
2264 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmuh.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2265 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2267 v8i16 vmuh_h(v8i16 _1, v8i16 _2) { return __lsx_vmuh_h(_1, _2); }
2268 // CHECK-LABEL: @vmuh_w(
2269 // CHECK-NEXT: entry:
2270 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmuh.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2271 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2273 v4i32 vmuh_w(v4i32 _1, v4i32 _2) { return __lsx_vmuh_w(_1, _2); }
2274 // CHECK-LABEL: @vmuh_d(
2275 // CHECK-NEXT: entry:
2276 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmuh.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2277 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2279 v2i64 vmuh_d(v2i64 _1, v2i64 _2) { return __lsx_vmuh_d(_1, _2); }
2280 // CHECK-LABEL: @vmuh_bu(
2281 // CHECK-NEXT: entry:
2282 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmuh.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2283 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2285 v16u8 vmuh_bu(v16u8 _1, v16u8 _2) { return __lsx_vmuh_bu(_1, _2); }
2286 // CHECK-LABEL: @vmuh_hu(
2287 // CHECK-NEXT: entry:
2288 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmuh.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2289 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2291 v8u16 vmuh_hu(v8u16 _1, v8u16 _2) { return __lsx_vmuh_hu(_1, _2); }
2292 // CHECK-LABEL: @vmuh_wu(
2293 // CHECK-NEXT: entry:
2294 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmuh.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2295 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2297 v4u32 vmuh_wu(v4u32 _1, v4u32 _2) { return __lsx_vmuh_wu(_1, _2); }
2298 // CHECK-LABEL: @vmuh_du(
2299 // CHECK-NEXT: entry:
2300 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmuh.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2301 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2303 v2u64 vmuh_du(v2u64 _1, v2u64 _2) { return __lsx_vmuh_du(_1, _2); }
2304 // CHECK-LABEL: @vsllwil_h_b(
2305 // CHECK-NEXT: entry:
2306 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsllwil.h.b(<16 x i8> [[_1:%.*]], i32 1)
2307 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2309 v8i16 vsllwil_h_b(v16i8 _1) { return __lsx_vsllwil_h_b(_1, 1); }
2310 // CHECK-LABEL: @vsllwil_w_h(
2311 // CHECK-NEXT: entry:
2312 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsllwil.w.h(<8 x i16> [[_1:%.*]], i32 1)
2313 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2315 v4i32 vsllwil_w_h(v8i16 _1) { return __lsx_vsllwil_w_h(_1, 1); }
2316 // CHECK-LABEL: @vsllwil_d_w(
2317 // CHECK-NEXT: entry:
2318 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsllwil.d.w(<4 x i32> [[_1:%.*]], i32 1)
2319 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2321 v2i64 vsllwil_d_w(v4i32 _1) { return __lsx_vsllwil_d_w(_1, 1); }
2322 // CHECK-LABEL: @vsllwil_hu_bu(
2323 // CHECK-NEXT: entry:
2324 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsllwil.hu.bu(<16 x i8> [[_1:%.*]], i32 1)
2325 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2327 v8u16 vsllwil_hu_bu(v16u8 _1) { return __lsx_vsllwil_hu_bu(_1, 1); }
2328 // CHECK-LABEL: @vsllwil_wu_hu(
2329 // CHECK-NEXT: entry:
2330 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsllwil.wu.hu(<8 x i16> [[_1:%.*]], i32 1)
2331 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2333 v4u32 vsllwil_wu_hu(v8u16 _1) { return __lsx_vsllwil_wu_hu(_1, 1); }
2334 // CHECK-LABEL: @vsllwil_du_wu(
2335 // CHECK-NEXT: entry:
2336 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsllwil.du.wu(<4 x i32> [[_1:%.*]], i32 1)
2337 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2339 v2u64 vsllwil_du_wu(v4u32 _1) { return __lsx_vsllwil_du_wu(_1, 1); }
2340 // CHECK-LABEL: @vsran_b_h(
2341 // CHECK-NEXT: entry:
2342 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsran.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2343 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2345 v16i8 vsran_b_h(v8i16 _1, v8i16 _2) { return __lsx_vsran_b_h(_1, _2); }
2346 // CHECK-LABEL: @vsran_h_w(
2347 // CHECK-NEXT: entry:
2348 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsran.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2349 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2351 v8i16 vsran_h_w(v4i32 _1, v4i32 _2) { return __lsx_vsran_h_w(_1, _2); }
2352 // CHECK-LABEL: @vsran_w_d(
2353 // CHECK-NEXT: entry:
2354 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsran.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2355 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2357 v4i32 vsran_w_d(v2i64 _1, v2i64 _2) { return __lsx_vsran_w_d(_1, _2); }
2358 // CHECK-LABEL: @vssran_b_h(
2359 // CHECK-NEXT: entry:
2360 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssran.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2361 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2363 v16i8 vssran_b_h(v8i16 _1, v8i16 _2) { return __lsx_vssran_b_h(_1, _2); }
2364 // CHECK-LABEL: @vssran_h_w(
2365 // CHECK-NEXT: entry:
2366 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssran.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2367 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2369 v8i16 vssran_h_w(v4i32 _1, v4i32 _2) { return __lsx_vssran_h_w(_1, _2); }
2370 // CHECK-LABEL: @vssran_w_d(
2371 // CHECK-NEXT: entry:
2372 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssran.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2373 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2375 v4i32 vssran_w_d(v2i64 _1, v2i64 _2) { return __lsx_vssran_w_d(_1, _2); }
2376 // CHECK-LABEL: @vssran_bu_h(
2377 // CHECK-NEXT: entry:
2378 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssran.bu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2379 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2381 v16u8 vssran_bu_h(v8u16 _1, v8u16 _2) { return __lsx_vssran_bu_h(_1, _2); }
2382 // CHECK-LABEL: @vssran_hu_w(
2383 // CHECK-NEXT: entry:
2384 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssran.hu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2385 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2387 v8u16 vssran_hu_w(v4u32 _1, v4u32 _2) { return __lsx_vssran_hu_w(_1, _2); }
2388 // CHECK-LABEL: @vssran_wu_d(
2389 // CHECK-NEXT: entry:
2390 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssran.wu.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2391 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2393 v4u32 vssran_wu_d(v2u64 _1, v2u64 _2) { return __lsx_vssran_wu_d(_1, _2); }
2394 // CHECK-LABEL: @vsrarn_b_h(
2395 // CHECK-NEXT: entry:
2396 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrarn.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2397 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2399 v16i8 vsrarn_b_h(v8i16 _1, v8i16 _2) { return __lsx_vsrarn_b_h(_1, _2); }
2400 // CHECK-LABEL: @vsrarn_h_w(
2401 // CHECK-NEXT: entry:
2402 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrarn.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2403 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2405 v8i16 vsrarn_h_w(v4i32 _1, v4i32 _2) { return __lsx_vsrarn_h_w(_1, _2); }
2406 // CHECK-LABEL: @vsrarn_w_d(
2407 // CHECK-NEXT: entry:
2408 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrarn.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2409 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2411 v4i32 vsrarn_w_d(v2i64 _1, v2i64 _2) { return __lsx_vsrarn_w_d(_1, _2); }
2412 // CHECK-LABEL: @vssrarn_b_h(
2413 // CHECK-NEXT: entry:
2414 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrarn.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2415 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2417 v16i8 vssrarn_b_h(v8i16 _1, v8i16 _2) { return __lsx_vssrarn_b_h(_1, _2); }
2418 // CHECK-LABEL: @vssrarn_h_w(
2419 // CHECK-NEXT: entry:
2420 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrarn.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2421 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2423 v8i16 vssrarn_h_w(v4i32 _1, v4i32 _2) { return __lsx_vssrarn_h_w(_1, _2); }
2424 // CHECK-LABEL: @vssrarn_w_d(
2425 // CHECK-NEXT: entry:
2426 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrarn.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2427 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2429 v4i32 vssrarn_w_d(v2i64 _1, v2i64 _2) { return __lsx_vssrarn_w_d(_1, _2); }
2430 // CHECK-LABEL: @vssrarn_bu_h(
2431 // CHECK-NEXT: entry:
2432 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrarn.bu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2433 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2435 v16u8 vssrarn_bu_h(v8u16 _1, v8u16 _2) { return __lsx_vssrarn_bu_h(_1, _2); }
2436 // CHECK-LABEL: @vssrarn_hu_w(
2437 // CHECK-NEXT: entry:
2438 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrarn.hu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2439 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2441 v8u16 vssrarn_hu_w(v4u32 _1, v4u32 _2) { return __lsx_vssrarn_hu_w(_1, _2); }
2442 // CHECK-LABEL: @vssrarn_wu_d(
2443 // CHECK-NEXT: entry:
2444 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrarn.wu.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2445 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2447 v4u32 vssrarn_wu_d(v2u64 _1, v2u64 _2) { return __lsx_vssrarn_wu_d(_1, _2); }
2448 // CHECK-LABEL: @vsrln_b_h(
2449 // CHECK-NEXT: entry:
2450 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrln.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2451 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2453 v16i8 vsrln_b_h(v8i16 _1, v8i16 _2) { return __lsx_vsrln_b_h(_1, _2); }
2454 // CHECK-LABEL: @vsrln_h_w(
2455 // CHECK-NEXT: entry:
2456 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrln.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2457 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2459 v8i16 vsrln_h_w(v4i32 _1, v4i32 _2) { return __lsx_vsrln_h_w(_1, _2); }
2460 // CHECK-LABEL: @vsrln_w_d(
2461 // CHECK-NEXT: entry:
2462 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrln.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2463 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2465 v4i32 vsrln_w_d(v2i64 _1, v2i64 _2) { return __lsx_vsrln_w_d(_1, _2); }
2466 // CHECK-LABEL: @vssrln_bu_h(
2467 // CHECK-NEXT: entry:
2468 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrln.bu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2469 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2471 v16u8 vssrln_bu_h(v8u16 _1, v8u16 _2) { return __lsx_vssrln_bu_h(_1, _2); }
2472 // CHECK-LABEL: @vssrln_hu_w(
2473 // CHECK-NEXT: entry:
2474 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrln.hu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2475 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2477 v8u16 vssrln_hu_w(v4u32 _1, v4u32 _2) { return __lsx_vssrln_hu_w(_1, _2); }
2478 // CHECK-LABEL: @vssrln_wu_d(
2479 // CHECK-NEXT: entry:
2480 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrln.wu.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2481 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2483 v4u32 vssrln_wu_d(v2u64 _1, v2u64 _2) { return __lsx_vssrln_wu_d(_1, _2); }
2484 // CHECK-LABEL: @vsrlrn_b_h(
2485 // CHECK-NEXT: entry:
2486 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrlrn.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2487 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2489 v16i8 vsrlrn_b_h(v8i16 _1, v8i16 _2) { return __lsx_vsrlrn_b_h(_1, _2); }
2490 // CHECK-LABEL: @vsrlrn_h_w(
2491 // CHECK-NEXT: entry:
2492 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrlrn.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2493 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2495 v8i16 vsrlrn_h_w(v4i32 _1, v4i32 _2) { return __lsx_vsrlrn_h_w(_1, _2); }
2496 // CHECK-LABEL: @vsrlrn_w_d(
2497 // CHECK-NEXT: entry:
2498 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrlrn.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2499 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2501 v4i32 vsrlrn_w_d(v2i64 _1, v2i64 _2) { return __lsx_vsrlrn_w_d(_1, _2); }
2502 // CHECK-LABEL: @vssrlrn_bu_h(
2503 // CHECK-NEXT: entry:
2504 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrlrn.bu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2505 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2507 v16u8 vssrlrn_bu_h(v8u16 _1, v8u16 _2) { return __lsx_vssrlrn_bu_h(_1, _2); }
2508 // CHECK-LABEL: @vssrlrn_hu_w(
2509 // CHECK-NEXT: entry:
2510 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrlrn.hu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2511 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2513 v8u16 vssrlrn_hu_w(v4u32 _1, v4u32 _2) { return __lsx_vssrlrn_hu_w(_1, _2); }
2514 // CHECK-LABEL: @vssrlrn_wu_d(
2515 // CHECK-NEXT: entry:
2516 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrlrn.wu.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2517 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2519 v4u32 vssrlrn_wu_d(v2u64 _1, v2u64 _2) { return __lsx_vssrlrn_wu_d(_1, _2); }
2520 // CHECK-LABEL: @vfrstpi_b(
2521 // CHECK-NEXT: entry:
2522 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vfrstpi.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
2523 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2525 v16i8 vfrstpi_b(v16i8 _1, v16i8 _2) { return __lsx_vfrstpi_b(_1, _2, 1); }
2526 // CHECK-LABEL: @vfrstpi_h(
2527 // CHECK-NEXT: entry:
2528 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vfrstpi.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
2529 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2531 v8i16 vfrstpi_h(v8i16 _1, v8i16 _2) { return __lsx_vfrstpi_h(_1, _2, 1); }
2532 // CHECK-LABEL: @vfrstp_b(
2533 // CHECK-NEXT: entry:
2534 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vfrstp.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
2535 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2537 v16i8 vfrstp_b(v16i8 _1, v16i8 _2, v16i8 _3) {
2538 return __lsx_vfrstp_b(_1, _2, _3);
2540 // CHECK-LABEL: @vfrstp_h(
2541 // CHECK-NEXT: entry:
2542 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vfrstp.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
2543 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2545 v8i16 vfrstp_h(v8i16 _1, v8i16 _2, v8i16 _3) {
2546 return __lsx_vfrstp_h(_1, _2, _3);
2548 // CHECK-LABEL: @vshuf4i_d(
2549 // CHECK-NEXT: entry:
2550 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vshuf4i.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
2551 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2553 v2i64 vshuf4i_d(v2i64 _1, v2i64 _2) { return __lsx_vshuf4i_d(_1, _2, 1); }
2554 // CHECK-LABEL: @vbsrl_v(
2555 // CHECK-NEXT: entry:
2556 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbsrl.v(<16 x i8> [[_1:%.*]], i32 1)
2557 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2559 v16i8 vbsrl_v(v16i8 _1) { return __lsx_vbsrl_v(_1, 1); }
2560 // CHECK-LABEL: @vbsll_v(
2561 // CHECK-NEXT: entry:
2562 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vbsll.v(<16 x i8> [[_1:%.*]], i32 1)
2563 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2565 v16i8 vbsll_v(v16i8 _1) { return __lsx_vbsll_v(_1, 1); }
2566 // CHECK-LABEL: @vextrins_b(
2567 // CHECK-NEXT: entry:
2568 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vextrins.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
2569 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2571 v16i8 vextrins_b(v16i8 _1, v16i8 _2) { return __lsx_vextrins_b(_1, _2, 1); }
2572 // CHECK-LABEL: @vextrins_h(
2573 // CHECK-NEXT: entry:
2574 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vextrins.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
2575 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2577 v8i16 vextrins_h(v8i16 _1, v8i16 _2) { return __lsx_vextrins_h(_1, _2, 1); }
2578 // CHECK-LABEL: @vextrins_w(
2579 // CHECK-NEXT: entry:
2580 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vextrins.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
2581 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2583 v4i32 vextrins_w(v4i32 _1, v4i32 _2) { return __lsx_vextrins_w(_1, _2, 1); }
2584 // CHECK-LABEL: @vextrins_d(
2585 // CHECK-NEXT: entry:
2586 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vextrins.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
2587 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2589 v2i64 vextrins_d(v2i64 _1, v2i64 _2) { return __lsx_vextrins_d(_1, _2, 1); }
2590 // CHECK-LABEL: @vmskltz_b(
2591 // CHECK-NEXT: entry:
2592 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmskltz.b(<16 x i8> [[_1:%.*]])
2593 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2595 v16i8 vmskltz_b(v16i8 _1) { return __lsx_vmskltz_b(_1); }
2596 // CHECK-LABEL: @vmskltz_h(
2597 // CHECK-NEXT: entry:
2598 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmskltz.h(<8 x i16> [[_1:%.*]])
2599 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2601 v8i16 vmskltz_h(v8i16 _1) { return __lsx_vmskltz_h(_1); }
2602 // CHECK-LABEL: @vmskltz_w(
2603 // CHECK-NEXT: entry:
2604 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmskltz.w(<4 x i32> [[_1:%.*]])
2605 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2607 v4i32 vmskltz_w(v4i32 _1) { return __lsx_vmskltz_w(_1); }
2608 // CHECK-LABEL: @vmskltz_d(
2609 // CHECK-NEXT: entry:
2610 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmskltz.d(<2 x i64> [[_1:%.*]])
2611 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2613 v2i64 vmskltz_d(v2i64 _1) { return __lsx_vmskltz_d(_1); }
2614 // CHECK-LABEL: @vsigncov_b(
2615 // CHECK-NEXT: entry:
2616 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsigncov.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2617 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
2619 v16i8 vsigncov_b(v16i8 _1, v16i8 _2) { return __lsx_vsigncov_b(_1, _2); }
2620 // CHECK-LABEL: @vsigncov_h(
2621 // CHECK-NEXT: entry:
2622 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsigncov.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2623 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2625 v8i16 vsigncov_h(v8i16 _1, v8i16 _2) { return __lsx_vsigncov_h(_1, _2); }
2626 // CHECK-LABEL: @vsigncov_w(
2627 // CHECK-NEXT: entry:
2628 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsigncov.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2629 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2631 v4i32 vsigncov_w(v4i32 _1, v4i32 _2) { return __lsx_vsigncov_w(_1, _2); }
2632 // CHECK-LABEL: @vsigncov_d(
2633 // CHECK-NEXT: entry:
2634 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsigncov.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2635 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2637 v2i64 vsigncov_d(v2i64 _1, v2i64 _2) { return __lsx_vsigncov_d(_1, _2); }
2638 // CHECK-LABEL: @vfmadd_s(
2639 // CHECK-NEXT: entry:
2640 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfmadd.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]], <4 x float> [[_3:%.*]])
2641 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2643 v4f32 vfmadd_s(v4f32 _1, v4f32 _2, v4f32 _3) {
2644 return __lsx_vfmadd_s(_1, _2, _3);
2646 // CHECK-LABEL: @vfmadd_d(
2647 // CHECK-NEXT: entry:
2648 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfmadd.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]], <2 x double> [[_3:%.*]])
2649 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2651 v2f64 vfmadd_d(v2f64 _1, v2f64 _2, v2f64 _3) {
2652 return __lsx_vfmadd_d(_1, _2, _3);
2654 // CHECK-LABEL: @vfmsub_s(
2655 // CHECK-NEXT: entry:
2656 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfmsub.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]], <4 x float> [[_3:%.*]])
2657 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2659 v4f32 vfmsub_s(v4f32 _1, v4f32 _2, v4f32 _3) {
2660 return __lsx_vfmsub_s(_1, _2, _3);
2662 // CHECK-LABEL: @vfmsub_d(
2663 // CHECK-NEXT: entry:
2664 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfmsub.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]], <2 x double> [[_3:%.*]])
2665 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2667 v2f64 vfmsub_d(v2f64 _1, v2f64 _2, v2f64 _3) {
2668 return __lsx_vfmsub_d(_1, _2, _3);
2670 // CHECK-LABEL: @vfnmadd_s(
2671 // CHECK-NEXT: entry:
2672 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfnmadd.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]], <4 x float> [[_3:%.*]])
2673 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2675 v4f32 vfnmadd_s(v4f32 _1, v4f32 _2, v4f32 _3) {
2676 return __lsx_vfnmadd_s(_1, _2, _3);
2678 // CHECK-LABEL: @vfnmadd_d(
2679 // CHECK-NEXT: entry:
2680 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfnmadd.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]], <2 x double> [[_3:%.*]])
2681 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2683 v2f64 vfnmadd_d(v2f64 _1, v2f64 _2, v2f64 _3) {
2684 return __lsx_vfnmadd_d(_1, _2, _3);
2686 // CHECK-LABEL: @vfnmsub_s(
2687 // CHECK-NEXT: entry:
2688 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfnmsub.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]], <4 x float> [[_3:%.*]])
2689 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2691 v4f32 vfnmsub_s(v4f32 _1, v4f32 _2, v4f32 _3) {
2692 return __lsx_vfnmsub_s(_1, _2, _3);
2694 // CHECK-LABEL: @vfnmsub_d(
2695 // CHECK-NEXT: entry:
2696 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfnmsub.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]], <2 x double> [[_3:%.*]])
2697 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2699 v2f64 vfnmsub_d(v2f64 _1, v2f64 _2, v2f64 _3) {
2700 return __lsx_vfnmsub_d(_1, _2, _3);
2702 // CHECK-LABEL: @vftintrne_w_s(
2703 // CHECK-NEXT: entry:
2704 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrne.w.s(<4 x float> [[_1:%.*]])
2705 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2707 v4i32 vftintrne_w_s(v4f32 _1) { return __lsx_vftintrne_w_s(_1); }
2708 // CHECK-LABEL: @vftintrne_l_d(
2709 // CHECK-NEXT: entry:
2710 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrne.l.d(<2 x double> [[_1:%.*]])
2711 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2713 v2i64 vftintrne_l_d(v2f64 _1) { return __lsx_vftintrne_l_d(_1); }
2714 // CHECK-LABEL: @vftintrp_w_s(
2715 // CHECK-NEXT: entry:
2716 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrp.w.s(<4 x float> [[_1:%.*]])
2717 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2719 v4i32 vftintrp_w_s(v4f32 _1) { return __lsx_vftintrp_w_s(_1); }
2720 // CHECK-LABEL: @vftintrp_l_d(
2721 // CHECK-NEXT: entry:
2722 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrp.l.d(<2 x double> [[_1:%.*]])
2723 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2725 v2i64 vftintrp_l_d(v2f64 _1) { return __lsx_vftintrp_l_d(_1); }
2726 // CHECK-LABEL: @vftintrm_w_s(
2727 // CHECK-NEXT: entry:
2728 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrm.w.s(<4 x float> [[_1:%.*]])
2729 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2731 v4i32 vftintrm_w_s(v4f32 _1) { return __lsx_vftintrm_w_s(_1); }
2732 // CHECK-LABEL: @vftintrm_l_d(
2733 // CHECK-NEXT: entry:
2734 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrm.l.d(<2 x double> [[_1:%.*]])
2735 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2737 v2i64 vftintrm_l_d(v2f64 _1) { return __lsx_vftintrm_l_d(_1); }
2738 // CHECK-LABEL: @vftint_w_d(
2739 // CHECK-NEXT: entry:
2740 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftint.w.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2741 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2743 v4i32 vftint_w_d(v2f64 _1, v2f64 _2) { return __lsx_vftint_w_d(_1, _2); }
2744 // CHECK-LABEL: @vffint_s_l(
2745 // CHECK-NEXT: entry:
2746 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vffint.s.l(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
2747 // CHECK-NEXT: ret <4 x float> [[TMP0]]
2749 v4f32 vffint_s_l(v2i64 _1, v2i64 _2) { return __lsx_vffint_s_l(_1, _2); }
2750 // CHECK-LABEL: @vftintrz_w_d(
2751 // CHECK-NEXT: entry:
2752 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrz.w.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2753 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2755 v4i32 vftintrz_w_d(v2f64 _1, v2f64 _2) { return __lsx_vftintrz_w_d(_1, _2); }
2756 // CHECK-LABEL: @vftintrp_w_d(
2757 // CHECK-NEXT: entry:
2758 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrp.w.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2759 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2761 v4i32 vftintrp_w_d(v2f64 _1, v2f64 _2) { return __lsx_vftintrp_w_d(_1, _2); }
2762 // CHECK-LABEL: @vftintrm_w_d(
2763 // CHECK-NEXT: entry:
2764 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrm.w.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2765 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2767 v4i32 vftintrm_w_d(v2f64 _1, v2f64 _2) { return __lsx_vftintrm_w_d(_1, _2); }
2768 // CHECK-LABEL: @vftintrne_w_d(
2769 // CHECK-NEXT: entry:
2770 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vftintrne.w.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
2771 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2773 v4i32 vftintrne_w_d(v2f64 _1, v2f64 _2) { return __lsx_vftintrne_w_d(_1, _2); }
2774 // CHECK-LABEL: @vftintl_l_s(
2775 // CHECK-NEXT: entry:
2776 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintl.l.s(<4 x float> [[_1:%.*]])
2777 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2779 v2i64 vftintl_l_s(v4f32 _1) { return __lsx_vftintl_l_s(_1); }
2780 // CHECK-LABEL: @vftinth_l_s(
2781 // CHECK-NEXT: entry:
2782 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftinth.l.s(<4 x float> [[_1:%.*]])
2783 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2785 v2i64 vftinth_l_s(v4f32 _1) { return __lsx_vftinth_l_s(_1); }
2786 // CHECK-LABEL: @vffinth_d_w(
2787 // CHECK-NEXT: entry:
2788 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vffinth.d.w(<4 x i32> [[_1:%.*]])
2789 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2791 v2f64 vffinth_d_w(v4i32 _1) { return __lsx_vffinth_d_w(_1); }
2792 // CHECK-LABEL: @vffintl_d_w(
2793 // CHECK-NEXT: entry:
2794 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vffintl.d.w(<4 x i32> [[_1:%.*]])
2795 // CHECK-NEXT: ret <2 x double> [[TMP0]]
2797 v2f64 vffintl_d_w(v4i32 _1) { return __lsx_vffintl_d_w(_1); }
2798 // CHECK-LABEL: @vftintrzl_l_s(
2799 // CHECK-NEXT: entry:
2800 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrzl.l.s(<4 x float> [[_1:%.*]])
2801 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2803 v2i64 vftintrzl_l_s(v4f32 _1) { return __lsx_vftintrzl_l_s(_1); }
2804 // CHECK-LABEL: @vftintrzh_l_s(
2805 // CHECK-NEXT: entry:
2806 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrzh.l.s(<4 x float> [[_1:%.*]])
2807 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2809 v2i64 vftintrzh_l_s(v4f32 _1) { return __lsx_vftintrzh_l_s(_1); }
2810 // CHECK-LABEL: @vftintrpl_l_s(
2811 // CHECK-NEXT: entry:
2812 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrpl.l.s(<4 x float> [[_1:%.*]])
2813 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2815 v2i64 vftintrpl_l_s(v4f32 _1) { return __lsx_vftintrpl_l_s(_1); }
2816 // CHECK-LABEL: @vftintrph_l_s(
2817 // CHECK-NEXT: entry:
2818 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrph.l.s(<4 x float> [[_1:%.*]])
2819 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2821 v2i64 vftintrph_l_s(v4f32 _1) { return __lsx_vftintrph_l_s(_1); }
2822 // CHECK-LABEL: @vftintrml_l_s(
2823 // CHECK-NEXT: entry:
2824 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrml.l.s(<4 x float> [[_1:%.*]])
2825 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2827 v2i64 vftintrml_l_s(v4f32 _1) { return __lsx_vftintrml_l_s(_1); }
2828 // CHECK-LABEL: @vftintrmh_l_s(
2829 // CHECK-NEXT: entry:
2830 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrmh.l.s(<4 x float> [[_1:%.*]])
2831 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2833 v2i64 vftintrmh_l_s(v4f32 _1) { return __lsx_vftintrmh_l_s(_1); }
2834 // CHECK-LABEL: @vftintrnel_l_s(
2835 // CHECK-NEXT: entry:
2836 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrnel.l.s(<4 x float> [[_1:%.*]])
2837 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2839 v2i64 vftintrnel_l_s(v4f32 _1) { return __lsx_vftintrnel_l_s(_1); }
2840 // CHECK-LABEL: @vftintrneh_l_s(
2841 // CHECK-NEXT: entry:
2842 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vftintrneh.l.s(<4 x float> [[_1:%.*]])
2843 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2845 v2i64 vftintrneh_l_s(v4f32 _1) { return __lsx_vftintrneh_l_s(_1); }
2846 // CHECK-LABEL: @vfrintrne_s(
2847 // CHECK-NEXT: entry:
2848 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfrintrne.s(<4 x float> [[_1:%.*]])
2849 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x float> [[TMP0]] to <4 x i32>
2850 // CHECK-NEXT: ret <4 x i32> [[TMP1]]
2852 v4i32 vfrintrne_s(v4f32 _1) { return __lsx_vfrintrne_s(_1); }
2853 // CHECK-LABEL: @vfrintrne_d(
2854 // CHECK-NEXT: entry:
2855 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfrintrne.d(<2 x double> [[_1:%.*]])
2856 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <2 x double> [[TMP0]] to <2 x i64>
2857 // CHECK-NEXT: ret <2 x i64> [[TMP1]]
2859 v2i64 vfrintrne_d(v2f64 _1) { return __lsx_vfrintrne_d(_1); }
2860 // CHECK-LABEL: @vfrintrz_s(
2861 // CHECK-NEXT: entry:
2862 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfrintrz.s(<4 x float> [[_1:%.*]])
2863 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x float> [[TMP0]] to <4 x i32>
2864 // CHECK-NEXT: ret <4 x i32> [[TMP1]]
2866 v4i32 vfrintrz_s(v4f32 _1) { return __lsx_vfrintrz_s(_1); }
2867 // CHECK-LABEL: @vfrintrz_d(
2868 // CHECK-NEXT: entry:
2869 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfrintrz.d(<2 x double> [[_1:%.*]])
2870 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <2 x double> [[TMP0]] to <2 x i64>
2871 // CHECK-NEXT: ret <2 x i64> [[TMP1]]
2873 v2i64 vfrintrz_d(v2f64 _1) { return __lsx_vfrintrz_d(_1); }
2874 // CHECK-LABEL: @vfrintrp_s(
2875 // CHECK-NEXT: entry:
2876 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfrintrp.s(<4 x float> [[_1:%.*]])
2877 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x float> [[TMP0]] to <4 x i32>
2878 // CHECK-NEXT: ret <4 x i32> [[TMP1]]
2880 v4i32 vfrintrp_s(v4f32 _1) { return __lsx_vfrintrp_s(_1); }
2881 // CHECK-LABEL: @vfrintrp_d(
2882 // CHECK-NEXT: entry:
2883 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfrintrp.d(<2 x double> [[_1:%.*]])
2884 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <2 x double> [[TMP0]] to <2 x i64>
2885 // CHECK-NEXT: ret <2 x i64> [[TMP1]]
2887 v2i64 vfrintrp_d(v2f64 _1) { return __lsx_vfrintrp_d(_1); }
2888 // CHECK-LABEL: @vfrintrm_s(
2889 // CHECK-NEXT: entry:
2890 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x float> @llvm.loongarch.lsx.vfrintrm.s(<4 x float> [[_1:%.*]])
2891 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x float> [[TMP0]] to <4 x i32>
2892 // CHECK-NEXT: ret <4 x i32> [[TMP1]]
2894 v4i32 vfrintrm_s(v4f32 _1) { return __lsx_vfrintrm_s(_1); }
2895 // CHECK-LABEL: @vfrintrm_d(
2896 // CHECK-NEXT: entry:
2897 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x double> @llvm.loongarch.lsx.vfrintrm.d(<2 x double> [[_1:%.*]])
2898 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <2 x double> [[TMP0]] to <2 x i64>
2899 // CHECK-NEXT: ret <2 x i64> [[TMP1]]
2901 v2i64 vfrintrm_d(v2f64 _1) { return __lsx_vfrintrm_d(_1); }
2902 // CHECK-LABEL: @vstelm_b(
2903 // CHECK-NEXT: entry:
2904 // CHECK-NEXT: tail call void @llvm.loongarch.lsx.vstelm.b(<16 x i8> [[_1:%.*]], ptr [[_2:%.*]], i32 1, i32 1)
2905 // CHECK-NEXT: ret void
2907 void vstelm_b(v16i8 _1, void *_2) { return __lsx_vstelm_b(_1, _2, 1, 1); }
2908 // CHECK-LABEL: @vstelm_h(
2909 // CHECK-NEXT: entry:
2910 // CHECK-NEXT: tail call void @llvm.loongarch.lsx.vstelm.h(<8 x i16> [[_1:%.*]], ptr [[_2:%.*]], i32 2, i32 1)
2911 // CHECK-NEXT: ret void
2913 void vstelm_h(v8i16 _1, void *_2) { return __lsx_vstelm_h(_1, _2, 2, 1); }
2914 // CHECK-LABEL: @vstelm_w(
2915 // CHECK-NEXT: entry:
2916 // CHECK-NEXT: tail call void @llvm.loongarch.lsx.vstelm.w(<4 x i32> [[_1:%.*]], ptr [[_2:%.*]], i32 4, i32 1)
2917 // CHECK-NEXT: ret void
2919 void vstelm_w(v4i32 _1, void *_2) { return __lsx_vstelm_w(_1, _2, 4, 1); }
2920 // CHECK-LABEL: @vstelm_d(
2921 // CHECK-NEXT: entry:
2922 // CHECK-NEXT: tail call void @llvm.loongarch.lsx.vstelm.d(<2 x i64> [[_1:%.*]], ptr [[_2:%.*]], i32 8, i32 1)
2923 // CHECK-NEXT: ret void
2925 void vstelm_d(v2i64 _1, void *_2) { return __lsx_vstelm_d(_1, _2, 8, 1); }
2926 // CHECK-LABEL: @vaddwev_d_w(
2927 // CHECK-NEXT: entry:
2928 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwev.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2929 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2931 v2i64 vaddwev_d_w(v4i32 _1, v4i32 _2) { return __lsx_vaddwev_d_w(_1, _2); }
2932 // CHECK-LABEL: @vaddwev_w_h(
2933 // CHECK-NEXT: entry:
2934 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vaddwev.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2935 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2937 v4i32 vaddwev_w_h(v8i16 _1, v8i16 _2) { return __lsx_vaddwev_w_h(_1, _2); }
2938 // CHECK-LABEL: @vaddwev_h_b(
2939 // CHECK-NEXT: entry:
2940 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vaddwev.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2941 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2943 v8i16 vaddwev_h_b(v16i8 _1, v16i8 _2) { return __lsx_vaddwev_h_b(_1, _2); }
2944 // CHECK-LABEL: @vaddwod_d_w(
2945 // CHECK-NEXT: entry:
2946 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwod.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2947 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2949 v2i64 vaddwod_d_w(v4i32 _1, v4i32 _2) { return __lsx_vaddwod_d_w(_1, _2); }
2950 // CHECK-LABEL: @vaddwod_w_h(
2951 // CHECK-NEXT: entry:
2952 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vaddwod.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2953 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2955 v4i32 vaddwod_w_h(v8i16 _1, v8i16 _2) { return __lsx_vaddwod_w_h(_1, _2); }
2956 // CHECK-LABEL: @vaddwod_h_b(
2957 // CHECK-NEXT: entry:
2958 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vaddwod.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2959 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2961 v8i16 vaddwod_h_b(v16i8 _1, v16i8 _2) { return __lsx_vaddwod_h_b(_1, _2); }
2962 // CHECK-LABEL: @vaddwev_d_wu(
2963 // CHECK-NEXT: entry:
2964 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwev.d.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2965 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2967 v2i64 vaddwev_d_wu(v4u32 _1, v4u32 _2) { return __lsx_vaddwev_d_wu(_1, _2); }
2968 // CHECK-LABEL: @vaddwev_w_hu(
2969 // CHECK-NEXT: entry:
2970 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vaddwev.w.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2971 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2973 v4i32 vaddwev_w_hu(v8u16 _1, v8u16 _2) { return __lsx_vaddwev_w_hu(_1, _2); }
2974 // CHECK-LABEL: @vaddwev_h_bu(
2975 // CHECK-NEXT: entry:
2976 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vaddwev.h.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2977 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2979 v8i16 vaddwev_h_bu(v16u8 _1, v16u8 _2) { return __lsx_vaddwev_h_bu(_1, _2); }
2980 // CHECK-LABEL: @vaddwod_d_wu(
2981 // CHECK-NEXT: entry:
2982 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwod.d.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
2983 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
2985 v2i64 vaddwod_d_wu(v4u32 _1, v4u32 _2) { return __lsx_vaddwod_d_wu(_1, _2); }
2986 // CHECK-LABEL: @vaddwod_w_hu(
2987 // CHECK-NEXT: entry:
2988 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vaddwod.w.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
2989 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
2991 v4i32 vaddwod_w_hu(v8u16 _1, v8u16 _2) { return __lsx_vaddwod_w_hu(_1, _2); }
2992 // CHECK-LABEL: @vaddwod_h_bu(
2993 // CHECK-NEXT: entry:
2994 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vaddwod.h.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
2995 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
2997 v8i16 vaddwod_h_bu(v16u8 _1, v16u8 _2) { return __lsx_vaddwod_h_bu(_1, _2); }
2998 // CHECK-LABEL: @vaddwev_d_wu_w(
2999 // CHECK-NEXT: entry:
3000 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwev.d.wu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3001 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3003 v2i64 vaddwev_d_wu_w(v4u32 _1, v4i32 _2) {
3004 return __lsx_vaddwev_d_wu_w(_1, _2);
3006 // CHECK-LABEL: @vaddwev_w_hu_h(
3007 // CHECK-NEXT: entry:
3008 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vaddwev.w.hu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3009 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3011 v4i32 vaddwev_w_hu_h(v8u16 _1, v8i16 _2) {
3012 return __lsx_vaddwev_w_hu_h(_1, _2);
3014 // CHECK-LABEL: @vaddwev_h_bu_b(
3015 // CHECK-NEXT: entry:
3016 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vaddwev.h.bu.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3017 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3019 v8i16 vaddwev_h_bu_b(v16u8 _1, v16i8 _2) {
3020 return __lsx_vaddwev_h_bu_b(_1, _2);
3022 // CHECK-LABEL: @vaddwod_d_wu_w(
3023 // CHECK-NEXT: entry:
3024 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwod.d.wu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3025 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3027 v2i64 vaddwod_d_wu_w(v4u32 _1, v4i32 _2) {
3028 return __lsx_vaddwod_d_wu_w(_1, _2);
3030 // CHECK-LABEL: @vaddwod_w_hu_h(
3031 // CHECK-NEXT: entry:
3032 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vaddwod.w.hu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3033 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3035 v4i32 vaddwod_w_hu_h(v8u16 _1, v8i16 _2) {
3036 return __lsx_vaddwod_w_hu_h(_1, _2);
3038 // CHECK-LABEL: @vaddwod_h_bu_b(
3039 // CHECK-NEXT: entry:
3040 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vaddwod.h.bu.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3041 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3043 v8i16 vaddwod_h_bu_b(v16u8 _1, v16i8 _2) {
3044 return __lsx_vaddwod_h_bu_b(_1, _2);
3046 // CHECK-LABEL: @vsubwev_d_w(
3047 // CHECK-NEXT: entry:
3048 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwev.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3049 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3051 v2i64 vsubwev_d_w(v4i32 _1, v4i32 _2) { return __lsx_vsubwev_d_w(_1, _2); }
3052 // CHECK-LABEL: @vsubwev_w_h(
3053 // CHECK-NEXT: entry:
3054 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsubwev.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3055 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3057 v4i32 vsubwev_w_h(v8i16 _1, v8i16 _2) { return __lsx_vsubwev_w_h(_1, _2); }
3058 // CHECK-LABEL: @vsubwev_h_b(
3059 // CHECK-NEXT: entry:
3060 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsubwev.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3061 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3063 v8i16 vsubwev_h_b(v16i8 _1, v16i8 _2) { return __lsx_vsubwev_h_b(_1, _2); }
3064 // CHECK-LABEL: @vsubwod_d_w(
3065 // CHECK-NEXT: entry:
3066 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwod.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3067 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3069 v2i64 vsubwod_d_w(v4i32 _1, v4i32 _2) { return __lsx_vsubwod_d_w(_1, _2); }
3070 // CHECK-LABEL: @vsubwod_w_h(
3071 // CHECK-NEXT: entry:
3072 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsubwod.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3073 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3075 v4i32 vsubwod_w_h(v8i16 _1, v8i16 _2) { return __lsx_vsubwod_w_h(_1, _2); }
3076 // CHECK-LABEL: @vsubwod_h_b(
3077 // CHECK-NEXT: entry:
3078 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsubwod.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3079 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3081 v8i16 vsubwod_h_b(v16i8 _1, v16i8 _2) { return __lsx_vsubwod_h_b(_1, _2); }
3082 // CHECK-LABEL: @vsubwev_d_wu(
3083 // CHECK-NEXT: entry:
3084 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwev.d.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3085 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3087 v2i64 vsubwev_d_wu(v4u32 _1, v4u32 _2) { return __lsx_vsubwev_d_wu(_1, _2); }
3088 // CHECK-LABEL: @vsubwev_w_hu(
3089 // CHECK-NEXT: entry:
3090 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsubwev.w.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3091 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3093 v4i32 vsubwev_w_hu(v8u16 _1, v8u16 _2) { return __lsx_vsubwev_w_hu(_1, _2); }
3094 // CHECK-LABEL: @vsubwev_h_bu(
3095 // CHECK-NEXT: entry:
3096 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsubwev.h.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3097 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3099 v8i16 vsubwev_h_bu(v16u8 _1, v16u8 _2) { return __lsx_vsubwev_h_bu(_1, _2); }
3100 // CHECK-LABEL: @vsubwod_d_wu(
3101 // CHECK-NEXT: entry:
3102 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwod.d.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3103 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3105 v2i64 vsubwod_d_wu(v4u32 _1, v4u32 _2) { return __lsx_vsubwod_d_wu(_1, _2); }
3106 // CHECK-LABEL: @vsubwod_w_hu(
3107 // CHECK-NEXT: entry:
3108 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsubwod.w.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3109 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3111 v4i32 vsubwod_w_hu(v8u16 _1, v8u16 _2) { return __lsx_vsubwod_w_hu(_1, _2); }
3112 // CHECK-LABEL: @vsubwod_h_bu(
3113 // CHECK-NEXT: entry:
3114 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsubwod.h.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3115 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3117 v8i16 vsubwod_h_bu(v16u8 _1, v16u8 _2) { return __lsx_vsubwod_h_bu(_1, _2); }
3118 // CHECK-LABEL: @vaddwev_q_d(
3119 // CHECK-NEXT: entry:
3120 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwev.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3121 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3123 v2i64 vaddwev_q_d(v2i64 _1, v2i64 _2) { return __lsx_vaddwev_q_d(_1, _2); }
3124 // CHECK-LABEL: @vaddwod_q_d(
3125 // CHECK-NEXT: entry:
3126 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwod.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3127 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3129 v2i64 vaddwod_q_d(v2i64 _1, v2i64 _2) { return __lsx_vaddwod_q_d(_1, _2); }
3130 // CHECK-LABEL: @vaddwev_q_du(
3131 // CHECK-NEXT: entry:
3132 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwev.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3133 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3135 v2i64 vaddwev_q_du(v2u64 _1, v2u64 _2) { return __lsx_vaddwev_q_du(_1, _2); }
3136 // CHECK-LABEL: @vaddwod_q_du(
3137 // CHECK-NEXT: entry:
3138 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwod.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3139 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3141 v2i64 vaddwod_q_du(v2u64 _1, v2u64 _2) { return __lsx_vaddwod_q_du(_1, _2); }
3142 // CHECK-LABEL: @vsubwev_q_d(
3143 // CHECK-NEXT: entry:
3144 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwev.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3145 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3147 v2i64 vsubwev_q_d(v2i64 _1, v2i64 _2) { return __lsx_vsubwev_q_d(_1, _2); }
3148 // CHECK-LABEL: @vsubwod_q_d(
3149 // CHECK-NEXT: entry:
3150 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwod.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3151 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3153 v2i64 vsubwod_q_d(v2i64 _1, v2i64 _2) { return __lsx_vsubwod_q_d(_1, _2); }
3154 // CHECK-LABEL: @vsubwev_q_du(
3155 // CHECK-NEXT: entry:
3156 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwev.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3157 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3159 v2i64 vsubwev_q_du(v2u64 _1, v2u64 _2) { return __lsx_vsubwev_q_du(_1, _2); }
3160 // CHECK-LABEL: @vsubwod_q_du(
3161 // CHECK-NEXT: entry:
3162 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsubwod.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3163 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3165 v2i64 vsubwod_q_du(v2u64 _1, v2u64 _2) { return __lsx_vsubwod_q_du(_1, _2); }
3166 // CHECK-LABEL: @vaddwev_q_du_d(
3167 // CHECK-NEXT: entry:
3168 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwev.q.du.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3169 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3171 v2i64 vaddwev_q_du_d(v2u64 _1, v2i64 _2) {
3172 return __lsx_vaddwev_q_du_d(_1, _2);
3174 // CHECK-LABEL: @vaddwod_q_du_d(
3175 // CHECK-NEXT: entry:
3176 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vaddwod.q.du.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3177 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3179 v2i64 vaddwod_q_du_d(v2u64 _1, v2i64 _2) {
3180 return __lsx_vaddwod_q_du_d(_1, _2);
3182 // CHECK-LABEL: @vmulwev_d_w(
3183 // CHECK-NEXT: entry:
3184 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwev.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3185 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3187 v2i64 vmulwev_d_w(v4i32 _1, v4i32 _2) { return __lsx_vmulwev_d_w(_1, _2); }
3188 // CHECK-LABEL: @vmulwev_w_h(
3189 // CHECK-NEXT: entry:
3190 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmulwev.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3191 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3193 v4i32 vmulwev_w_h(v8i16 _1, v8i16 _2) { return __lsx_vmulwev_w_h(_1, _2); }
3194 // CHECK-LABEL: @vmulwev_h_b(
3195 // CHECK-NEXT: entry:
3196 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmulwev.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3197 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3199 v8i16 vmulwev_h_b(v16i8 _1, v16i8 _2) { return __lsx_vmulwev_h_b(_1, _2); }
3200 // CHECK-LABEL: @vmulwod_d_w(
3201 // CHECK-NEXT: entry:
3202 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwod.d.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3203 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3205 v2i64 vmulwod_d_w(v4i32 _1, v4i32 _2) { return __lsx_vmulwod_d_w(_1, _2); }
3206 // CHECK-LABEL: @vmulwod_w_h(
3207 // CHECK-NEXT: entry:
3208 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmulwod.w.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3209 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3211 v4i32 vmulwod_w_h(v8i16 _1, v8i16 _2) { return __lsx_vmulwod_w_h(_1, _2); }
3212 // CHECK-LABEL: @vmulwod_h_b(
3213 // CHECK-NEXT: entry:
3214 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmulwod.h.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3215 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3217 v8i16 vmulwod_h_b(v16i8 _1, v16i8 _2) { return __lsx_vmulwod_h_b(_1, _2); }
3218 // CHECK-LABEL: @vmulwev_d_wu(
3219 // CHECK-NEXT: entry:
3220 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwev.d.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3221 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3223 v2i64 vmulwev_d_wu(v4u32 _1, v4u32 _2) { return __lsx_vmulwev_d_wu(_1, _2); }
3224 // CHECK-LABEL: @vmulwev_w_hu(
3225 // CHECK-NEXT: entry:
3226 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmulwev.w.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3227 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3229 v4i32 vmulwev_w_hu(v8u16 _1, v8u16 _2) { return __lsx_vmulwev_w_hu(_1, _2); }
3230 // CHECK-LABEL: @vmulwev_h_bu(
3231 // CHECK-NEXT: entry:
3232 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmulwev.h.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3233 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3235 v8i16 vmulwev_h_bu(v16u8 _1, v16u8 _2) { return __lsx_vmulwev_h_bu(_1, _2); }
3236 // CHECK-LABEL: @vmulwod_d_wu(
3237 // CHECK-NEXT: entry:
3238 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwod.d.wu(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3239 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3241 v2i64 vmulwod_d_wu(v4u32 _1, v4u32 _2) { return __lsx_vmulwod_d_wu(_1, _2); }
3242 // CHECK-LABEL: @vmulwod_w_hu(
3243 // CHECK-NEXT: entry:
3244 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmulwod.w.hu(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3245 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3247 v4i32 vmulwod_w_hu(v8u16 _1, v8u16 _2) { return __lsx_vmulwod_w_hu(_1, _2); }
3248 // CHECK-LABEL: @vmulwod_h_bu(
3249 // CHECK-NEXT: entry:
3250 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmulwod.h.bu(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3251 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3253 v8i16 vmulwod_h_bu(v16u8 _1, v16u8 _2) { return __lsx_vmulwod_h_bu(_1, _2); }
3254 // CHECK-LABEL: @vmulwev_d_wu_w(
3255 // CHECK-NEXT: entry:
3256 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwev.d.wu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3257 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3259 v2i64 vmulwev_d_wu_w(v4u32 _1, v4i32 _2) {
3260 return __lsx_vmulwev_d_wu_w(_1, _2);
3262 // CHECK-LABEL: @vmulwev_w_hu_h(
3263 // CHECK-NEXT: entry:
3264 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmulwev.w.hu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3265 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3267 v4i32 vmulwev_w_hu_h(v8u16 _1, v8i16 _2) {
3268 return __lsx_vmulwev_w_hu_h(_1, _2);
3270 // CHECK-LABEL: @vmulwev_h_bu_b(
3271 // CHECK-NEXT: entry:
3272 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmulwev.h.bu.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3273 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3275 v8i16 vmulwev_h_bu_b(v16u8 _1, v16i8 _2) {
3276 return __lsx_vmulwev_h_bu_b(_1, _2);
3278 // CHECK-LABEL: @vmulwod_d_wu_w(
3279 // CHECK-NEXT: entry:
3280 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwod.d.wu.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3281 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3283 v2i64 vmulwod_d_wu_w(v4u32 _1, v4i32 _2) {
3284 return __lsx_vmulwod_d_wu_w(_1, _2);
3286 // CHECK-LABEL: @vmulwod_w_hu_h(
3287 // CHECK-NEXT: entry:
3288 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmulwod.w.hu.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3289 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3291 v4i32 vmulwod_w_hu_h(v8u16 _1, v8i16 _2) {
3292 return __lsx_vmulwod_w_hu_h(_1, _2);
3294 // CHECK-LABEL: @vmulwod_h_bu_b(
3295 // CHECK-NEXT: entry:
3296 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmulwod.h.bu.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3297 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3299 v8i16 vmulwod_h_bu_b(v16u8 _1, v16i8 _2) {
3300 return __lsx_vmulwod_h_bu_b(_1, _2);
3302 // CHECK-LABEL: @vmulwev_q_d(
3303 // CHECK-NEXT: entry:
3304 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwev.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3305 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3307 v2i64 vmulwev_q_d(v2i64 _1, v2i64 _2) { return __lsx_vmulwev_q_d(_1, _2); }
3308 // CHECK-LABEL: @vmulwod_q_d(
3309 // CHECK-NEXT: entry:
3310 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwod.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3311 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3313 v2i64 vmulwod_q_d(v2i64 _1, v2i64 _2) { return __lsx_vmulwod_q_d(_1, _2); }
3314 // CHECK-LABEL: @vmulwev_q_du(
3315 // CHECK-NEXT: entry:
3316 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwev.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3317 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3319 v2i64 vmulwev_q_du(v2u64 _1, v2u64 _2) { return __lsx_vmulwev_q_du(_1, _2); }
3320 // CHECK-LABEL: @vmulwod_q_du(
3321 // CHECK-NEXT: entry:
3322 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwod.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3323 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3325 v2i64 vmulwod_q_du(v2u64 _1, v2u64 _2) { return __lsx_vmulwod_q_du(_1, _2); }
3326 // CHECK-LABEL: @vmulwev_q_du_d(
3327 // CHECK-NEXT: entry:
3328 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwev.q.du.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3329 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3331 v2i64 vmulwev_q_du_d(v2u64 _1, v2i64 _2) {
3332 return __lsx_vmulwev_q_du_d(_1, _2);
3334 // CHECK-LABEL: @vmulwod_q_du_d(
3335 // CHECK-NEXT: entry:
3336 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmulwod.q.du.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3337 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3339 v2i64 vmulwod_q_du_d(v2u64 _1, v2i64 _2) {
3340 return __lsx_vmulwod_q_du_d(_1, _2);
3342 // CHECK-LABEL: @vhaddw_q_d(
3343 // CHECK-NEXT: entry:
3344 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhaddw.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3345 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3347 v2i64 vhaddw_q_d(v2i64 _1, v2i64 _2) { return __lsx_vhaddw_q_d(_1, _2); }
3348 // CHECK-LABEL: @vhaddw_qu_du(
3349 // CHECK-NEXT: entry:
3350 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhaddw.qu.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3351 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3353 v2u64 vhaddw_qu_du(v2u64 _1, v2u64 _2) { return __lsx_vhaddw_qu_du(_1, _2); }
3354 // CHECK-LABEL: @vhsubw_q_d(
3355 // CHECK-NEXT: entry:
3356 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhsubw.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3357 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3359 v2i64 vhsubw_q_d(v2i64 _1, v2i64 _2) { return __lsx_vhsubw_q_d(_1, _2); }
3360 // CHECK-LABEL: @vhsubw_qu_du(
3361 // CHECK-NEXT: entry:
3362 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vhsubw.qu.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3363 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3365 v2u64 vhsubw_qu_du(v2u64 _1, v2u64 _2) { return __lsx_vhsubw_qu_du(_1, _2); }
3366 // CHECK-LABEL: @vmaddwev_d_w(
3367 // CHECK-NEXT: entry:
3368 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwev.d.w(<2 x i64> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
3369 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3371 v2i64 vmaddwev_d_w(v2i64 _1, v4i32 _2, v4i32 _3) {
3372 return __lsx_vmaddwev_d_w(_1, _2, _3);
3374 // CHECK-LABEL: @vmaddwev_w_h(
3375 // CHECK-NEXT: entry:
3376 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaddwev.w.h(<4 x i32> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
3377 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3379 v4i32 vmaddwev_w_h(v4i32 _1, v8i16 _2, v8i16 _3) {
3380 return __lsx_vmaddwev_w_h(_1, _2, _3);
3382 // CHECK-LABEL: @vmaddwev_h_b(
3383 // CHECK-NEXT: entry:
3384 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaddwev.h.b(<8 x i16> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
3385 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3387 v8i16 vmaddwev_h_b(v8i16 _1, v16i8 _2, v16i8 _3) {
3388 return __lsx_vmaddwev_h_b(_1, _2, _3);
3390 // CHECK-LABEL: @vmaddwev_d_wu(
3391 // CHECK-NEXT: entry:
3392 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwev.d.wu(<2 x i64> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
3393 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3395 v2u64 vmaddwev_d_wu(v2u64 _1, v4u32 _2, v4u32 _3) {
3396 return __lsx_vmaddwev_d_wu(_1, _2, _3);
3398 // CHECK-LABEL: @vmaddwev_w_hu(
3399 // CHECK-NEXT: entry:
3400 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaddwev.w.hu(<4 x i32> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
3401 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3403 v4u32 vmaddwev_w_hu(v4u32 _1, v8u16 _2, v8u16 _3) {
3404 return __lsx_vmaddwev_w_hu(_1, _2, _3);
3406 // CHECK-LABEL: @vmaddwev_h_bu(
3407 // CHECK-NEXT: entry:
3408 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaddwev.h.bu(<8 x i16> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
3409 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3411 v8u16 vmaddwev_h_bu(v8u16 _1, v16u8 _2, v16u8 _3) {
3412 return __lsx_vmaddwev_h_bu(_1, _2, _3);
3414 // CHECK-LABEL: @vmaddwod_d_w(
3415 // CHECK-NEXT: entry:
3416 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwod.d.w(<2 x i64> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
3417 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3419 v2i64 vmaddwod_d_w(v2i64 _1, v4i32 _2, v4i32 _3) {
3420 return __lsx_vmaddwod_d_w(_1, _2, _3);
3422 // CHECK-LABEL: @vmaddwod_w_h(
3423 // CHECK-NEXT: entry:
3424 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaddwod.w.h(<4 x i32> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
3425 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3427 v4i32 vmaddwod_w_h(v4i32 _1, v8i16 _2, v8i16 _3) {
3428 return __lsx_vmaddwod_w_h(_1, _2, _3);
3430 // CHECK-LABEL: @vmaddwod_h_b(
3431 // CHECK-NEXT: entry:
3432 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaddwod.h.b(<8 x i16> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
3433 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3435 v8i16 vmaddwod_h_b(v8i16 _1, v16i8 _2, v16i8 _3) {
3436 return __lsx_vmaddwod_h_b(_1, _2, _3);
3438 // CHECK-LABEL: @vmaddwod_d_wu(
3439 // CHECK-NEXT: entry:
3440 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwod.d.wu(<2 x i64> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
3441 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3443 v2u64 vmaddwod_d_wu(v2u64 _1, v4u32 _2, v4u32 _3) {
3444 return __lsx_vmaddwod_d_wu(_1, _2, _3);
3446 // CHECK-LABEL: @vmaddwod_w_hu(
3447 // CHECK-NEXT: entry:
3448 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaddwod.w.hu(<4 x i32> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
3449 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3451 v4u32 vmaddwod_w_hu(v4u32 _1, v8u16 _2, v8u16 _3) {
3452 return __lsx_vmaddwod_w_hu(_1, _2, _3);
3454 // CHECK-LABEL: @vmaddwod_h_bu(
3455 // CHECK-NEXT: entry:
3456 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaddwod.h.bu(<8 x i16> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
3457 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3459 v8u16 vmaddwod_h_bu(v8u16 _1, v16u8 _2, v16u8 _3) {
3460 return __lsx_vmaddwod_h_bu(_1, _2, _3);
3462 // CHECK-LABEL: @vmaddwev_d_wu_w(
3463 // CHECK-NEXT: entry:
3464 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwev.d.wu.w(<2 x i64> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
3465 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3467 v2i64 vmaddwev_d_wu_w(v2i64 _1, v4u32 _2, v4i32 _3) {
3468 return __lsx_vmaddwev_d_wu_w(_1, _2, _3);
3470 // CHECK-LABEL: @vmaddwev_w_hu_h(
3471 // CHECK-NEXT: entry:
3472 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaddwev.w.hu.h(<4 x i32> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
3473 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3475 v4i32 vmaddwev_w_hu_h(v4i32 _1, v8u16 _2, v8i16 _3) {
3476 return __lsx_vmaddwev_w_hu_h(_1, _2, _3);
3478 // CHECK-LABEL: @vmaddwev_h_bu_b(
3479 // CHECK-NEXT: entry:
3480 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaddwev.h.bu.b(<8 x i16> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
3481 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3483 v8i16 vmaddwev_h_bu_b(v8i16 _1, v16u8 _2, v16i8 _3) {
3484 return __lsx_vmaddwev_h_bu_b(_1, _2, _3);
3486 // CHECK-LABEL: @vmaddwod_d_wu_w(
3487 // CHECK-NEXT: entry:
3488 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwod.d.wu.w(<2 x i64> [[_1:%.*]], <4 x i32> [[_2:%.*]], <4 x i32> [[_3:%.*]])
3489 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3491 v2i64 vmaddwod_d_wu_w(v2i64 _1, v4u32 _2, v4i32 _3) {
3492 return __lsx_vmaddwod_d_wu_w(_1, _2, _3);
3494 // CHECK-LABEL: @vmaddwod_w_hu_h(
3495 // CHECK-NEXT: entry:
3496 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vmaddwod.w.hu.h(<4 x i32> [[_1:%.*]], <8 x i16> [[_2:%.*]], <8 x i16> [[_3:%.*]])
3497 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3499 v4i32 vmaddwod_w_hu_h(v4i32 _1, v8u16 _2, v8i16 _3) {
3500 return __lsx_vmaddwod_w_hu_h(_1, _2, _3);
3502 // CHECK-LABEL: @vmaddwod_h_bu_b(
3503 // CHECK-NEXT: entry:
3504 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vmaddwod.h.bu.b(<8 x i16> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
3505 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3507 v8i16 vmaddwod_h_bu_b(v8i16 _1, v16u8 _2, v16i8 _3) {
3508 return __lsx_vmaddwod_h_bu_b(_1, _2, _3);
3510 // CHECK-LABEL: @vmaddwev_q_d(
3511 // CHECK-NEXT: entry:
3512 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwev.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
3513 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3515 v2i64 vmaddwev_q_d(v2i64 _1, v2i64 _2, v2i64 _3) {
3516 return __lsx_vmaddwev_q_d(_1, _2, _3);
3518 // CHECK-LABEL: @vmaddwod_q_d(
3519 // CHECK-NEXT: entry:
3520 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwod.q.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
3521 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3523 v2i64 vmaddwod_q_d(v2i64 _1, v2i64 _2, v2i64 _3) {
3524 return __lsx_vmaddwod_q_d(_1, _2, _3);
3526 // CHECK-LABEL: @vmaddwev_q_du(
3527 // CHECK-NEXT: entry:
3528 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwev.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
3529 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3531 v2u64 vmaddwev_q_du(v2u64 _1, v2u64 _2, v2u64 _3) {
3532 return __lsx_vmaddwev_q_du(_1, _2, _3);
3534 // CHECK-LABEL: @vmaddwod_q_du(
3535 // CHECK-NEXT: entry:
3536 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwod.q.du(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
3537 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3539 v2u64 vmaddwod_q_du(v2u64 _1, v2u64 _2, v2u64 _3) {
3540 return __lsx_vmaddwod_q_du(_1, _2, _3);
3542 // CHECK-LABEL: @vmaddwev_q_du_d(
3543 // CHECK-NEXT: entry:
3544 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwev.q.du.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
3545 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3547 v2i64 vmaddwev_q_du_d(v2i64 _1, v2u64 _2, v2i64 _3) {
3548 return __lsx_vmaddwev_q_du_d(_1, _2, _3);
3550 // CHECK-LABEL: @vmaddwod_q_du_d(
3551 // CHECK-NEXT: entry:
3552 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vmaddwod.q.du.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], <2 x i64> [[_3:%.*]])
3553 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3555 v2i64 vmaddwod_q_du_d(v2i64 _1, v2u64 _2, v2i64 _3) {
3556 return __lsx_vmaddwod_q_du_d(_1, _2, _3);
3558 // CHECK-LABEL: @vrotr_b(
3559 // CHECK-NEXT: entry:
3560 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vrotr.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
3561 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3563 v16i8 vrotr_b(v16i8 _1, v16i8 _2) { return __lsx_vrotr_b(_1, _2); }
3564 // CHECK-LABEL: @vrotr_h(
3565 // CHECK-NEXT: entry:
3566 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vrotr.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
3567 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3569 v8i16 vrotr_h(v8i16 _1, v8i16 _2) { return __lsx_vrotr_h(_1, _2); }
3570 // CHECK-LABEL: @vrotr_w(
3571 // CHECK-NEXT: entry:
3572 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vrotr.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
3573 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3575 v4i32 vrotr_w(v4i32 _1, v4i32 _2) { return __lsx_vrotr_w(_1, _2); }
3576 // CHECK-LABEL: @vrotr_d(
3577 // CHECK-NEXT: entry:
3578 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vrotr.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3579 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3581 v2i64 vrotr_d(v2i64 _1, v2i64 _2) { return __lsx_vrotr_d(_1, _2); }
3582 // CHECK-LABEL: @vadd_q(
3583 // CHECK-NEXT: entry:
3584 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vadd.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3585 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3587 v2i64 vadd_q(v2i64 _1, v2i64 _2) { return __lsx_vadd_q(_1, _2); }
3588 // CHECK-LABEL: @vsub_q(
3589 // CHECK-NEXT: entry:
3590 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsub.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
3591 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3593 v2i64 vsub_q(v2i64 _1, v2i64 _2) { return __lsx_vsub_q(_1, _2); }
3594 // CHECK-LABEL: @vldrepl_b(
3595 // CHECK-NEXT: entry:
3596 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vldrepl.b(ptr [[_1:%.*]], i32 1)
3597 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3599 v16i8 vldrepl_b(void *_1) { return __lsx_vldrepl_b(_1, 1); }
3600 // CHECK-LABEL: @vldrepl_h(
3601 // CHECK-NEXT: entry:
3602 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vldrepl.h(ptr [[_1:%.*]], i32 2)
3603 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3605 v8i16 vldrepl_h(void *_1) { return __lsx_vldrepl_h(_1, 2); }
3606 // CHECK-LABEL: @vldrepl_w(
3607 // CHECK-NEXT: entry:
3608 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vldrepl.w(ptr [[_1:%.*]], i32 4)
3609 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3611 v4i32 vldrepl_w(void *_1) { return __lsx_vldrepl_w(_1, 4); }
3612 // CHECK-LABEL: @vldrepl_d(
3613 // CHECK-NEXT: entry:
3614 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vldrepl.d(ptr [[_1:%.*]], i32 8)
3615 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3617 v2i64 vldrepl_d(void *_1) { return __lsx_vldrepl_d(_1, 8); }
3618 // CHECK-LABEL: @vmskgez_b(
3619 // CHECK-NEXT: entry:
3620 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmskgez.b(<16 x i8> [[_1:%.*]])
3621 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3623 v16i8 vmskgez_b(v16i8 _1) { return __lsx_vmskgez_b(_1); }
3624 // CHECK-LABEL: @vmsknz_b(
3625 // CHECK-NEXT: entry:
3626 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vmsknz.b(<16 x i8> [[_1:%.*]])
3627 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3629 v16i8 vmsknz_b(v16i8 _1) { return __lsx_vmsknz_b(_1); }
3630 // CHECK-LABEL: @vexth_h_b(
3631 // CHECK-NEXT: entry:
3632 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vexth.h.b(<16 x i8> [[_1:%.*]])
3633 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3635 v8i16 vexth_h_b(v16i8 _1) { return __lsx_vexth_h_b(_1); }
3636 // CHECK-LABEL: @vexth_w_h(
3637 // CHECK-NEXT: entry:
3638 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vexth.w.h(<8 x i16> [[_1:%.*]])
3639 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3641 v4i32 vexth_w_h(v8i16 _1) { return __lsx_vexth_w_h(_1); }
3642 // CHECK-LABEL: @vexth_d_w(
3643 // CHECK-NEXT: entry:
3644 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vexth.d.w(<4 x i32> [[_1:%.*]])
3645 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3647 v2i64 vexth_d_w(v4i32 _1) { return __lsx_vexth_d_w(_1); }
3648 // CHECK-LABEL: @vexth_q_d(
3649 // CHECK-NEXT: entry:
3650 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vexth.q.d(<2 x i64> [[_1:%.*]])
3651 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3653 v2i64 vexth_q_d(v2i64 _1) { return __lsx_vexth_q_d(_1); }
3654 // CHECK-LABEL: @vexth_hu_bu(
3655 // CHECK-NEXT: entry:
3656 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vexth.hu.bu(<16 x i8> [[_1:%.*]])
3657 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3659 v8u16 vexth_hu_bu(v16u8 _1) { return __lsx_vexth_hu_bu(_1); }
3660 // CHECK-LABEL: @vexth_wu_hu(
3661 // CHECK-NEXT: entry:
3662 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vexth.wu.hu(<8 x i16> [[_1:%.*]])
3663 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3665 v4u32 vexth_wu_hu(v8u16 _1) { return __lsx_vexth_wu_hu(_1); }
3666 // CHECK-LABEL: @vexth_du_wu(
3667 // CHECK-NEXT: entry:
3668 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vexth.du.wu(<4 x i32> [[_1:%.*]])
3669 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3671 v2u64 vexth_du_wu(v4u32 _1) { return __lsx_vexth_du_wu(_1); }
3672 // CHECK-LABEL: @vexth_qu_du(
3673 // CHECK-NEXT: entry:
3674 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vexth.qu.du(<2 x i64> [[_1:%.*]])
3675 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3677 v2u64 vexth_qu_du(v2u64 _1) { return __lsx_vexth_qu_du(_1); }
3678 // CHECK-LABEL: @vrotri_b(
3679 // CHECK-NEXT: entry:
3680 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vrotri.b(<16 x i8> [[_1:%.*]], i32 1)
3681 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3683 v16i8 vrotri_b(v16i8 _1) { return __lsx_vrotri_b(_1, 1); }
3684 // CHECK-LABEL: @vrotri_h(
3685 // CHECK-NEXT: entry:
3686 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vrotri.h(<8 x i16> [[_1:%.*]], i32 1)
3687 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3689 v8i16 vrotri_h(v8i16 _1) { return __lsx_vrotri_h(_1, 1); }
3690 // CHECK-LABEL: @vrotri_w(
3691 // CHECK-NEXT: entry:
3692 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vrotri.w(<4 x i32> [[_1:%.*]], i32 1)
3693 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3695 v4i32 vrotri_w(v4i32 _1) { return __lsx_vrotri_w(_1, 1); }
3696 // CHECK-LABEL: @vrotri_d(
3697 // CHECK-NEXT: entry:
3698 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vrotri.d(<2 x i64> [[_1:%.*]], i32 1)
3699 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3701 v2i64 vrotri_d(v2i64 _1) { return __lsx_vrotri_d(_1, 1); }
3702 // CHECK-LABEL: @vextl_q_d(
3703 // CHECK-NEXT: entry:
3704 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vextl.q.d(<2 x i64> [[_1:%.*]])
3705 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3707 v2i64 vextl_q_d(v2i64 _1) { return __lsx_vextl_q_d(_1); }
3708 // CHECK-LABEL: @vsrlni_b_h(
3709 // CHECK-NEXT: entry:
3710 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrlni.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3711 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3713 v16i8 vsrlni_b_h(v16i8 _1, v16i8 _2) { return __lsx_vsrlni_b_h(_1, _2, 1); }
3714 // CHECK-LABEL: @vsrlni_h_w(
3715 // CHECK-NEXT: entry:
3716 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrlni.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3717 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3719 v8i16 vsrlni_h_w(v8i16 _1, v8i16 _2) { return __lsx_vsrlni_h_w(_1, _2, 1); }
3720 // CHECK-LABEL: @vsrlni_w_d(
3721 // CHECK-NEXT: entry:
3722 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrlni.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3723 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3725 v4i32 vsrlni_w_d(v4i32 _1, v4i32 _2) { return __lsx_vsrlni_w_d(_1, _2, 1); }
3726 // CHECK-LABEL: @vsrlni_d_q(
3727 // CHECK-NEXT: entry:
3728 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrlni.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3729 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3731 v2i64 vsrlni_d_q(v2i64 _1, v2i64 _2) { return __lsx_vsrlni_d_q(_1, _2, 1); }
3732 // CHECK-LABEL: @vsrlrni_b_h(
3733 // CHECK-NEXT: entry:
3734 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrlrni.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3735 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3737 v16i8 vsrlrni_b_h(v16i8 _1, v16i8 _2) { return __lsx_vsrlrni_b_h(_1, _2, 1); }
3738 // CHECK-LABEL: @vsrlrni_h_w(
3739 // CHECK-NEXT: entry:
3740 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrlrni.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3741 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3743 v8i16 vsrlrni_h_w(v8i16 _1, v8i16 _2) { return __lsx_vsrlrni_h_w(_1, _2, 1); }
3744 // CHECK-LABEL: @vsrlrni_w_d(
3745 // CHECK-NEXT: entry:
3746 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrlrni.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3747 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3749 v4i32 vsrlrni_w_d(v4i32 _1, v4i32 _2) { return __lsx_vsrlrni_w_d(_1, _2, 1); }
3750 // CHECK-LABEL: @vsrlrni_d_q(
3751 // CHECK-NEXT: entry:
3752 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrlrni.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3753 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3755 v2i64 vsrlrni_d_q(v2i64 _1, v2i64 _2) { return __lsx_vsrlrni_d_q(_1, _2, 1); }
3756 // CHECK-LABEL: @vssrlni_b_h(
3757 // CHECK-NEXT: entry:
3758 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrlni.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3759 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3761 v16i8 vssrlni_b_h(v16i8 _1, v16i8 _2) { return __lsx_vssrlni_b_h(_1, _2, 1); }
3762 // CHECK-LABEL: @vssrlni_h_w(
3763 // CHECK-NEXT: entry:
3764 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrlni.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3765 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3767 v8i16 vssrlni_h_w(v8i16 _1, v8i16 _2) { return __lsx_vssrlni_h_w(_1, _2, 1); }
3768 // CHECK-LABEL: @vssrlni_w_d(
3769 // CHECK-NEXT: entry:
3770 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrlni.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3771 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3773 v4i32 vssrlni_w_d(v4i32 _1, v4i32 _2) { return __lsx_vssrlni_w_d(_1, _2, 1); }
3774 // CHECK-LABEL: @vssrlni_d_q(
3775 // CHECK-NEXT: entry:
3776 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrlni.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3777 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3779 v2i64 vssrlni_d_q(v2i64 _1, v2i64 _2) { return __lsx_vssrlni_d_q(_1, _2, 1); }
3780 // CHECK-LABEL: @vssrlni_bu_h(
3781 // CHECK-NEXT: entry:
3782 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrlni.bu.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3783 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3785 v16u8 vssrlni_bu_h(v16u8 _1, v16i8 _2) { return __lsx_vssrlni_bu_h(_1, _2, 1); }
3786 // CHECK-LABEL: @vssrlni_hu_w(
3787 // CHECK-NEXT: entry:
3788 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrlni.hu.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3789 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3791 v8u16 vssrlni_hu_w(v8u16 _1, v8i16 _2) { return __lsx_vssrlni_hu_w(_1, _2, 1); }
3792 // CHECK-LABEL: @vssrlni_wu_d(
3793 // CHECK-NEXT: entry:
3794 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrlni.wu.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3795 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3797 v4u32 vssrlni_wu_d(v4u32 _1, v4i32 _2) { return __lsx_vssrlni_wu_d(_1, _2, 1); }
3798 // CHECK-LABEL: @vssrlni_du_q(
3799 // CHECK-NEXT: entry:
3800 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrlni.du.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3801 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3803 v2u64 vssrlni_du_q(v2u64 _1, v2i64 _2) { return __lsx_vssrlni_du_q(_1, _2, 1); }
3804 // CHECK-LABEL: @vssrlrni_b_h(
3805 // CHECK-NEXT: entry:
3806 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrlrni.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3807 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3809 v16i8 vssrlrni_b_h(v16i8 _1, v16i8 _2) { return __lsx_vssrlrni_b_h(_1, _2, 1); }
3810 // CHECK-LABEL: @vssrlrni_h_w(
3811 // CHECK-NEXT: entry:
3812 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrlrni.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3813 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3815 v8i16 vssrlrni_h_w(v8i16 _1, v8i16 _2) { return __lsx_vssrlrni_h_w(_1, _2, 1); }
3816 // CHECK-LABEL: @vssrlrni_w_d(
3817 // CHECK-NEXT: entry:
3818 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrlrni.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3819 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3821 v4i32 vssrlrni_w_d(v4i32 _1, v4i32 _2) { return __lsx_vssrlrni_w_d(_1, _2, 1); }
3822 // CHECK-LABEL: @vssrlrni_d_q(
3823 // CHECK-NEXT: entry:
3824 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrlrni.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3825 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3827 v2i64 vssrlrni_d_q(v2i64 _1, v2i64 _2) { return __lsx_vssrlrni_d_q(_1, _2, 1); }
3828 // CHECK-LABEL: @vssrlrni_bu_h(
3829 // CHECK-NEXT: entry:
3830 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrlrni.bu.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3831 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3833 v16u8 vssrlrni_bu_h(v16u8 _1, v16i8 _2) {
3834 return __lsx_vssrlrni_bu_h(_1, _2, 1);
3836 // CHECK-LABEL: @vssrlrni_hu_w(
3837 // CHECK-NEXT: entry:
3838 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrlrni.hu.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3839 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3841 v8u16 vssrlrni_hu_w(v8u16 _1, v8i16 _2) {
3842 return __lsx_vssrlrni_hu_w(_1, _2, 1);
3844 // CHECK-LABEL: @vssrlrni_wu_d(
3845 // CHECK-NEXT: entry:
3846 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrlrni.wu.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3847 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3849 v4u32 vssrlrni_wu_d(v4u32 _1, v4i32 _2) {
3850 return __lsx_vssrlrni_wu_d(_1, _2, 1);
3852 // CHECK-LABEL: @vssrlrni_du_q(
3853 // CHECK-NEXT: entry:
3854 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrlrni.du.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3855 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3857 v2u64 vssrlrni_du_q(v2u64 _1, v2i64 _2) {
3858 return __lsx_vssrlrni_du_q(_1, _2, 1);
3860 // CHECK-LABEL: @vsrani_b_h(
3861 // CHECK-NEXT: entry:
3862 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrani.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3863 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3865 v16i8 vsrani_b_h(v16i8 _1, v16i8 _2) { return __lsx_vsrani_b_h(_1, _2, 1); }
3866 // CHECK-LABEL: @vsrani_h_w(
3867 // CHECK-NEXT: entry:
3868 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrani.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3869 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3871 v8i16 vsrani_h_w(v8i16 _1, v8i16 _2) { return __lsx_vsrani_h_w(_1, _2, 1); }
3872 // CHECK-LABEL: @vsrani_w_d(
3873 // CHECK-NEXT: entry:
3874 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrani.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3875 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3877 v4i32 vsrani_w_d(v4i32 _1, v4i32 _2) { return __lsx_vsrani_w_d(_1, _2, 1); }
3878 // CHECK-LABEL: @vsrani_d_q(
3879 // CHECK-NEXT: entry:
3880 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrani.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3881 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3883 v2i64 vsrani_d_q(v2i64 _1, v2i64 _2) { return __lsx_vsrani_d_q(_1, _2, 1); }
3884 // CHECK-LABEL: @vsrarni_b_h(
3885 // CHECK-NEXT: entry:
3886 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vsrarni.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3887 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3889 v16i8 vsrarni_b_h(v16i8 _1, v16i8 _2) { return __lsx_vsrarni_b_h(_1, _2, 1); }
3890 // CHECK-LABEL: @vsrarni_h_w(
3891 // CHECK-NEXT: entry:
3892 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vsrarni.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3893 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3895 v8i16 vsrarni_h_w(v8i16 _1, v8i16 _2) { return __lsx_vsrarni_h_w(_1, _2, 1); }
3896 // CHECK-LABEL: @vsrarni_w_d(
3897 // CHECK-NEXT: entry:
3898 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vsrarni.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3899 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3901 v4i32 vsrarni_w_d(v4i32 _1, v4i32 _2) { return __lsx_vsrarni_w_d(_1, _2, 1); }
3902 // CHECK-LABEL: @vsrarni_d_q(
3903 // CHECK-NEXT: entry:
3904 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vsrarni.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3905 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3907 v2i64 vsrarni_d_q(v2i64 _1, v2i64 _2) { return __lsx_vsrarni_d_q(_1, _2, 1); }
3908 // CHECK-LABEL: @vssrani_b_h(
3909 // CHECK-NEXT: entry:
3910 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrani.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3911 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3913 v16i8 vssrani_b_h(v16i8 _1, v16i8 _2) { return __lsx_vssrani_b_h(_1, _2, 1); }
3914 // CHECK-LABEL: @vssrani_h_w(
3915 // CHECK-NEXT: entry:
3916 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrani.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3917 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3919 v8i16 vssrani_h_w(v8i16 _1, v8i16 _2) { return __lsx_vssrani_h_w(_1, _2, 1); }
3920 // CHECK-LABEL: @vssrani_w_d(
3921 // CHECK-NEXT: entry:
3922 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrani.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3923 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3925 v4i32 vssrani_w_d(v4i32 _1, v4i32 _2) { return __lsx_vssrani_w_d(_1, _2, 1); }
3926 // CHECK-LABEL: @vssrani_d_q(
3927 // CHECK-NEXT: entry:
3928 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrani.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3929 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3931 v2i64 vssrani_d_q(v2i64 _1, v2i64 _2) { return __lsx_vssrani_d_q(_1, _2, 1); }
3932 // CHECK-LABEL: @vssrani_bu_h(
3933 // CHECK-NEXT: entry:
3934 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrani.bu.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3935 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3937 v16u8 vssrani_bu_h(v16u8 _1, v16i8 _2) { return __lsx_vssrani_bu_h(_1, _2, 1); }
3938 // CHECK-LABEL: @vssrani_hu_w(
3939 // CHECK-NEXT: entry:
3940 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrani.hu.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3941 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3943 v8u16 vssrani_hu_w(v8u16 _1, v8i16 _2) { return __lsx_vssrani_hu_w(_1, _2, 1); }
3944 // CHECK-LABEL: @vssrani_wu_d(
3945 // CHECK-NEXT: entry:
3946 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrani.wu.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3947 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3949 v4u32 vssrani_wu_d(v4u32 _1, v4i32 _2) { return __lsx_vssrani_wu_d(_1, _2, 1); }
3950 // CHECK-LABEL: @vssrani_du_q(
3951 // CHECK-NEXT: entry:
3952 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrani.du.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3953 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3955 v2u64 vssrani_du_q(v2u64 _1, v2i64 _2) { return __lsx_vssrani_du_q(_1, _2, 1); }
3956 // CHECK-LABEL: @vssrarni_b_h(
3957 // CHECK-NEXT: entry:
3958 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrarni.b.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3959 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3961 v16i8 vssrarni_b_h(v16i8 _1, v16i8 _2) { return __lsx_vssrarni_b_h(_1, _2, 1); }
3962 // CHECK-LABEL: @vssrarni_h_w(
3963 // CHECK-NEXT: entry:
3964 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrarni.h.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3965 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3967 v8i16 vssrarni_h_w(v8i16 _1, v8i16 _2) { return __lsx_vssrarni_h_w(_1, _2, 1); }
3968 // CHECK-LABEL: @vssrarni_w_d(
3969 // CHECK-NEXT: entry:
3970 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrarni.w.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3971 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
3973 v4i32 vssrarni_w_d(v4i32 _1, v4i32 _2) { return __lsx_vssrarni_w_d(_1, _2, 1); }
3974 // CHECK-LABEL: @vssrarni_d_q(
3975 // CHECK-NEXT: entry:
3976 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrarni.d.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
3977 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
3979 v2i64 vssrarni_d_q(v2i64 _1, v2i64 _2) { return __lsx_vssrarni_d_q(_1, _2, 1); }
3980 // CHECK-LABEL: @vssrarni_bu_h(
3981 // CHECK-NEXT: entry:
3982 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrarni.bu.h(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], i32 1)
3983 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
3985 v16u8 vssrarni_bu_h(v16u8 _1, v16i8 _2) {
3986 return __lsx_vssrarni_bu_h(_1, _2, 1);
3988 // CHECK-LABEL: @vssrarni_hu_w(
3989 // CHECK-NEXT: entry:
3990 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrarni.hu.w(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]], i32 1)
3991 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
3993 v8u16 vssrarni_hu_w(v8u16 _1, v8i16 _2) {
3994 return __lsx_vssrarni_hu_w(_1, _2, 1);
3996 // CHECK-LABEL: @vssrarni_wu_d(
3997 // CHECK-NEXT: entry:
3998 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrarni.wu.d(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
3999 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4001 v4u32 vssrarni_wu_d(v4u32 _1, v4i32 _2) {
4002 return __lsx_vssrarni_wu_d(_1, _2, 1);
4004 // CHECK-LABEL: @vssrarni_du_q(
4005 // CHECK-NEXT: entry:
4006 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vssrarni.du.q(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]], i32 1)
4007 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4009 v2u64 vssrarni_du_q(v2u64 _1, v2i64 _2) {
4010 return __lsx_vssrarni_du_q(_1, _2, 1);
4012 // CHECK-LABEL: @vpermi_w(
4013 // CHECK-NEXT: entry:
4014 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vpermi.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]], i32 1)
4015 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4017 v4i32 vpermi_w(v4i32 _1, v4i32 _2) { return __lsx_vpermi_w(_1, _2, 1); }
4018 // CHECK-LABEL: @vld(
4019 // CHECK-NEXT: entry:
4020 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vld(ptr [[_1:%.*]], i32 1)
4021 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
4023 v16i8 vld(void *_1) { return __lsx_vld(_1, 1); }
4024 // CHECK-LABEL: @vst(
4025 // CHECK-NEXT: entry:
4026 // CHECK-NEXT: tail call void @llvm.loongarch.lsx.vst(<16 x i8> [[_1:%.*]], ptr [[_2:%.*]], i32 1)
4027 // CHECK-NEXT: ret void
4029 void vst(v16i8 _1, void *_2) { return __lsx_vst(_1, _2, 1); }
4030 // CHECK-LABEL: @vssrlrn_b_h(
4031 // CHECK-NEXT: entry:
4032 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrlrn.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
4033 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
4035 v16i8 vssrlrn_b_h(v8i16 _1, v8i16 _2) { return __lsx_vssrlrn_b_h(_1, _2); }
4036 // CHECK-LABEL: @vssrlrn_h_w(
4037 // CHECK-NEXT: entry:
4038 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrlrn.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
4039 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
4041 v8i16 vssrlrn_h_w(v4i32 _1, v4i32 _2) { return __lsx_vssrlrn_h_w(_1, _2); }
4042 // CHECK-LABEL: @vssrlrn_w_d(
4043 // CHECK-NEXT: entry:
4044 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrlrn.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
4045 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4047 v4i32 vssrlrn_w_d(v2i64 _1, v2i64 _2) { return __lsx_vssrlrn_w_d(_1, _2); }
4048 // CHECK-LABEL: @vssrln_b_h(
4049 // CHECK-NEXT: entry:
4050 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vssrln.b.h(<8 x i16> [[_1:%.*]], <8 x i16> [[_2:%.*]])
4051 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
4053 v16i8 vssrln_b_h(v8i16 _1, v8i16 _2) { return __lsx_vssrln_b_h(_1, _2); }
4054 // CHECK-LABEL: @vssrln_h_w(
4055 // CHECK-NEXT: entry:
4056 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vssrln.h.w(<4 x i32> [[_1:%.*]], <4 x i32> [[_2:%.*]])
4057 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
4059 v8i16 vssrln_h_w(v4i32 _1, v4i32 _2) { return __lsx_vssrln_h_w(_1, _2); }
4060 // CHECK-LABEL: @vssrln_w_d(
4061 // CHECK-NEXT: entry:
4062 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vssrln.w.d(<2 x i64> [[_1:%.*]], <2 x i64> [[_2:%.*]])
4063 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4065 v4i32 vssrln_w_d(v2i64 _1, v2i64 _2) { return __lsx_vssrln_w_d(_1, _2); }
4066 // CHECK-LABEL: @vorn_v(
4067 // CHECK-NEXT: entry:
4068 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vorn.v(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]])
4069 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
4071 v16i8 vorn_v(v16i8 _1, v16i8 _2) { return __lsx_vorn_v(_1, _2); }
4072 // CHECK-LABEL: @vldi(
4073 // CHECK-NEXT: entry:
4074 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vldi(i32 1)
4075 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4077 v2i64 vldi() { return __lsx_vldi(1); }
4078 // CHECK-LABEL: @vshuf_b(
4079 // CHECK-NEXT: entry:
4080 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vshuf.b(<16 x i8> [[_1:%.*]], <16 x i8> [[_2:%.*]], <16 x i8> [[_3:%.*]])
4081 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
4083 v16i8 vshuf_b(v16i8 _1, v16i8 _2, v16i8 _3) {
4084 return __lsx_vshuf_b(_1, _2, _3);
4086 // CHECK-LABEL: @vldx(
4087 // CHECK-NEXT: entry:
4088 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vldx(ptr [[_1:%.*]], i64 1)
4089 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
4091 v16i8 vldx(void *_1) { return __lsx_vldx(_1, 1); }
4092 // CHECK-LABEL: @vstx(
4093 // CHECK-NEXT: entry:
4094 // CHECK-NEXT: tail call void @llvm.loongarch.lsx.vstx(<16 x i8> [[_1:%.*]], ptr [[_2:%.*]], i64 1)
4095 // CHECK-NEXT: ret void
4097 void vstx(v16i8 _1, void *_2) { return __lsx_vstx(_1, _2, 1); }
4098 // CHECK-LABEL: @vextl_qu_du(
4099 // CHECK-NEXT: entry:
4100 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vextl.qu.du(<2 x i64> [[_1:%.*]])
4101 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4103 v2u64 vextl_qu_du(v2u64 _1) { return __lsx_vextl_qu_du(_1); }
4104 // CHECK-LABEL: @bnz_b(
4105 // CHECK-NEXT: entry:
4106 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bnz.b(<16 x i8> [[_1:%.*]])
4107 // CHECK-NEXT: ret i32 [[TMP0]]
4109 int bnz_b(v16u8 _1) { return __lsx_bnz_b(_1); }
4110 // CHECK-LABEL: @bnz_d(
4111 // CHECK-NEXT: entry:
4112 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bnz.d(<2 x i64> [[_1:%.*]])
4113 // CHECK-NEXT: ret i32 [[TMP0]]
4115 int bnz_d(v2u64 _1) { return __lsx_bnz_d(_1); }
4116 // CHECK-LABEL: @bnz_h(
4117 // CHECK-NEXT: entry:
4118 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bnz.h(<8 x i16> [[_1:%.*]])
4119 // CHECK-NEXT: ret i32 [[TMP0]]
4121 int bnz_h(v8u16 _1) { return __lsx_bnz_h(_1); }
4122 // CHECK-LABEL: @bnz_v(
4123 // CHECK-NEXT: entry:
4124 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bnz.v(<16 x i8> [[_1:%.*]])
4125 // CHECK-NEXT: ret i32 [[TMP0]]
4127 int bnz_v(v16u8 _1) { return __lsx_bnz_v(_1); }
4128 // CHECK-LABEL: @bnz_w(
4129 // CHECK-NEXT: entry:
4130 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bnz.w(<4 x i32> [[_1:%.*]])
4131 // CHECK-NEXT: ret i32 [[TMP0]]
4133 int bnz_w(v4u32 _1) { return __lsx_bnz_w(_1); }
4134 // CHECK-LABEL: @bz_b(
4135 // CHECK-NEXT: entry:
4136 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bz.b(<16 x i8> [[_1:%.*]])
4137 // CHECK-NEXT: ret i32 [[TMP0]]
4139 int bz_b(v16u8 _1) { return __lsx_bz_b(_1); }
4140 // CHECK-LABEL: @bz_d(
4141 // CHECK-NEXT: entry:
4142 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bz.d(<2 x i64> [[_1:%.*]])
4143 // CHECK-NEXT: ret i32 [[TMP0]]
4145 int bz_d(v2u64 _1) { return __lsx_bz_d(_1); }
4146 // CHECK-LABEL: @bz_h(
4147 // CHECK-NEXT: entry:
4148 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bz.h(<8 x i16> [[_1:%.*]])
4149 // CHECK-NEXT: ret i32 [[TMP0]]
4151 int bz_h(v8u16 _1) { return __lsx_bz_h(_1); }
4152 // CHECK-LABEL: @bz_v(
4153 // CHECK-NEXT: entry:
4154 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bz.v(<16 x i8> [[_1:%.*]])
4155 // CHECK-NEXT: ret i32 [[TMP0]]
4157 int bz_v(v16u8 _1) { return __lsx_bz_v(_1); }
4158 // CHECK-LABEL: @bz_w(
4159 // CHECK-NEXT: entry:
4160 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lsx.bz.w(<4 x i32> [[_1:%.*]])
4161 // CHECK-NEXT: ret i32 [[TMP0]]
4163 int bz_w(v4u32 _1) { return __lsx_bz_w(_1); }
4164 // CHECK-LABEL: @vfcmp_caf_d(
4165 // CHECK-NEXT: entry:
4166 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.caf.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4167 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4169 v2i64 vfcmp_caf_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_caf_d(_1, _2); }
4170 // CHECK-LABEL: @vfcmp_caf_s(
4171 // CHECK-NEXT: entry:
4172 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.caf.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4173 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4175 v4i32 vfcmp_caf_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_caf_s(_1, _2); }
4176 // CHECK-LABEL: @vfcmp_ceq_d(
4177 // CHECK-NEXT: entry:
4178 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.ceq.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4179 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4181 v2i64 vfcmp_ceq_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_ceq_d(_1, _2); }
4182 // CHECK-LABEL: @vfcmp_ceq_s(
4183 // CHECK-NEXT: entry:
4184 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.ceq.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4185 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4187 v4i32 vfcmp_ceq_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_ceq_s(_1, _2); }
4188 // CHECK-LABEL: @vfcmp_cle_d(
4189 // CHECK-NEXT: entry:
4190 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cle.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4191 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4193 v2i64 vfcmp_cle_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cle_d(_1, _2); }
4194 // CHECK-LABEL: @vfcmp_cle_s(
4195 // CHECK-NEXT: entry:
4196 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cle.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4197 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4199 v4i32 vfcmp_cle_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cle_s(_1, _2); }
4200 // CHECK-LABEL: @vfcmp_clt_d(
4201 // CHECK-NEXT: entry:
4202 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.clt.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4203 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4205 v2i64 vfcmp_clt_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_clt_d(_1, _2); }
4206 // CHECK-LABEL: @vfcmp_clt_s(
4207 // CHECK-NEXT: entry:
4208 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.clt.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4209 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4211 v4i32 vfcmp_clt_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_clt_s(_1, _2); }
4212 // CHECK-LABEL: @vfcmp_cne_d(
4213 // CHECK-NEXT: entry:
4214 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cne.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4215 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4217 v2i64 vfcmp_cne_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cne_d(_1, _2); }
4218 // CHECK-LABEL: @vfcmp_cne_s(
4219 // CHECK-NEXT: entry:
4220 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cne.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4221 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4223 v4i32 vfcmp_cne_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cne_s(_1, _2); }
4224 // CHECK-LABEL: @vfcmp_cor_d(
4225 // CHECK-NEXT: entry:
4226 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cor.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4227 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4229 v2i64 vfcmp_cor_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cor_d(_1, _2); }
4230 // CHECK-LABEL: @vfcmp_cor_s(
4231 // CHECK-NEXT: entry:
4232 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cor.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4233 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4235 v4i32 vfcmp_cor_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cor_s(_1, _2); }
4236 // CHECK-LABEL: @vfcmp_cueq_d(
4237 // CHECK-NEXT: entry:
4238 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cueq.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4239 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4241 v2i64 vfcmp_cueq_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cueq_d(_1, _2); }
4242 // CHECK-LABEL: @vfcmp_cueq_s(
4243 // CHECK-NEXT: entry:
4244 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cueq.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4245 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4247 v4i32 vfcmp_cueq_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cueq_s(_1, _2); }
4248 // CHECK-LABEL: @vfcmp_cule_d(
4249 // CHECK-NEXT: entry:
4250 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cule.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4251 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4253 v2i64 vfcmp_cule_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cule_d(_1, _2); }
4254 // CHECK-LABEL: @vfcmp_cule_s(
4255 // CHECK-NEXT: entry:
4256 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cule.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4257 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4259 v4i32 vfcmp_cule_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cule_s(_1, _2); }
4260 // CHECK-LABEL: @vfcmp_cult_d(
4261 // CHECK-NEXT: entry:
4262 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cult.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4263 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4265 v2i64 vfcmp_cult_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cult_d(_1, _2); }
4266 // CHECK-LABEL: @vfcmp_cult_s(
4267 // CHECK-NEXT: entry:
4268 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cult.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4269 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4271 v4i32 vfcmp_cult_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cult_s(_1, _2); }
4272 // CHECK-LABEL: @vfcmp_cun_d(
4273 // CHECK-NEXT: entry:
4274 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cun.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4275 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4277 v2i64 vfcmp_cun_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cun_d(_1, _2); }
4278 // CHECK-LABEL: @vfcmp_cune_d(
4279 // CHECK-NEXT: entry:
4280 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.cune.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4281 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4283 v2i64 vfcmp_cune_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_cune_d(_1, _2); }
4284 // CHECK-LABEL: @vfcmp_cune_s(
4285 // CHECK-NEXT: entry:
4286 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cune.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4287 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4289 v4i32 vfcmp_cune_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cune_s(_1, _2); }
4290 // CHECK-LABEL: @vfcmp_cun_s(
4291 // CHECK-NEXT: entry:
4292 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.cun.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4293 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4295 v4i32 vfcmp_cun_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_cun_s(_1, _2); }
4296 // CHECK-LABEL: @vfcmp_saf_d(
4297 // CHECK-NEXT: entry:
4298 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.saf.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4299 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4301 v2i64 vfcmp_saf_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_saf_d(_1, _2); }
4302 // CHECK-LABEL: @vfcmp_saf_s(
4303 // CHECK-NEXT: entry:
4304 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.saf.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4305 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4307 v4i32 vfcmp_saf_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_saf_s(_1, _2); }
4308 // CHECK-LABEL: @vfcmp_seq_d(
4309 // CHECK-NEXT: entry:
4310 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.seq.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4311 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4313 v2i64 vfcmp_seq_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_seq_d(_1, _2); }
4314 // CHECK-LABEL: @vfcmp_seq_s(
4315 // CHECK-NEXT: entry:
4316 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.seq.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4317 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4319 v4i32 vfcmp_seq_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_seq_s(_1, _2); }
4320 // CHECK-LABEL: @vfcmp_sle_d(
4321 // CHECK-NEXT: entry:
4322 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sle.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4323 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4325 v2i64 vfcmp_sle_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sle_d(_1, _2); }
4326 // CHECK-LABEL: @vfcmp_sle_s(
4327 // CHECK-NEXT: entry:
4328 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sle.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4329 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4331 v4i32 vfcmp_sle_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sle_s(_1, _2); }
4332 // CHECK-LABEL: @vfcmp_slt_d(
4333 // CHECK-NEXT: entry:
4334 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.slt.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4335 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4337 v2i64 vfcmp_slt_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_slt_d(_1, _2); }
4338 // CHECK-LABEL: @vfcmp_slt_s(
4339 // CHECK-NEXT: entry:
4340 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.slt.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4341 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4343 v4i32 vfcmp_slt_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_slt_s(_1, _2); }
4344 // CHECK-LABEL: @vfcmp_sne_d(
4345 // CHECK-NEXT: entry:
4346 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sne.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4347 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4349 v2i64 vfcmp_sne_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sne_d(_1, _2); }
4350 // CHECK-LABEL: @vfcmp_sne_s(
4351 // CHECK-NEXT: entry:
4352 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sne.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4353 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4355 v4i32 vfcmp_sne_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sne_s(_1, _2); }
4356 // CHECK-LABEL: @vfcmp_sor_d(
4357 // CHECK-NEXT: entry:
4358 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sor.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4359 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4361 v2i64 vfcmp_sor_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sor_d(_1, _2); }
4362 // CHECK-LABEL: @vfcmp_sor_s(
4363 // CHECK-NEXT: entry:
4364 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sor.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4365 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4367 v4i32 vfcmp_sor_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sor_s(_1, _2); }
4368 // CHECK-LABEL: @vfcmp_sueq_d(
4369 // CHECK-NEXT: entry:
4370 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sueq.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4371 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4373 v2i64 vfcmp_sueq_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sueq_d(_1, _2); }
4374 // CHECK-LABEL: @vfcmp_sueq_s(
4375 // CHECK-NEXT: entry:
4376 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sueq.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4377 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4379 v4i32 vfcmp_sueq_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sueq_s(_1, _2); }
4380 // CHECK-LABEL: @vfcmp_sule_d(
4381 // CHECK-NEXT: entry:
4382 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sule.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4383 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4385 v2i64 vfcmp_sule_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sule_d(_1, _2); }
4386 // CHECK-LABEL: @vfcmp_sule_s(
4387 // CHECK-NEXT: entry:
4388 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sule.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4389 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4391 v4i32 vfcmp_sule_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sule_s(_1, _2); }
4392 // CHECK-LABEL: @vfcmp_sult_d(
4393 // CHECK-NEXT: entry:
4394 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sult.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4395 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4397 v2i64 vfcmp_sult_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sult_d(_1, _2); }
4398 // CHECK-LABEL: @vfcmp_sult_s(
4399 // CHECK-NEXT: entry:
4400 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sult.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4401 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4403 v4i32 vfcmp_sult_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sult_s(_1, _2); }
4404 // CHECK-LABEL: @vfcmp_sun_d(
4405 // CHECK-NEXT: entry:
4406 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sun.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4407 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4409 v2i64 vfcmp_sun_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sun_d(_1, _2); }
4410 // CHECK-LABEL: @vfcmp_sune_d(
4411 // CHECK-NEXT: entry:
4412 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vfcmp.sune.d(<2 x double> [[_1:%.*]], <2 x double> [[_2:%.*]])
4413 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4415 v2i64 vfcmp_sune_d(v2f64 _1, v2f64 _2) { return __lsx_vfcmp_sune_d(_1, _2); }
4416 // CHECK-LABEL: @vfcmp_sune_s(
4417 // CHECK-NEXT: entry:
4418 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sune.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4419 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4421 v4i32 vfcmp_sune_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sune_s(_1, _2); }
4422 // CHECK-LABEL: @vfcmp_sun_s(
4423 // CHECK-NEXT: entry:
4424 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vfcmp.sun.s(<4 x float> [[_1:%.*]], <4 x float> [[_2:%.*]])
4425 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4427 v4i32 vfcmp_sun_s(v4f32 _1, v4f32 _2) { return __lsx_vfcmp_sun_s(_1, _2); }
4428 // CHECK-LABEL: @vrepli_b(
4429 // CHECK-NEXT: entry:
4430 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i8> @llvm.loongarch.lsx.vrepli.b(i32 1)
4431 // CHECK-NEXT: ret <16 x i8> [[TMP0]]
4433 v16i8 vrepli_b() { return __lsx_vrepli_b(1); }
4434 // CHECK-LABEL: @vrepli_d(
4435 // CHECK-NEXT: entry:
4436 // CHECK-NEXT: [[TMP0:%.*]] = tail call <2 x i64> @llvm.loongarch.lsx.vrepli.d(i32 1)
4437 // CHECK-NEXT: ret <2 x i64> [[TMP0]]
4439 v2i64 vrepli_d() { return __lsx_vrepli_d(1); }
4440 // CHECK-LABEL: @vrepli_h(
4441 // CHECK-NEXT: entry:
4442 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i16> @llvm.loongarch.lsx.vrepli.h(i32 1)
4443 // CHECK-NEXT: ret <8 x i16> [[TMP0]]
4445 v8i16 vrepli_h() { return __lsx_vrepli_h(1); }
4446 // CHECK-LABEL: @vrepli_w(
4447 // CHECK-NEXT: entry:
4448 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i32> @llvm.loongarch.lsx.vrepli.w(i32 1)
4449 // CHECK-NEXT: ret <4 x i32> [[TMP0]]
4451 v4i32 vrepli_w() { return __lsx_vrepli_w(1); }