Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / CodeGen / LoongArch / lasx / builtin-alias.c
blob09b2d5fcacf5303bdb32ec93a0353bcb36fb87d3
1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // RUN: %clang_cc1 -triple loongarch64 -target-feature +lasx -O2 -emit-llvm %s -o - | FileCheck %s
4 #include <lasxintrin.h>
6 // CHECK-LABEL: @xvsll_b(
7 // CHECK-NEXT: entry:
8 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsll.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
9 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
11 v32i8 xvsll_b(v32i8 _1, v32i8 _2) { return __lasx_xvsll_b(_1, _2); }
12 // CHECK-LABEL: @xvsll_h(
13 // CHECK-NEXT: entry:
14 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsll.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
15 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
17 v16i16 xvsll_h(v16i16 _1, v16i16 _2) { return __lasx_xvsll_h(_1, _2); }
18 // CHECK-LABEL: @xvsll_w(
19 // CHECK-NEXT: entry:
20 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsll.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
21 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
23 v8i32 xvsll_w(v8i32 _1, v8i32 _2) { return __lasx_xvsll_w(_1, _2); }
24 // CHECK-LABEL: @xvsll_d(
25 // CHECK-NEXT: entry:
26 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsll.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
27 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
29 v4i64 xvsll_d(v4i64 _1, v4i64 _2) { return __lasx_xvsll_d(_1, _2); }
30 // CHECK-LABEL: @xvslli_b(
31 // CHECK-NEXT: entry:
32 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvslli.b(<32 x i8> [[_1:%.*]], i32 1)
33 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
35 v32i8 xvslli_b(v32i8 _1) { return __lasx_xvslli_b(_1, 1); }
36 // CHECK-LABEL: @xvslli_h(
37 // CHECK-NEXT: entry:
38 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvslli.h(<16 x i16> [[_1:%.*]], i32 1)
39 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
41 v16i16 xvslli_h(v16i16 _1) { return __lasx_xvslli_h(_1, 1); }
42 // CHECK-LABEL: @xvslli_w(
43 // CHECK-NEXT: entry:
44 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvslli.w(<8 x i32> [[_1:%.*]], i32 1)
45 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
47 v8i32 xvslli_w(v8i32 _1) { return __lasx_xvslli_w(_1, 1); }
48 // CHECK-LABEL: @xvslli_d(
49 // CHECK-NEXT: entry:
50 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvslli.d(<4 x i64> [[_1:%.*]], i32 1)
51 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
53 v4i64 xvslli_d(v4i64 _1) { return __lasx_xvslli_d(_1, 1); }
54 // CHECK-LABEL: @xvsra_b(
55 // CHECK-NEXT: entry:
56 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsra.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
57 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
59 v32i8 xvsra_b(v32i8 _1, v32i8 _2) { return __lasx_xvsra_b(_1, _2); }
60 // CHECK-LABEL: @xvsra_h(
61 // CHECK-NEXT: entry:
62 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsra.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
63 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
65 v16i16 xvsra_h(v16i16 _1, v16i16 _2) { return __lasx_xvsra_h(_1, _2); }
66 // CHECK-LABEL: @xvsra_w(
67 // CHECK-NEXT: entry:
68 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsra.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
69 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
71 v8i32 xvsra_w(v8i32 _1, v8i32 _2) { return __lasx_xvsra_w(_1, _2); }
72 // CHECK-LABEL: @xvsra_d(
73 // CHECK-NEXT: entry:
74 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsra.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
75 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
77 v4i64 xvsra_d(v4i64 _1, v4i64 _2) { return __lasx_xvsra_d(_1, _2); }
78 // CHECK-LABEL: @xvsrai_b(
79 // CHECK-NEXT: entry:
80 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrai.b(<32 x i8> [[_1:%.*]], i32 1)
81 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
83 v32i8 xvsrai_b(v32i8 _1) { return __lasx_xvsrai_b(_1, 1); }
84 // CHECK-LABEL: @xvsrai_h(
85 // CHECK-NEXT: entry:
86 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrai.h(<16 x i16> [[_1:%.*]], i32 1)
87 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
89 v16i16 xvsrai_h(v16i16 _1) { return __lasx_xvsrai_h(_1, 1); }
90 // CHECK-LABEL: @xvsrai_w(
91 // CHECK-NEXT: entry:
92 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrai.w(<8 x i32> [[_1:%.*]], i32 1)
93 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
95 v8i32 xvsrai_w(v8i32 _1) { return __lasx_xvsrai_w(_1, 1); }
96 // CHECK-LABEL: @xvsrai_d(
97 // CHECK-NEXT: entry:
98 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrai.d(<4 x i64> [[_1:%.*]], i32 1)
99 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
101 v4i64 xvsrai_d(v4i64 _1) { return __lasx_xvsrai_d(_1, 1); }
102 // CHECK-LABEL: @xvsrar_b(
103 // CHECK-NEXT: entry:
104 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrar.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
105 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
107 v32i8 xvsrar_b(v32i8 _1, v32i8 _2) { return __lasx_xvsrar_b(_1, _2); }
108 // CHECK-LABEL: @xvsrar_h(
109 // CHECK-NEXT: entry:
110 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrar.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
111 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
113 v16i16 xvsrar_h(v16i16 _1, v16i16 _2) { return __lasx_xvsrar_h(_1, _2); }
114 // CHECK-LABEL: @xvsrar_w(
115 // CHECK-NEXT: entry:
116 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrar.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
117 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
119 v8i32 xvsrar_w(v8i32 _1, v8i32 _2) { return __lasx_xvsrar_w(_1, _2); }
120 // CHECK-LABEL: @xvsrar_d(
121 // CHECK-NEXT: entry:
122 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrar.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
123 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
125 v4i64 xvsrar_d(v4i64 _1, v4i64 _2) { return __lasx_xvsrar_d(_1, _2); }
126 // CHECK-LABEL: @xvsrari_b(
127 // CHECK-NEXT: entry:
128 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrari.b(<32 x i8> [[_1:%.*]], i32 1)
129 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
131 v32i8 xvsrari_b(v32i8 _1) { return __lasx_xvsrari_b(_1, 1); }
132 // CHECK-LABEL: @xvsrari_h(
133 // CHECK-NEXT: entry:
134 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrari.h(<16 x i16> [[_1:%.*]], i32 1)
135 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
137 v16i16 xvsrari_h(v16i16 _1) { return __lasx_xvsrari_h(_1, 1); }
138 // CHECK-LABEL: @xvsrari_w(
139 // CHECK-NEXT: entry:
140 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrari.w(<8 x i32> [[_1:%.*]], i32 1)
141 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
143 v8i32 xvsrari_w(v8i32 _1) { return __lasx_xvsrari_w(_1, 1); }
144 // CHECK-LABEL: @xvsrari_d(
145 // CHECK-NEXT: entry:
146 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrari.d(<4 x i64> [[_1:%.*]], i32 1)
147 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
149 v4i64 xvsrari_d(v4i64 _1) { return __lasx_xvsrari_d(_1, 1); }
150 // CHECK-LABEL: @xvsrl_b(
151 // CHECK-NEXT: entry:
152 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrl.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
153 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
155 v32i8 xvsrl_b(v32i8 _1, v32i8 _2) { return __lasx_xvsrl_b(_1, _2); }
156 // CHECK-LABEL: @xvsrl_h(
157 // CHECK-NEXT: entry:
158 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrl.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
159 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
161 v16i16 xvsrl_h(v16i16 _1, v16i16 _2) { return __lasx_xvsrl_h(_1, _2); }
162 // CHECK-LABEL: @xvsrl_w(
163 // CHECK-NEXT: entry:
164 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrl.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
165 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
167 v8i32 xvsrl_w(v8i32 _1, v8i32 _2) { return __lasx_xvsrl_w(_1, _2); }
168 // CHECK-LABEL: @xvsrl_d(
169 // CHECK-NEXT: entry:
170 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrl.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
171 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
173 v4i64 xvsrl_d(v4i64 _1, v4i64 _2) { return __lasx_xvsrl_d(_1, _2); }
174 // CHECK-LABEL: @xvsrli_b(
175 // CHECK-NEXT: entry:
176 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrli.b(<32 x i8> [[_1:%.*]], i32 1)
177 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
179 v32i8 xvsrli_b(v32i8 _1) { return __lasx_xvsrli_b(_1, 1); }
180 // CHECK-LABEL: @xvsrli_h(
181 // CHECK-NEXT: entry:
182 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrli.h(<16 x i16> [[_1:%.*]], i32 1)
183 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
185 v16i16 xvsrli_h(v16i16 _1) { return __lasx_xvsrli_h(_1, 1); }
186 // CHECK-LABEL: @xvsrli_w(
187 // CHECK-NEXT: entry:
188 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrli.w(<8 x i32> [[_1:%.*]], i32 1)
189 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
191 v8i32 xvsrli_w(v8i32 _1) { return __lasx_xvsrli_w(_1, 1); }
192 // CHECK-LABEL: @xvsrli_d(
193 // CHECK-NEXT: entry:
194 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrli.d(<4 x i64> [[_1:%.*]], i32 1)
195 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
197 v4i64 xvsrli_d(v4i64 _1) { return __lasx_xvsrli_d(_1, 1); }
198 // CHECK-LABEL: @xvsrlr_b(
199 // CHECK-NEXT: entry:
200 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrlr.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
201 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
203 v32i8 xvsrlr_b(v32i8 _1, v32i8 _2) { return __lasx_xvsrlr_b(_1, _2); }
204 // CHECK-LABEL: @xvsrlr_h(
205 // CHECK-NEXT: entry:
206 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrlr.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
207 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
209 v16i16 xvsrlr_h(v16i16 _1, v16i16 _2) { return __lasx_xvsrlr_h(_1, _2); }
210 // CHECK-LABEL: @xvsrlr_w(
211 // CHECK-NEXT: entry:
212 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrlr.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
213 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
215 v8i32 xvsrlr_w(v8i32 _1, v8i32 _2) { return __lasx_xvsrlr_w(_1, _2); }
216 // CHECK-LABEL: @xvsrlr_d(
217 // CHECK-NEXT: entry:
218 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrlr.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
219 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
221 v4i64 xvsrlr_d(v4i64 _1, v4i64 _2) { return __lasx_xvsrlr_d(_1, _2); }
222 // CHECK-LABEL: @xvsrlri_b(
223 // CHECK-NEXT: entry:
224 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrlri.b(<32 x i8> [[_1:%.*]], i32 1)
225 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
227 v32i8 xvsrlri_b(v32i8 _1) { return __lasx_xvsrlri_b(_1, 1); }
228 // CHECK-LABEL: @xvsrlri_h(
229 // CHECK-NEXT: entry:
230 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrlri.h(<16 x i16> [[_1:%.*]], i32 1)
231 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
233 v16i16 xvsrlri_h(v16i16 _1) { return __lasx_xvsrlri_h(_1, 1); }
234 // CHECK-LABEL: @xvsrlri_w(
235 // CHECK-NEXT: entry:
236 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrlri.w(<8 x i32> [[_1:%.*]], i32 1)
237 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
239 v8i32 xvsrlri_w(v8i32 _1) { return __lasx_xvsrlri_w(_1, 1); }
240 // CHECK-LABEL: @xvsrlri_d(
241 // CHECK-NEXT: entry:
242 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrlri.d(<4 x i64> [[_1:%.*]], i32 1)
243 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
245 v4i64 xvsrlri_d(v4i64 _1) { return __lasx_xvsrlri_d(_1, 1); }
246 // CHECK-LABEL: @xvbitclr_b(
247 // CHECK-NEXT: entry:
248 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitclr.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
249 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
251 v32u8 xvbitclr_b(v32u8 _1, v32u8 _2) { return __lasx_xvbitclr_b(_1, _2); }
252 // CHECK-LABEL: @xvbitclr_h(
253 // CHECK-NEXT: entry:
254 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvbitclr.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
255 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
257 v16u16 xvbitclr_h(v16u16 _1, v16u16 _2) { return __lasx_xvbitclr_h(_1, _2); }
258 // CHECK-LABEL: @xvbitclr_w(
259 // CHECK-NEXT: entry:
260 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvbitclr.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
261 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
263 v8u32 xvbitclr_w(v8u32 _1, v8u32 _2) { return __lasx_xvbitclr_w(_1, _2); }
264 // CHECK-LABEL: @xvbitclr_d(
265 // CHECK-NEXT: entry:
266 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvbitclr.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
267 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
269 v4u64 xvbitclr_d(v4u64 _1, v4u64 _2) { return __lasx_xvbitclr_d(_1, _2); }
270 // CHECK-LABEL: @xvbitclri_b(
271 // CHECK-NEXT: entry:
272 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitclri.b(<32 x i8> [[_1:%.*]], i32 1)
273 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
275 v32u8 xvbitclri_b(v32u8 _1) { return __lasx_xvbitclri_b(_1, 1); }
276 // CHECK-LABEL: @xvbitclri_h(
277 // CHECK-NEXT: entry:
278 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvbitclri.h(<16 x i16> [[_1:%.*]], i32 1)
279 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
281 v16u16 xvbitclri_h(v16u16 _1) { return __lasx_xvbitclri_h(_1, 1); }
282 // CHECK-LABEL: @xvbitclri_w(
283 // CHECK-NEXT: entry:
284 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvbitclri.w(<8 x i32> [[_1:%.*]], i32 1)
285 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
287 v8u32 xvbitclri_w(v8u32 _1) { return __lasx_xvbitclri_w(_1, 1); }
288 // CHECK-LABEL: @xvbitclri_d(
289 // CHECK-NEXT: entry:
290 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvbitclri.d(<4 x i64> [[_1:%.*]], i32 1)
291 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
293 v4u64 xvbitclri_d(v4u64 _1) { return __lasx_xvbitclri_d(_1, 1); }
294 // CHECK-LABEL: @xvbitset_b(
295 // CHECK-NEXT: entry:
296 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitset.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
297 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
299 v32u8 xvbitset_b(v32u8 _1, v32u8 _2) { return __lasx_xvbitset_b(_1, _2); }
300 // CHECK-LABEL: @xvbitset_h(
301 // CHECK-NEXT: entry:
302 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvbitset.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
303 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
305 v16u16 xvbitset_h(v16u16 _1, v16u16 _2) { return __lasx_xvbitset_h(_1, _2); }
306 // CHECK-LABEL: @xvbitset_w(
307 // CHECK-NEXT: entry:
308 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvbitset.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
309 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
311 v8u32 xvbitset_w(v8u32 _1, v8u32 _2) { return __lasx_xvbitset_w(_1, _2); }
312 // CHECK-LABEL: @xvbitset_d(
313 // CHECK-NEXT: entry:
314 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvbitset.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
315 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
317 v4u64 xvbitset_d(v4u64 _1, v4u64 _2) { return __lasx_xvbitset_d(_1, _2); }
318 // CHECK-LABEL: @xvbitseti_b(
319 // CHECK-NEXT: entry:
320 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitseti.b(<32 x i8> [[_1:%.*]], i32 1)
321 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
323 v32u8 xvbitseti_b(v32u8 _1) { return __lasx_xvbitseti_b(_1, 1); }
324 // CHECK-LABEL: @xvbitseti_h(
325 // CHECK-NEXT: entry:
326 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvbitseti.h(<16 x i16> [[_1:%.*]], i32 1)
327 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
329 v16u16 xvbitseti_h(v16u16 _1) { return __lasx_xvbitseti_h(_1, 1); }
330 // CHECK-LABEL: @xvbitseti_w(
331 // CHECK-NEXT: entry:
332 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvbitseti.w(<8 x i32> [[_1:%.*]], i32 1)
333 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
335 v8u32 xvbitseti_w(v8u32 _1) { return __lasx_xvbitseti_w(_1, 1); }
336 // CHECK-LABEL: @xvbitseti_d(
337 // CHECK-NEXT: entry:
338 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvbitseti.d(<4 x i64> [[_1:%.*]], i32 1)
339 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
341 v4u64 xvbitseti_d(v4u64 _1) { return __lasx_xvbitseti_d(_1, 1); }
342 // CHECK-LABEL: @xvbitrev_b(
343 // CHECK-NEXT: entry:
344 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitrev.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
345 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
347 v32u8 xvbitrev_b(v32u8 _1, v32u8 _2) { return __lasx_xvbitrev_b(_1, _2); }
348 // CHECK-LABEL: @xvbitrev_h(
349 // CHECK-NEXT: entry:
350 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvbitrev.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
351 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
353 v16u16 xvbitrev_h(v16u16 _1, v16u16 _2) { return __lasx_xvbitrev_h(_1, _2); }
354 // CHECK-LABEL: @xvbitrev_w(
355 // CHECK-NEXT: entry:
356 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvbitrev.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
357 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
359 v8u32 xvbitrev_w(v8u32 _1, v8u32 _2) { return __lasx_xvbitrev_w(_1, _2); }
360 // CHECK-LABEL: @xvbitrev_d(
361 // CHECK-NEXT: entry:
362 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvbitrev.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
363 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
365 v4u64 xvbitrev_d(v4u64 _1, v4u64 _2) { return __lasx_xvbitrev_d(_1, _2); }
366 // CHECK-LABEL: @xvbitrevi_b(
367 // CHECK-NEXT: entry:
368 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitrevi.b(<32 x i8> [[_1:%.*]], i32 1)
369 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
371 v32u8 xvbitrevi_b(v32u8 _1) { return __lasx_xvbitrevi_b(_1, 1); }
372 // CHECK-LABEL: @xvbitrevi_h(
373 // CHECK-NEXT: entry:
374 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvbitrevi.h(<16 x i16> [[_1:%.*]], i32 1)
375 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
377 v16u16 xvbitrevi_h(v16u16 _1) { return __lasx_xvbitrevi_h(_1, 1); }
378 // CHECK-LABEL: @xvbitrevi_w(
379 // CHECK-NEXT: entry:
380 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvbitrevi.w(<8 x i32> [[_1:%.*]], i32 1)
381 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
383 v8u32 xvbitrevi_w(v8u32 _1) { return __lasx_xvbitrevi_w(_1, 1); }
384 // CHECK-LABEL: @xvbitrevi_d(
385 // CHECK-NEXT: entry:
386 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvbitrevi.d(<4 x i64> [[_1:%.*]], i32 1)
387 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
389 v4u64 xvbitrevi_d(v4u64 _1) { return __lasx_xvbitrevi_d(_1, 1); }
390 // CHECK-LABEL: @xvadd_b(
391 // CHECK-NEXT: entry:
392 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvadd.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
393 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
395 v32i8 xvadd_b(v32i8 _1, v32i8 _2) { return __lasx_xvadd_b(_1, _2); }
396 // CHECK-LABEL: @xvadd_h(
397 // CHECK-NEXT: entry:
398 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvadd.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
399 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
401 v16i16 xvadd_h(v16i16 _1, v16i16 _2) { return __lasx_xvadd_h(_1, _2); }
402 // CHECK-LABEL: @xvadd_w(
403 // CHECK-NEXT: entry:
404 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvadd.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
405 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
407 v8i32 xvadd_w(v8i32 _1, v8i32 _2) { return __lasx_xvadd_w(_1, _2); }
408 // CHECK-LABEL: @xvadd_d(
409 // CHECK-NEXT: entry:
410 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvadd.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
411 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
413 v4i64 xvadd_d(v4i64 _1, v4i64 _2) { return __lasx_xvadd_d(_1, _2); }
414 // CHECK-LABEL: @xvaddi_bu(
415 // CHECK-NEXT: entry:
416 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvaddi.bu(<32 x i8> [[_1:%.*]], i32 1)
417 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
419 v32i8 xvaddi_bu(v32i8 _1) { return __lasx_xvaddi_bu(_1, 1); }
420 // CHECK-LABEL: @xvaddi_hu(
421 // CHECK-NEXT: entry:
422 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvaddi.hu(<16 x i16> [[_1:%.*]], i32 1)
423 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
425 v16i16 xvaddi_hu(v16i16 _1) { return __lasx_xvaddi_hu(_1, 1); }
426 // CHECK-LABEL: @xvaddi_wu(
427 // CHECK-NEXT: entry:
428 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvaddi.wu(<8 x i32> [[_1:%.*]], i32 1)
429 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
431 v8i32 xvaddi_wu(v8i32 _1) { return __lasx_xvaddi_wu(_1, 1); }
432 // CHECK-LABEL: @xvaddi_du(
433 // CHECK-NEXT: entry:
434 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddi.du(<4 x i64> [[_1:%.*]], i32 1)
435 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
437 v4i64 xvaddi_du(v4i64 _1) { return __lasx_xvaddi_du(_1, 1); }
438 // CHECK-LABEL: @xvsub_b(
439 // CHECK-NEXT: entry:
440 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsub.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
441 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
443 v32i8 xvsub_b(v32i8 _1, v32i8 _2) { return __lasx_xvsub_b(_1, _2); }
444 // CHECK-LABEL: @xvsub_h(
445 // CHECK-NEXT: entry:
446 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsub.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
447 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
449 v16i16 xvsub_h(v16i16 _1, v16i16 _2) { return __lasx_xvsub_h(_1, _2); }
450 // CHECK-LABEL: @xvsub_w(
451 // CHECK-NEXT: entry:
452 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsub.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
453 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
455 v8i32 xvsub_w(v8i32 _1, v8i32 _2) { return __lasx_xvsub_w(_1, _2); }
456 // CHECK-LABEL: @xvsub_d(
457 // CHECK-NEXT: entry:
458 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsub.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
459 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
461 v4i64 xvsub_d(v4i64 _1, v4i64 _2) { return __lasx_xvsub_d(_1, _2); }
462 // CHECK-LABEL: @xvsubi_bu(
463 // CHECK-NEXT: entry:
464 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsubi.bu(<32 x i8> [[_1:%.*]], i32 1)
465 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
467 v32i8 xvsubi_bu(v32i8 _1) { return __lasx_xvsubi_bu(_1, 1); }
468 // CHECK-LABEL: @xvsubi_hu(
469 // CHECK-NEXT: entry:
470 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsubi.hu(<16 x i16> [[_1:%.*]], i32 1)
471 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
473 v16i16 xvsubi_hu(v16i16 _1) { return __lasx_xvsubi_hu(_1, 1); }
474 // CHECK-LABEL: @xvsubi_wu(
475 // CHECK-NEXT: entry:
476 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsubi.wu(<8 x i32> [[_1:%.*]], i32 1)
477 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
479 v8i32 xvsubi_wu(v8i32 _1) { return __lasx_xvsubi_wu(_1, 1); }
480 // CHECK-LABEL: @xvsubi_du(
481 // CHECK-NEXT: entry:
482 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubi.du(<4 x i64> [[_1:%.*]], i32 1)
483 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
485 v4i64 xvsubi_du(v4i64 _1) { return __lasx_xvsubi_du(_1, 1); }
486 // CHECK-LABEL: @xvmax_b(
487 // CHECK-NEXT: entry:
488 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmax.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
489 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
491 v32i8 xvmax_b(v32i8 _1, v32i8 _2) { return __lasx_xvmax_b(_1, _2); }
492 // CHECK-LABEL: @xvmax_h(
493 // CHECK-NEXT: entry:
494 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmax.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
495 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
497 v16i16 xvmax_h(v16i16 _1, v16i16 _2) { return __lasx_xvmax_h(_1, _2); }
498 // CHECK-LABEL: @xvmax_w(
499 // CHECK-NEXT: entry:
500 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmax.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
501 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
503 v8i32 xvmax_w(v8i32 _1, v8i32 _2) { return __lasx_xvmax_w(_1, _2); }
504 // CHECK-LABEL: @xvmax_d(
505 // CHECK-NEXT: entry:
506 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmax.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
507 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
509 v4i64 xvmax_d(v4i64 _1, v4i64 _2) { return __lasx_xvmax_d(_1, _2); }
510 // CHECK-LABEL: @xvmaxi_b(
511 // CHECK-NEXT: entry:
512 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmaxi.b(<32 x i8> [[_1:%.*]], i32 1)
513 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
515 v32i8 xvmaxi_b(v32i8 _1) { return __lasx_xvmaxi_b(_1, 1); }
516 // CHECK-LABEL: @xvmaxi_h(
517 // CHECK-NEXT: entry:
518 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaxi.h(<16 x i16> [[_1:%.*]], i32 1)
519 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
521 v16i16 xvmaxi_h(v16i16 _1) { return __lasx_xvmaxi_h(_1, 1); }
522 // CHECK-LABEL: @xvmaxi_w(
523 // CHECK-NEXT: entry:
524 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaxi.w(<8 x i32> [[_1:%.*]], i32 1)
525 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
527 v8i32 xvmaxi_w(v8i32 _1) { return __lasx_xvmaxi_w(_1, 1); }
528 // CHECK-LABEL: @xvmaxi_d(
529 // CHECK-NEXT: entry:
530 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaxi.d(<4 x i64> [[_1:%.*]], i32 1)
531 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
533 v4i64 xvmaxi_d(v4i64 _1) { return __lasx_xvmaxi_d(_1, 1); }
534 // CHECK-LABEL: @xvmax_bu(
535 // CHECK-NEXT: entry:
536 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmax.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
537 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
539 v32u8 xvmax_bu(v32u8 _1, v32u8 _2) { return __lasx_xvmax_bu(_1, _2); }
540 // CHECK-LABEL: @xvmax_hu(
541 // CHECK-NEXT: entry:
542 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmax.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
543 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
545 v16u16 xvmax_hu(v16u16 _1, v16u16 _2) { return __lasx_xvmax_hu(_1, _2); }
546 // CHECK-LABEL: @xvmax_wu(
547 // CHECK-NEXT: entry:
548 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmax.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
549 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
551 v8u32 xvmax_wu(v8u32 _1, v8u32 _2) { return __lasx_xvmax_wu(_1, _2); }
552 // CHECK-LABEL: @xvmax_du(
553 // CHECK-NEXT: entry:
554 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmax.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
555 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
557 v4u64 xvmax_du(v4u64 _1, v4u64 _2) { return __lasx_xvmax_du(_1, _2); }
558 // CHECK-LABEL: @xvmaxi_bu(
559 // CHECK-NEXT: entry:
560 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmaxi.bu(<32 x i8> [[_1:%.*]], i32 1)
561 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
563 v32u8 xvmaxi_bu(v32u8 _1) { return __lasx_xvmaxi_bu(_1, 1); }
564 // CHECK-LABEL: @xvmaxi_hu(
565 // CHECK-NEXT: entry:
566 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaxi.hu(<16 x i16> [[_1:%.*]], i32 1)
567 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
569 v16u16 xvmaxi_hu(v16u16 _1) { return __lasx_xvmaxi_hu(_1, 1); }
570 // CHECK-LABEL: @xvmaxi_wu(
571 // CHECK-NEXT: entry:
572 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaxi.wu(<8 x i32> [[_1:%.*]], i32 1)
573 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
575 v8u32 xvmaxi_wu(v8u32 _1) { return __lasx_xvmaxi_wu(_1, 1); }
576 // CHECK-LABEL: @xvmaxi_du(
577 // CHECK-NEXT: entry:
578 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaxi.du(<4 x i64> [[_1:%.*]], i32 1)
579 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
581 v4u64 xvmaxi_du(v4u64 _1) { return __lasx_xvmaxi_du(_1, 1); }
582 // CHECK-LABEL: @xvmin_b(
583 // CHECK-NEXT: entry:
584 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmin.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
585 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
587 v32i8 xvmin_b(v32i8 _1, v32i8 _2) { return __lasx_xvmin_b(_1, _2); }
588 // CHECK-LABEL: @xvmin_h(
589 // CHECK-NEXT: entry:
590 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmin.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
591 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
593 v16i16 xvmin_h(v16i16 _1, v16i16 _2) { return __lasx_xvmin_h(_1, _2); }
594 // CHECK-LABEL: @xvmin_w(
595 // CHECK-NEXT: entry:
596 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmin.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
597 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
599 v8i32 xvmin_w(v8i32 _1, v8i32 _2) { return __lasx_xvmin_w(_1, _2); }
600 // CHECK-LABEL: @xvmin_d(
601 // CHECK-NEXT: entry:
602 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmin.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
603 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
605 v4i64 xvmin_d(v4i64 _1, v4i64 _2) { return __lasx_xvmin_d(_1, _2); }
606 // CHECK-LABEL: @xvmini_b(
607 // CHECK-NEXT: entry:
608 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmini.b(<32 x i8> [[_1:%.*]], i32 1)
609 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
611 v32i8 xvmini_b(v32i8 _1) { return __lasx_xvmini_b(_1, 1); }
612 // CHECK-LABEL: @xvmini_h(
613 // CHECK-NEXT: entry:
614 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmini.h(<16 x i16> [[_1:%.*]], i32 1)
615 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
617 v16i16 xvmini_h(v16i16 _1) { return __lasx_xvmini_h(_1, 1); }
618 // CHECK-LABEL: @xvmini_w(
619 // CHECK-NEXT: entry:
620 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmini.w(<8 x i32> [[_1:%.*]], i32 1)
621 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
623 v8i32 xvmini_w(v8i32 _1) { return __lasx_xvmini_w(_1, 1); }
624 // CHECK-LABEL: @xvmini_d(
625 // CHECK-NEXT: entry:
626 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmini.d(<4 x i64> [[_1:%.*]], i32 1)
627 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
629 v4i64 xvmini_d(v4i64 _1) { return __lasx_xvmini_d(_1, 1); }
630 // CHECK-LABEL: @xvmin_bu(
631 // CHECK-NEXT: entry:
632 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmin.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
633 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
635 v32u8 xvmin_bu(v32u8 _1, v32u8 _2) { return __lasx_xvmin_bu(_1, _2); }
636 // CHECK-LABEL: @xvmin_hu(
637 // CHECK-NEXT: entry:
638 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmin.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
639 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
641 v16u16 xvmin_hu(v16u16 _1, v16u16 _2) { return __lasx_xvmin_hu(_1, _2); }
642 // CHECK-LABEL: @xvmin_wu(
643 // CHECK-NEXT: entry:
644 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmin.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
645 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
647 v8u32 xvmin_wu(v8u32 _1, v8u32 _2) { return __lasx_xvmin_wu(_1, _2); }
648 // CHECK-LABEL: @xvmin_du(
649 // CHECK-NEXT: entry:
650 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmin.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
651 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
653 v4u64 xvmin_du(v4u64 _1, v4u64 _2) { return __lasx_xvmin_du(_1, _2); }
654 // CHECK-LABEL: @xvmini_bu(
655 // CHECK-NEXT: entry:
656 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmini.bu(<32 x i8> [[_1:%.*]], i32 1)
657 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
659 v32u8 xvmini_bu(v32u8 _1) { return __lasx_xvmini_bu(_1, 1); }
660 // CHECK-LABEL: @xvmini_hu(
661 // CHECK-NEXT: entry:
662 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmini.hu(<16 x i16> [[_1:%.*]], i32 1)
663 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
665 v16u16 xvmini_hu(v16u16 _1) { return __lasx_xvmini_hu(_1, 1); }
666 // CHECK-LABEL: @xvmini_wu(
667 // CHECK-NEXT: entry:
668 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmini.wu(<8 x i32> [[_1:%.*]], i32 1)
669 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
671 v8u32 xvmini_wu(v8u32 _1) { return __lasx_xvmini_wu(_1, 1); }
672 // CHECK-LABEL: @xvmini_du(
673 // CHECK-NEXT: entry:
674 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmini.du(<4 x i64> [[_1:%.*]], i32 1)
675 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
677 v4u64 xvmini_du(v4u64 _1) { return __lasx_xvmini_du(_1, 1); }
678 // CHECK-LABEL: @xvseq_b(
679 // CHECK-NEXT: entry:
680 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvseq.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
681 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
683 v32i8 xvseq_b(v32i8 _1, v32i8 _2) { return __lasx_xvseq_b(_1, _2); }
684 // CHECK-LABEL: @xvseq_h(
685 // CHECK-NEXT: entry:
686 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvseq.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
687 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
689 v16i16 xvseq_h(v16i16 _1, v16i16 _2) { return __lasx_xvseq_h(_1, _2); }
690 // CHECK-LABEL: @xvseq_w(
691 // CHECK-NEXT: entry:
692 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvseq.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
693 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
695 v8i32 xvseq_w(v8i32 _1, v8i32 _2) { return __lasx_xvseq_w(_1, _2); }
696 // CHECK-LABEL: @xvseq_d(
697 // CHECK-NEXT: entry:
698 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvseq.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
699 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
701 v4i64 xvseq_d(v4i64 _1, v4i64 _2) { return __lasx_xvseq_d(_1, _2); }
702 // CHECK-LABEL: @xvseqi_b(
703 // CHECK-NEXT: entry:
704 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvseqi.b(<32 x i8> [[_1:%.*]], i32 1)
705 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
707 v32i8 xvseqi_b(v32i8 _1) { return __lasx_xvseqi_b(_1, 1); }
708 // CHECK-LABEL: @xvseqi_h(
709 // CHECK-NEXT: entry:
710 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvseqi.h(<16 x i16> [[_1:%.*]], i32 1)
711 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
713 v16i16 xvseqi_h(v16i16 _1) { return __lasx_xvseqi_h(_1, 1); }
714 // CHECK-LABEL: @xvseqi_w(
715 // CHECK-NEXT: entry:
716 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvseqi.w(<8 x i32> [[_1:%.*]], i32 1)
717 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
719 v8i32 xvseqi_w(v8i32 _1) { return __lasx_xvseqi_w(_1, 1); }
720 // CHECK-LABEL: @xvseqi_d(
721 // CHECK-NEXT: entry:
722 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvseqi.d(<4 x i64> [[_1:%.*]], i32 1)
723 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
725 v4i64 xvseqi_d(v4i64 _1) { return __lasx_xvseqi_d(_1, 1); }
726 // CHECK-LABEL: @xvslt_b(
727 // CHECK-NEXT: entry:
728 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvslt.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
729 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
731 v32i8 xvslt_b(v32i8 _1, v32i8 _2) { return __lasx_xvslt_b(_1, _2); }
732 // CHECK-LABEL: @xvslt_h(
733 // CHECK-NEXT: entry:
734 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvslt.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
735 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
737 v16i16 xvslt_h(v16i16 _1, v16i16 _2) { return __lasx_xvslt_h(_1, _2); }
738 // CHECK-LABEL: @xvslt_w(
739 // CHECK-NEXT: entry:
740 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvslt.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
741 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
743 v8i32 xvslt_w(v8i32 _1, v8i32 _2) { return __lasx_xvslt_w(_1, _2); }
744 // CHECK-LABEL: @xvslt_d(
745 // CHECK-NEXT: entry:
746 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvslt.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
747 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
749 v4i64 xvslt_d(v4i64 _1, v4i64 _2) { return __lasx_xvslt_d(_1, _2); }
750 // CHECK-LABEL: @xvslti_b(
751 // CHECK-NEXT: entry:
752 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvslti.b(<32 x i8> [[_1:%.*]], i32 1)
753 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
755 v32i8 xvslti_b(v32i8 _1) { return __lasx_xvslti_b(_1, 1); }
756 // CHECK-LABEL: @xvslti_h(
757 // CHECK-NEXT: entry:
758 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvslti.h(<16 x i16> [[_1:%.*]], i32 1)
759 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
761 v16i16 xvslti_h(v16i16 _1) { return __lasx_xvslti_h(_1, 1); }
762 // CHECK-LABEL: @xvslti_w(
763 // CHECK-NEXT: entry:
764 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvslti.w(<8 x i32> [[_1:%.*]], i32 1)
765 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
767 v8i32 xvslti_w(v8i32 _1) { return __lasx_xvslti_w(_1, 1); }
768 // CHECK-LABEL: @xvslti_d(
769 // CHECK-NEXT: entry:
770 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvslti.d(<4 x i64> [[_1:%.*]], i32 1)
771 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
773 v4i64 xvslti_d(v4i64 _1) { return __lasx_xvslti_d(_1, 1); }
774 // CHECK-LABEL: @xvslt_bu(
775 // CHECK-NEXT: entry:
776 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvslt.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
777 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
779 v32i8 xvslt_bu(v32u8 _1, v32u8 _2) { return __lasx_xvslt_bu(_1, _2); }
780 // CHECK-LABEL: @xvslt_hu(
781 // CHECK-NEXT: entry:
782 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvslt.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
783 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
785 v16i16 xvslt_hu(v16u16 _1, v16u16 _2) { return __lasx_xvslt_hu(_1, _2); }
786 // CHECK-LABEL: @xvslt_wu(
787 // CHECK-NEXT: entry:
788 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvslt.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
789 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
791 v8i32 xvslt_wu(v8u32 _1, v8u32 _2) { return __lasx_xvslt_wu(_1, _2); }
792 // CHECK-LABEL: @xvslt_du(
793 // CHECK-NEXT: entry:
794 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvslt.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
795 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
797 v4i64 xvslt_du(v4u64 _1, v4u64 _2) { return __lasx_xvslt_du(_1, _2); }
798 // CHECK-LABEL: @xvslti_bu(
799 // CHECK-NEXT: entry:
800 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvslti.bu(<32 x i8> [[_1:%.*]], i32 1)
801 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
803 v32i8 xvslti_bu(v32u8 _1) { return __lasx_xvslti_bu(_1, 1); }
804 // CHECK-LABEL: @xvslti_hu(
805 // CHECK-NEXT: entry:
806 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvslti.hu(<16 x i16> [[_1:%.*]], i32 1)
807 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
809 v16i16 xvslti_hu(v16u16 _1) { return __lasx_xvslti_hu(_1, 1); }
810 // CHECK-LABEL: @xvslti_wu(
811 // CHECK-NEXT: entry:
812 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvslti.wu(<8 x i32> [[_1:%.*]], i32 1)
813 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
815 v8i32 xvslti_wu(v8u32 _1) { return __lasx_xvslti_wu(_1, 1); }
816 // CHECK-LABEL: @xvslti_du(
817 // CHECK-NEXT: entry:
818 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvslti.du(<4 x i64> [[_1:%.*]], i32 1)
819 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
821 v4i64 xvslti_du(v4u64 _1) { return __lasx_xvslti_du(_1, 1); }
822 // CHECK-LABEL: @xvsle_b(
823 // CHECK-NEXT: entry:
824 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsle.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
825 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
827 v32i8 xvsle_b(v32i8 _1, v32i8 _2) { return __lasx_xvsle_b(_1, _2); }
828 // CHECK-LABEL: @xvsle_h(
829 // CHECK-NEXT: entry:
830 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsle.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
831 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
833 v16i16 xvsle_h(v16i16 _1, v16i16 _2) { return __lasx_xvsle_h(_1, _2); }
834 // CHECK-LABEL: @xvsle_w(
835 // CHECK-NEXT: entry:
836 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsle.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
837 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
839 v8i32 xvsle_w(v8i32 _1, v8i32 _2) { return __lasx_xvsle_w(_1, _2); }
840 // CHECK-LABEL: @xvsle_d(
841 // CHECK-NEXT: entry:
842 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsle.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
843 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
845 v4i64 xvsle_d(v4i64 _1, v4i64 _2) { return __lasx_xvsle_d(_1, _2); }
846 // CHECK-LABEL: @xvslei_b(
847 // CHECK-NEXT: entry:
848 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvslei.b(<32 x i8> [[_1:%.*]], i32 1)
849 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
851 v32i8 xvslei_b(v32i8 _1) { return __lasx_xvslei_b(_1, 1); }
852 // CHECK-LABEL: @xvslei_h(
853 // CHECK-NEXT: entry:
854 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvslei.h(<16 x i16> [[_1:%.*]], i32 1)
855 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
857 v16i16 xvslei_h(v16i16 _1) { return __lasx_xvslei_h(_1, 1); }
858 // CHECK-LABEL: @xvslei_w(
859 // CHECK-NEXT: entry:
860 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvslei.w(<8 x i32> [[_1:%.*]], i32 1)
861 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
863 v8i32 xvslei_w(v8i32 _1) { return __lasx_xvslei_w(_1, 1); }
864 // CHECK-LABEL: @xvslei_d(
865 // CHECK-NEXT: entry:
866 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvslei.d(<4 x i64> [[_1:%.*]], i32 1)
867 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
869 v4i64 xvslei_d(v4i64 _1) { return __lasx_xvslei_d(_1, 1); }
870 // CHECK-LABEL: @xvsle_bu(
871 // CHECK-NEXT: entry:
872 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsle.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
873 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
875 v32i8 xvsle_bu(v32u8 _1, v32u8 _2) { return __lasx_xvsle_bu(_1, _2); }
876 // CHECK-LABEL: @xvsle_hu(
877 // CHECK-NEXT: entry:
878 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsle.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
879 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
881 v16i16 xvsle_hu(v16u16 _1, v16u16 _2) { return __lasx_xvsle_hu(_1, _2); }
882 // CHECK-LABEL: @xvsle_wu(
883 // CHECK-NEXT: entry:
884 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsle.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
885 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
887 v8i32 xvsle_wu(v8u32 _1, v8u32 _2) { return __lasx_xvsle_wu(_1, _2); }
888 // CHECK-LABEL: @xvsle_du(
889 // CHECK-NEXT: entry:
890 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsle.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
891 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
893 v4i64 xvsle_du(v4u64 _1, v4u64 _2) { return __lasx_xvsle_du(_1, _2); }
894 // CHECK-LABEL: @xvslei_bu(
895 // CHECK-NEXT: entry:
896 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvslei.bu(<32 x i8> [[_1:%.*]], i32 1)
897 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
899 v32i8 xvslei_bu(v32u8 _1) { return __lasx_xvslei_bu(_1, 1); }
900 // CHECK-LABEL: @xvslei_hu(
901 // CHECK-NEXT: entry:
902 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvslei.hu(<16 x i16> [[_1:%.*]], i32 1)
903 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
905 v16i16 xvslei_hu(v16u16 _1) { return __lasx_xvslei_hu(_1, 1); }
906 // CHECK-LABEL: @xvslei_wu(
907 // CHECK-NEXT: entry:
908 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvslei.wu(<8 x i32> [[_1:%.*]], i32 1)
909 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
911 v8i32 xvslei_wu(v8u32 _1) { return __lasx_xvslei_wu(_1, 1); }
912 // CHECK-LABEL: @xvslei_du(
913 // CHECK-NEXT: entry:
914 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvslei.du(<4 x i64> [[_1:%.*]], i32 1)
915 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
917 v4i64 xvslei_du(v4u64 _1) { return __lasx_xvslei_du(_1, 1); }
918 // CHECK-LABEL: @xvsat_b(
919 // CHECK-NEXT: entry:
920 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsat.b(<32 x i8> [[_1:%.*]], i32 1)
921 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
923 v32i8 xvsat_b(v32i8 _1) { return __lasx_xvsat_b(_1, 1); }
924 // CHECK-LABEL: @xvsat_h(
925 // CHECK-NEXT: entry:
926 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsat.h(<16 x i16> [[_1:%.*]], i32 1)
927 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
929 v16i16 xvsat_h(v16i16 _1) { return __lasx_xvsat_h(_1, 1); }
930 // CHECK-LABEL: @xvsat_w(
931 // CHECK-NEXT: entry:
932 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsat.w(<8 x i32> [[_1:%.*]], i32 1)
933 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
935 v8i32 xvsat_w(v8i32 _1) { return __lasx_xvsat_w(_1, 1); }
936 // CHECK-LABEL: @xvsat_d(
937 // CHECK-NEXT: entry:
938 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsat.d(<4 x i64> [[_1:%.*]], i32 1)
939 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
941 v4i64 xvsat_d(v4i64 _1) { return __lasx_xvsat_d(_1, 1); }
942 // CHECK-LABEL: @xvsat_bu(
943 // CHECK-NEXT: entry:
944 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsat.bu(<32 x i8> [[_1:%.*]], i32 1)
945 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
947 v32u8 xvsat_bu(v32u8 _1) { return __lasx_xvsat_bu(_1, 1); }
948 // CHECK-LABEL: @xvsat_hu(
949 // CHECK-NEXT: entry:
950 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsat.hu(<16 x i16> [[_1:%.*]], i32 1)
951 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
953 v16u16 xvsat_hu(v16u16 _1) { return __lasx_xvsat_hu(_1, 1); }
954 // CHECK-LABEL: @xvsat_wu(
955 // CHECK-NEXT: entry:
956 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsat.wu(<8 x i32> [[_1:%.*]], i32 1)
957 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
959 v8u32 xvsat_wu(v8u32 _1) { return __lasx_xvsat_wu(_1, 1); }
960 // CHECK-LABEL: @xvsat_du(
961 // CHECK-NEXT: entry:
962 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsat.du(<4 x i64> [[_1:%.*]], i32 1)
963 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
965 v4u64 xvsat_du(v4u64 _1) { return __lasx_xvsat_du(_1, 1); }
966 // CHECK-LABEL: @xvadda_b(
967 // CHECK-NEXT: entry:
968 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvadda.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
969 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
971 v32i8 xvadda_b(v32i8 _1, v32i8 _2) { return __lasx_xvadda_b(_1, _2); }
972 // CHECK-LABEL: @xvadda_h(
973 // CHECK-NEXT: entry:
974 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvadda.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
975 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
977 v16i16 xvadda_h(v16i16 _1, v16i16 _2) { return __lasx_xvadda_h(_1, _2); }
978 // CHECK-LABEL: @xvadda_w(
979 // CHECK-NEXT: entry:
980 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvadda.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
981 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
983 v8i32 xvadda_w(v8i32 _1, v8i32 _2) { return __lasx_xvadda_w(_1, _2); }
984 // CHECK-LABEL: @xvadda_d(
985 // CHECK-NEXT: entry:
986 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvadda.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
987 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
989 v4i64 xvadda_d(v4i64 _1, v4i64 _2) { return __lasx_xvadda_d(_1, _2); }
990 // CHECK-LABEL: @xvsadd_b(
991 // CHECK-NEXT: entry:
992 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsadd.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
993 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
995 v32i8 xvsadd_b(v32i8 _1, v32i8 _2) { return __lasx_xvsadd_b(_1, _2); }
996 // CHECK-LABEL: @xvsadd_h(
997 // CHECK-NEXT: entry:
998 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsadd.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
999 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1001 v16i16 xvsadd_h(v16i16 _1, v16i16 _2) { return __lasx_xvsadd_h(_1, _2); }
1002 // CHECK-LABEL: @xvsadd_w(
1003 // CHECK-NEXT: entry:
1004 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsadd.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1005 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1007 v8i32 xvsadd_w(v8i32 _1, v8i32 _2) { return __lasx_xvsadd_w(_1, _2); }
1008 // CHECK-LABEL: @xvsadd_d(
1009 // CHECK-NEXT: entry:
1010 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsadd.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1011 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1013 v4i64 xvsadd_d(v4i64 _1, v4i64 _2) { return __lasx_xvsadd_d(_1, _2); }
1014 // CHECK-LABEL: @xvsadd_bu(
1015 // CHECK-NEXT: entry:
1016 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsadd.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1017 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1019 v32u8 xvsadd_bu(v32u8 _1, v32u8 _2) { return __lasx_xvsadd_bu(_1, _2); }
1020 // CHECK-LABEL: @xvsadd_hu(
1021 // CHECK-NEXT: entry:
1022 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsadd.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1023 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1025 v16u16 xvsadd_hu(v16u16 _1, v16u16 _2) { return __lasx_xvsadd_hu(_1, _2); }
1026 // CHECK-LABEL: @xvsadd_wu(
1027 // CHECK-NEXT: entry:
1028 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsadd.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1029 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1031 v8u32 xvsadd_wu(v8u32 _1, v8u32 _2) { return __lasx_xvsadd_wu(_1, _2); }
1032 // CHECK-LABEL: @xvsadd_du(
1033 // CHECK-NEXT: entry:
1034 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsadd.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1035 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1037 v4u64 xvsadd_du(v4u64 _1, v4u64 _2) { return __lasx_xvsadd_du(_1, _2); }
1038 // CHECK-LABEL: @xvavg_b(
1039 // CHECK-NEXT: entry:
1040 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvavg.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1041 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1043 v32i8 xvavg_b(v32i8 _1, v32i8 _2) { return __lasx_xvavg_b(_1, _2); }
1044 // CHECK-LABEL: @xvavg_h(
1045 // CHECK-NEXT: entry:
1046 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvavg.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1047 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1049 v16i16 xvavg_h(v16i16 _1, v16i16 _2) { return __lasx_xvavg_h(_1, _2); }
1050 // CHECK-LABEL: @xvavg_w(
1051 // CHECK-NEXT: entry:
1052 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvavg.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1053 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1055 v8i32 xvavg_w(v8i32 _1, v8i32 _2) { return __lasx_xvavg_w(_1, _2); }
1056 // CHECK-LABEL: @xvavg_d(
1057 // CHECK-NEXT: entry:
1058 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvavg.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1059 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1061 v4i64 xvavg_d(v4i64 _1, v4i64 _2) { return __lasx_xvavg_d(_1, _2); }
1062 // CHECK-LABEL: @xvavg_bu(
1063 // CHECK-NEXT: entry:
1064 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvavg.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1065 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1067 v32u8 xvavg_bu(v32u8 _1, v32u8 _2) { return __lasx_xvavg_bu(_1, _2); }
1068 // CHECK-LABEL: @xvavg_hu(
1069 // CHECK-NEXT: entry:
1070 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvavg.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1071 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1073 v16u16 xvavg_hu(v16u16 _1, v16u16 _2) { return __lasx_xvavg_hu(_1, _2); }
1074 // CHECK-LABEL: @xvavg_wu(
1075 // CHECK-NEXT: entry:
1076 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvavg.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1077 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1079 v8u32 xvavg_wu(v8u32 _1, v8u32 _2) { return __lasx_xvavg_wu(_1, _2); }
1080 // CHECK-LABEL: @xvavg_du(
1081 // CHECK-NEXT: entry:
1082 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvavg.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1083 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1085 v4u64 xvavg_du(v4u64 _1, v4u64 _2) { return __lasx_xvavg_du(_1, _2); }
1086 // CHECK-LABEL: @xvavgr_b(
1087 // CHECK-NEXT: entry:
1088 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvavgr.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1089 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1091 v32i8 xvavgr_b(v32i8 _1, v32i8 _2) { return __lasx_xvavgr_b(_1, _2); }
1092 // CHECK-LABEL: @xvavgr_h(
1093 // CHECK-NEXT: entry:
1094 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvavgr.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1095 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1097 v16i16 xvavgr_h(v16i16 _1, v16i16 _2) { return __lasx_xvavgr_h(_1, _2); }
1098 // CHECK-LABEL: @xvavgr_w(
1099 // CHECK-NEXT: entry:
1100 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvavgr.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1101 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1103 v8i32 xvavgr_w(v8i32 _1, v8i32 _2) { return __lasx_xvavgr_w(_1, _2); }
1104 // CHECK-LABEL: @xvavgr_d(
1105 // CHECK-NEXT: entry:
1106 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvavgr.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1107 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1109 v4i64 xvavgr_d(v4i64 _1, v4i64 _2) { return __lasx_xvavgr_d(_1, _2); }
1110 // CHECK-LABEL: @xvavgr_bu(
1111 // CHECK-NEXT: entry:
1112 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvavgr.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1113 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1115 v32u8 xvavgr_bu(v32u8 _1, v32u8 _2) { return __lasx_xvavgr_bu(_1, _2); }
1116 // CHECK-LABEL: @xvavgr_hu(
1117 // CHECK-NEXT: entry:
1118 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvavgr.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1119 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1121 v16u16 xvavgr_hu(v16u16 _1, v16u16 _2) { return __lasx_xvavgr_hu(_1, _2); }
1122 // CHECK-LABEL: @xvavgr_wu(
1123 // CHECK-NEXT: entry:
1124 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvavgr.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1125 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1127 v8u32 xvavgr_wu(v8u32 _1, v8u32 _2) { return __lasx_xvavgr_wu(_1, _2); }
1128 // CHECK-LABEL: @xvavgr_du(
1129 // CHECK-NEXT: entry:
1130 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvavgr.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1131 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1133 v4u64 xvavgr_du(v4u64 _1, v4u64 _2) { return __lasx_xvavgr_du(_1, _2); }
1134 // CHECK-LABEL: @xvssub_b(
1135 // CHECK-NEXT: entry:
1136 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssub.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1137 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1139 v32i8 xvssub_b(v32i8 _1, v32i8 _2) { return __lasx_xvssub_b(_1, _2); }
1140 // CHECK-LABEL: @xvssub_h(
1141 // CHECK-NEXT: entry:
1142 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssub.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1143 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1145 v16i16 xvssub_h(v16i16 _1, v16i16 _2) { return __lasx_xvssub_h(_1, _2); }
1146 // CHECK-LABEL: @xvssub_w(
1147 // CHECK-NEXT: entry:
1148 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssub.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1149 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1151 v8i32 xvssub_w(v8i32 _1, v8i32 _2) { return __lasx_xvssub_w(_1, _2); }
1152 // CHECK-LABEL: @xvssub_d(
1153 // CHECK-NEXT: entry:
1154 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssub.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1155 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1157 v4i64 xvssub_d(v4i64 _1, v4i64 _2) { return __lasx_xvssub_d(_1, _2); }
1158 // CHECK-LABEL: @xvssub_bu(
1159 // CHECK-NEXT: entry:
1160 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssub.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1161 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1163 v32u8 xvssub_bu(v32u8 _1, v32u8 _2) { return __lasx_xvssub_bu(_1, _2); }
1164 // CHECK-LABEL: @xvssub_hu(
1165 // CHECK-NEXT: entry:
1166 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssub.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1167 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1169 v16u16 xvssub_hu(v16u16 _1, v16u16 _2) { return __lasx_xvssub_hu(_1, _2); }
1170 // CHECK-LABEL: @xvssub_wu(
1171 // CHECK-NEXT: entry:
1172 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssub.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1173 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1175 v8u32 xvssub_wu(v8u32 _1, v8u32 _2) { return __lasx_xvssub_wu(_1, _2); }
1176 // CHECK-LABEL: @xvssub_du(
1177 // CHECK-NEXT: entry:
1178 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssub.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1179 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1181 v4u64 xvssub_du(v4u64 _1, v4u64 _2) { return __lasx_xvssub_du(_1, _2); }
1182 // CHECK-LABEL: @xvabsd_b(
1183 // CHECK-NEXT: entry:
1184 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvabsd.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1185 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1187 v32i8 xvabsd_b(v32i8 _1, v32i8 _2) { return __lasx_xvabsd_b(_1, _2); }
1188 // CHECK-LABEL: @xvabsd_h(
1189 // CHECK-NEXT: entry:
1190 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvabsd.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1191 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1193 v16i16 xvabsd_h(v16i16 _1, v16i16 _2) { return __lasx_xvabsd_h(_1, _2); }
1194 // CHECK-LABEL: @xvabsd_w(
1195 // CHECK-NEXT: entry:
1196 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvabsd.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1197 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1199 v8i32 xvabsd_w(v8i32 _1, v8i32 _2) { return __lasx_xvabsd_w(_1, _2); }
1200 // CHECK-LABEL: @xvabsd_d(
1201 // CHECK-NEXT: entry:
1202 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvabsd.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1203 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1205 v4i64 xvabsd_d(v4i64 _1, v4i64 _2) { return __lasx_xvabsd_d(_1, _2); }
1206 // CHECK-LABEL: @xvabsd_bu(
1207 // CHECK-NEXT: entry:
1208 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvabsd.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1209 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1211 v32u8 xvabsd_bu(v32u8 _1, v32u8 _2) { return __lasx_xvabsd_bu(_1, _2); }
1212 // CHECK-LABEL: @xvabsd_hu(
1213 // CHECK-NEXT: entry:
1214 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvabsd.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1215 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1217 v16u16 xvabsd_hu(v16u16 _1, v16u16 _2) { return __lasx_xvabsd_hu(_1, _2); }
1218 // CHECK-LABEL: @xvabsd_wu(
1219 // CHECK-NEXT: entry:
1220 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvabsd.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1221 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1223 v8u32 xvabsd_wu(v8u32 _1, v8u32 _2) { return __lasx_xvabsd_wu(_1, _2); }
1224 // CHECK-LABEL: @xvabsd_du(
1225 // CHECK-NEXT: entry:
1226 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvabsd.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1227 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1229 v4u64 xvabsd_du(v4u64 _1, v4u64 _2) { return __lasx_xvabsd_du(_1, _2); }
1230 // CHECK-LABEL: @xvmul_b(
1231 // CHECK-NEXT: entry:
1232 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmul.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1233 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1235 v32i8 xvmul_b(v32i8 _1, v32i8 _2) { return __lasx_xvmul_b(_1, _2); }
1236 // CHECK-LABEL: @xvmul_h(
1237 // CHECK-NEXT: entry:
1238 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmul.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1239 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1241 v16i16 xvmul_h(v16i16 _1, v16i16 _2) { return __lasx_xvmul_h(_1, _2); }
1242 // CHECK-LABEL: @xvmul_w(
1243 // CHECK-NEXT: entry:
1244 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmul.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1245 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1247 v8i32 xvmul_w(v8i32 _1, v8i32 _2) { return __lasx_xvmul_w(_1, _2); }
1248 // CHECK-LABEL: @xvmul_d(
1249 // CHECK-NEXT: entry:
1250 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmul.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1251 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1253 v4i64 xvmul_d(v4i64 _1, v4i64 _2) { return __lasx_xvmul_d(_1, _2); }
1254 // CHECK-LABEL: @xvmadd_b(
1255 // CHECK-NEXT: entry:
1256 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmadd.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
1257 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1259 v32i8 xvmadd_b(v32i8 _1, v32i8 _2, v32i8 _3) { return __lasx_xvmadd_b(_1, _2, _3); }
1260 // CHECK-LABEL: @xvmadd_h(
1261 // CHECK-NEXT: entry:
1262 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmadd.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
1263 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1265 v16i16 xvmadd_h(v16i16 _1, v16i16 _2, v16i16 _3) { return __lasx_xvmadd_h(_1, _2, _3); }
1266 // CHECK-LABEL: @xvmadd_w(
1267 // CHECK-NEXT: entry:
1268 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmadd.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
1269 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1271 v8i32 xvmadd_w(v8i32 _1, v8i32 _2, v8i32 _3) { return __lasx_xvmadd_w(_1, _2, _3); }
1272 // CHECK-LABEL: @xvmadd_d(
1273 // CHECK-NEXT: entry:
1274 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmadd.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
1275 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1277 v4i64 xvmadd_d(v4i64 _1, v4i64 _2, v4i64 _3) { return __lasx_xvmadd_d(_1, _2, _3); }
1278 // CHECK-LABEL: @xvmsub_b(
1279 // CHECK-NEXT: entry:
1280 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmsub.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
1281 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1283 v32i8 xvmsub_b(v32i8 _1, v32i8 _2, v32i8 _3) { return __lasx_xvmsub_b(_1, _2, _3); }
1284 // CHECK-LABEL: @xvmsub_h(
1285 // CHECK-NEXT: entry:
1286 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmsub.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
1287 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1289 v16i16 xvmsub_h(v16i16 _1, v16i16 _2, v16i16 _3) { return __lasx_xvmsub_h(_1, _2, _3); }
1290 // CHECK-LABEL: @xvmsub_w(
1291 // CHECK-NEXT: entry:
1292 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmsub.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
1293 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1295 v8i32 xvmsub_w(v8i32 _1, v8i32 _2, v8i32 _3) { return __lasx_xvmsub_w(_1, _2, _3); }
1296 // CHECK-LABEL: @xvmsub_d(
1297 // CHECK-NEXT: entry:
1298 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmsub.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
1299 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1301 v4i64 xvmsub_d(v4i64 _1, v4i64 _2, v4i64 _3) { return __lasx_xvmsub_d(_1, _2, _3); }
1302 // CHECK-LABEL: @xvdiv_b(
1303 // CHECK-NEXT: entry:
1304 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvdiv.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1305 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1307 v32i8 xvdiv_b(v32i8 _1, v32i8 _2) { return __lasx_xvdiv_b(_1, _2); }
1308 // CHECK-LABEL: @xvdiv_h(
1309 // CHECK-NEXT: entry:
1310 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvdiv.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1311 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1313 v16i16 xvdiv_h(v16i16 _1, v16i16 _2) { return __lasx_xvdiv_h(_1, _2); }
1314 // CHECK-LABEL: @xvdiv_w(
1315 // CHECK-NEXT: entry:
1316 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvdiv.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1317 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1319 v8i32 xvdiv_w(v8i32 _1, v8i32 _2) { return __lasx_xvdiv_w(_1, _2); }
1320 // CHECK-LABEL: @xvdiv_d(
1321 // CHECK-NEXT: entry:
1322 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvdiv.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1323 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1325 v4i64 xvdiv_d(v4i64 _1, v4i64 _2) { return __lasx_xvdiv_d(_1, _2); }
1326 // CHECK-LABEL: @xvdiv_bu(
1327 // CHECK-NEXT: entry:
1328 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvdiv.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1329 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1331 v32u8 xvdiv_bu(v32u8 _1, v32u8 _2) { return __lasx_xvdiv_bu(_1, _2); }
1332 // CHECK-LABEL: @xvdiv_hu(
1333 // CHECK-NEXT: entry:
1334 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvdiv.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1335 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1337 v16u16 xvdiv_hu(v16u16 _1, v16u16 _2) { return __lasx_xvdiv_hu(_1, _2); }
1338 // CHECK-LABEL: @xvdiv_wu(
1339 // CHECK-NEXT: entry:
1340 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvdiv.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1341 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1343 v8u32 xvdiv_wu(v8u32 _1, v8u32 _2) { return __lasx_xvdiv_wu(_1, _2); }
1344 // CHECK-LABEL: @xvdiv_du(
1345 // CHECK-NEXT: entry:
1346 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvdiv.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1347 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1349 v4u64 xvdiv_du(v4u64 _1, v4u64 _2) { return __lasx_xvdiv_du(_1, _2); }
1350 // CHECK-LABEL: @xvhaddw_h_b(
1351 // CHECK-NEXT: entry:
1352 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvhaddw.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1353 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1355 v16i16 xvhaddw_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvhaddw_h_b(_1, _2); }
1356 // CHECK-LABEL: @xvhaddw_w_h(
1357 // CHECK-NEXT: entry:
1358 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvhaddw.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1359 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1361 v8i32 xvhaddw_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvhaddw_w_h(_1, _2); }
1362 // CHECK-LABEL: @xvhaddw_d_w(
1363 // CHECK-NEXT: entry:
1364 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhaddw.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1365 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1367 v4i64 xvhaddw_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvhaddw_d_w(_1, _2); }
1368 // CHECK-LABEL: @xvhaddw_hu_bu(
1369 // CHECK-NEXT: entry:
1370 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvhaddw.hu.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1371 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1373 v16u16 xvhaddw_hu_bu(v32u8 _1, v32u8 _2) { return __lasx_xvhaddw_hu_bu(_1, _2); }
1374 // CHECK-LABEL: @xvhaddw_wu_hu(
1375 // CHECK-NEXT: entry:
1376 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvhaddw.wu.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1377 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1379 v8u32 xvhaddw_wu_hu(v16u16 _1, v16u16 _2) { return __lasx_xvhaddw_wu_hu(_1, _2); }
1380 // CHECK-LABEL: @xvhaddw_du_wu(
1381 // CHECK-NEXT: entry:
1382 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhaddw.du.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1383 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1385 v4u64 xvhaddw_du_wu(v8u32 _1, v8u32 _2) { return __lasx_xvhaddw_du_wu(_1, _2); }
1386 // CHECK-LABEL: @xvhsubw_h_b(
1387 // CHECK-NEXT: entry:
1388 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvhsubw.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1389 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1391 v16i16 xvhsubw_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvhsubw_h_b(_1, _2); }
1392 // CHECK-LABEL: @xvhsubw_w_h(
1393 // CHECK-NEXT: entry:
1394 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvhsubw.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1395 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1397 v8i32 xvhsubw_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvhsubw_w_h(_1, _2); }
1398 // CHECK-LABEL: @xvhsubw_d_w(
1399 // CHECK-NEXT: entry:
1400 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhsubw.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1401 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1403 v4i64 xvhsubw_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvhsubw_d_w(_1, _2); }
1404 // CHECK-LABEL: @xvhsubw_hu_bu(
1405 // CHECK-NEXT: entry:
1406 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvhsubw.hu.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1407 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1409 v16i16 xvhsubw_hu_bu(v32u8 _1, v32u8 _2) { return __lasx_xvhsubw_hu_bu(_1, _2); }
1410 // CHECK-LABEL: @xvhsubw_wu_hu(
1411 // CHECK-NEXT: entry:
1412 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvhsubw.wu.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1413 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1415 v8i32 xvhsubw_wu_hu(v16u16 _1, v16u16 _2) { return __lasx_xvhsubw_wu_hu(_1, _2); }
1416 // CHECK-LABEL: @xvhsubw_du_wu(
1417 // CHECK-NEXT: entry:
1418 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhsubw.du.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1419 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1421 v4i64 xvhsubw_du_wu(v8u32 _1, v8u32 _2) { return __lasx_xvhsubw_du_wu(_1, _2); }
1422 // CHECK-LABEL: @xvmod_b(
1423 // CHECK-NEXT: entry:
1424 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmod.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1425 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1427 v32i8 xvmod_b(v32i8 _1, v32i8 _2) { return __lasx_xvmod_b(_1, _2); }
1428 // CHECK-LABEL: @xvmod_h(
1429 // CHECK-NEXT: entry:
1430 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmod.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1431 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1433 v16i16 xvmod_h(v16i16 _1, v16i16 _2) { return __lasx_xvmod_h(_1, _2); }
1434 // CHECK-LABEL: @xvmod_w(
1435 // CHECK-NEXT: entry:
1436 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmod.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1437 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1439 v8i32 xvmod_w(v8i32 _1, v8i32 _2) { return __lasx_xvmod_w(_1, _2); }
1440 // CHECK-LABEL: @xvmod_d(
1441 // CHECK-NEXT: entry:
1442 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmod.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1443 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1445 v4i64 xvmod_d(v4i64 _1, v4i64 _2) { return __lasx_xvmod_d(_1, _2); }
1446 // CHECK-LABEL: @xvmod_bu(
1447 // CHECK-NEXT: entry:
1448 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmod.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1449 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1451 v32u8 xvmod_bu(v32u8 _1, v32u8 _2) { return __lasx_xvmod_bu(_1, _2); }
1452 // CHECK-LABEL: @xvmod_hu(
1453 // CHECK-NEXT: entry:
1454 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmod.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1455 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1457 v16u16 xvmod_hu(v16u16 _1, v16u16 _2) { return __lasx_xvmod_hu(_1, _2); }
1458 // CHECK-LABEL: @xvmod_wu(
1459 // CHECK-NEXT: entry:
1460 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmod.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1461 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1463 v8u32 xvmod_wu(v8u32 _1, v8u32 _2) { return __lasx_xvmod_wu(_1, _2); }
1464 // CHECK-LABEL: @xvmod_du(
1465 // CHECK-NEXT: entry:
1466 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmod.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1467 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1469 v4u64 xvmod_du(v4u64 _1, v4u64 _2) { return __lasx_xvmod_du(_1, _2); }
1470 // CHECK-LABEL: @xvrepl128vei_b(
1471 // CHECK-NEXT: entry:
1472 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvrepl128vei.b(<32 x i8> [[_1:%.*]], i32 1)
1473 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1475 v32i8 xvrepl128vei_b(v32i8 _1) { return __lasx_xvrepl128vei_b(_1, 1); }
1476 // CHECK-LABEL: @xvrepl128vei_h(
1477 // CHECK-NEXT: entry:
1478 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvrepl128vei.h(<16 x i16> [[_1:%.*]], i32 1)
1479 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1481 v16i16 xvrepl128vei_h(v16i16 _1) { return __lasx_xvrepl128vei_h(_1, 1); }
1482 // CHECK-LABEL: @xvrepl128vei_w(
1483 // CHECK-NEXT: entry:
1484 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvrepl128vei.w(<8 x i32> [[_1:%.*]], i32 1)
1485 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1487 v8i32 xvrepl128vei_w(v8i32 _1) { return __lasx_xvrepl128vei_w(_1, 1); }
1488 // CHECK-LABEL: @xvrepl128vei_d(
1489 // CHECK-NEXT: entry:
1490 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvrepl128vei.d(<4 x i64> [[_1:%.*]], i32 1)
1491 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1493 v4i64 xvrepl128vei_d(v4i64 _1) { return __lasx_xvrepl128vei_d(_1, 1); }
1494 // CHECK-LABEL: @xvpickev_b(
1495 // CHECK-NEXT: entry:
1496 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvpickev.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1497 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1499 v32i8 xvpickev_b(v32i8 _1, v32i8 _2) { return __lasx_xvpickev_b(_1, _2); }
1500 // CHECK-LABEL: @xvpickev_h(
1501 // CHECK-NEXT: entry:
1502 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvpickev.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1503 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1505 v16i16 xvpickev_h(v16i16 _1, v16i16 _2) { return __lasx_xvpickev_h(_1, _2); }
1506 // CHECK-LABEL: @xvpickev_w(
1507 // CHECK-NEXT: entry:
1508 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvpickev.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1509 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1511 v8i32 xvpickev_w(v8i32 _1, v8i32 _2) { return __lasx_xvpickev_w(_1, _2); }
1512 // CHECK-LABEL: @xvpickev_d(
1513 // CHECK-NEXT: entry:
1514 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvpickev.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1515 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1517 v4i64 xvpickev_d(v4i64 _1, v4i64 _2) { return __lasx_xvpickev_d(_1, _2); }
1518 // CHECK-LABEL: @xvpickod_b(
1519 // CHECK-NEXT: entry:
1520 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvpickod.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1521 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1523 v32i8 xvpickod_b(v32i8 _1, v32i8 _2) { return __lasx_xvpickod_b(_1, _2); }
1524 // CHECK-LABEL: @xvpickod_h(
1525 // CHECK-NEXT: entry:
1526 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvpickod.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1527 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1529 v16i16 xvpickod_h(v16i16 _1, v16i16 _2) { return __lasx_xvpickod_h(_1, _2); }
1530 // CHECK-LABEL: @xvpickod_w(
1531 // CHECK-NEXT: entry:
1532 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvpickod.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1533 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1535 v8i32 xvpickod_w(v8i32 _1, v8i32 _2) { return __lasx_xvpickod_w(_1, _2); }
1536 // CHECK-LABEL: @xvpickod_d(
1537 // CHECK-NEXT: entry:
1538 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvpickod.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1539 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1541 v4i64 xvpickod_d(v4i64 _1, v4i64 _2) { return __lasx_xvpickod_d(_1, _2); }
1542 // CHECK-LABEL: @xvilvh_b(
1543 // CHECK-NEXT: entry:
1544 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvilvh.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1545 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1547 v32i8 xvilvh_b(v32i8 _1, v32i8 _2) { return __lasx_xvilvh_b(_1, _2); }
1548 // CHECK-LABEL: @xvilvh_h(
1549 // CHECK-NEXT: entry:
1550 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvilvh.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1551 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1553 v16i16 xvilvh_h(v16i16 _1, v16i16 _2) { return __lasx_xvilvh_h(_1, _2); }
1554 // CHECK-LABEL: @xvilvh_w(
1555 // CHECK-NEXT: entry:
1556 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvilvh.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1557 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1559 v8i32 xvilvh_w(v8i32 _1, v8i32 _2) { return __lasx_xvilvh_w(_1, _2); }
1560 // CHECK-LABEL: @xvilvh_d(
1561 // CHECK-NEXT: entry:
1562 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvilvh.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1563 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1565 v4i64 xvilvh_d(v4i64 _1, v4i64 _2) { return __lasx_xvilvh_d(_1, _2); }
1566 // CHECK-LABEL: @xvilvl_b(
1567 // CHECK-NEXT: entry:
1568 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvilvl.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1569 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1571 v32i8 xvilvl_b(v32i8 _1, v32i8 _2) { return __lasx_xvilvl_b(_1, _2); }
1572 // CHECK-LABEL: @xvilvl_h(
1573 // CHECK-NEXT: entry:
1574 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvilvl.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1575 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1577 v16i16 xvilvl_h(v16i16 _1, v16i16 _2) { return __lasx_xvilvl_h(_1, _2); }
1578 // CHECK-LABEL: @xvilvl_w(
1579 // CHECK-NEXT: entry:
1580 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvilvl.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1581 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1583 v8i32 xvilvl_w(v8i32 _1, v8i32 _2) { return __lasx_xvilvl_w(_1, _2); }
1584 // CHECK-LABEL: @xvilvl_d(
1585 // CHECK-NEXT: entry:
1586 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvilvl.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1587 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1589 v4i64 xvilvl_d(v4i64 _1, v4i64 _2) { return __lasx_xvilvl_d(_1, _2); }
1590 // CHECK-LABEL: @xvpackev_b(
1591 // CHECK-NEXT: entry:
1592 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvpackev.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1593 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1595 v32i8 xvpackev_b(v32i8 _1, v32i8 _2) { return __lasx_xvpackev_b(_1, _2); }
1596 // CHECK-LABEL: @xvpackev_h(
1597 // CHECK-NEXT: entry:
1598 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvpackev.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1599 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1601 v16i16 xvpackev_h(v16i16 _1, v16i16 _2) { return __lasx_xvpackev_h(_1, _2); }
1602 // CHECK-LABEL: @xvpackev_w(
1603 // CHECK-NEXT: entry:
1604 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvpackev.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1605 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1607 v8i32 xvpackev_w(v8i32 _1, v8i32 _2) { return __lasx_xvpackev_w(_1, _2); }
1608 // CHECK-LABEL: @xvpackev_d(
1609 // CHECK-NEXT: entry:
1610 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvpackev.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1611 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1613 v4i64 xvpackev_d(v4i64 _1, v4i64 _2) { return __lasx_xvpackev_d(_1, _2); }
1614 // CHECK-LABEL: @xvpackod_b(
1615 // CHECK-NEXT: entry:
1616 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvpackod.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1617 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1619 v32i8 xvpackod_b(v32i8 _1, v32i8 _2) { return __lasx_xvpackod_b(_1, _2); }
1620 // CHECK-LABEL: @xvpackod_h(
1621 // CHECK-NEXT: entry:
1622 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvpackod.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
1623 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1625 v16i16 xvpackod_h(v16i16 _1, v16i16 _2) { return __lasx_xvpackod_h(_1, _2); }
1626 // CHECK-LABEL: @xvpackod_w(
1627 // CHECK-NEXT: entry:
1628 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvpackod.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
1629 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1631 v8i32 xvpackod_w(v8i32 _1, v8i32 _2) { return __lasx_xvpackod_w(_1, _2); }
1632 // CHECK-LABEL: @xvpackod_d(
1633 // CHECK-NEXT: entry:
1634 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvpackod.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
1635 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1637 v4i64 xvpackod_d(v4i64 _1, v4i64 _2) { return __lasx_xvpackod_d(_1, _2); }
1638 // CHECK-LABEL: @xvshuf_b(
1639 // CHECK-NEXT: entry:
1640 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvshuf.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
1641 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1643 v32i8 xvshuf_b(v32i8 _1, v32i8 _2, v32i8 _3) { return __lasx_xvshuf_b(_1, _2, _3); }
1644 // CHECK-LABEL: @xvshuf_h(
1645 // CHECK-NEXT: entry:
1646 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvshuf.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
1647 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1649 v16i16 xvshuf_h(v16i16 _1, v16i16 _2, v16i16 _3) { return __lasx_xvshuf_h(_1, _2, _3); }
1650 // CHECK-LABEL: @xvshuf_w(
1651 // CHECK-NEXT: entry:
1652 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvshuf.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
1653 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1655 v8i32 xvshuf_w(v8i32 _1, v8i32 _2, v8i32 _3) { return __lasx_xvshuf_w(_1, _2, _3); }
1656 // CHECK-LABEL: @xvshuf_d(
1657 // CHECK-NEXT: entry:
1658 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvshuf.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
1659 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1661 v4i64 xvshuf_d(v4i64 _1, v4i64 _2, v4i64 _3) { return __lasx_xvshuf_d(_1, _2, _3); }
1662 // CHECK-LABEL: @xvand_v(
1663 // CHECK-NEXT: entry:
1664 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvand.v(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1665 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1667 v32u8 xvand_v(v32u8 _1, v32u8 _2) { return __lasx_xvand_v(_1, _2); }
1668 // CHECK-LABEL: @xvandi_b(
1669 // CHECK-NEXT: entry:
1670 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvandi.b(<32 x i8> [[_1:%.*]], i32 1)
1671 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1673 v32u8 xvandi_b(v32u8 _1) { return __lasx_xvandi_b(_1, 1); }
1674 // CHECK-LABEL: @xvor_v(
1675 // CHECK-NEXT: entry:
1676 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvor.v(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1677 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1679 v32u8 xvor_v(v32u8 _1, v32u8 _2) { return __lasx_xvor_v(_1, _2); }
1680 // CHECK-LABEL: @xvori_b(
1681 // CHECK-NEXT: entry:
1682 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvori.b(<32 x i8> [[_1:%.*]], i32 1)
1683 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1685 v32u8 xvori_b(v32u8 _1) { return __lasx_xvori_b(_1, 1); }
1686 // CHECK-LABEL: @xvnor_v(
1687 // CHECK-NEXT: entry:
1688 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvnor.v(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1689 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1691 v32u8 xvnor_v(v32u8 _1, v32u8 _2) { return __lasx_xvnor_v(_1, _2); }
1692 // CHECK-LABEL: @xvnori_b(
1693 // CHECK-NEXT: entry:
1694 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvnori.b(<32 x i8> [[_1:%.*]], i32 1)
1695 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1697 v32u8 xvnori_b(v32u8 _1) { return __lasx_xvnori_b(_1, 1); }
1698 // CHECK-LABEL: @xvxor_v(
1699 // CHECK-NEXT: entry:
1700 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvxor.v(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
1701 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1703 v32u8 xvxor_v(v32u8 _1, v32u8 _2) { return __lasx_xvxor_v(_1, _2); }
1704 // CHECK-LABEL: @xvxori_b(
1705 // CHECK-NEXT: entry:
1706 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvxori.b(<32 x i8> [[_1:%.*]], i32 1)
1707 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1709 v32u8 xvxori_b(v32u8 _1) { return __lasx_xvxori_b(_1, 1); }
1710 // CHECK-LABEL: @xvbitsel_v(
1711 // CHECK-NEXT: entry:
1712 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitsel.v(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
1713 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1715 v32u8 xvbitsel_v(v32u8 _1, v32u8 _2, v32u8 _3) { return __lasx_xvbitsel_v(_1, _2, _3); }
1716 // CHECK-LABEL: @xvbitseli_b(
1717 // CHECK-NEXT: entry:
1718 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbitseli.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
1719 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1721 v32u8 xvbitseli_b(v32u8 _1, v32u8 _2) { return __lasx_xvbitseli_b(_1, _2, 1); }
1722 // CHECK-LABEL: @xvshuf4i_b(
1723 // CHECK-NEXT: entry:
1724 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvshuf4i.b(<32 x i8> [[_1:%.*]], i32 1)
1725 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1727 v32i8 xvshuf4i_b(v32i8 _1) { return __lasx_xvshuf4i_b(_1, 1); }
1728 // CHECK-LABEL: @xvshuf4i_h(
1729 // CHECK-NEXT: entry:
1730 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvshuf4i.h(<16 x i16> [[_1:%.*]], i32 1)
1731 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1733 v16i16 xvshuf4i_h(v16i16 _1) { return __lasx_xvshuf4i_h(_1, 1); }
1734 // CHECK-LABEL: @xvshuf4i_w(
1735 // CHECK-NEXT: entry:
1736 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvshuf4i.w(<8 x i32> [[_1:%.*]], i32 1)
1737 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1739 v8i32 xvshuf4i_w(v8i32 _1) { return __lasx_xvshuf4i_w(_1, 1); }
1740 // CHECK-LABEL: @xvreplgr2vr_b(
1741 // CHECK-NEXT: entry:
1742 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvreplgr2vr.b(i32 [[_1:%.*]])
1743 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1745 v32i8 xvreplgr2vr_b(int _1) { return __lasx_xvreplgr2vr_b(_1); }
1746 // CHECK-LABEL: @xvreplgr2vr_h(
1747 // CHECK-NEXT: entry:
1748 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvreplgr2vr.h(i32 [[_1:%.*]])
1749 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1751 v16i16 xvreplgr2vr_h(int _1) { return __lasx_xvreplgr2vr_h(_1); }
1752 // CHECK-LABEL: @xvreplgr2vr_w(
1753 // CHECK-NEXT: entry:
1754 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvreplgr2vr.w(i32 [[_1:%.*]])
1755 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1757 v8i32 xvreplgr2vr_w(int _1) { return __lasx_xvreplgr2vr_w(_1); }
1758 // CHECK-LABEL: @xvreplgr2vr_d(
1759 // CHECK-NEXT: entry:
1760 // CHECK-NEXT: [[CONV:%.*]] = sext i32 [[_1:%.*]] to i64
1761 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvreplgr2vr.d(i64 [[CONV]])
1762 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1764 v4i64 xvreplgr2vr_d(int _1) { return __lasx_xvreplgr2vr_d(_1); }
1765 // CHECK-LABEL: @xvpcnt_b(
1766 // CHECK-NEXT: entry:
1767 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvpcnt.b(<32 x i8> [[_1:%.*]])
1768 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1770 v32i8 xvpcnt_b(v32i8 _1) { return __lasx_xvpcnt_b(_1); }
1771 // CHECK-LABEL: @xvpcnt_h(
1772 // CHECK-NEXT: entry:
1773 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvpcnt.h(<16 x i16> [[_1:%.*]])
1774 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1776 v16i16 xvpcnt_h(v16i16 _1) { return __lasx_xvpcnt_h(_1); }
1777 // CHECK-LABEL: @xvpcnt_w(
1778 // CHECK-NEXT: entry:
1779 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvpcnt.w(<8 x i32> [[_1:%.*]])
1780 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1782 v8i32 xvpcnt_w(v8i32 _1) { return __lasx_xvpcnt_w(_1); }
1783 // CHECK-LABEL: @xvpcnt_d(
1784 // CHECK-NEXT: entry:
1785 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvpcnt.d(<4 x i64> [[_1:%.*]])
1786 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1788 v4i64 xvpcnt_d(v4i64 _1) { return __lasx_xvpcnt_d(_1); }
1789 // CHECK-LABEL: @xvclo_b(
1790 // CHECK-NEXT: entry:
1791 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvclo.b(<32 x i8> [[_1:%.*]])
1792 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1794 v32i8 xvclo_b(v32i8 _1) { return __lasx_xvclo_b(_1); }
1795 // CHECK-LABEL: @xvclo_h(
1796 // CHECK-NEXT: entry:
1797 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvclo.h(<16 x i16> [[_1:%.*]])
1798 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1800 v16i16 xvclo_h(v16i16 _1) { return __lasx_xvclo_h(_1); }
1801 // CHECK-LABEL: @xvclo_w(
1802 // CHECK-NEXT: entry:
1803 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvclo.w(<8 x i32> [[_1:%.*]])
1804 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1806 v8i32 xvclo_w(v8i32 _1) { return __lasx_xvclo_w(_1); }
1807 // CHECK-LABEL: @xvclo_d(
1808 // CHECK-NEXT: entry:
1809 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvclo.d(<4 x i64> [[_1:%.*]])
1810 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1812 v4i64 xvclo_d(v4i64 _1) { return __lasx_xvclo_d(_1); }
1813 // CHECK-LABEL: @xvclz_b(
1814 // CHECK-NEXT: entry:
1815 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvclz.b(<32 x i8> [[_1:%.*]])
1816 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
1818 v32i8 xvclz_b(v32i8 _1) { return __lasx_xvclz_b(_1); }
1819 // CHECK-LABEL: @xvclz_h(
1820 // CHECK-NEXT: entry:
1821 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvclz.h(<16 x i16> [[_1:%.*]])
1822 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1824 v16i16 xvclz_h(v16i16 _1) { return __lasx_xvclz_h(_1); }
1825 // CHECK-LABEL: @xvclz_w(
1826 // CHECK-NEXT: entry:
1827 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvclz.w(<8 x i32> [[_1:%.*]])
1828 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1830 v8i32 xvclz_w(v8i32 _1) { return __lasx_xvclz_w(_1); }
1831 // CHECK-LABEL: @xvclz_d(
1832 // CHECK-NEXT: entry:
1833 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvclz.d(<4 x i64> [[_1:%.*]])
1834 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1836 v4i64 xvclz_d(v4i64 _1) { return __lasx_xvclz_d(_1); }
1837 // CHECK-LABEL: @xvfadd_s(
1838 // CHECK-NEXT: entry:
1839 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfadd.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1840 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1842 v8f32 xvfadd_s(v8f32 _1, v8f32 _2) { return __lasx_xvfadd_s(_1, _2); }
1843 // CHECK-LABEL: @xvfadd_d(
1844 // CHECK-NEXT: entry:
1845 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfadd.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1846 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1848 v4f64 xvfadd_d(v4f64 _1, v4f64 _2) { return __lasx_xvfadd_d(_1, _2); }
1849 // CHECK-LABEL: @xvfsub_s(
1850 // CHECK-NEXT: entry:
1851 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfsub.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1852 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1854 v8f32 xvfsub_s(v8f32 _1, v8f32 _2) { return __lasx_xvfsub_s(_1, _2); }
1855 // CHECK-LABEL: @xvfsub_d(
1856 // CHECK-NEXT: entry:
1857 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfsub.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1858 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1860 v4f64 xvfsub_d(v4f64 _1, v4f64 _2) { return __lasx_xvfsub_d(_1, _2); }
1861 // CHECK-LABEL: @xvfmul_s(
1862 // CHECK-NEXT: entry:
1863 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfmul.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1864 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1866 v8f32 xvfmul_s(v8f32 _1, v8f32 _2) { return __lasx_xvfmul_s(_1, _2); }
1867 // CHECK-LABEL: @xvfmul_d(
1868 // CHECK-NEXT: entry:
1869 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfmul.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1870 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1872 v4f64 xvfmul_d(v4f64 _1, v4f64 _2) { return __lasx_xvfmul_d(_1, _2); }
1873 // CHECK-LABEL: @xvfdiv_s(
1874 // CHECK-NEXT: entry:
1875 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfdiv.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1876 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1878 v8f32 xvfdiv_s(v8f32 _1, v8f32 _2) { return __lasx_xvfdiv_s(_1, _2); }
1879 // CHECK-LABEL: @xvfdiv_d(
1880 // CHECK-NEXT: entry:
1881 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfdiv.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1882 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1884 v4f64 xvfdiv_d(v4f64 _1, v4f64 _2) { return __lasx_xvfdiv_d(_1, _2); }
1885 // CHECK-LABEL: @xvfcvt_h_s(
1886 // CHECK-NEXT: entry:
1887 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvfcvt.h.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1888 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
1890 v16i16 xvfcvt_h_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcvt_h_s(_1, _2); }
1891 // CHECK-LABEL: @xvfcvt_s_d(
1892 // CHECK-NEXT: entry:
1893 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfcvt.s.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1894 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1896 v8f32 xvfcvt_s_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcvt_s_d(_1, _2); }
1897 // CHECK-LABEL: @xvfmin_s(
1898 // CHECK-NEXT: entry:
1899 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfmin.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1900 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1902 v8f32 xvfmin_s(v8f32 _1, v8f32 _2) { return __lasx_xvfmin_s(_1, _2); }
1903 // CHECK-LABEL: @xvfmin_d(
1904 // CHECK-NEXT: entry:
1905 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfmin.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1906 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1908 v4f64 xvfmin_d(v4f64 _1, v4f64 _2) { return __lasx_xvfmin_d(_1, _2); }
1909 // CHECK-LABEL: @xvfmina_s(
1910 // CHECK-NEXT: entry:
1911 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfmina.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1912 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1914 v8f32 xvfmina_s(v8f32 _1, v8f32 _2) { return __lasx_xvfmina_s(_1, _2); }
1915 // CHECK-LABEL: @xvfmina_d(
1916 // CHECK-NEXT: entry:
1917 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfmina.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1918 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1920 v4f64 xvfmina_d(v4f64 _1, v4f64 _2) { return __lasx_xvfmina_d(_1, _2); }
1921 // CHECK-LABEL: @xvfmax_s(
1922 // CHECK-NEXT: entry:
1923 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfmax.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1924 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1926 v8f32 xvfmax_s(v8f32 _1, v8f32 _2) { return __lasx_xvfmax_s(_1, _2); }
1927 // CHECK-LABEL: @xvfmax_d(
1928 // CHECK-NEXT: entry:
1929 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfmax.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1930 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1932 v4f64 xvfmax_d(v4f64 _1, v4f64 _2) { return __lasx_xvfmax_d(_1, _2); }
1933 // CHECK-LABEL: @xvfmaxa_s(
1934 // CHECK-NEXT: entry:
1935 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfmaxa.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
1936 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1938 v8f32 xvfmaxa_s(v8f32 _1, v8f32 _2) { return __lasx_xvfmaxa_s(_1, _2); }
1939 // CHECK-LABEL: @xvfmaxa_d(
1940 // CHECK-NEXT: entry:
1941 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfmaxa.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
1942 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1944 v4f64 xvfmaxa_d(v4f64 _1, v4f64 _2) { return __lasx_xvfmaxa_d(_1, _2); }
1945 // CHECK-LABEL: @xvfclass_s(
1946 // CHECK-NEXT: entry:
1947 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfclass.s(<8 x float> [[_1:%.*]])
1948 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
1950 v8i32 xvfclass_s(v8f32 _1) { return __lasx_xvfclass_s(_1); }
1951 // CHECK-LABEL: @xvfclass_d(
1952 // CHECK-NEXT: entry:
1953 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfclass.d(<4 x double> [[_1:%.*]])
1954 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
1956 v4i64 xvfclass_d(v4f64 _1) { return __lasx_xvfclass_d(_1); }
1957 // CHECK-LABEL: @xvfsqrt_s(
1958 // CHECK-NEXT: entry:
1959 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfsqrt.s(<8 x float> [[_1:%.*]])
1960 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1962 v8f32 xvfsqrt_s(v8f32 _1) { return __lasx_xvfsqrt_s(_1); }
1963 // CHECK-LABEL: @xvfsqrt_d(
1964 // CHECK-NEXT: entry:
1965 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfsqrt.d(<4 x double> [[_1:%.*]])
1966 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1968 v4f64 xvfsqrt_d(v4f64 _1) { return __lasx_xvfsqrt_d(_1); }
1969 // CHECK-LABEL: @xvfrecip_s(
1970 // CHECK-NEXT: entry:
1971 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfrecip.s(<8 x float> [[_1:%.*]])
1972 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1974 v8f32 xvfrecip_s(v8f32 _1) { return __lasx_xvfrecip_s(_1); }
1975 // CHECK-LABEL: @xvfrecip_d(
1976 // CHECK-NEXT: entry:
1977 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfrecip.d(<4 x double> [[_1:%.*]])
1978 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1980 v4f64 xvfrecip_d(v4f64 _1) { return __lasx_xvfrecip_d(_1); }
1981 // CHECK-LABEL: @xvfrint_s(
1982 // CHECK-NEXT: entry:
1983 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfrint.s(<8 x float> [[_1:%.*]])
1984 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1986 v8f32 xvfrint_s(v8f32 _1) { return __lasx_xvfrint_s(_1); }
1987 // CHECK-LABEL: @xvfrint_d(
1988 // CHECK-NEXT: entry:
1989 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfrint.d(<4 x double> [[_1:%.*]])
1990 // CHECK-NEXT: ret <4 x double> [[TMP0]]
1992 v4f64 xvfrint_d(v4f64 _1) { return __lasx_xvfrint_d(_1); }
1993 // CHECK-LABEL: @xvfrsqrt_s(
1994 // CHECK-NEXT: entry:
1995 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfrsqrt.s(<8 x float> [[_1:%.*]])
1996 // CHECK-NEXT: ret <8 x float> [[TMP0]]
1998 v8f32 xvfrsqrt_s(v8f32 _1) { return __lasx_xvfrsqrt_s(_1); }
1999 // CHECK-LABEL: @xvfrsqrt_d(
2000 // CHECK-NEXT: entry:
2001 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfrsqrt.d(<4 x double> [[_1:%.*]])
2002 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2004 v4f64 xvfrsqrt_d(v4f64 _1) { return __lasx_xvfrsqrt_d(_1); }
2005 // CHECK-LABEL: @xvflogb_s(
2006 // CHECK-NEXT: entry:
2007 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvflogb.s(<8 x float> [[_1:%.*]])
2008 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2010 v8f32 xvflogb_s(v8f32 _1) { return __lasx_xvflogb_s(_1); }
2011 // CHECK-LABEL: @xvflogb_d(
2012 // CHECK-NEXT: entry:
2013 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvflogb.d(<4 x double> [[_1:%.*]])
2014 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2016 v4f64 xvflogb_d(v4f64 _1) { return __lasx_xvflogb_d(_1); }
2017 // CHECK-LABEL: @xvfcvth_s_h(
2018 // CHECK-NEXT: entry:
2019 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfcvth.s.h(<16 x i16> [[_1:%.*]])
2020 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2022 v8f32 xvfcvth_s_h(v16i16 _1) { return __lasx_xvfcvth_s_h(_1); }
2023 // CHECK-LABEL: @xvfcvth_d_s(
2024 // CHECK-NEXT: entry:
2025 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfcvth.d.s(<8 x float> [[_1:%.*]])
2026 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2028 v4f64 xvfcvth_d_s(v8f32 _1) { return __lasx_xvfcvth_d_s(_1); }
2029 // CHECK-LABEL: @xvfcvtl_s_h(
2030 // CHECK-NEXT: entry:
2031 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfcvtl.s.h(<16 x i16> [[_1:%.*]])
2032 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2034 v8f32 xvfcvtl_s_h(v16i16 _1) { return __lasx_xvfcvtl_s_h(_1); }
2035 // CHECK-LABEL: @xvfcvtl_d_s(
2036 // CHECK-NEXT: entry:
2037 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfcvtl.d.s(<8 x float> [[_1:%.*]])
2038 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2040 v4f64 xvfcvtl_d_s(v8f32 _1) { return __lasx_xvfcvtl_d_s(_1); }
2041 // CHECK-LABEL: @xvftint_w_s(
2042 // CHECK-NEXT: entry:
2043 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftint.w.s(<8 x float> [[_1:%.*]])
2044 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2046 v8i32 xvftint_w_s(v8f32 _1) { return __lasx_xvftint_w_s(_1); }
2047 // CHECK-LABEL: @xvftint_l_d(
2048 // CHECK-NEXT: entry:
2049 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftint.l.d(<4 x double> [[_1:%.*]])
2050 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2052 v4i64 xvftint_l_d(v4f64 _1) { return __lasx_xvftint_l_d(_1); }
2053 // CHECK-LABEL: @xvftint_wu_s(
2054 // CHECK-NEXT: entry:
2055 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftint.wu.s(<8 x float> [[_1:%.*]])
2056 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2058 v8u32 xvftint_wu_s(v8f32 _1) { return __lasx_xvftint_wu_s(_1); }
2059 // CHECK-LABEL: @xvftint_lu_d(
2060 // CHECK-NEXT: entry:
2061 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftint.lu.d(<4 x double> [[_1:%.*]])
2062 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2064 v4u64 xvftint_lu_d(v4f64 _1) { return __lasx_xvftint_lu_d(_1); }
2065 // CHECK-LABEL: @xvftintrz_w_s(
2066 // CHECK-NEXT: entry:
2067 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrz.w.s(<8 x float> [[_1:%.*]])
2068 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2070 v8i32 xvftintrz_w_s(v8f32 _1) { return __lasx_xvftintrz_w_s(_1); }
2071 // CHECK-LABEL: @xvftintrz_l_d(
2072 // CHECK-NEXT: entry:
2073 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrz.l.d(<4 x double> [[_1:%.*]])
2074 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2076 v4i64 xvftintrz_l_d(v4f64 _1) { return __lasx_xvftintrz_l_d(_1); }
2077 // CHECK-LABEL: @xvftintrz_wu_s(
2078 // CHECK-NEXT: entry:
2079 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrz.wu.s(<8 x float> [[_1:%.*]])
2080 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2082 v8u32 xvftintrz_wu_s(v8f32 _1) { return __lasx_xvftintrz_wu_s(_1); }
2083 // CHECK-LABEL: @xvftintrz_lu_d(
2084 // CHECK-NEXT: entry:
2085 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrz.lu.d(<4 x double> [[_1:%.*]])
2086 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2088 v4u64 xvftintrz_lu_d(v4f64 _1) { return __lasx_xvftintrz_lu_d(_1); }
2089 // CHECK-LABEL: @xvffint_s_w(
2090 // CHECK-NEXT: entry:
2091 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvffint.s.w(<8 x i32> [[_1:%.*]])
2092 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2094 v8f32 xvffint_s_w(v8i32 _1) { return __lasx_xvffint_s_w(_1); }
2095 // CHECK-LABEL: @xvffint_d_l(
2096 // CHECK-NEXT: entry:
2097 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvffint.d.l(<4 x i64> [[_1:%.*]])
2098 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2100 v4f64 xvffint_d_l(v4i64 _1) { return __lasx_xvffint_d_l(_1); }
2101 // CHECK-LABEL: @xvffint_s_wu(
2102 // CHECK-NEXT: entry:
2103 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvffint.s.wu(<8 x i32> [[_1:%.*]])
2104 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2106 v8f32 xvffint_s_wu(v8u32 _1) { return __lasx_xvffint_s_wu(_1); }
2107 // CHECK-LABEL: @xvffint_d_lu(
2108 // CHECK-NEXT: entry:
2109 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvffint.d.lu(<4 x i64> [[_1:%.*]])
2110 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2112 v4f64 xvffint_d_lu(v4u64 _1) { return __lasx_xvffint_d_lu(_1); }
2113 // CHECK-LABEL: @xvreplve_b(
2114 // CHECK-NEXT: entry:
2115 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvreplve.b(<32 x i8> [[_1:%.*]], i32 [[_2:%.*]])
2116 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2118 v32i8 xvreplve_b(v32i8 _1, int _2) { return __lasx_xvreplve_b(_1, _2); }
2119 // CHECK-LABEL: @xvreplve_h(
2120 // CHECK-NEXT: entry:
2121 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvreplve.h(<16 x i16> [[_1:%.*]], i32 [[_2:%.*]])
2122 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2124 v16i16 xvreplve_h(v16i16 _1, int _2) { return __lasx_xvreplve_h(_1, _2); }
2125 // CHECK-LABEL: @xvreplve_w(
2126 // CHECK-NEXT: entry:
2127 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvreplve.w(<8 x i32> [[_1:%.*]], i32 [[_2:%.*]])
2128 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2130 v8i32 xvreplve_w(v8i32 _1, int _2) { return __lasx_xvreplve_w(_1, _2); }
2131 // CHECK-LABEL: @xvreplve_d(
2132 // CHECK-NEXT: entry:
2133 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvreplve.d(<4 x i64> [[_1:%.*]], i32 [[_2:%.*]])
2134 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2136 v4i64 xvreplve_d(v4i64 _1, int _2) { return __lasx_xvreplve_d(_1, _2); }
2137 // CHECK-LABEL: @xvpermi_w(
2138 // CHECK-NEXT: entry:
2139 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvpermi.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
2140 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2142 v8i32 xvpermi_w(v8i32 _1, v8i32 _2) { return __lasx_xvpermi_w(_1, _2, 1); }
2143 // CHECK-LABEL: @xvandn_v(
2144 // CHECK-NEXT: entry:
2145 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvandn.v(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
2146 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2148 v32u8 xvandn_v(v32u8 _1, v32u8 _2) { return __lasx_xvandn_v(_1, _2); }
2149 // CHECK-LABEL: @xvneg_b(
2150 // CHECK-NEXT: entry:
2151 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvneg.b(<32 x i8> [[_1:%.*]])
2152 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2154 v32i8 xvneg_b(v32i8 _1) { return __lasx_xvneg_b(_1); }
2155 // CHECK-LABEL: @xvneg_h(
2156 // CHECK-NEXT: entry:
2157 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvneg.h(<16 x i16> [[_1:%.*]])
2158 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2160 v16i16 xvneg_h(v16i16 _1) { return __lasx_xvneg_h(_1); }
2161 // CHECK-LABEL: @xvneg_w(
2162 // CHECK-NEXT: entry:
2163 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvneg.w(<8 x i32> [[_1:%.*]])
2164 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2166 v8i32 xvneg_w(v8i32 _1) { return __lasx_xvneg_w(_1); }
2167 // CHECK-LABEL: @xvneg_d(
2168 // CHECK-NEXT: entry:
2169 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvneg.d(<4 x i64> [[_1:%.*]])
2170 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2172 v4i64 xvneg_d(v4i64 _1) { return __lasx_xvneg_d(_1); }
2173 // CHECK-LABEL: @xvmuh_b(
2174 // CHECK-NEXT: entry:
2175 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmuh.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
2176 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2178 v32i8 xvmuh_b(v32i8 _1, v32i8 _2) { return __lasx_xvmuh_b(_1, _2); }
2179 // CHECK-LABEL: @xvmuh_h(
2180 // CHECK-NEXT: entry:
2181 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmuh.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2182 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2184 v16i16 xvmuh_h(v16i16 _1, v16i16 _2) { return __lasx_xvmuh_h(_1, _2); }
2185 // CHECK-LABEL: @xvmuh_w(
2186 // CHECK-NEXT: entry:
2187 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmuh.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2188 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2190 v8i32 xvmuh_w(v8i32 _1, v8i32 _2) { return __lasx_xvmuh_w(_1, _2); }
2191 // CHECK-LABEL: @xvmuh_d(
2192 // CHECK-NEXT: entry:
2193 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmuh.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2194 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2196 v4i64 xvmuh_d(v4i64 _1, v4i64 _2) { return __lasx_xvmuh_d(_1, _2); }
2197 // CHECK-LABEL: @xvmuh_bu(
2198 // CHECK-NEXT: entry:
2199 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmuh.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
2200 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2202 v32u8 xvmuh_bu(v32u8 _1, v32u8 _2) { return __lasx_xvmuh_bu(_1, _2); }
2203 // CHECK-LABEL: @xvmuh_hu(
2204 // CHECK-NEXT: entry:
2205 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmuh.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2206 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2208 v16u16 xvmuh_hu(v16u16 _1, v16u16 _2) { return __lasx_xvmuh_hu(_1, _2); }
2209 // CHECK-LABEL: @xvmuh_wu(
2210 // CHECK-NEXT: entry:
2211 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmuh.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2212 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2214 v8u32 xvmuh_wu(v8u32 _1, v8u32 _2) { return __lasx_xvmuh_wu(_1, _2); }
2215 // CHECK-LABEL: @xvmuh_du(
2216 // CHECK-NEXT: entry:
2217 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmuh.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2218 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2220 v4u64 xvmuh_du(v4u64 _1, v4u64 _2) { return __lasx_xvmuh_du(_1, _2); }
2221 // CHECK-LABEL: @xvsllwil_h_b(
2222 // CHECK-NEXT: entry:
2223 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsllwil.h.b(<32 x i8> [[_1:%.*]], i32 1)
2224 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2226 v16i16 xvsllwil_h_b(v32i8 _1) { return __lasx_xvsllwil_h_b(_1, 1); }
2227 // CHECK-LABEL: @xvsllwil_w_h(
2228 // CHECK-NEXT: entry:
2229 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsllwil.w.h(<16 x i16> [[_1:%.*]], i32 1)
2230 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2232 v8i32 xvsllwil_w_h(v16i16 _1) { return __lasx_xvsllwil_w_h(_1, 1); }
2233 // CHECK-LABEL: @xvsllwil_d_w(
2234 // CHECK-NEXT: entry:
2235 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsllwil.d.w(<8 x i32> [[_1:%.*]], i32 1)
2236 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2238 v4i64 xvsllwil_d_w(v8i32 _1) { return __lasx_xvsllwil_d_w(_1, 1); }
2239 // CHECK-LABEL: @xvsllwil_hu_bu(
2240 // CHECK-NEXT: entry:
2241 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsllwil.hu.bu(<32 x i8> [[_1:%.*]], i32 1)
2242 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2244 v16u16 xvsllwil_hu_bu(v32u8 _1) { return __lasx_xvsllwil_hu_bu(_1, 1); }
2245 // CHECK-LABEL: @xvsllwil_wu_hu(
2246 // CHECK-NEXT: entry:
2247 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsllwil.wu.hu(<16 x i16> [[_1:%.*]], i32 1)
2248 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2250 v8u32 xvsllwil_wu_hu(v16u16 _1) { return __lasx_xvsllwil_wu_hu(_1, 1); }
2251 // CHECK-LABEL: @xvsllwil_du_wu(
2252 // CHECK-NEXT: entry:
2253 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsllwil.du.wu(<8 x i32> [[_1:%.*]], i32 1)
2254 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2256 v4u64 xvsllwil_du_wu(v8u32 _1) { return __lasx_xvsllwil_du_wu(_1, 1); }
2257 // CHECK-LABEL: @xvsran_b_h(
2258 // CHECK-NEXT: entry:
2259 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsran.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2260 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2262 v32i8 xvsran_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvsran_b_h(_1, _2); }
2263 // CHECK-LABEL: @xvsran_h_w(
2264 // CHECK-NEXT: entry:
2265 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsran.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2266 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2268 v16i16 xvsran_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvsran_h_w(_1, _2); }
2269 // CHECK-LABEL: @xvsran_w_d(
2270 // CHECK-NEXT: entry:
2271 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsran.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2272 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2274 v8i32 xvsran_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvsran_w_d(_1, _2); }
2275 // CHECK-LABEL: @xvssran_b_h(
2276 // CHECK-NEXT: entry:
2277 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssran.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2278 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2280 v32i8 xvssran_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvssran_b_h(_1, _2); }
2281 // CHECK-LABEL: @xvssran_h_w(
2282 // CHECK-NEXT: entry:
2283 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssran.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2284 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2286 v16i16 xvssran_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvssran_h_w(_1, _2); }
2287 // CHECK-LABEL: @xvssran_w_d(
2288 // CHECK-NEXT: entry:
2289 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssran.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2290 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2292 v8i32 xvssran_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvssran_w_d(_1, _2); }
2293 // CHECK-LABEL: @xvssran_bu_h(
2294 // CHECK-NEXT: entry:
2295 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssran.bu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2296 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2298 v32u8 xvssran_bu_h(v16u16 _1, v16u16 _2) { return __lasx_xvssran_bu_h(_1, _2); }
2299 // CHECK-LABEL: @xvssran_hu_w(
2300 // CHECK-NEXT: entry:
2301 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssran.hu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2302 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2304 v16u16 xvssran_hu_w(v8u32 _1, v8u32 _2) { return __lasx_xvssran_hu_w(_1, _2); }
2305 // CHECK-LABEL: @xvssran_wu_d(
2306 // CHECK-NEXT: entry:
2307 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssran.wu.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2308 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2310 v8u32 xvssran_wu_d(v4u64 _1, v4u64 _2) { return __lasx_xvssran_wu_d(_1, _2); }
2311 // CHECK-LABEL: @xvsrarn_b_h(
2312 // CHECK-NEXT: entry:
2313 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrarn.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2314 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2316 v32i8 xvsrarn_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvsrarn_b_h(_1, _2); }
2317 // CHECK-LABEL: @xvsrarn_h_w(
2318 // CHECK-NEXT: entry:
2319 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrarn.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2320 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2322 v16i16 xvsrarn_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvsrarn_h_w(_1, _2); }
2323 // CHECK-LABEL: @xvsrarn_w_d(
2324 // CHECK-NEXT: entry:
2325 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrarn.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2326 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2328 v8i32 xvsrarn_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvsrarn_w_d(_1, _2); }
2329 // CHECK-LABEL: @xvssrarn_b_h(
2330 // CHECK-NEXT: entry:
2331 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrarn.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2332 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2334 v32i8 xvssrarn_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvssrarn_b_h(_1, _2); }
2335 // CHECK-LABEL: @xvssrarn_h_w(
2336 // CHECK-NEXT: entry:
2337 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrarn.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2338 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2340 v16i16 xvssrarn_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvssrarn_h_w(_1, _2); }
2341 // CHECK-LABEL: @xvssrarn_w_d(
2342 // CHECK-NEXT: entry:
2343 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrarn.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2344 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2346 v8i32 xvssrarn_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvssrarn_w_d(_1, _2); }
2347 // CHECK-LABEL: @xvssrarn_bu_h(
2348 // CHECK-NEXT: entry:
2349 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrarn.bu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2350 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2352 v32u8 xvssrarn_bu_h(v16u16 _1, v16u16 _2) { return __lasx_xvssrarn_bu_h(_1, _2); }
2353 // CHECK-LABEL: @xvssrarn_hu_w(
2354 // CHECK-NEXT: entry:
2355 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrarn.hu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2356 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2358 v16u16 xvssrarn_hu_w(v8u32 _1, v8u32 _2) { return __lasx_xvssrarn_hu_w(_1, _2); }
2359 // CHECK-LABEL: @xvssrarn_wu_d(
2360 // CHECK-NEXT: entry:
2361 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrarn.wu.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2362 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2364 v8u32 xvssrarn_wu_d(v4u64 _1, v4u64 _2) { return __lasx_xvssrarn_wu_d(_1, _2); }
2365 // CHECK-LABEL: @xvsrln_b_h(
2366 // CHECK-NEXT: entry:
2367 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrln.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2368 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2370 v32i8 xvsrln_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvsrln_b_h(_1, _2); }
2371 // CHECK-LABEL: @xvsrln_h_w(
2372 // CHECK-NEXT: entry:
2373 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrln.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2374 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2376 v16i16 xvsrln_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvsrln_h_w(_1, _2); }
2377 // CHECK-LABEL: @xvsrln_w_d(
2378 // CHECK-NEXT: entry:
2379 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrln.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2380 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2382 v8i32 xvsrln_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvsrln_w_d(_1, _2); }
2383 // CHECK-LABEL: @xvssrln_bu_h(
2384 // CHECK-NEXT: entry:
2385 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrln.bu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2386 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2388 v32u8 xvssrln_bu_h(v16u16 _1, v16u16 _2) { return __lasx_xvssrln_bu_h(_1, _2); }
2389 // CHECK-LABEL: @xvssrln_hu_w(
2390 // CHECK-NEXT: entry:
2391 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrln.hu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2392 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2394 v16u16 xvssrln_hu_w(v8u32 _1, v8u32 _2) { return __lasx_xvssrln_hu_w(_1, _2); }
2395 // CHECK-LABEL: @xvssrln_wu_d(
2396 // CHECK-NEXT: entry:
2397 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrln.wu.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2398 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2400 v8u32 xvssrln_wu_d(v4u64 _1, v4u64 _2) { return __lasx_xvssrln_wu_d(_1, _2); }
2401 // CHECK-LABEL: @xvsrlrn_b_h(
2402 // CHECK-NEXT: entry:
2403 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrlrn.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2404 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2406 v32i8 xvsrlrn_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvsrlrn_b_h(_1, _2); }
2407 // CHECK-LABEL: @xvsrlrn_h_w(
2408 // CHECK-NEXT: entry:
2409 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrlrn.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2410 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2412 v16i16 xvsrlrn_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvsrlrn_h_w(_1, _2); }
2413 // CHECK-LABEL: @xvsrlrn_w_d(
2414 // CHECK-NEXT: entry:
2415 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrlrn.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2416 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2418 v8i32 xvsrlrn_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvsrlrn_w_d(_1, _2); }
2419 // CHECK-LABEL: @xvssrlrn_bu_h(
2420 // CHECK-NEXT: entry:
2421 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrlrn.bu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2422 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2424 v32u8 xvssrlrn_bu_h(v16u16 _1, v16u16 _2) { return __lasx_xvssrlrn_bu_h(_1, _2); }
2425 // CHECK-LABEL: @xvssrlrn_hu_w(
2426 // CHECK-NEXT: entry:
2427 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrlrn.hu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2428 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2430 v16u16 xvssrlrn_hu_w(v8u32 _1, v8u32 _2) { return __lasx_xvssrlrn_hu_w(_1, _2); }
2431 // CHECK-LABEL: @xvssrlrn_wu_d(
2432 // CHECK-NEXT: entry:
2433 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrlrn.wu.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2434 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2436 v8u32 xvssrlrn_wu_d(v4u64 _1, v4u64 _2) { return __lasx_xvssrlrn_wu_d(_1, _2); }
2437 // CHECK-LABEL: @xvfrstpi_b(
2438 // CHECK-NEXT: entry:
2439 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvfrstpi.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
2440 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2442 v32i8 xvfrstpi_b(v32i8 _1, v32i8 _2) { return __lasx_xvfrstpi_b(_1, _2, 1); }
2443 // CHECK-LABEL: @xvfrstpi_h(
2444 // CHECK-NEXT: entry:
2445 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvfrstpi.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
2446 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2448 v16i16 xvfrstpi_h(v16i16 _1, v16i16 _2) { return __lasx_xvfrstpi_h(_1, _2, 1); }
2449 // CHECK-LABEL: @xvfrstp_b(
2450 // CHECK-NEXT: entry:
2451 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvfrstp.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
2452 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2454 v32i8 xvfrstp_b(v32i8 _1, v32i8 _2, v32i8 _3) { return __lasx_xvfrstp_b(_1, _2, _3); }
2455 // CHECK-LABEL: @xvfrstp_h(
2456 // CHECK-NEXT: entry:
2457 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvfrstp.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
2458 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2460 v16i16 xvfrstp_h(v16i16 _1, v16i16 _2, v16i16 _3) { return __lasx_xvfrstp_h(_1, _2, _3); }
2461 // CHECK-LABEL: @xvshuf4i_d(
2462 // CHECK-NEXT: entry:
2463 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvshuf4i.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
2464 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2466 v4i64 xvshuf4i_d(v4i64 _1, v4i64 _2) { return __lasx_xvshuf4i_d(_1, _2, 1); }
2467 // CHECK-LABEL: @xvbsrl_v(
2468 // CHECK-NEXT: entry:
2469 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbsrl.v(<32 x i8> [[_1:%.*]], i32 1)
2470 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2472 v32i8 xvbsrl_v(v32i8 _1) { return __lasx_xvbsrl_v(_1, 1); }
2473 // CHECK-LABEL: @xvbsll_v(
2474 // CHECK-NEXT: entry:
2475 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvbsll.v(<32 x i8> [[_1:%.*]], i32 1)
2476 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2478 v32i8 xvbsll_v(v32i8 _1) { return __lasx_xvbsll_v(_1, 1); }
2479 // CHECK-LABEL: @xvextrins_b(
2480 // CHECK-NEXT: entry:
2481 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvextrins.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
2482 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2484 v32i8 xvextrins_b(v32i8 _1, v32i8 _2) { return __lasx_xvextrins_b(_1, _2, 1); }
2485 // CHECK-LABEL: @xvextrins_h(
2486 // CHECK-NEXT: entry:
2487 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvextrins.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
2488 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2490 v16i16 xvextrins_h(v16i16 _1, v16i16 _2) { return __lasx_xvextrins_h(_1, _2, 1); }
2491 // CHECK-LABEL: @xvextrins_w(
2492 // CHECK-NEXT: entry:
2493 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvextrins.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
2494 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2496 v8i32 xvextrins_w(v8i32 _1, v8i32 _2) { return __lasx_xvextrins_w(_1, _2, 1); }
2497 // CHECK-LABEL: @xvextrins_d(
2498 // CHECK-NEXT: entry:
2499 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvextrins.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
2500 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2502 v4i64 xvextrins_d(v4i64 _1, v4i64 _2) { return __lasx_xvextrins_d(_1, _2, 1); }
2503 // CHECK-LABEL: @xvmskltz_b(
2504 // CHECK-NEXT: entry:
2505 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmskltz.b(<32 x i8> [[_1:%.*]])
2506 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2508 v32i8 xvmskltz_b(v32i8 _1) { return __lasx_xvmskltz_b(_1); }
2509 // CHECK-LABEL: @xvmskltz_h(
2510 // CHECK-NEXT: entry:
2511 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmskltz.h(<16 x i16> [[_1:%.*]])
2512 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2514 v16i16 xvmskltz_h(v16i16 _1) { return __lasx_xvmskltz_h(_1); }
2515 // CHECK-LABEL: @xvmskltz_w(
2516 // CHECK-NEXT: entry:
2517 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmskltz.w(<8 x i32> [[_1:%.*]])
2518 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2520 v8i32 xvmskltz_w(v8i32 _1) { return __lasx_xvmskltz_w(_1); }
2521 // CHECK-LABEL: @xvmskltz_d(
2522 // CHECK-NEXT: entry:
2523 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmskltz.d(<4 x i64> [[_1:%.*]])
2524 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2526 v4i64 xvmskltz_d(v4i64 _1) { return __lasx_xvmskltz_d(_1); }
2527 // CHECK-LABEL: @xvsigncov_b(
2528 // CHECK-NEXT: entry:
2529 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsigncov.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
2530 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2532 v32i8 xvsigncov_b(v32i8 _1, v32i8 _2) { return __lasx_xvsigncov_b(_1, _2); }
2533 // CHECK-LABEL: @xvsigncov_h(
2534 // CHECK-NEXT: entry:
2535 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsigncov.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2536 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2538 v16i16 xvsigncov_h(v16i16 _1, v16i16 _2) { return __lasx_xvsigncov_h(_1, _2); }
2539 // CHECK-LABEL: @xvsigncov_w(
2540 // CHECK-NEXT: entry:
2541 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsigncov.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2542 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2544 v8i32 xvsigncov_w(v8i32 _1, v8i32 _2) { return __lasx_xvsigncov_w(_1, _2); }
2545 // CHECK-LABEL: @xvsigncov_d(
2546 // CHECK-NEXT: entry:
2547 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsigncov.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2548 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2550 v4i64 xvsigncov_d(v4i64 _1, v4i64 _2) { return __lasx_xvsigncov_d(_1, _2); }
2551 // CHECK-LABEL: @xvfmadd_s(
2552 // CHECK-NEXT: entry:
2553 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfmadd.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]], <8 x float> [[_3:%.*]])
2554 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2556 v8f32 xvfmadd_s(v8f32 _1, v8f32 _2, v8f32 _3) { return __lasx_xvfmadd_s(_1, _2, _3); }
2557 // CHECK-LABEL: @xvfmadd_d(
2558 // CHECK-NEXT: entry:
2559 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfmadd.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]], <4 x double> [[_3:%.*]])
2560 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2562 v4f64 xvfmadd_d(v4f64 _1, v4f64 _2, v4f64 _3) { return __lasx_xvfmadd_d(_1, _2, _3); }
2563 // CHECK-LABEL: @xvfmsub_s(
2564 // CHECK-NEXT: entry:
2565 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfmsub.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]], <8 x float> [[_3:%.*]])
2566 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2568 v8f32 xvfmsub_s(v8f32 _1, v8f32 _2, v8f32 _3) { return __lasx_xvfmsub_s(_1, _2, _3); }
2569 // CHECK-LABEL: @xvfmsub_d(
2570 // CHECK-NEXT: entry:
2571 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfmsub.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]], <4 x double> [[_3:%.*]])
2572 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2574 v4f64 xvfmsub_d(v4f64 _1, v4f64 _2, v4f64 _3) { return __lasx_xvfmsub_d(_1, _2, _3); }
2575 // CHECK-LABEL: @xvfnmadd_s(
2576 // CHECK-NEXT: entry:
2577 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfnmadd.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]], <8 x float> [[_3:%.*]])
2578 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2580 v8f32 xvfnmadd_s(v8f32 _1, v8f32 _2, v8f32 _3) { return __lasx_xvfnmadd_s(_1, _2, _3); }
2581 // CHECK-LABEL: @xvfnmadd_d(
2582 // CHECK-NEXT: entry:
2583 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfnmadd.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]], <4 x double> [[_3:%.*]])
2584 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2586 v4f64 xvfnmadd_d(v4f64 _1, v4f64 _2, v4f64 _3) { return __lasx_xvfnmadd_d(_1, _2, _3); }
2587 // CHECK-LABEL: @xvfnmsub_s(
2588 // CHECK-NEXT: entry:
2589 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfnmsub.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]], <8 x float> [[_3:%.*]])
2590 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2592 v8f32 xvfnmsub_s(v8f32 _1, v8f32 _2, v8f32 _3) { return __lasx_xvfnmsub_s(_1, _2, _3); }
2593 // CHECK-LABEL: @xvfnmsub_d(
2594 // CHECK-NEXT: entry:
2595 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfnmsub.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]], <4 x double> [[_3:%.*]])
2596 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2598 v4f64 xvfnmsub_d(v4f64 _1, v4f64 _2, v4f64 _3) { return __lasx_xvfnmsub_d(_1, _2, _3); }
2599 // CHECK-LABEL: @xvftintrne_w_s(
2600 // CHECK-NEXT: entry:
2601 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrne.w.s(<8 x float> [[_1:%.*]])
2602 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2604 v8i32 xvftintrne_w_s(v8f32 _1) { return __lasx_xvftintrne_w_s(_1); }
2605 // CHECK-LABEL: @xvftintrne_l_d(
2606 // CHECK-NEXT: entry:
2607 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrne.l.d(<4 x double> [[_1:%.*]])
2608 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2610 v4i64 xvftintrne_l_d(v4f64 _1) { return __lasx_xvftintrne_l_d(_1); }
2611 // CHECK-LABEL: @xvftintrp_w_s(
2612 // CHECK-NEXT: entry:
2613 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrp.w.s(<8 x float> [[_1:%.*]])
2614 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2616 v8i32 xvftintrp_w_s(v8f32 _1) { return __lasx_xvftintrp_w_s(_1); }
2617 // CHECK-LABEL: @xvftintrp_l_d(
2618 // CHECK-NEXT: entry:
2619 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrp.l.d(<4 x double> [[_1:%.*]])
2620 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2622 v4i64 xvftintrp_l_d(v4f64 _1) { return __lasx_xvftintrp_l_d(_1); }
2623 // CHECK-LABEL: @xvftintrm_w_s(
2624 // CHECK-NEXT: entry:
2625 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrm.w.s(<8 x float> [[_1:%.*]])
2626 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2628 v8i32 xvftintrm_w_s(v8f32 _1) { return __lasx_xvftintrm_w_s(_1); }
2629 // CHECK-LABEL: @xvftintrm_l_d(
2630 // CHECK-NEXT: entry:
2631 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrm.l.d(<4 x double> [[_1:%.*]])
2632 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2634 v4i64 xvftintrm_l_d(v4f64 _1) { return __lasx_xvftintrm_l_d(_1); }
2635 // CHECK-LABEL: @xvftint_w_d(
2636 // CHECK-NEXT: entry:
2637 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftint.w.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
2638 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2640 v8i32 xvftint_w_d(v4f64 _1, v4f64 _2) { return __lasx_xvftint_w_d(_1, _2); }
2641 // CHECK-LABEL: @xvffint_s_l(
2642 // CHECK-NEXT: entry:
2643 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvffint.s.l(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2644 // CHECK-NEXT: ret <8 x float> [[TMP0]]
2646 v8f32 xvffint_s_l(v4i64 _1, v4i64 _2) { return __lasx_xvffint_s_l(_1, _2); }
2647 // CHECK-LABEL: @xvftintrz_w_d(
2648 // CHECK-NEXT: entry:
2649 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrz.w.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
2650 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2652 v8i32 xvftintrz_w_d(v4f64 _1, v4f64 _2) { return __lasx_xvftintrz_w_d(_1, _2); }
2653 // CHECK-LABEL: @xvftintrp_w_d(
2654 // CHECK-NEXT: entry:
2655 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrp.w.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
2656 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2658 v8i32 xvftintrp_w_d(v4f64 _1, v4f64 _2) { return __lasx_xvftintrp_w_d(_1, _2); }
2659 // CHECK-LABEL: @xvftintrm_w_d(
2660 // CHECK-NEXT: entry:
2661 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrm.w.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
2662 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2664 v8i32 xvftintrm_w_d(v4f64 _1, v4f64 _2) { return __lasx_xvftintrm_w_d(_1, _2); }
2665 // CHECK-LABEL: @xvftintrne_w_d(
2666 // CHECK-NEXT: entry:
2667 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvftintrne.w.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
2668 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2670 v8i32 xvftintrne_w_d(v4f64 _1, v4f64 _2) { return __lasx_xvftintrne_w_d(_1, _2); }
2671 // CHECK-LABEL: @xvftinth_l_s(
2672 // CHECK-NEXT: entry:
2673 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftinth.l.s(<8 x float> [[_1:%.*]])
2674 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2676 v4i64 xvftinth_l_s(v8f32 _1) { return __lasx_xvftinth_l_s(_1); }
2677 // CHECK-LABEL: @xvftintl_l_s(
2678 // CHECK-NEXT: entry:
2679 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintl.l.s(<8 x float> [[_1:%.*]])
2680 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2682 v4i64 xvftintl_l_s(v8f32 _1) { return __lasx_xvftintl_l_s(_1); }
2683 // CHECK-LABEL: @xvffinth_d_w(
2684 // CHECK-NEXT: entry:
2685 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvffinth.d.w(<8 x i32> [[_1:%.*]])
2686 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2688 v4f64 xvffinth_d_w(v8i32 _1) { return __lasx_xvffinth_d_w(_1); }
2689 // CHECK-LABEL: @xvffintl_d_w(
2690 // CHECK-NEXT: entry:
2691 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvffintl.d.w(<8 x i32> [[_1:%.*]])
2692 // CHECK-NEXT: ret <4 x double> [[TMP0]]
2694 v4f64 xvffintl_d_w(v8i32 _1) { return __lasx_xvffintl_d_w(_1); }
2695 // CHECK-LABEL: @xvftintrzh_l_s(
2696 // CHECK-NEXT: entry:
2697 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrzh.l.s(<8 x float> [[_1:%.*]])
2698 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2700 v4i64 xvftintrzh_l_s(v8f32 _1) { return __lasx_xvftintrzh_l_s(_1); }
2701 // CHECK-LABEL: @xvftintrzl_l_s(
2702 // CHECK-NEXT: entry:
2703 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrzl.l.s(<8 x float> [[_1:%.*]])
2704 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2706 v4i64 xvftintrzl_l_s(v8f32 _1) { return __lasx_xvftintrzl_l_s(_1); }
2707 // CHECK-LABEL: @xvftintrph_l_s(
2708 // CHECK-NEXT: entry:
2709 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrph.l.s(<8 x float> [[_1:%.*]])
2710 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2712 v4i64 xvftintrph_l_s(v8f32 _1) { return __lasx_xvftintrph_l_s(_1); }
2713 // CHECK-LABEL: @xvftintrpl_l_s(
2714 // CHECK-NEXT: entry:
2715 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrpl.l.s(<8 x float> [[_1:%.*]])
2716 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2718 v4i64 xvftintrpl_l_s(v8f32 _1) { return __lasx_xvftintrpl_l_s(_1); }
2719 // CHECK-LABEL: @xvftintrmh_l_s(
2720 // CHECK-NEXT: entry:
2721 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrmh.l.s(<8 x float> [[_1:%.*]])
2722 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2724 v4i64 xvftintrmh_l_s(v8f32 _1) { return __lasx_xvftintrmh_l_s(_1); }
2725 // CHECK-LABEL: @xvftintrml_l_s(
2726 // CHECK-NEXT: entry:
2727 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrml.l.s(<8 x float> [[_1:%.*]])
2728 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2730 v4i64 xvftintrml_l_s(v8f32 _1) { return __lasx_xvftintrml_l_s(_1); }
2731 // CHECK-LABEL: @xvftintrneh_l_s(
2732 // CHECK-NEXT: entry:
2733 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrneh.l.s(<8 x float> [[_1:%.*]])
2734 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2736 v4i64 xvftintrneh_l_s(v8f32 _1) { return __lasx_xvftintrneh_l_s(_1); }
2737 // CHECK-LABEL: @xvftintrnel_l_s(
2738 // CHECK-NEXT: entry:
2739 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvftintrnel.l.s(<8 x float> [[_1:%.*]])
2740 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2742 v4i64 xvftintrnel_l_s(v8f32 _1) { return __lasx_xvftintrnel_l_s(_1); }
2743 // CHECK-LABEL: @xvfrintrne_s(
2744 // CHECK-NEXT: entry:
2745 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfrintrne.s(<8 x float> [[_1:%.*]])
2746 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x float> [[TMP0]] to <8 x i32>
2747 // CHECK-NEXT: ret <8 x i32> [[TMP1]]
2749 v8i32 xvfrintrne_s(v8f32 _1) { return __lasx_xvfrintrne_s(_1); }
2750 // CHECK-LABEL: @xvfrintrne_d(
2751 // CHECK-NEXT: entry:
2752 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfrintrne.d(<4 x double> [[_1:%.*]])
2753 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x double> [[TMP0]] to <4 x i64>
2754 // CHECK-NEXT: ret <4 x i64> [[TMP1]]
2756 v4i64 xvfrintrne_d(v4f64 _1) { return __lasx_xvfrintrne_d(_1); }
2757 // CHECK-LABEL: @xvfrintrz_s(
2758 // CHECK-NEXT: entry:
2759 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfrintrz.s(<8 x float> [[_1:%.*]])
2760 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x float> [[TMP0]] to <8 x i32>
2761 // CHECK-NEXT: ret <8 x i32> [[TMP1]]
2763 v8i32 xvfrintrz_s(v8f32 _1) { return __lasx_xvfrintrz_s(_1); }
2764 // CHECK-LABEL: @xvfrintrz_d(
2765 // CHECK-NEXT: entry:
2766 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfrintrz.d(<4 x double> [[_1:%.*]])
2767 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x double> [[TMP0]] to <4 x i64>
2768 // CHECK-NEXT: ret <4 x i64> [[TMP1]]
2770 v4i64 xvfrintrz_d(v4f64 _1) { return __lasx_xvfrintrz_d(_1); }
2771 // CHECK-LABEL: @xvfrintrp_s(
2772 // CHECK-NEXT: entry:
2773 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfrintrp.s(<8 x float> [[_1:%.*]])
2774 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x float> [[TMP0]] to <8 x i32>
2775 // CHECK-NEXT: ret <8 x i32> [[TMP1]]
2777 v8i32 xvfrintrp_s(v8f32 _1) { return __lasx_xvfrintrp_s(_1); }
2778 // CHECK-LABEL: @xvfrintrp_d(
2779 // CHECK-NEXT: entry:
2780 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfrintrp.d(<4 x double> [[_1:%.*]])
2781 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x double> [[TMP0]] to <4 x i64>
2782 // CHECK-NEXT: ret <4 x i64> [[TMP1]]
2784 v4i64 xvfrintrp_d(v4f64 _1) { return __lasx_xvfrintrp_d(_1); }
2785 // CHECK-LABEL: @xvfrintrm_s(
2786 // CHECK-NEXT: entry:
2787 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvfrintrm.s(<8 x float> [[_1:%.*]])
2788 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x float> [[TMP0]] to <8 x i32>
2789 // CHECK-NEXT: ret <8 x i32> [[TMP1]]
2791 v8i32 xvfrintrm_s(v8f32 _1) { return __lasx_xvfrintrm_s(_1); }
2792 // CHECK-LABEL: @xvfrintrm_d(
2793 // CHECK-NEXT: entry:
2794 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvfrintrm.d(<4 x double> [[_1:%.*]])
2795 // CHECK-NEXT: [[TMP1:%.*]] = bitcast <4 x double> [[TMP0]] to <4 x i64>
2796 // CHECK-NEXT: ret <4 x i64> [[TMP1]]
2798 v4i64 xvfrintrm_d(v4f64 _1) { return __lasx_xvfrintrm_d(_1); }
2799 // CHECK-LABEL: @xvld(
2800 // CHECK-NEXT: entry:
2801 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvld(ptr [[_1:%.*]], i32 1)
2802 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2804 v32i8 xvld(void * _1) { return __lasx_xvld(_1, 1); }
2805 // CHECK-LABEL: @xvst(
2806 // CHECK-NEXT: entry:
2807 // CHECK-NEXT: tail call void @llvm.loongarch.lasx.xvst(<32 x i8> [[_1:%.*]], ptr [[_2:%.*]], i32 1)
2808 // CHECK-NEXT: ret void
2810 void xvst(v32i8 _1, void * _2) { return __lasx_xvst(_1, _2, 1); }
2811 // CHECK-LABEL: @xvstelm_b(
2812 // CHECK-NEXT: entry:
2813 // CHECK-NEXT: tail call void @llvm.loongarch.lasx.xvstelm.b(<32 x i8> [[_1:%.*]], ptr [[_2:%.*]], i32 1, i32 1)
2814 // CHECK-NEXT: ret void
2816 void xvstelm_b(v32i8 _1, void * _2) { return __lasx_xvstelm_b(_1, _2, 1, 1); }
2817 // CHECK-LABEL: @xvstelm_h(
2818 // CHECK-NEXT: entry:
2819 // CHECK-NEXT: tail call void @llvm.loongarch.lasx.xvstelm.h(<16 x i16> [[_1:%.*]], ptr [[_2:%.*]], i32 2, i32 1)
2820 // CHECK-NEXT: ret void
2822 void xvstelm_h(v16i16 _1, void * _2) { return __lasx_xvstelm_h(_1, _2, 2, 1); }
2823 // CHECK-LABEL: @xvstelm_w(
2824 // CHECK-NEXT: entry:
2825 // CHECK-NEXT: tail call void @llvm.loongarch.lasx.xvstelm.w(<8 x i32> [[_1:%.*]], ptr [[_2:%.*]], i32 4, i32 1)
2826 // CHECK-NEXT: ret void
2828 void xvstelm_w(v8i32 _1, void * _2) { return __lasx_xvstelm_w(_1, _2, 4, 1); }
2829 // CHECK-LABEL: @xvstelm_d(
2830 // CHECK-NEXT: entry:
2831 // CHECK-NEXT: tail call void @llvm.loongarch.lasx.xvstelm.d(<4 x i64> [[_1:%.*]], ptr [[_2:%.*]], i32 8, i32 1)
2832 // CHECK-NEXT: ret void
2834 void xvstelm_d(v4i64 _1, void * _2) { return __lasx_xvstelm_d(_1, _2, 8, 1); }
2835 // CHECK-LABEL: @xvinsve0_w(
2836 // CHECK-NEXT: entry:
2837 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvinsve0.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
2838 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2840 v8i32 xvinsve0_w(v8i32 _1, v8i32 _2) { return __lasx_xvinsve0_w(_1, _2, 1); }
2841 // CHECK-LABEL: @xvinsve0_d(
2842 // CHECK-NEXT: entry:
2843 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvinsve0.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
2844 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2846 v4i64 xvinsve0_d(v4i64 _1, v4i64 _2) { return __lasx_xvinsve0_d(_1, _2, 1); }
2847 // CHECK-LABEL: @xvpickve_w(
2848 // CHECK-NEXT: entry:
2849 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvpickve.w(<8 x i32> [[_1:%.*]], i32 1)
2850 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2852 v8i32 xvpickve_w(v8i32 _1) { return __lasx_xvpickve_w(_1, 1); }
2853 // CHECK-LABEL: @xvpickve_d(
2854 // CHECK-NEXT: entry:
2855 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvpickve.d(<4 x i64> [[_1:%.*]], i32 1)
2856 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2858 v4i64 xvpickve_d(v4i64 _1) { return __lasx_xvpickve_d(_1, 1); }
2859 // CHECK-LABEL: @xvssrlrn_b_h(
2860 // CHECK-NEXT: entry:
2861 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrlrn.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2862 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2864 v32i8 xvssrlrn_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvssrlrn_b_h(_1, _2); }
2865 // CHECK-LABEL: @xvssrlrn_h_w(
2866 // CHECK-NEXT: entry:
2867 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrlrn.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2868 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2870 v16i16 xvssrlrn_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvssrlrn_h_w(_1, _2); }
2871 // CHECK-LABEL: @xvssrlrn_w_d(
2872 // CHECK-NEXT: entry:
2873 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrlrn.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2874 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2876 v8i32 xvssrlrn_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvssrlrn_w_d(_1, _2); }
2877 // CHECK-LABEL: @xvssrln_b_h(
2878 // CHECK-NEXT: entry:
2879 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrln.b.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
2880 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2882 v32i8 xvssrln_b_h(v16i16 _1, v16i16 _2) { return __lasx_xvssrln_b_h(_1, _2); }
2883 // CHECK-LABEL: @xvssrln_h_w(
2884 // CHECK-NEXT: entry:
2885 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrln.h.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
2886 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2888 v16i16 xvssrln_h_w(v8i32 _1, v8i32 _2) { return __lasx_xvssrln_h_w(_1, _2); }
2889 // CHECK-LABEL: @xvssrln_w_d(
2890 // CHECK-NEXT: entry:
2891 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrln.w.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
2892 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2894 v8i32 xvssrln_w_d(v4i64 _1, v4i64 _2) { return __lasx_xvssrln_w_d(_1, _2); }
2895 // CHECK-LABEL: @xvorn_v(
2896 // CHECK-NEXT: entry:
2897 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvorn.v(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
2898 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2900 v32i8 xvorn_v(v32i8 _1, v32i8 _2) { return __lasx_xvorn_v(_1, _2); }
2901 // CHECK-LABEL: @xvldi(
2902 // CHECK-NEXT: entry:
2903 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvldi(i32 1)
2904 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2906 v4i64 xvldi() { return __lasx_xvldi(1); }
2907 // CHECK-LABEL: @xvldx(
2908 // CHECK-NEXT: entry:
2909 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvldx(ptr [[_1:%.*]], i64 1)
2910 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2912 v32i8 xvldx(void * _1) { return __lasx_xvldx(_1, 1); }
2913 // CHECK-LABEL: @xvstx(
2914 // CHECK-NEXT: entry:
2915 // CHECK-NEXT: tail call void @llvm.loongarch.lasx.xvstx(<32 x i8> [[_1:%.*]], ptr [[_2:%.*]], i64 1)
2916 // CHECK-NEXT: ret void
2918 void xvstx(v32i8 _1, void * _2) { return __lasx_xvstx(_1, _2, 1); }
2919 // CHECK-LABEL: @xvextl_qu_du(
2920 // CHECK-NEXT: entry:
2921 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvextl.qu.du(<4 x i64> [[_1:%.*]])
2922 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2924 v4u64 xvextl_qu_du(v4u64 _1) { return __lasx_xvextl_qu_du(_1); }
2925 // CHECK-LABEL: @xvinsgr2vr_w(
2926 // CHECK-NEXT: entry:
2927 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvinsgr2vr.w(<8 x i32> [[_1:%.*]], i32 1, i32 1)
2928 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2930 v8i32 xvinsgr2vr_w(v8i32 _1) { return __lasx_xvinsgr2vr_w(_1, 1, 1); }
2931 // CHECK-LABEL: @xvinsgr2vr_d(
2932 // CHECK-NEXT: entry:
2933 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvinsgr2vr.d(<4 x i64> [[_1:%.*]], i64 1, i32 1)
2934 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2936 v4i64 xvinsgr2vr_d(v4i64 _1) { return __lasx_xvinsgr2vr_d(_1, 1, 1); }
2937 // CHECK-LABEL: @xvreplve0_b(
2938 // CHECK-NEXT: entry:
2939 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvreplve0.b(<32 x i8> [[_1:%.*]])
2940 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2942 v32i8 xvreplve0_b(v32i8 _1) { return __lasx_xvreplve0_b(_1); }
2943 // CHECK-LABEL: @xvreplve0_h(
2944 // CHECK-NEXT: entry:
2945 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvreplve0.h(<16 x i16> [[_1:%.*]])
2946 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2948 v16i16 xvreplve0_h(v16i16 _1) { return __lasx_xvreplve0_h(_1); }
2949 // CHECK-LABEL: @xvreplve0_w(
2950 // CHECK-NEXT: entry:
2951 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvreplve0.w(<8 x i32> [[_1:%.*]])
2952 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2954 v8i32 xvreplve0_w(v8i32 _1) { return __lasx_xvreplve0_w(_1); }
2955 // CHECK-LABEL: @xvreplve0_d(
2956 // CHECK-NEXT: entry:
2957 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvreplve0.d(<4 x i64> [[_1:%.*]])
2958 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2960 v4i64 xvreplve0_d(v4i64 _1) { return __lasx_xvreplve0_d(_1); }
2961 // CHECK-LABEL: @xvreplve0_q(
2962 // CHECK-NEXT: entry:
2963 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvreplve0.q(<32 x i8> [[_1:%.*]])
2964 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
2966 v32i8 xvreplve0_q(v32i8 _1) { return __lasx_xvreplve0_q(_1); }
2967 // CHECK-LABEL: @vext2xv_h_b(
2968 // CHECK-NEXT: entry:
2969 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.vext2xv.h.b(<32 x i8> [[_1:%.*]])
2970 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
2972 v16i16 vext2xv_h_b(v32i8 _1) { return __lasx_vext2xv_h_b(_1); }
2973 // CHECK-LABEL: @vext2xv_w_h(
2974 // CHECK-NEXT: entry:
2975 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.vext2xv.w.h(<16 x i16> [[_1:%.*]])
2976 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2978 v8i32 vext2xv_w_h(v16i16 _1) { return __lasx_vext2xv_w_h(_1); }
2979 // CHECK-LABEL: @vext2xv_d_w(
2980 // CHECK-NEXT: entry:
2981 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.vext2xv.d.w(<8 x i32> [[_1:%.*]])
2982 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2984 v4i64 vext2xv_d_w(v8i32 _1) { return __lasx_vext2xv_d_w(_1); }
2985 // CHECK-LABEL: @vext2xv_w_b(
2986 // CHECK-NEXT: entry:
2987 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.vext2xv.w.b(<32 x i8> [[_1:%.*]])
2988 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
2990 v8i32 vext2xv_w_b(v32i8 _1) { return __lasx_vext2xv_w_b(_1); }
2991 // CHECK-LABEL: @vext2xv_d_h(
2992 // CHECK-NEXT: entry:
2993 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.vext2xv.d.h(<16 x i16> [[_1:%.*]])
2994 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
2996 v4i64 vext2xv_d_h(v16i16 _1) { return __lasx_vext2xv_d_h(_1); }
2997 // CHECK-LABEL: @vext2xv_d_b(
2998 // CHECK-NEXT: entry:
2999 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.vext2xv.d.b(<32 x i8> [[_1:%.*]])
3000 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3002 v4i64 vext2xv_d_b(v32i8 _1) { return __lasx_vext2xv_d_b(_1); }
3003 // CHECK-LABEL: @vext2xv_hu_bu(
3004 // CHECK-NEXT: entry:
3005 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.vext2xv.hu.bu(<32 x i8> [[_1:%.*]])
3006 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3008 v16i16 vext2xv_hu_bu(v32i8 _1) { return __lasx_vext2xv_hu_bu(_1); }
3009 // CHECK-LABEL: @vext2xv_wu_hu(
3010 // CHECK-NEXT: entry:
3011 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.vext2xv.wu.hu(<16 x i16> [[_1:%.*]])
3012 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3014 v8i32 vext2xv_wu_hu(v16i16 _1) { return __lasx_vext2xv_wu_hu(_1); }
3015 // CHECK-LABEL: @vext2xv_du_wu(
3016 // CHECK-NEXT: entry:
3017 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.vext2xv.du.wu(<8 x i32> [[_1:%.*]])
3018 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3020 v4i64 vext2xv_du_wu(v8i32 _1) { return __lasx_vext2xv_du_wu(_1); }
3021 // CHECK-LABEL: @vext2xv_wu_bu(
3022 // CHECK-NEXT: entry:
3023 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.vext2xv.wu.bu(<32 x i8> [[_1:%.*]])
3024 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3026 v8i32 vext2xv_wu_bu(v32i8 _1) { return __lasx_vext2xv_wu_bu(_1); }
3027 // CHECK-LABEL: @vext2xv_du_hu(
3028 // CHECK-NEXT: entry:
3029 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.vext2xv.du.hu(<16 x i16> [[_1:%.*]])
3030 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3032 v4i64 vext2xv_du_hu(v16i16 _1) { return __lasx_vext2xv_du_hu(_1); }
3033 // CHECK-LABEL: @vext2xv_du_bu(
3034 // CHECK-NEXT: entry:
3035 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.vext2xv.du.bu(<32 x i8> [[_1:%.*]])
3036 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3038 v4i64 vext2xv_du_bu(v32i8 _1) { return __lasx_vext2xv_du_bu(_1); }
3039 // CHECK-LABEL: @xvpermi_q(
3040 // CHECK-NEXT: entry:
3041 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvpermi.q(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3042 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3044 v32i8 xvpermi_q(v32i8 _1, v32i8 _2) { return __lasx_xvpermi_q(_1, _2, 1); }
3045 // CHECK-LABEL: @xvpermi_d(
3046 // CHECK-NEXT: entry:
3047 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvpermi.d(<4 x i64> [[_1:%.*]], i32 1)
3048 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3050 v4i64 xvpermi_d(v4i64 _1) { return __lasx_xvpermi_d(_1, 1); }
3051 // CHECK-LABEL: @xvperm_w(
3052 // CHECK-NEXT: entry:
3053 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvperm.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3054 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3056 v8i32 xvperm_w(v8i32 _1, v8i32 _2) { return __lasx_xvperm_w(_1, _2); }
3057 // CHECK-LABEL: @xvldrepl_b(
3058 // CHECK-NEXT: entry:
3059 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvldrepl.b(ptr [[_1:%.*]], i32 1)
3060 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3062 v32i8 xvldrepl_b(void * _1) { return __lasx_xvldrepl_b(_1, 1); }
3063 // CHECK-LABEL: @xvldrepl_h(
3064 // CHECK-NEXT: entry:
3065 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvldrepl.h(ptr [[_1:%.*]], i32 2)
3066 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3068 v16i16 xvldrepl_h(void * _1) { return __lasx_xvldrepl_h(_1, 2); }
3069 // CHECK-LABEL: @xvldrepl_w(
3070 // CHECK-NEXT: entry:
3071 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvldrepl.w(ptr [[_1:%.*]], i32 4)
3072 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3074 v8i32 xvldrepl_w(void * _1) { return __lasx_xvldrepl_w(_1, 4); }
3075 // CHECK-LABEL: @xvldrepl_d(
3076 // CHECK-NEXT: entry:
3077 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvldrepl.d(ptr [[_1:%.*]], i32 8)
3078 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3080 v4i64 xvldrepl_d(void * _1) { return __lasx_xvldrepl_d(_1, 8); }
3081 // CHECK-LABEL: @xvpickve2gr_w(
3082 // CHECK-NEXT: entry:
3083 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xvpickve2gr.w(<8 x i32> [[_1:%.*]], i32 1)
3084 // CHECK-NEXT: ret i32 [[TMP0]]
3086 int xvpickve2gr_w(v8i32 _1) { return __lasx_xvpickve2gr_w(_1, 1); }
3087 // CHECK-LABEL: @xvpickve2gr_wu(
3088 // CHECK-NEXT: entry:
3089 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xvpickve2gr.wu(<8 x i32> [[_1:%.*]], i32 1)
3090 // CHECK-NEXT: ret i32 [[TMP0]]
3092 unsigned int xvpickve2gr_wu(v8i32 _1) { return __lasx_xvpickve2gr_wu(_1, 1); }
3093 // CHECK-LABEL: @xvpickve2gr_d(
3094 // CHECK-NEXT: entry:
3095 // CHECK-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.loongarch.lasx.xvpickve2gr.d(<4 x i64> [[_1:%.*]], i32 1)
3096 // CHECK-NEXT: ret i64 [[TMP0]]
3098 long xvpickve2gr_d(v4i64 _1) { return __lasx_xvpickve2gr_d(_1, 1); }
3099 // CHECK-LABEL: @xvpickve2gr_du(
3100 // CHECK-NEXT: entry:
3101 // CHECK-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.loongarch.lasx.xvpickve2gr.du(<4 x i64> [[_1:%.*]], i32 1)
3102 // CHECK-NEXT: ret i64 [[TMP0]]
3104 unsigned long int xvpickve2gr_du(v4i64 _1) { return __lasx_xvpickve2gr_du(_1, 1); }
3105 // CHECK-LABEL: @xvaddwev_q_d(
3106 // CHECK-NEXT: entry:
3107 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwev.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3108 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3110 v4i64 xvaddwev_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvaddwev_q_d(_1, _2); }
3111 // CHECK-LABEL: @xvaddwev_d_w(
3112 // CHECK-NEXT: entry:
3113 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwev.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3114 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3116 v4i64 xvaddwev_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvaddwev_d_w(_1, _2); }
3117 // CHECK-LABEL: @xvaddwev_w_h(
3118 // CHECK-NEXT: entry:
3119 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvaddwev.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3120 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3122 v8i32 xvaddwev_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvaddwev_w_h(_1, _2); }
3123 // CHECK-LABEL: @xvaddwev_h_b(
3124 // CHECK-NEXT: entry:
3125 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvaddwev.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3126 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3128 v16i16 xvaddwev_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvaddwev_h_b(_1, _2); }
3129 // CHECK-LABEL: @xvaddwev_q_du(
3130 // CHECK-NEXT: entry:
3131 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwev.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3132 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3134 v4i64 xvaddwev_q_du(v4u64 _1, v4u64 _2) { return __lasx_xvaddwev_q_du(_1, _2); }
3135 // CHECK-LABEL: @xvaddwev_d_wu(
3136 // CHECK-NEXT: entry:
3137 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwev.d.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3138 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3140 v4i64 xvaddwev_d_wu(v8u32 _1, v8u32 _2) { return __lasx_xvaddwev_d_wu(_1, _2); }
3141 // CHECK-LABEL: @xvaddwev_w_hu(
3142 // CHECK-NEXT: entry:
3143 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvaddwev.w.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3144 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3146 v8i32 xvaddwev_w_hu(v16u16 _1, v16u16 _2) { return __lasx_xvaddwev_w_hu(_1, _2); }
3147 // CHECK-LABEL: @xvaddwev_h_bu(
3148 // CHECK-NEXT: entry:
3149 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvaddwev.h.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3150 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3152 v16i16 xvaddwev_h_bu(v32u8 _1, v32u8 _2) { return __lasx_xvaddwev_h_bu(_1, _2); }
3153 // CHECK-LABEL: @xvsubwev_q_d(
3154 // CHECK-NEXT: entry:
3155 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwev.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3156 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3158 v4i64 xvsubwev_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvsubwev_q_d(_1, _2); }
3159 // CHECK-LABEL: @xvsubwev_d_w(
3160 // CHECK-NEXT: entry:
3161 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwev.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3162 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3164 v4i64 xvsubwev_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvsubwev_d_w(_1, _2); }
3165 // CHECK-LABEL: @xvsubwev_w_h(
3166 // CHECK-NEXT: entry:
3167 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsubwev.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3168 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3170 v8i32 xvsubwev_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvsubwev_w_h(_1, _2); }
3171 // CHECK-LABEL: @xvsubwev_h_b(
3172 // CHECK-NEXT: entry:
3173 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsubwev.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3174 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3176 v16i16 xvsubwev_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvsubwev_h_b(_1, _2); }
3177 // CHECK-LABEL: @xvsubwev_q_du(
3178 // CHECK-NEXT: entry:
3179 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwev.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3180 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3182 v4i64 xvsubwev_q_du(v4u64 _1, v4u64 _2) { return __lasx_xvsubwev_q_du(_1, _2); }
3183 // CHECK-LABEL: @xvsubwev_d_wu(
3184 // CHECK-NEXT: entry:
3185 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwev.d.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3186 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3188 v4i64 xvsubwev_d_wu(v8u32 _1, v8u32 _2) { return __lasx_xvsubwev_d_wu(_1, _2); }
3189 // CHECK-LABEL: @xvsubwev_w_hu(
3190 // CHECK-NEXT: entry:
3191 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsubwev.w.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3192 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3194 v8i32 xvsubwev_w_hu(v16u16 _1, v16u16 _2) { return __lasx_xvsubwev_w_hu(_1, _2); }
3195 // CHECK-LABEL: @xvsubwev_h_bu(
3196 // CHECK-NEXT: entry:
3197 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsubwev.h.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3198 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3200 v16i16 xvsubwev_h_bu(v32u8 _1, v32u8 _2) { return __lasx_xvsubwev_h_bu(_1, _2); }
3201 // CHECK-LABEL: @xvmulwev_q_d(
3202 // CHECK-NEXT: entry:
3203 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwev.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3204 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3206 v4i64 xvmulwev_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvmulwev_q_d(_1, _2); }
3207 // CHECK-LABEL: @xvmulwev_d_w(
3208 // CHECK-NEXT: entry:
3209 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwev.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3210 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3212 v4i64 xvmulwev_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvmulwev_d_w(_1, _2); }
3213 // CHECK-LABEL: @xvmulwev_w_h(
3214 // CHECK-NEXT: entry:
3215 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmulwev.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3216 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3218 v8i32 xvmulwev_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvmulwev_w_h(_1, _2); }
3219 // CHECK-LABEL: @xvmulwev_h_b(
3220 // CHECK-NEXT: entry:
3221 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmulwev.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3222 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3224 v16i16 xvmulwev_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvmulwev_h_b(_1, _2); }
3225 // CHECK-LABEL: @xvmulwev_q_du(
3226 // CHECK-NEXT: entry:
3227 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwev.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3228 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3230 v4i64 xvmulwev_q_du(v4u64 _1, v4u64 _2) { return __lasx_xvmulwev_q_du(_1, _2); }
3231 // CHECK-LABEL: @xvmulwev_d_wu(
3232 // CHECK-NEXT: entry:
3233 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwev.d.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3234 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3236 v4i64 xvmulwev_d_wu(v8u32 _1, v8u32 _2) { return __lasx_xvmulwev_d_wu(_1, _2); }
3237 // CHECK-LABEL: @xvmulwev_w_hu(
3238 // CHECK-NEXT: entry:
3239 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmulwev.w.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3240 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3242 v8i32 xvmulwev_w_hu(v16u16 _1, v16u16 _2) { return __lasx_xvmulwev_w_hu(_1, _2); }
3243 // CHECK-LABEL: @xvmulwev_h_bu(
3244 // CHECK-NEXT: entry:
3245 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmulwev.h.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3246 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3248 v16i16 xvmulwev_h_bu(v32u8 _1, v32u8 _2) { return __lasx_xvmulwev_h_bu(_1, _2); }
3249 // CHECK-LABEL: @xvaddwod_q_d(
3250 // CHECK-NEXT: entry:
3251 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwod.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3252 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3254 v4i64 xvaddwod_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvaddwod_q_d(_1, _2); }
3255 // CHECK-LABEL: @xvaddwod_d_w(
3256 // CHECK-NEXT: entry:
3257 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwod.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3258 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3260 v4i64 xvaddwod_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvaddwod_d_w(_1, _2); }
3261 // CHECK-LABEL: @xvaddwod_w_h(
3262 // CHECK-NEXT: entry:
3263 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvaddwod.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3264 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3266 v8i32 xvaddwod_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvaddwod_w_h(_1, _2); }
3267 // CHECK-LABEL: @xvaddwod_h_b(
3268 // CHECK-NEXT: entry:
3269 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvaddwod.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3270 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3272 v16i16 xvaddwod_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvaddwod_h_b(_1, _2); }
3273 // CHECK-LABEL: @xvaddwod_q_du(
3274 // CHECK-NEXT: entry:
3275 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwod.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3276 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3278 v4i64 xvaddwod_q_du(v4u64 _1, v4u64 _2) { return __lasx_xvaddwod_q_du(_1, _2); }
3279 // CHECK-LABEL: @xvaddwod_d_wu(
3280 // CHECK-NEXT: entry:
3281 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwod.d.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3282 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3284 v4i64 xvaddwod_d_wu(v8u32 _1, v8u32 _2) { return __lasx_xvaddwod_d_wu(_1, _2); }
3285 // CHECK-LABEL: @xvaddwod_w_hu(
3286 // CHECK-NEXT: entry:
3287 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvaddwod.w.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3288 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3290 v8i32 xvaddwod_w_hu(v16u16 _1, v16u16 _2) { return __lasx_xvaddwod_w_hu(_1, _2); }
3291 // CHECK-LABEL: @xvaddwod_h_bu(
3292 // CHECK-NEXT: entry:
3293 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvaddwod.h.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3294 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3296 v16i16 xvaddwod_h_bu(v32u8 _1, v32u8 _2) { return __lasx_xvaddwod_h_bu(_1, _2); }
3297 // CHECK-LABEL: @xvsubwod_q_d(
3298 // CHECK-NEXT: entry:
3299 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwod.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3300 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3302 v4i64 xvsubwod_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvsubwod_q_d(_1, _2); }
3303 // CHECK-LABEL: @xvsubwod_d_w(
3304 // CHECK-NEXT: entry:
3305 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwod.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3306 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3308 v4i64 xvsubwod_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvsubwod_d_w(_1, _2); }
3309 // CHECK-LABEL: @xvsubwod_w_h(
3310 // CHECK-NEXT: entry:
3311 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsubwod.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3312 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3314 v8i32 xvsubwod_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvsubwod_w_h(_1, _2); }
3315 // CHECK-LABEL: @xvsubwod_h_b(
3316 // CHECK-NEXT: entry:
3317 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsubwod.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3318 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3320 v16i16 xvsubwod_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvsubwod_h_b(_1, _2); }
3321 // CHECK-LABEL: @xvsubwod_q_du(
3322 // CHECK-NEXT: entry:
3323 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwod.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3324 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3326 v4i64 xvsubwod_q_du(v4u64 _1, v4u64 _2) { return __lasx_xvsubwod_q_du(_1, _2); }
3327 // CHECK-LABEL: @xvsubwod_d_wu(
3328 // CHECK-NEXT: entry:
3329 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsubwod.d.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3330 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3332 v4i64 xvsubwod_d_wu(v8u32 _1, v8u32 _2) { return __lasx_xvsubwod_d_wu(_1, _2); }
3333 // CHECK-LABEL: @xvsubwod_w_hu(
3334 // CHECK-NEXT: entry:
3335 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsubwod.w.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3336 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3338 v8i32 xvsubwod_w_hu(v16u16 _1, v16u16 _2) { return __lasx_xvsubwod_w_hu(_1, _2); }
3339 // CHECK-LABEL: @xvsubwod_h_bu(
3340 // CHECK-NEXT: entry:
3341 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsubwod.h.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3342 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3344 v16i16 xvsubwod_h_bu(v32u8 _1, v32u8 _2) { return __lasx_xvsubwod_h_bu(_1, _2); }
3345 // CHECK-LABEL: @xvmulwod_q_d(
3346 // CHECK-NEXT: entry:
3347 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwod.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3348 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3350 v4i64 xvmulwod_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvmulwod_q_d(_1, _2); }
3351 // CHECK-LABEL: @xvmulwod_d_w(
3352 // CHECK-NEXT: entry:
3353 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwod.d.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3354 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3356 v4i64 xvmulwod_d_w(v8i32 _1, v8i32 _2) { return __lasx_xvmulwod_d_w(_1, _2); }
3357 // CHECK-LABEL: @xvmulwod_w_h(
3358 // CHECK-NEXT: entry:
3359 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmulwod.w.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3360 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3362 v8i32 xvmulwod_w_h(v16i16 _1, v16i16 _2) { return __lasx_xvmulwod_w_h(_1, _2); }
3363 // CHECK-LABEL: @xvmulwod_h_b(
3364 // CHECK-NEXT: entry:
3365 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmulwod.h.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3366 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3368 v16i16 xvmulwod_h_b(v32i8 _1, v32i8 _2) { return __lasx_xvmulwod_h_b(_1, _2); }
3369 // CHECK-LABEL: @xvmulwod_q_du(
3370 // CHECK-NEXT: entry:
3371 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwod.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3372 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3374 v4i64 xvmulwod_q_du(v4u64 _1, v4u64 _2) { return __lasx_xvmulwod_q_du(_1, _2); }
3375 // CHECK-LABEL: @xvmulwod_d_wu(
3376 // CHECK-NEXT: entry:
3377 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwod.d.wu(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3378 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3380 v4i64 xvmulwod_d_wu(v8u32 _1, v8u32 _2) { return __lasx_xvmulwod_d_wu(_1, _2); }
3381 // CHECK-LABEL: @xvmulwod_w_hu(
3382 // CHECK-NEXT: entry:
3383 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmulwod.w.hu(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3384 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3386 v8i32 xvmulwod_w_hu(v16u16 _1, v16u16 _2) { return __lasx_xvmulwod_w_hu(_1, _2); }
3387 // CHECK-LABEL: @xvmulwod_h_bu(
3388 // CHECK-NEXT: entry:
3389 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmulwod.h.bu(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3390 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3392 v16i16 xvmulwod_h_bu(v32u8 _1, v32u8 _2) { return __lasx_xvmulwod_h_bu(_1, _2); }
3393 // CHECK-LABEL: @xvaddwev_d_wu_w(
3394 // CHECK-NEXT: entry:
3395 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwev.d.wu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3396 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3398 v4i64 xvaddwev_d_wu_w(v8u32 _1, v8i32 _2) { return __lasx_xvaddwev_d_wu_w(_1, _2); }
3399 // CHECK-LABEL: @xvaddwev_w_hu_h(
3400 // CHECK-NEXT: entry:
3401 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvaddwev.w.hu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3402 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3404 v8i32 xvaddwev_w_hu_h(v16u16 _1, v16i16 _2) { return __lasx_xvaddwev_w_hu_h(_1, _2); }
3405 // CHECK-LABEL: @xvaddwev_h_bu_b(
3406 // CHECK-NEXT: entry:
3407 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvaddwev.h.bu.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3408 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3410 v16i16 xvaddwev_h_bu_b(v32u8 _1, v32i8 _2) { return __lasx_xvaddwev_h_bu_b(_1, _2); }
3411 // CHECK-LABEL: @xvmulwev_d_wu_w(
3412 // CHECK-NEXT: entry:
3413 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwev.d.wu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3414 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3416 v4i64 xvmulwev_d_wu_w(v8u32 _1, v8i32 _2) { return __lasx_xvmulwev_d_wu_w(_1, _2); }
3417 // CHECK-LABEL: @xvmulwev_w_hu_h(
3418 // CHECK-NEXT: entry:
3419 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmulwev.w.hu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3420 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3422 v8i32 xvmulwev_w_hu_h(v16u16 _1, v16i16 _2) { return __lasx_xvmulwev_w_hu_h(_1, _2); }
3423 // CHECK-LABEL: @xvmulwev_h_bu_b(
3424 // CHECK-NEXT: entry:
3425 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmulwev.h.bu.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3426 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3428 v16i16 xvmulwev_h_bu_b(v32u8 _1, v32i8 _2) { return __lasx_xvmulwev_h_bu_b(_1, _2); }
3429 // CHECK-LABEL: @xvaddwod_d_wu_w(
3430 // CHECK-NEXT: entry:
3431 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwod.d.wu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3432 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3434 v4i64 xvaddwod_d_wu_w(v8u32 _1, v8i32 _2) { return __lasx_xvaddwod_d_wu_w(_1, _2); }
3435 // CHECK-LABEL: @xvaddwod_w_hu_h(
3436 // CHECK-NEXT: entry:
3437 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvaddwod.w.hu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3438 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3440 v8i32 xvaddwod_w_hu_h(v16u16 _1, v16i16 _2) { return __lasx_xvaddwod_w_hu_h(_1, _2); }
3441 // CHECK-LABEL: @xvaddwod_h_bu_b(
3442 // CHECK-NEXT: entry:
3443 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvaddwod.h.bu.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3444 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3446 v16i16 xvaddwod_h_bu_b(v32u8 _1, v32i8 _2) { return __lasx_xvaddwod_h_bu_b(_1, _2); }
3447 // CHECK-LABEL: @xvmulwod_d_wu_w(
3448 // CHECK-NEXT: entry:
3449 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwod.d.wu.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3450 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3452 v4i64 xvmulwod_d_wu_w(v8u32 _1, v8i32 _2) { return __lasx_xvmulwod_d_wu_w(_1, _2); }
3453 // CHECK-LABEL: @xvmulwod_w_hu_h(
3454 // CHECK-NEXT: entry:
3455 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmulwod.w.hu.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3456 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3458 v8i32 xvmulwod_w_hu_h(v16u16 _1, v16i16 _2) { return __lasx_xvmulwod_w_hu_h(_1, _2); }
3459 // CHECK-LABEL: @xvmulwod_h_bu_b(
3460 // CHECK-NEXT: entry:
3461 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmulwod.h.bu.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3462 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3464 v16i16 xvmulwod_h_bu_b(v32u8 _1, v32i8 _2) { return __lasx_xvmulwod_h_bu_b(_1, _2); }
3465 // CHECK-LABEL: @xvhaddw_q_d(
3466 // CHECK-NEXT: entry:
3467 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhaddw.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3468 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3470 v4i64 xvhaddw_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvhaddw_q_d(_1, _2); }
3471 // CHECK-LABEL: @xvhaddw_qu_du(
3472 // CHECK-NEXT: entry:
3473 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhaddw.qu.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3474 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3476 v4u64 xvhaddw_qu_du(v4u64 _1, v4u64 _2) { return __lasx_xvhaddw_qu_du(_1, _2); }
3477 // CHECK-LABEL: @xvhsubw_q_d(
3478 // CHECK-NEXT: entry:
3479 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhsubw.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3480 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3482 v4i64 xvhsubw_q_d(v4i64 _1, v4i64 _2) { return __lasx_xvhsubw_q_d(_1, _2); }
3483 // CHECK-LABEL: @xvhsubw_qu_du(
3484 // CHECK-NEXT: entry:
3485 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvhsubw.qu.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3486 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3488 v4u64 xvhsubw_qu_du(v4u64 _1, v4u64 _2) { return __lasx_xvhsubw_qu_du(_1, _2); }
3489 // CHECK-LABEL: @xvmaddwev_q_d(
3490 // CHECK-NEXT: entry:
3491 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwev.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
3492 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3494 v4i64 xvmaddwev_q_d(v4i64 _1, v4i64 _2, v4i64 _3) { return __lasx_xvmaddwev_q_d(_1, _2, _3); }
3495 // CHECK-LABEL: @xvmaddwev_d_w(
3496 // CHECK-NEXT: entry:
3497 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwev.d.w(<4 x i64> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
3498 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3500 v4i64 xvmaddwev_d_w(v4i64 _1, v8i32 _2, v8i32 _3) { return __lasx_xvmaddwev_d_w(_1, _2, _3); }
3501 // CHECK-LABEL: @xvmaddwev_w_h(
3502 // CHECK-NEXT: entry:
3503 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaddwev.w.h(<8 x i32> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
3504 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3506 v8i32 xvmaddwev_w_h(v8i32 _1, v16i16 _2, v16i16 _3) { return __lasx_xvmaddwev_w_h(_1, _2, _3); }
3507 // CHECK-LABEL: @xvmaddwev_h_b(
3508 // CHECK-NEXT: entry:
3509 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaddwev.h.b(<16 x i16> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
3510 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3512 v16i16 xvmaddwev_h_b(v16i16 _1, v32i8 _2, v32i8 _3) { return __lasx_xvmaddwev_h_b(_1, _2, _3); }
3513 // CHECK-LABEL: @xvmaddwev_q_du(
3514 // CHECK-NEXT: entry:
3515 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwev.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
3516 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3518 v4u64 xvmaddwev_q_du(v4u64 _1, v4u64 _2, v4u64 _3) { return __lasx_xvmaddwev_q_du(_1, _2, _3); }
3519 // CHECK-LABEL: @xvmaddwev_d_wu(
3520 // CHECK-NEXT: entry:
3521 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwev.d.wu(<4 x i64> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
3522 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3524 v4u64 xvmaddwev_d_wu(v4u64 _1, v8u32 _2, v8u32 _3) { return __lasx_xvmaddwev_d_wu(_1, _2, _3); }
3525 // CHECK-LABEL: @xvmaddwev_w_hu(
3526 // CHECK-NEXT: entry:
3527 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaddwev.w.hu(<8 x i32> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
3528 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3530 v8u32 xvmaddwev_w_hu(v8u32 _1, v16u16 _2, v16u16 _3) { return __lasx_xvmaddwev_w_hu(_1, _2, _3); }
3531 // CHECK-LABEL: @xvmaddwev_h_bu(
3532 // CHECK-NEXT: entry:
3533 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaddwev.h.bu(<16 x i16> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
3534 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3536 v16u16 xvmaddwev_h_bu(v16u16 _1, v32u8 _2, v32u8 _3) { return __lasx_xvmaddwev_h_bu(_1, _2, _3); }
3537 // CHECK-LABEL: @xvmaddwod_q_d(
3538 // CHECK-NEXT: entry:
3539 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwod.q.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
3540 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3542 v4i64 xvmaddwod_q_d(v4i64 _1, v4i64 _2, v4i64 _3) { return __lasx_xvmaddwod_q_d(_1, _2, _3); }
3543 // CHECK-LABEL: @xvmaddwod_d_w(
3544 // CHECK-NEXT: entry:
3545 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwod.d.w(<4 x i64> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
3546 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3548 v4i64 xvmaddwod_d_w(v4i64 _1, v8i32 _2, v8i32 _3) { return __lasx_xvmaddwod_d_w(_1, _2, _3); }
3549 // CHECK-LABEL: @xvmaddwod_w_h(
3550 // CHECK-NEXT: entry:
3551 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaddwod.w.h(<8 x i32> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
3552 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3554 v8i32 xvmaddwod_w_h(v8i32 _1, v16i16 _2, v16i16 _3) { return __lasx_xvmaddwod_w_h(_1, _2, _3); }
3555 // CHECK-LABEL: @xvmaddwod_h_b(
3556 // CHECK-NEXT: entry:
3557 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaddwod.h.b(<16 x i16> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
3558 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3560 v16i16 xvmaddwod_h_b(v16i16 _1, v32i8 _2, v32i8 _3) { return __lasx_xvmaddwod_h_b(_1, _2, _3); }
3561 // CHECK-LABEL: @xvmaddwod_q_du(
3562 // CHECK-NEXT: entry:
3563 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwod.q.du(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
3564 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3566 v4u64 xvmaddwod_q_du(v4u64 _1, v4u64 _2, v4u64 _3) { return __lasx_xvmaddwod_q_du(_1, _2, _3); }
3567 // CHECK-LABEL: @xvmaddwod_d_wu(
3568 // CHECK-NEXT: entry:
3569 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwod.d.wu(<4 x i64> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
3570 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3572 v4u64 xvmaddwod_d_wu(v4u64 _1, v8u32 _2, v8u32 _3) { return __lasx_xvmaddwod_d_wu(_1, _2, _3); }
3573 // CHECK-LABEL: @xvmaddwod_w_hu(
3574 // CHECK-NEXT: entry:
3575 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaddwod.w.hu(<8 x i32> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
3576 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3578 v8u32 xvmaddwod_w_hu(v8u32 _1, v16u16 _2, v16u16 _3) { return __lasx_xvmaddwod_w_hu(_1, _2, _3); }
3579 // CHECK-LABEL: @xvmaddwod_h_bu(
3580 // CHECK-NEXT: entry:
3581 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaddwod.h.bu(<16 x i16> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
3582 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3584 v16u16 xvmaddwod_h_bu(v16u16 _1, v32u8 _2, v32u8 _3) { return __lasx_xvmaddwod_h_bu(_1, _2, _3); }
3585 // CHECK-LABEL: @xvmaddwev_q_du_d(
3586 // CHECK-NEXT: entry:
3587 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwev.q.du.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
3588 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3590 v4i64 xvmaddwev_q_du_d(v4i64 _1, v4u64 _2, v4i64 _3) { return __lasx_xvmaddwev_q_du_d(_1, _2, _3); }
3591 // CHECK-LABEL: @xvmaddwev_d_wu_w(
3592 // CHECK-NEXT: entry:
3593 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwev.d.wu.w(<4 x i64> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
3594 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3596 v4i64 xvmaddwev_d_wu_w(v4i64 _1, v8u32 _2, v8i32 _3) { return __lasx_xvmaddwev_d_wu_w(_1, _2, _3); }
3597 // CHECK-LABEL: @xvmaddwev_w_hu_h(
3598 // CHECK-NEXT: entry:
3599 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaddwev.w.hu.h(<8 x i32> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
3600 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3602 v8i32 xvmaddwev_w_hu_h(v8i32 _1, v16u16 _2, v16i16 _3) { return __lasx_xvmaddwev_w_hu_h(_1, _2, _3); }
3603 // CHECK-LABEL: @xvmaddwev_h_bu_b(
3604 // CHECK-NEXT: entry:
3605 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaddwev.h.bu.b(<16 x i16> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
3606 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3608 v16i16 xvmaddwev_h_bu_b(v16i16 _1, v32u8 _2, v32i8 _3) { return __lasx_xvmaddwev_h_bu_b(_1, _2, _3); }
3609 // CHECK-LABEL: @xvmaddwod_q_du_d(
3610 // CHECK-NEXT: entry:
3611 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwod.q.du.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], <4 x i64> [[_3:%.*]])
3612 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3614 v4i64 xvmaddwod_q_du_d(v4i64 _1, v4u64 _2, v4i64 _3) { return __lasx_xvmaddwod_q_du_d(_1, _2, _3); }
3615 // CHECK-LABEL: @xvmaddwod_d_wu_w(
3616 // CHECK-NEXT: entry:
3617 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmaddwod.d.wu.w(<4 x i64> [[_1:%.*]], <8 x i32> [[_2:%.*]], <8 x i32> [[_3:%.*]])
3618 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3620 v4i64 xvmaddwod_d_wu_w(v4i64 _1, v8u32 _2, v8i32 _3) { return __lasx_xvmaddwod_d_wu_w(_1, _2, _3); }
3621 // CHECK-LABEL: @xvmaddwod_w_hu_h(
3622 // CHECK-NEXT: entry:
3623 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvmaddwod.w.hu.h(<8 x i32> [[_1:%.*]], <16 x i16> [[_2:%.*]], <16 x i16> [[_3:%.*]])
3624 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3626 v8i32 xvmaddwod_w_hu_h(v8i32 _1, v16u16 _2, v16i16 _3) { return __lasx_xvmaddwod_w_hu_h(_1, _2, _3); }
3627 // CHECK-LABEL: @xvmaddwod_h_bu_b(
3628 // CHECK-NEXT: entry:
3629 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvmaddwod.h.bu.b(<16 x i16> [[_1:%.*]], <32 x i8> [[_2:%.*]], <32 x i8> [[_3:%.*]])
3630 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3632 v16i16 xvmaddwod_h_bu_b(v16i16 _1, v32u8 _2, v32i8 _3) { return __lasx_xvmaddwod_h_bu_b(_1, _2, _3); }
3633 // CHECK-LABEL: @xvrotr_b(
3634 // CHECK-NEXT: entry:
3635 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvrotr.b(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]])
3636 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3638 v32i8 xvrotr_b(v32i8 _1, v32i8 _2) { return __lasx_xvrotr_b(_1, _2); }
3639 // CHECK-LABEL: @xvrotr_h(
3640 // CHECK-NEXT: entry:
3641 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvrotr.h(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]])
3642 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3644 v16i16 xvrotr_h(v16i16 _1, v16i16 _2) { return __lasx_xvrotr_h(_1, _2); }
3645 // CHECK-LABEL: @xvrotr_w(
3646 // CHECK-NEXT: entry:
3647 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvrotr.w(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]])
3648 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3650 v8i32 xvrotr_w(v8i32 _1, v8i32 _2) { return __lasx_xvrotr_w(_1, _2); }
3651 // CHECK-LABEL: @xvrotr_d(
3652 // CHECK-NEXT: entry:
3653 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvrotr.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3654 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3656 v4i64 xvrotr_d(v4i64 _1, v4i64 _2) { return __lasx_xvrotr_d(_1, _2); }
3657 // CHECK-LABEL: @xvadd_q(
3658 // CHECK-NEXT: entry:
3659 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvadd.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3660 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3662 v4i64 xvadd_q(v4i64 _1, v4i64 _2) { return __lasx_xvadd_q(_1, _2); }
3663 // CHECK-LABEL: @xvsub_q(
3664 // CHECK-NEXT: entry:
3665 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsub.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3666 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3668 v4i64 xvsub_q(v4i64 _1, v4i64 _2) { return __lasx_xvsub_q(_1, _2); }
3669 // CHECK-LABEL: @xvaddwev_q_du_d(
3670 // CHECK-NEXT: entry:
3671 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwev.q.du.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3672 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3674 v4i64 xvaddwev_q_du_d(v4u64 _1, v4i64 _2) { return __lasx_xvaddwev_q_du_d(_1, _2); }
3675 // CHECK-LABEL: @xvaddwod_q_du_d(
3676 // CHECK-NEXT: entry:
3677 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvaddwod.q.du.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3678 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3680 v4i64 xvaddwod_q_du_d(v4u64 _1, v4i64 _2) { return __lasx_xvaddwod_q_du_d(_1, _2); }
3681 // CHECK-LABEL: @xvmulwev_q_du_d(
3682 // CHECK-NEXT: entry:
3683 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwev.q.du.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3684 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3686 v4i64 xvmulwev_q_du_d(v4u64 _1, v4i64 _2) { return __lasx_xvmulwev_q_du_d(_1, _2); }
3687 // CHECK-LABEL: @xvmulwod_q_du_d(
3688 // CHECK-NEXT: entry:
3689 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvmulwod.q.du.d(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]])
3690 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3692 v4i64 xvmulwod_q_du_d(v4u64 _1, v4i64 _2) { return __lasx_xvmulwod_q_du_d(_1, _2); }
3693 // CHECK-LABEL: @xvmskgez_b(
3694 // CHECK-NEXT: entry:
3695 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmskgez.b(<32 x i8> [[_1:%.*]])
3696 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3698 v32i8 xvmskgez_b(v32i8 _1) { return __lasx_xvmskgez_b(_1); }
3699 // CHECK-LABEL: @xvmsknz_b(
3700 // CHECK-NEXT: entry:
3701 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvmsknz.b(<32 x i8> [[_1:%.*]])
3702 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3704 v32i8 xvmsknz_b(v32i8 _1) { return __lasx_xvmsknz_b(_1); }
3705 // CHECK-LABEL: @xvexth_h_b(
3706 // CHECK-NEXT: entry:
3707 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvexth.h.b(<32 x i8> [[_1:%.*]])
3708 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3710 v16i16 xvexth_h_b(v32i8 _1) { return __lasx_xvexth_h_b(_1); }
3711 // CHECK-LABEL: @xvexth_w_h(
3712 // CHECK-NEXT: entry:
3713 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvexth.w.h(<16 x i16> [[_1:%.*]])
3714 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3716 v8i32 xvexth_w_h(v16i16 _1) { return __lasx_xvexth_w_h(_1); }
3717 // CHECK-LABEL: @xvexth_d_w(
3718 // CHECK-NEXT: entry:
3719 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvexth.d.w(<8 x i32> [[_1:%.*]])
3720 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3722 v4i64 xvexth_d_w(v8i32 _1) { return __lasx_xvexth_d_w(_1); }
3723 // CHECK-LABEL: @xvexth_q_d(
3724 // CHECK-NEXT: entry:
3725 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvexth.q.d(<4 x i64> [[_1:%.*]])
3726 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3728 v4i64 xvexth_q_d(v4i64 _1) { return __lasx_xvexth_q_d(_1); }
3729 // CHECK-LABEL: @xvexth_hu_bu(
3730 // CHECK-NEXT: entry:
3731 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvexth.hu.bu(<32 x i8> [[_1:%.*]])
3732 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3734 v16u16 xvexth_hu_bu(v32u8 _1) { return __lasx_xvexth_hu_bu(_1); }
3735 // CHECK-LABEL: @xvexth_wu_hu(
3736 // CHECK-NEXT: entry:
3737 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvexth.wu.hu(<16 x i16> [[_1:%.*]])
3738 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3740 v8u32 xvexth_wu_hu(v16u16 _1) { return __lasx_xvexth_wu_hu(_1); }
3741 // CHECK-LABEL: @xvexth_du_wu(
3742 // CHECK-NEXT: entry:
3743 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvexth.du.wu(<8 x i32> [[_1:%.*]])
3744 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3746 v4u64 xvexth_du_wu(v8u32 _1) { return __lasx_xvexth_du_wu(_1); }
3747 // CHECK-LABEL: @xvexth_qu_du(
3748 // CHECK-NEXT: entry:
3749 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvexth.qu.du(<4 x i64> [[_1:%.*]])
3750 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3752 v4u64 xvexth_qu_du(v4u64 _1) { return __lasx_xvexth_qu_du(_1); }
3753 // CHECK-LABEL: @xvrotri_b(
3754 // CHECK-NEXT: entry:
3755 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvrotri.b(<32 x i8> [[_1:%.*]], i32 1)
3756 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3758 v32i8 xvrotri_b(v32i8 _1) { return __lasx_xvrotri_b(_1, 1); }
3759 // CHECK-LABEL: @xvrotri_h(
3760 // CHECK-NEXT: entry:
3761 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvrotri.h(<16 x i16> [[_1:%.*]], i32 1)
3762 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3764 v16i16 xvrotri_h(v16i16 _1) { return __lasx_xvrotri_h(_1, 1); }
3765 // CHECK-LABEL: @xvrotri_w(
3766 // CHECK-NEXT: entry:
3767 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvrotri.w(<8 x i32> [[_1:%.*]], i32 1)
3768 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3770 v8i32 xvrotri_w(v8i32 _1) { return __lasx_xvrotri_w(_1, 1); }
3771 // CHECK-LABEL: @xvrotri_d(
3772 // CHECK-NEXT: entry:
3773 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvrotri.d(<4 x i64> [[_1:%.*]], i32 1)
3774 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3776 v4i64 xvrotri_d(v4i64 _1) { return __lasx_xvrotri_d(_1, 1); }
3777 // CHECK-LABEL: @xvextl_q_d(
3778 // CHECK-NEXT: entry:
3779 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvextl.q.d(<4 x i64> [[_1:%.*]])
3780 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3782 v4i64 xvextl_q_d(v4i64 _1) { return __lasx_xvextl_q_d(_1); }
3783 // CHECK-LABEL: @xvsrlni_b_h(
3784 // CHECK-NEXT: entry:
3785 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrlni.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3786 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3788 v32i8 xvsrlni_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvsrlni_b_h(_1, _2, 1); }
3789 // CHECK-LABEL: @xvsrlni_h_w(
3790 // CHECK-NEXT: entry:
3791 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrlni.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3792 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3794 v16i16 xvsrlni_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvsrlni_h_w(_1, _2, 1); }
3795 // CHECK-LABEL: @xvsrlni_w_d(
3796 // CHECK-NEXT: entry:
3797 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrlni.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3798 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3800 v8i32 xvsrlni_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvsrlni_w_d(_1, _2, 1); }
3801 // CHECK-LABEL: @xvsrlni_d_q(
3802 // CHECK-NEXT: entry:
3803 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrlni.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3804 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3806 v4i64 xvsrlni_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvsrlni_d_q(_1, _2, 1); }
3807 // CHECK-LABEL: @xvsrlrni_b_h(
3808 // CHECK-NEXT: entry:
3809 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrlrni.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3810 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3812 v32i8 xvsrlrni_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvsrlrni_b_h(_1, _2, 1); }
3813 // CHECK-LABEL: @xvsrlrni_h_w(
3814 // CHECK-NEXT: entry:
3815 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrlrni.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3816 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3818 v16i16 xvsrlrni_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvsrlrni_h_w(_1, _2, 1); }
3819 // CHECK-LABEL: @xvsrlrni_w_d(
3820 // CHECK-NEXT: entry:
3821 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrlrni.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3822 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3824 v8i32 xvsrlrni_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvsrlrni_w_d(_1, _2, 1); }
3825 // CHECK-LABEL: @xvsrlrni_d_q(
3826 // CHECK-NEXT: entry:
3827 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrlrni.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3828 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3830 v4i64 xvsrlrni_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvsrlrni_d_q(_1, _2, 1); }
3831 // CHECK-LABEL: @xvssrlni_b_h(
3832 // CHECK-NEXT: entry:
3833 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrlni.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3834 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3836 v32i8 xvssrlni_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvssrlni_b_h(_1, _2, 1); }
3837 // CHECK-LABEL: @xvssrlni_h_w(
3838 // CHECK-NEXT: entry:
3839 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrlni.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3840 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3842 v16i16 xvssrlni_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvssrlni_h_w(_1, _2, 1); }
3843 // CHECK-LABEL: @xvssrlni_w_d(
3844 // CHECK-NEXT: entry:
3845 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrlni.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3846 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3848 v8i32 xvssrlni_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvssrlni_w_d(_1, _2, 1); }
3849 // CHECK-LABEL: @xvssrlni_d_q(
3850 // CHECK-NEXT: entry:
3851 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrlni.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3852 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3854 v4i64 xvssrlni_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvssrlni_d_q(_1, _2, 1); }
3855 // CHECK-LABEL: @xvssrlni_bu_h(
3856 // CHECK-NEXT: entry:
3857 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrlni.bu.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3858 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3860 v32u8 xvssrlni_bu_h(v32u8 _1, v32i8 _2) { return __lasx_xvssrlni_bu_h(_1, _2, 1); }
3861 // CHECK-LABEL: @xvssrlni_hu_w(
3862 // CHECK-NEXT: entry:
3863 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrlni.hu.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3864 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3866 v16u16 xvssrlni_hu_w(v16u16 _1, v16i16 _2) { return __lasx_xvssrlni_hu_w(_1, _2, 1); }
3867 // CHECK-LABEL: @xvssrlni_wu_d(
3868 // CHECK-NEXT: entry:
3869 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrlni.wu.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3870 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3872 v8u32 xvssrlni_wu_d(v8u32 _1, v8i32 _2) { return __lasx_xvssrlni_wu_d(_1, _2, 1); }
3873 // CHECK-LABEL: @xvssrlni_du_q(
3874 // CHECK-NEXT: entry:
3875 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrlni.du.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3876 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3878 v4u64 xvssrlni_du_q(v4u64 _1, v4i64 _2) { return __lasx_xvssrlni_du_q(_1, _2, 1); }
3879 // CHECK-LABEL: @xvssrlrni_b_h(
3880 // CHECK-NEXT: entry:
3881 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrlrni.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3882 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3884 v32i8 xvssrlrni_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvssrlrni_b_h(_1, _2, 1); }
3885 // CHECK-LABEL: @xvssrlrni_h_w(
3886 // CHECK-NEXT: entry:
3887 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrlrni.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3888 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3890 v16i16 xvssrlrni_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvssrlrni_h_w(_1, _2, 1); }
3891 // CHECK-LABEL: @xvssrlrni_w_d(
3892 // CHECK-NEXT: entry:
3893 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrlrni.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3894 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3896 v8i32 xvssrlrni_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvssrlrni_w_d(_1, _2, 1); }
3897 // CHECK-LABEL: @xvssrlrni_d_q(
3898 // CHECK-NEXT: entry:
3899 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrlrni.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3900 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3902 v4i64 xvssrlrni_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvssrlrni_d_q(_1, _2, 1); }
3903 // CHECK-LABEL: @xvssrlrni_bu_h(
3904 // CHECK-NEXT: entry:
3905 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrlrni.bu.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3906 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3908 v32u8 xvssrlrni_bu_h(v32u8 _1, v32i8 _2) { return __lasx_xvssrlrni_bu_h(_1, _2, 1); }
3909 // CHECK-LABEL: @xvssrlrni_hu_w(
3910 // CHECK-NEXT: entry:
3911 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrlrni.hu.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3912 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3914 v16u16 xvssrlrni_hu_w(v16u16 _1, v16i16 _2) { return __lasx_xvssrlrni_hu_w(_1, _2, 1); }
3915 // CHECK-LABEL: @xvssrlrni_wu_d(
3916 // CHECK-NEXT: entry:
3917 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrlrni.wu.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3918 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3920 v8u32 xvssrlrni_wu_d(v8u32 _1, v8i32 _2) { return __lasx_xvssrlrni_wu_d(_1, _2, 1); }
3921 // CHECK-LABEL: @xvssrlrni_du_q(
3922 // CHECK-NEXT: entry:
3923 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrlrni.du.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3924 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3926 v4u64 xvssrlrni_du_q(v4u64 _1, v4i64 _2) { return __lasx_xvssrlrni_du_q(_1, _2, 1); }
3927 // CHECK-LABEL: @xvsrani_b_h(
3928 // CHECK-NEXT: entry:
3929 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrani.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3930 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3932 v32i8 xvsrani_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvsrani_b_h(_1, _2, 1); }
3933 // CHECK-LABEL: @xvsrani_h_w(
3934 // CHECK-NEXT: entry:
3935 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrani.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3936 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3938 v16i16 xvsrani_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvsrani_h_w(_1, _2, 1); }
3939 // CHECK-LABEL: @xvsrani_w_d(
3940 // CHECK-NEXT: entry:
3941 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrani.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3942 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3944 v8i32 xvsrani_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvsrani_w_d(_1, _2, 1); }
3945 // CHECK-LABEL: @xvsrani_d_q(
3946 // CHECK-NEXT: entry:
3947 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrani.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3948 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3950 v4i64 xvsrani_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvsrani_d_q(_1, _2, 1); }
3951 // CHECK-LABEL: @xvsrarni_b_h(
3952 // CHECK-NEXT: entry:
3953 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvsrarni.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3954 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3956 v32i8 xvsrarni_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvsrarni_b_h(_1, _2, 1); }
3957 // CHECK-LABEL: @xvsrarni_h_w(
3958 // CHECK-NEXT: entry:
3959 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvsrarni.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3960 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3962 v16i16 xvsrarni_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvsrarni_h_w(_1, _2, 1); }
3963 // CHECK-LABEL: @xvsrarni_w_d(
3964 // CHECK-NEXT: entry:
3965 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvsrarni.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3966 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3968 v8i32 xvsrarni_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvsrarni_w_d(_1, _2, 1); }
3969 // CHECK-LABEL: @xvsrarni_d_q(
3970 // CHECK-NEXT: entry:
3971 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvsrarni.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3972 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3974 v4i64 xvsrarni_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvsrarni_d_q(_1, _2, 1); }
3975 // CHECK-LABEL: @xvssrani_b_h(
3976 // CHECK-NEXT: entry:
3977 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrani.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
3978 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
3980 v32i8 xvssrani_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvssrani_b_h(_1, _2, 1); }
3981 // CHECK-LABEL: @xvssrani_h_w(
3982 // CHECK-NEXT: entry:
3983 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrani.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
3984 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
3986 v16i16 xvssrani_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvssrani_h_w(_1, _2, 1); }
3987 // CHECK-LABEL: @xvssrani_w_d(
3988 // CHECK-NEXT: entry:
3989 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrani.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
3990 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
3992 v8i32 xvssrani_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvssrani_w_d(_1, _2, 1); }
3993 // CHECK-LABEL: @xvssrani_d_q(
3994 // CHECK-NEXT: entry:
3995 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrani.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
3996 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
3998 v4i64 xvssrani_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvssrani_d_q(_1, _2, 1); }
3999 // CHECK-LABEL: @xvssrani_bu_h(
4000 // CHECK-NEXT: entry:
4001 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrani.bu.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
4002 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
4004 v32u8 xvssrani_bu_h(v32u8 _1, v32i8 _2) { return __lasx_xvssrani_bu_h(_1, _2, 1); }
4005 // CHECK-LABEL: @xvssrani_hu_w(
4006 // CHECK-NEXT: entry:
4007 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrani.hu.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
4008 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
4010 v16u16 xvssrani_hu_w(v16u16 _1, v16i16 _2) { return __lasx_xvssrani_hu_w(_1, _2, 1); }
4011 // CHECK-LABEL: @xvssrani_wu_d(
4012 // CHECK-NEXT: entry:
4013 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrani.wu.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
4014 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4016 v8u32 xvssrani_wu_d(v8u32 _1, v8i32 _2) { return __lasx_xvssrani_wu_d(_1, _2, 1); }
4017 // CHECK-LABEL: @xvssrani_du_q(
4018 // CHECK-NEXT: entry:
4019 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrani.du.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
4020 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4022 v4u64 xvssrani_du_q(v4u64 _1, v4i64 _2) { return __lasx_xvssrani_du_q(_1, _2, 1); }
4023 // CHECK-LABEL: @xvssrarni_b_h(
4024 // CHECK-NEXT: entry:
4025 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrarni.b.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
4026 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
4028 v32i8 xvssrarni_b_h(v32i8 _1, v32i8 _2) { return __lasx_xvssrarni_b_h(_1, _2, 1); }
4029 // CHECK-LABEL: @xvssrarni_h_w(
4030 // CHECK-NEXT: entry:
4031 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrarni.h.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
4032 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
4034 v16i16 xvssrarni_h_w(v16i16 _1, v16i16 _2) { return __lasx_xvssrarni_h_w(_1, _2, 1); }
4035 // CHECK-LABEL: @xvssrarni_w_d(
4036 // CHECK-NEXT: entry:
4037 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrarni.w.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
4038 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4040 v8i32 xvssrarni_w_d(v8i32 _1, v8i32 _2) { return __lasx_xvssrarni_w_d(_1, _2, 1); }
4041 // CHECK-LABEL: @xvssrarni_d_q(
4042 // CHECK-NEXT: entry:
4043 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrarni.d.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
4044 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4046 v4i64 xvssrarni_d_q(v4i64 _1, v4i64 _2) { return __lasx_xvssrarni_d_q(_1, _2, 1); }
4047 // CHECK-LABEL: @xvssrarni_bu_h(
4048 // CHECK-NEXT: entry:
4049 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvssrarni.bu.h(<32 x i8> [[_1:%.*]], <32 x i8> [[_2:%.*]], i32 1)
4050 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
4052 v32u8 xvssrarni_bu_h(v32u8 _1, v32i8 _2) { return __lasx_xvssrarni_bu_h(_1, _2, 1); }
4053 // CHECK-LABEL: @xvssrarni_hu_w(
4054 // CHECK-NEXT: entry:
4055 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvssrarni.hu.w(<16 x i16> [[_1:%.*]], <16 x i16> [[_2:%.*]], i32 1)
4056 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
4058 v16u16 xvssrarni_hu_w(v16u16 _1, v16i16 _2) { return __lasx_xvssrarni_hu_w(_1, _2, 1); }
4059 // CHECK-LABEL: @xvssrarni_wu_d(
4060 // CHECK-NEXT: entry:
4061 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvssrarni.wu.d(<8 x i32> [[_1:%.*]], <8 x i32> [[_2:%.*]], i32 1)
4062 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4064 v8u32 xvssrarni_wu_d(v8u32 _1, v8i32 _2) { return __lasx_xvssrarni_wu_d(_1, _2, 1); }
4065 // CHECK-LABEL: @xvssrarni_du_q(
4066 // CHECK-NEXT: entry:
4067 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvssrarni.du.q(<4 x i64> [[_1:%.*]], <4 x i64> [[_2:%.*]], i32 1)
4068 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4070 v4u64 xvssrarni_du_q(v4u64 _1, v4i64 _2) { return __lasx_xvssrarni_du_q(_1, _2, 1); }
4071 // CHECK-LABEL: @xbnz_b(
4072 // CHECK-NEXT: entry:
4073 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbnz.b(<32 x i8> [[_1:%.*]])
4074 // CHECK-NEXT: ret i32 [[TMP0]]
4076 int xbnz_b(v32u8 _1) { return __lasx_xbnz_b(_1); }
4077 // CHECK-LABEL: @xbnz_d(
4078 // CHECK-NEXT: entry:
4079 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbnz.d(<4 x i64> [[_1:%.*]])
4080 // CHECK-NEXT: ret i32 [[TMP0]]
4082 int xbnz_d(v4u64 _1) { return __lasx_xbnz_d(_1); }
4083 // CHECK-LABEL: @xbnz_h(
4084 // CHECK-NEXT: entry:
4085 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbnz.h(<16 x i16> [[_1:%.*]])
4086 // CHECK-NEXT: ret i32 [[TMP0]]
4088 int xbnz_h(v16u16 _1) { return __lasx_xbnz_h(_1); }
4089 // CHECK-LABEL: @xbnz_v(
4090 // CHECK-NEXT: entry:
4091 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbnz.v(<32 x i8> [[_1:%.*]])
4092 // CHECK-NEXT: ret i32 [[TMP0]]
4094 int xbnz_v(v32u8 _1) { return __lasx_xbnz_v(_1); }
4095 // CHECK-LABEL: @xbnz_w(
4096 // CHECK-NEXT: entry:
4097 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbnz.w(<8 x i32> [[_1:%.*]])
4098 // CHECK-NEXT: ret i32 [[TMP0]]
4100 int xbnz_w(v8u32 _1) { return __lasx_xbnz_w(_1); }
4101 // CHECK-LABEL: @xbz_b(
4102 // CHECK-NEXT: entry:
4103 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbz.b(<32 x i8> [[_1:%.*]])
4104 // CHECK-NEXT: ret i32 [[TMP0]]
4106 int xbz_b(v32u8 _1) { return __lasx_xbz_b(_1); }
4107 // CHECK-LABEL: @xbz_d(
4108 // CHECK-NEXT: entry:
4109 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbz.d(<4 x i64> [[_1:%.*]])
4110 // CHECK-NEXT: ret i32 [[TMP0]]
4112 int xbz_d(v4u64 _1) { return __lasx_xbz_d(_1); }
4113 // CHECK-LABEL: @xbz_h(
4114 // CHECK-NEXT: entry:
4115 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbz.h(<16 x i16> [[_1:%.*]])
4116 // CHECK-NEXT: ret i32 [[TMP0]]
4118 int xbz_h(v16u16 _1) { return __lasx_xbz_h(_1); }
4119 // CHECK-LABEL: @xbz_v(
4120 // CHECK-NEXT: entry:
4121 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbz.v(<32 x i8> [[_1:%.*]])
4122 // CHECK-NEXT: ret i32 [[TMP0]]
4124 int xbz_v(v32u8 _1) { return __lasx_xbz_v(_1); }
4125 // CHECK-LABEL: @xbz_w(
4126 // CHECK-NEXT: entry:
4127 // CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.lasx.xbz.w(<8 x i32> [[_1:%.*]])
4128 // CHECK-NEXT: ret i32 [[TMP0]]
4130 int xbz_w(v8u32 _1) { return __lasx_xbz_w(_1); }
4131 // CHECK-LABEL: @xvfcmp_caf_d(
4132 // CHECK-NEXT: entry:
4133 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.caf.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4134 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4136 v4i64 xvfcmp_caf_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_caf_d(_1, _2); }
4137 // CHECK-LABEL: @xvfcmp_caf_s(
4138 // CHECK-NEXT: entry:
4139 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.caf.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4140 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4142 v8i32 xvfcmp_caf_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_caf_s(_1, _2); }
4143 // CHECK-LABEL: @xvfcmp_ceq_d(
4144 // CHECK-NEXT: entry:
4145 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.ceq.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4146 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4148 v4i64 xvfcmp_ceq_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_ceq_d(_1, _2); }
4149 // CHECK-LABEL: @xvfcmp_ceq_s(
4150 // CHECK-NEXT: entry:
4151 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.ceq.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4152 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4154 v8i32 xvfcmp_ceq_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_ceq_s(_1, _2); }
4155 // CHECK-LABEL: @xvfcmp_cle_d(
4156 // CHECK-NEXT: entry:
4157 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cle.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4158 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4160 v4i64 xvfcmp_cle_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cle_d(_1, _2); }
4161 // CHECK-LABEL: @xvfcmp_cle_s(
4162 // CHECK-NEXT: entry:
4163 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cle.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4164 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4166 v8i32 xvfcmp_cle_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cle_s(_1, _2); }
4167 // CHECK-LABEL: @xvfcmp_clt_d(
4168 // CHECK-NEXT: entry:
4169 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.clt.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4170 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4172 v4i64 xvfcmp_clt_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_clt_d(_1, _2); }
4173 // CHECK-LABEL: @xvfcmp_clt_s(
4174 // CHECK-NEXT: entry:
4175 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.clt.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4176 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4178 v8i32 xvfcmp_clt_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_clt_s(_1, _2); }
4179 // CHECK-LABEL: @xvfcmp_cne_d(
4180 // CHECK-NEXT: entry:
4181 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cne.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4182 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4184 v4i64 xvfcmp_cne_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cne_d(_1, _2); }
4185 // CHECK-LABEL: @xvfcmp_cne_s(
4186 // CHECK-NEXT: entry:
4187 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cne.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4188 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4190 v8i32 xvfcmp_cne_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cne_s(_1, _2); }
4191 // CHECK-LABEL: @xvfcmp_cor_d(
4192 // CHECK-NEXT: entry:
4193 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cor.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4194 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4196 v4i64 xvfcmp_cor_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cor_d(_1, _2); }
4197 // CHECK-LABEL: @xvfcmp_cor_s(
4198 // CHECK-NEXT: entry:
4199 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cor.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4200 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4202 v8i32 xvfcmp_cor_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cor_s(_1, _2); }
4203 // CHECK-LABEL: @xvfcmp_cueq_d(
4204 // CHECK-NEXT: entry:
4205 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cueq.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4206 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4208 v4i64 xvfcmp_cueq_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cueq_d(_1, _2); }
4209 // CHECK-LABEL: @xvfcmp_cueq_s(
4210 // CHECK-NEXT: entry:
4211 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cueq.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4212 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4214 v8i32 xvfcmp_cueq_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cueq_s(_1, _2); }
4215 // CHECK-LABEL: @xvfcmp_cule_d(
4216 // CHECK-NEXT: entry:
4217 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cule.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4218 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4220 v4i64 xvfcmp_cule_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cule_d(_1, _2); }
4221 // CHECK-LABEL: @xvfcmp_cule_s(
4222 // CHECK-NEXT: entry:
4223 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cule.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4224 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4226 v8i32 xvfcmp_cule_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cule_s(_1, _2); }
4227 // CHECK-LABEL: @xvfcmp_cult_d(
4228 // CHECK-NEXT: entry:
4229 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cult.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4230 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4232 v4i64 xvfcmp_cult_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cult_d(_1, _2); }
4233 // CHECK-LABEL: @xvfcmp_cult_s(
4234 // CHECK-NEXT: entry:
4235 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cult.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4236 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4238 v8i32 xvfcmp_cult_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cult_s(_1, _2); }
4239 // CHECK-LABEL: @xvfcmp_cun_d(
4240 // CHECK-NEXT: entry:
4241 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cun.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4242 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4244 v4i64 xvfcmp_cun_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cun_d(_1, _2); }
4245 // CHECK-LABEL: @xvfcmp_cune_d(
4246 // CHECK-NEXT: entry:
4247 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cune.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4248 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4250 v4i64 xvfcmp_cune_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_cune_d(_1, _2); }
4251 // CHECK-LABEL: @xvfcmp_cune_s(
4252 // CHECK-NEXT: entry:
4253 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cune.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4254 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4256 v8i32 xvfcmp_cune_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cune_s(_1, _2); }
4257 // CHECK-LABEL: @xvfcmp_cun_s(
4258 // CHECK-NEXT: entry:
4259 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cun.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4260 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4262 v8i32 xvfcmp_cun_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_cun_s(_1, _2); }
4263 // CHECK-LABEL: @xvfcmp_saf_d(
4264 // CHECK-NEXT: entry:
4265 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.saf.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4266 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4268 v4i64 xvfcmp_saf_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_saf_d(_1, _2); }
4269 // CHECK-LABEL: @xvfcmp_saf_s(
4270 // CHECK-NEXT: entry:
4271 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.saf.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4272 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4274 v8i32 xvfcmp_saf_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_saf_s(_1, _2); }
4275 // CHECK-LABEL: @xvfcmp_seq_d(
4276 // CHECK-NEXT: entry:
4277 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.seq.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4278 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4280 v4i64 xvfcmp_seq_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_seq_d(_1, _2); }
4281 // CHECK-LABEL: @xvfcmp_seq_s(
4282 // CHECK-NEXT: entry:
4283 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.seq.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4284 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4286 v8i32 xvfcmp_seq_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_seq_s(_1, _2); }
4287 // CHECK-LABEL: @xvfcmp_sle_d(
4288 // CHECK-NEXT: entry:
4289 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sle.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4290 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4292 v4i64 xvfcmp_sle_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sle_d(_1, _2); }
4293 // CHECK-LABEL: @xvfcmp_sle_s(
4294 // CHECK-NEXT: entry:
4295 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sle.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4296 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4298 v8i32 xvfcmp_sle_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sle_s(_1, _2); }
4299 // CHECK-LABEL: @xvfcmp_slt_d(
4300 // CHECK-NEXT: entry:
4301 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.slt.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4302 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4304 v4i64 xvfcmp_slt_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_slt_d(_1, _2); }
4305 // CHECK-LABEL: @xvfcmp_slt_s(
4306 // CHECK-NEXT: entry:
4307 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.slt.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4308 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4310 v8i32 xvfcmp_slt_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_slt_s(_1, _2); }
4311 // CHECK-LABEL: @xvfcmp_sne_d(
4312 // CHECK-NEXT: entry:
4313 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sne.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4314 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4316 v4i64 xvfcmp_sne_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sne_d(_1, _2); }
4317 // CHECK-LABEL: @xvfcmp_sne_s(
4318 // CHECK-NEXT: entry:
4319 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sne.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4320 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4322 v8i32 xvfcmp_sne_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sne_s(_1, _2); }
4323 // CHECK-LABEL: @xvfcmp_sor_d(
4324 // CHECK-NEXT: entry:
4325 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sor.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4326 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4328 v4i64 xvfcmp_sor_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sor_d(_1, _2); }
4329 // CHECK-LABEL: @xvfcmp_sor_s(
4330 // CHECK-NEXT: entry:
4331 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sor.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4332 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4334 v8i32 xvfcmp_sor_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sor_s(_1, _2); }
4335 // CHECK-LABEL: @xvfcmp_sueq_d(
4336 // CHECK-NEXT: entry:
4337 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sueq.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4338 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4340 v4i64 xvfcmp_sueq_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sueq_d(_1, _2); }
4341 // CHECK-LABEL: @xvfcmp_sueq_s(
4342 // CHECK-NEXT: entry:
4343 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sueq.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4344 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4346 v8i32 xvfcmp_sueq_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sueq_s(_1, _2); }
4347 // CHECK-LABEL: @xvfcmp_sule_d(
4348 // CHECK-NEXT: entry:
4349 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sule.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4350 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4352 v4i64 xvfcmp_sule_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sule_d(_1, _2); }
4353 // CHECK-LABEL: @xvfcmp_sule_s(
4354 // CHECK-NEXT: entry:
4355 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sule.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4356 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4358 v8i32 xvfcmp_sule_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sule_s(_1, _2); }
4359 // CHECK-LABEL: @xvfcmp_sult_d(
4360 // CHECK-NEXT: entry:
4361 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sult.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4362 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4364 v4i64 xvfcmp_sult_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sult_d(_1, _2); }
4365 // CHECK-LABEL: @xvfcmp_sult_s(
4366 // CHECK-NEXT: entry:
4367 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sult.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4368 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4370 v8i32 xvfcmp_sult_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sult_s(_1, _2); }
4371 // CHECK-LABEL: @xvfcmp_sun_d(
4372 // CHECK-NEXT: entry:
4373 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sun.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4374 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4376 v4i64 xvfcmp_sun_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sun_d(_1, _2); }
4377 // CHECK-LABEL: @xvfcmp_sune_d(
4378 // CHECK-NEXT: entry:
4379 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sune.d(<4 x double> [[_1:%.*]], <4 x double> [[_2:%.*]])
4380 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4382 v4i64 xvfcmp_sune_d(v4f64 _1, v4f64 _2) { return __lasx_xvfcmp_sune_d(_1, _2); }
4383 // CHECK-LABEL: @xvfcmp_sune_s(
4384 // CHECK-NEXT: entry:
4385 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sune.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4386 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4388 v8i32 xvfcmp_sune_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sune_s(_1, _2); }
4389 // CHECK-LABEL: @xvfcmp_sun_s(
4390 // CHECK-NEXT: entry:
4391 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sun.s(<8 x float> [[_1:%.*]], <8 x float> [[_2:%.*]])
4392 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4394 v8i32 xvfcmp_sun_s(v8f32 _1, v8f32 _2) { return __lasx_xvfcmp_sun_s(_1, _2); }
4395 // CHECK-LABEL: @xvpickve_d_f(
4396 // CHECK-NEXT: entry:
4397 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x double> @llvm.loongarch.lasx.xvpickve.d.f(<4 x double> [[_1:%.*]], i32 1)
4398 // CHECK-NEXT: ret <4 x double> [[TMP0]]
4400 v4f64 xvpickve_d_f(v4f64 _1) { return __lasx_xvpickve_d_f(_1, 1); }
4401 // CHECK-LABEL: @xvpickve_w_f(
4402 // CHECK-NEXT: entry:
4403 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x float> @llvm.loongarch.lasx.xvpickve.w.f(<8 x float> [[_1:%.*]], i32 1)
4404 // CHECK-NEXT: ret <8 x float> [[TMP0]]
4406 v8f32 xvpickve_w_f(v8f32 _1) { return __lasx_xvpickve_w_f(_1, 1); }
4407 // CHECK-LABEL: @xvrepli_b(
4408 // CHECK-NEXT: entry:
4409 // CHECK-NEXT: [[TMP0:%.*]] = tail call <32 x i8> @llvm.loongarch.lasx.xvrepli.b(i32 1)
4410 // CHECK-NEXT: ret <32 x i8> [[TMP0]]
4412 v32i8 xvrepli_b() { return __lasx_xvrepli_b(1); }
4413 // CHECK-LABEL: @xvrepli_d(
4414 // CHECK-NEXT: entry:
4415 // CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i64> @llvm.loongarch.lasx.xvrepli.d(i32 1)
4416 // CHECK-NEXT: ret <4 x i64> [[TMP0]]
4418 v4i64 xvrepli_d() { return __lasx_xvrepli_d(1); }
4419 // CHECK-LABEL: @xvrepli_h(
4420 // CHECK-NEXT: entry:
4421 // CHECK-NEXT: [[TMP0:%.*]] = tail call <16 x i16> @llvm.loongarch.lasx.xvrepli.h(i32 1)
4422 // CHECK-NEXT: ret <16 x i16> [[TMP0]]
4424 v16i16 xvrepli_h() { return __lasx_xvrepli_h(1); }
4425 // CHECK-LABEL: @xvrepli_w(
4426 // CHECK-NEXT: entry:
4427 // CHECK-NEXT: [[TMP0:%.*]] = tail call <8 x i32> @llvm.loongarch.lasx.xvrepli.w(i32 1)
4428 // CHECK-NEXT: ret <8 x i32> [[TMP0]]
4430 v8i32 xvrepli_w() { return __lasx_xvrepli_w(1); }