xref: /llvm-project/llvm/test/CodeGen/AArch64/replace-with-veclib-sleef.ll (revision c03d09ce3eed336fea4d9283232383f6d4d4057d)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
2; RUN: opt -vector-library=sleefgnuabi -replace-with-veclib -S < %s | FileCheck %s
3
4target triple = "aarch64-unknown-linux-gnu"
5
6;.
7; CHECK: @llvm.compiler.used = appending global [34 x ptr] [ptr @_ZGVnN2v_cos, ptr @_ZGVnN4v_cosf, ptr @_ZGVnN2v_exp, ptr @_ZGVnN4v_expf, ptr @_ZGVnN2v_exp10, ptr @_ZGVnN4v_exp10f, ptr @_ZGVnN2v_exp2, ptr @_ZGVnN4v_exp2f, ptr @_ZGVnN2v_log, ptr @_ZGVnN4v_logf, ptr @_ZGVnN2v_log10, ptr @_ZGVnN4v_log10f, ptr @_ZGVnN2v_log2, ptr @_ZGVnN4v_log2f, ptr @_ZGVnN2vv_pow, ptr @_ZGVnN4vv_powf, ptr @_ZGVnN2v_sin, ptr @_ZGVnN4v_sinf, ptr @_ZGVnN2v_tan, ptr @_ZGVnN4v_tanf, ptr @_ZGVnN2v_acos, ptr @_ZGVnN4v_acosf, ptr @_ZGVnN2v_asin, ptr @_ZGVnN4v_asinf, ptr @_ZGVnN2v_atan, ptr @_ZGVnN4v_atanf, ptr @_ZGVnN2vv_atan2, ptr @_ZGVnN4vv_atan2f, ptr @_ZGVnN2v_cosh, ptr @_ZGVnN4v_coshf, ptr @_ZGVnN2v_sinh, ptr @_ZGVnN4v_sinhf, ptr @_ZGVnN2v_tanh, ptr @_ZGVnN4v_tanhf], section "llvm.metadata"
8;.
9define <2 x double> @llvm_ceil_f64(<2 x double> %in) {
10; CHECK-LABEL: @llvm_ceil_f64(
11; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.ceil.v2f64(<2 x double> [[IN:%.*]])
12; CHECK-NEXT:    ret <2 x double> [[TMP1]]
13;
14  %1 = call fast <2 x double> @llvm.ceil.v2f64(<2 x double> %in)
15  ret <2 x double> %1
16}
17
18define <4 x float> @llvm_ceil_f32(<4 x float> %in) {
19; CHECK-LABEL: @llvm_ceil_f32(
20; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.ceil.v4f32(<4 x float> [[IN:%.*]])
21; CHECK-NEXT:    ret <4 x float> [[TMP1]]
22;
23  %1 = call fast <4 x float> @llvm.ceil.v4f32(<4 x float> %in)
24  ret <4 x float> %1
25}
26
27define <2 x double> @llvm_copysign_f64(<2 x double> %mag, <2 x double> %sgn) {
28; CHECK-LABEL: @llvm_copysign_f64(
29; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.copysign.v2f64(<2 x double> [[MAG:%.*]], <2 x double> [[SGN:%.*]])
30; CHECK-NEXT:    ret <2 x double> [[TMP1]]
31;
32  %1 = call fast <2 x double> @llvm.copysign.v2f64(<2 x double> %mag, <2 x double> %sgn)
33  ret <2 x double> %1
34}
35
36define <4 x float> @llvm_copysign_f32(<4 x float> %mag, <4 x float> %sgn) {
37; CHECK-LABEL: @llvm_copysign_f32(
38; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.copysign.v4f32(<4 x float> [[MAG:%.*]], <4 x float> [[SGN:%.*]])
39; CHECK-NEXT:    ret <4 x float> [[TMP1]]
40;
41  %1 = call fast <4 x float> @llvm.copysign.v4f32(<4 x float> %mag, <4 x float> %sgn)
42  ret <4 x float> %1
43}
44
45define <2 x double> @llvm_cos_f64(<2 x double> %in) {
46; CHECK-LABEL: @llvm_cos_f64(
47; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_cos(<2 x double> [[IN:%.*]])
48; CHECK-NEXT:    ret <2 x double> [[TMP1]]
49;
50  %1 = call fast <2 x double> @llvm.cos.v2f64(<2 x double> %in)
51  ret <2 x double> %1
52}
53
54define <4 x float> @llvm_cos_f32(<4 x float> %in) {
55; CHECK-LABEL: @llvm_cos_f32(
56; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_cosf(<4 x float> [[IN:%.*]])
57; CHECK-NEXT:    ret <4 x float> [[TMP1]]
58;
59  %1 = call fast <4 x float> @llvm.cos.v4f32(<4 x float> %in)
60  ret <4 x float> %1
61}
62
63define <2 x double> @llvm_exp_f64(<2 x double> %in) {
64; CHECK-LABEL: @llvm_exp_f64(
65; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp(<2 x double> [[IN:%.*]])
66; CHECK-NEXT:    ret <2 x double> [[TMP1]]
67;
68  %1 = call fast <2 x double> @llvm.exp.v2f64(<2 x double> %in)
69  ret <2 x double> %1
70}
71
72define <4 x float> @llvm_exp_f32(<4 x float> %in) {
73; CHECK-LABEL: @llvm_exp_f32(
74; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_expf(<4 x float> [[IN:%.*]])
75; CHECK-NEXT:    ret <4 x float> [[TMP1]]
76;
77  %1 = call fast <4 x float> @llvm.exp.v4f32(<4 x float> %in)
78  ret <4 x float> %1
79}
80
81define <2 x double> @llvm_exp10_f64(<2 x double> %in) {
82; CHECK-LABEL: @llvm_exp10_f64(
83; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp10(<2 x double> [[IN:%.*]])
84; CHECK-NEXT:    ret <2 x double> [[TMP1]]
85;
86  %1 = call fast <2 x double> @llvm.exp10.v2f64(<2 x double> %in)
87  ret <2 x double> %1
88}
89
90define <4 x float> @llvm_exp10_f32(<4 x float> %in) {
91; CHECK-LABEL: @llvm_exp10_f32(
92; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_exp10f(<4 x float> [[IN:%.*]])
93; CHECK-NEXT:    ret <4 x float> [[TMP1]]
94;
95  %1 = call fast <4 x float> @llvm.exp10.v4f32(<4 x float> %in)
96  ret <4 x float> %1
97}
98
99define <2 x double> @llvm_exp2_f64(<2 x double> %in) {
100; CHECK-LABEL: @llvm_exp2_f64(
101; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp2(<2 x double> [[IN:%.*]])
102; CHECK-NEXT:    ret <2 x double> [[TMP1]]
103;
104  %1 = call fast <2 x double> @llvm.exp2.v2f64(<2 x double> %in)
105  ret <2 x double> %1
106}
107
108define <4 x float> @llvm_exp2_f32(<4 x float> %in) {
109; CHECK-LABEL: @llvm_exp2_f32(
110; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_exp2f(<4 x float> [[IN:%.*]])
111; CHECK-NEXT:    ret <4 x float> [[TMP1]]
112;
113  %1 = call fast <4 x float> @llvm.exp2.v4f32(<4 x float> %in)
114  ret <4 x float> %1
115}
116
117define <2 x double> @llvm_fabs_f64(<2 x double> %in) {
118; CHECK-LABEL: @llvm_fabs_f64(
119; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.fabs.v2f64(<2 x double> [[IN:%.*]])
120; CHECK-NEXT:    ret <2 x double> [[TMP1]]
121;
122  %1 = call fast <2 x double> @llvm.fabs.v2f64(<2 x double> %in)
123  ret <2 x double> %1
124}
125
126define <4 x float> @llvm_fabs_f32(<4 x float> %in) {
127; CHECK-LABEL: @llvm_fabs_f32(
128; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> [[IN:%.*]])
129; CHECK-NEXT:    ret <4 x float> [[TMP1]]
130;
131  %1 = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> %in)
132  ret <4 x float> %1
133}
134
135define <2 x double> @llvm_floor_f64(<2 x double> %in) {
136; CHECK-LABEL: @llvm_floor_f64(
137; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.floor.v2f64(<2 x double> [[IN:%.*]])
138; CHECK-NEXT:    ret <2 x double> [[TMP1]]
139;
140  %1 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %in)
141  ret <2 x double> %1
142}
143
144define <4 x float> @llvm_floor_f32(<4 x float> %in) {
145; CHECK-LABEL: @llvm_floor_f32(
146; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.floor.v4f32(<4 x float> [[IN:%.*]])
147; CHECK-NEXT:    ret <4 x float> [[TMP1]]
148;
149  %1 = call fast <4 x float> @llvm.floor.v4f32(<4 x float> %in)
150  ret <4 x float> %1
151}
152
153define <2 x double> @llvm_fma_f64(<2 x double> %a, <2 x double> %b, <2 x double> %c ) {
154; CHECK-LABEL: @llvm_fma_f64(
155; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.fma.v2f64(<2 x double> [[A:%.*]], <2 x double> [[B:%.*]], <2 x double> [[C:%.*]])
156; CHECK-NEXT:    ret <2 x double> [[TMP1]]
157;
158  %1 = call fast <2 x double> @llvm.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c)
159  ret <2 x double> %1
160}
161
162define <4 x float> @llvm_fma_f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) {
163; CHECK-LABEL: @llvm_fma_f32(
164; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.fma.v4f32(<4 x float> [[A:%.*]], <4 x float> [[B:%.*]], <4 x float> [[C:%.*]])
165; CHECK-NEXT:    ret <4 x float> [[TMP1]]
166;
167  %1 = call fast <4 x float> @llvm.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c)
168  ret <4 x float> %1
169}
170
171define <2 x double> @llvm_log_f64(<2 x double> %in) {
172; CHECK-LABEL: @llvm_log_f64(
173; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log(<2 x double> [[IN:%.*]])
174; CHECK-NEXT:    ret <2 x double> [[TMP1]]
175;
176  %1 = call fast <2 x double> @llvm.log.v2f64(<2 x double> %in)
177  ret <2 x double> %1
178}
179
180define <4 x float> @llvm_log_f32(<4 x float> %in) {
181; CHECK-LABEL: @llvm_log_f32(
182; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_logf(<4 x float> [[IN:%.*]])
183; CHECK-NEXT:    ret <4 x float> [[TMP1]]
184;
185  %1 = call fast <4 x float> @llvm.log.v4f32(<4 x float> %in)
186  ret <4 x float> %1
187}
188
189define <2 x double> @llvm_log10_f64(<2 x double> %in) {
190; CHECK-LABEL: @llvm_log10_f64(
191; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log10(<2 x double> [[IN:%.*]])
192; CHECK-NEXT:    ret <2 x double> [[TMP1]]
193;
194  %1 = call fast <2 x double> @llvm.log10.v2f64(<2 x double> %in)
195  ret <2 x double> %1
196}
197
198define <4 x float> @llvm_log10_f32(<4 x float> %in) {
199; CHECK-LABEL: @llvm_log10_f32(
200; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_log10f(<4 x float> [[IN:%.*]])
201; CHECK-NEXT:    ret <4 x float> [[TMP1]]
202;
203  %1 = call fast <4 x float> @llvm.log10.v4f32(<4 x float> %in)
204  ret <4 x float> %1
205}
206
207define <2 x double> @llvm_log2_f64(<2 x double> %in) {
208; CHECK-LABEL: @llvm_log2_f64(
209; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log2(<2 x double> [[IN:%.*]])
210; CHECK-NEXT:    ret <2 x double> [[TMP1]]
211;
212  %1 = call fast <2 x double> @llvm.log2.v2f64(<2 x double> %in)
213  ret <2 x double> %1
214}
215
216define <4 x float> @llvm_log2_f32(<4 x float> %in) {
217; CHECK-LABEL: @llvm_log2_f32(
218; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_log2f(<4 x float> [[IN:%.*]])
219; CHECK-NEXT:    ret <4 x float> [[TMP1]]
220;
221  %1 = call fast <4 x float> @llvm.log2.v4f32(<4 x float> %in)
222  ret <4 x float> %1
223}
224
225define <2 x double> @llvm_maxnum_f64(<2 x double> %in0, <2 x double> %in1) {
226; CHECK-LABEL: @llvm_maxnum_f64(
227; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.maxnum.v2f64(<2 x double> [[IN0:%.*]], <2 x double> [[IN1:%.*]])
228; CHECK-NEXT:    ret <2 x double> [[TMP1]]
229;
230  %1 = call fast <2 x double> @llvm.maxnum.v2f64(<2 x double> %in0, <2 x double> %in1)
231  ret <2 x double> %1
232}
233
234define <4 x float> @llvm_maxnum_f32(<4 x float> %in0, <4 x float> %in1) {
235; CHECK-LABEL: @llvm_maxnum_f32(
236; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> [[IN0:%.*]], <4 x float> [[IN1:%.*]])
237; CHECK-NEXT:    ret <4 x float> [[TMP1]]
238;
239  %1 = call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> %in0, <4 x float> %in1)
240  ret <4 x float> %1
241}
242
243define <2 x double> @llvm_minnum_f64(<2 x double> %in0, <2 x double> %in1) {
244; CHECK-LABEL: @llvm_minnum_f64(
245; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.minnum.v2f64(<2 x double> [[IN0:%.*]], <2 x double> [[IN1:%.*]])
246; CHECK-NEXT:    ret <2 x double> [[TMP1]]
247;
248  %1 = call fast <2 x double> @llvm.minnum.v2f64(<2 x double> %in0, <2 x double> %in1)
249  ret <2 x double> %1
250}
251
252define <4 x float> @llvm_minnum_f32(<4 x float> %in0, <4 x float> %in1) {
253; CHECK-LABEL: @llvm_minnum_f32(
254; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.minnum.v4f32(<4 x float> [[IN0:%.*]], <4 x float> [[IN1:%.*]])
255; CHECK-NEXT:    ret <4 x float> [[TMP1]]
256;
257  %1 = call fast <4 x float> @llvm.minnum.v4f32(<4 x float> %in0, <4 x float> %in1)
258  ret <4 x float> %1
259}
260
261define <2 x double> @llvm_nearbyint_f64(<2 x double> %in) {
262; CHECK-LABEL: @llvm_nearbyint_f64(
263; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[IN:%.*]])
264; CHECK-NEXT:    ret <2 x double> [[TMP1]]
265;
266  %1 = call fast <2 x double> @llvm.nearbyint.v2f64(<2 x double> %in)
267  ret <2 x double> %1
268}
269
270define <4 x float> @llvm_nearbyint_f32(<4 x float> %in) {
271; CHECK-LABEL: @llvm_nearbyint_f32(
272; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[IN:%.*]])
273; CHECK-NEXT:    ret <4 x float> [[TMP1]]
274;
275  %1 = call fast <4 x float> @llvm.nearbyint.v4f32(<4 x float> %in)
276  ret <4 x float> %1
277}
278
279define <2 x double> @llvm_pow_f64(<2 x double> %in, <2 x double> %pow) {
280; CHECK-LABEL: @llvm_pow_f64(
281; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2vv_pow(<2 x double> [[IN:%.*]], <2 x double> [[POW:%.*]])
282; CHECK-NEXT:    ret <2 x double> [[TMP1]]
283;
284  %1 = call fast <2 x double> @llvm.pow.v2f64(<2 x double> %in, <2 x double> %pow)
285  ret <2 x double> %1
286}
287
288define <4 x float> @llvm_pow_f32(<4 x float> %in, <4 x float> %pow) {
289; CHECK-LABEL: @llvm_pow_f32(
290; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4vv_powf(<4 x float> [[IN:%.*]], <4 x float> [[POW:%.*]])
291; CHECK-NEXT:    ret <4 x float> [[TMP1]]
292;
293  %1 = call fast <4 x float> @llvm.pow.v4f32(<4 x float> %in, <4 x float> %pow)
294  ret <4 x float> %1
295}
296
297define <2 x double> @llvm_rint_f64(<2 x double> %in) {
298; CHECK-LABEL: @llvm_rint_f64(
299; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.rint.v2f64(<2 x double> [[IN:%.*]])
300; CHECK-NEXT:    ret <2 x double> [[TMP1]]
301;
302  %1 = call fast <2 x double> @llvm.rint.v2f64(<2 x double> %in)
303  ret <2 x double> %1
304}
305
306define <4 x float> @llvm_rint_f32(<4 x float> %in) {
307; CHECK-LABEL: @llvm_rint_f32(
308; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.rint.v4f32(<4 x float> [[IN:%.*]])
309; CHECK-NEXT:    ret <4 x float> [[TMP1]]
310;
311  %1 = call fast <4 x float> @llvm.rint.v4f32(<4 x float> %in)
312  ret <4 x float> %1
313}
314
315define <2 x double> @llvm_round_f64(<2 x double> %in) {
316; CHECK-LABEL: @llvm_round_f64(
317; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.round.v2f64(<2 x double> [[IN:%.*]])
318; CHECK-NEXT:    ret <2 x double> [[TMP1]]
319;
320  %1 = call fast <2 x double> @llvm.round.v2f64(<2 x double> %in)
321  ret <2 x double> %1
322}
323
324define <4 x float> @llvm_round_f32(<4 x float> %in) {
325; CHECK-LABEL: @llvm_round_f32(
326; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.round.v4f32(<4 x float> [[IN:%.*]])
327; CHECK-NEXT:    ret <4 x float> [[TMP1]]
328;
329  %1 = call fast <4 x float> @llvm.round.v4f32(<4 x float> %in)
330  ret <4 x float> %1
331}
332
333define <2 x double> @llvm_sin_f64(<2 x double> %in) {
334; CHECK-LABEL: @llvm_sin_f64(
335; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_sin(<2 x double> [[IN:%.*]])
336; CHECK-NEXT:    ret <2 x double> [[TMP1]]
337;
338  %1 = call fast <2 x double> @llvm.sin.v2f64(<2 x double> %in)
339  ret <2 x double> %1
340}
341
342define <4 x float> @llvm_sin_f32(<4 x float> %in) {
343; CHECK-LABEL: @llvm_sin_f32(
344; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_sinf(<4 x float> [[IN:%.*]])
345; CHECK-NEXT:    ret <4 x float> [[TMP1]]
346;
347  %1 = call fast <4 x float> @llvm.sin.v4f32(<4 x float> %in)
348  ret <4 x float> %1
349}
350
351define <2 x double> @llvm_sqrt_f64(<2 x double> %in) {
352; CHECK-LABEL: @llvm_sqrt_f64(
353; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[IN:%.*]])
354; CHECK-NEXT:    ret <2 x double> [[TMP1]]
355;
356  %1 = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> %in)
357  ret <2 x double> %1
358}
359
360define <4 x float> @llvm_sqrt_f32(<4 x float> %in) {
361; CHECK-LABEL: @llvm_sqrt_f32(
362; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[IN:%.*]])
363; CHECK-NEXT:    ret <4 x float> [[TMP1]]
364;
365  %1 = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> %in)
366  ret <4 x float> %1
367}
368
369define <2 x double> @llvm_tan_f64(<2 x double> %in) {
370; CHECK-LABEL: @llvm_tan_f64(
371; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_tan(<2 x double> [[IN:%.*]])
372; CHECK-NEXT:    ret <2 x double> [[TMP1]]
373;
374  %1 = call fast <2 x double> @llvm.tan.v2f64(<2 x double> %in)
375  ret <2 x double> %1
376}
377
378define <4 x float> @llvm_tan_f32(<4 x float> %in) {
379; CHECK-LABEL: @llvm_tan_f32(
380; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_tanf(<4 x float> [[IN:%.*]])
381; CHECK-NEXT:    ret <4 x float> [[TMP1]]
382;
383  %1 = call fast <4 x float> @llvm.tan.v4f32(<4 x float> %in)
384  ret <4 x float> %1
385}
386
387define <2 x double> @llvm_acos_f64(<2 x double> %in) {
388; CHECK-LABEL: @llvm_acos_f64(
389; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_acos(<2 x double> [[IN:%.*]])
390; CHECK-NEXT:    ret <2 x double> [[TMP1]]
391;
392  %1 = call fast <2 x double> @llvm.acos.v2f64(<2 x double> %in)
393  ret <2 x double> %1
394}
395
396define <4 x float> @llvm_acos_f32(<4 x float> %in) {
397; CHECK-LABEL: @llvm_acos_f32(
398; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_acosf(<4 x float> [[IN:%.*]])
399; CHECK-NEXT:    ret <4 x float> [[TMP1]]
400;
401  %1 = call fast <4 x float> @llvm.acos.v4f32(<4 x float> %in)
402  ret <4 x float> %1
403}
404
405define <2 x double> @llvm_asin_f64(<2 x double> %in) {
406; CHECK-LABEL: @llvm_asin_f64(
407; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_asin(<2 x double> [[IN:%.*]])
408; CHECK-NEXT:    ret <2 x double> [[TMP1]]
409;
410  %1 = call fast <2 x double> @llvm.asin.v2f64(<2 x double> %in)
411  ret <2 x double> %1
412}
413
414define <4 x float> @llvm_asin_f32(<4 x float> %in) {
415; CHECK-LABEL: @llvm_asin_f32(
416; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_asinf(<4 x float> [[IN:%.*]])
417; CHECK-NEXT:    ret <4 x float> [[TMP1]]
418;
419  %1 = call fast <4 x float> @llvm.asin.v4f32(<4 x float> %in)
420  ret <4 x float> %1
421}
422
423define <2 x double> @llvm_atan_f64(<2 x double> %in) {
424; CHECK-LABEL: @llvm_atan_f64(
425; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_atan(<2 x double> [[IN:%.*]])
426; CHECK-NEXT:    ret <2 x double> [[TMP1]]
427;
428  %1 = call fast <2 x double> @llvm.atan.v2f64(<2 x double> %in)
429  ret <2 x double> %1
430}
431
432define <4 x float> @llvm_atan_f32(<4 x float> %in) {
433; CHECK-LABEL: @llvm_atan_f32(
434; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_atanf(<4 x float> [[IN:%.*]])
435; CHECK-NEXT:    ret <4 x float> [[TMP1]]
436;
437  %1 = call fast <4 x float> @llvm.atan.v4f32(<4 x float> %in)
438  ret <4 x float> %1
439}
440
441define <2 x double> @llvm_atan2_f64(<2 x double> %x, <2 x double> %y) {
442; CHECK-LABEL: @llvm_atan2_f64(
443; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2vv_atan2(<2 x double> [[INX:%.*]], <2 x double> [[INY:%.*]])
444; CHECK-NEXT:    ret <2 x double> [[TMP1]]
445;
446  %1 = call fast <2 x double> @llvm.atan2.v2f64(<2 x double> %x, <2 x double> %y)
447  ret <2 x double> %1
448}
449
450define <4 x float> @llvm_atan2_f32(<4 x float> %x, <4 x float> %y) {
451; CHECK-LABEL: @llvm_atan2_f32(
452; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4vv_atan2f(<4 x float> [[INX:%.*]], <4 x float> [[INY:%.*]])
453; CHECK-NEXT:    ret <4 x float> [[TMP1]]
454;
455  %1 = call fast <4 x float> @llvm.atan2.v4f32(<4 x float> %x, <4 x float> %y)
456  ret <4 x float> %1
457}
458
459define <2 x double> @llvm_cosh_f64(<2 x double> %in) {
460; CHECK-LABEL: @llvm_cosh_f64(
461; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_cosh(<2 x double> [[IN:%.*]])
462; CHECK-NEXT:    ret <2 x double> [[TMP1]]
463;
464  %1 = call fast <2 x double> @llvm.cosh.v2f64(<2 x double> %in)
465  ret <2 x double> %1
466}
467
468define <4 x float> @llvm_cosh_f32(<4 x float> %in) {
469; CHECK-LABEL: @llvm_cosh_f32(
470; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_coshf(<4 x float> [[IN:%.*]])
471; CHECK-NEXT:    ret <4 x float> [[TMP1]]
472;
473  %1 = call fast <4 x float> @llvm.cosh.v4f32(<4 x float> %in)
474  ret <4 x float> %1
475}
476
477define <2 x double> @llvm_sinh_f64(<2 x double> %in) {
478; CHECK-LABEL: @llvm_sinh_f64(
479; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_sinh(<2 x double> [[IN:%.*]])
480; CHECK-NEXT:    ret <2 x double> [[TMP1]]
481;
482  %1 = call fast <2 x double> @llvm.sinh.v2f64(<2 x double> %in)
483  ret <2 x double> %1
484}
485
486define <4 x float> @llvm_sinh_f32(<4 x float> %in) {
487; CHECK-LABEL: @llvm_sinh_f32(
488; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_sinhf(<4 x float> [[IN:%.*]])
489; CHECK-NEXT:    ret <4 x float> [[TMP1]]
490;
491  %1 = call fast <4 x float> @llvm.sinh.v4f32(<4 x float> %in)
492  ret <4 x float> %1
493}
494
495define <2 x double> @llvm_tanh_f64(<2 x double> %in) {
496; CHECK-LABEL: @llvm_tanh_f64(
497; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_tanh(<2 x double> [[IN:%.*]])
498; CHECK-NEXT:    ret <2 x double> [[TMP1]]
499;
500  %1 = call fast <2 x double> @llvm.tanh.v2f64(<2 x double> %in)
501  ret <2 x double> %1
502}
503
504define <4 x float> @llvm_tanh_f32(<4 x float> %in) {
505; CHECK-LABEL: @llvm_tanh_f32(
506; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_tanhf(<4 x float> [[IN:%.*]])
507; CHECK-NEXT:    ret <4 x float> [[TMP1]]
508;
509  %1 = call fast <4 x float> @llvm.tanh.v4f32(<4 x float> %in)
510  ret <4 x float> %1
511}
512
513define <2 x double> @llvm_trunc_f64(<2 x double> %in) {
514; CHECK-LABEL: @llvm_trunc_f64(
515; CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.trunc.v2f64(<2 x double> [[IN:%.*]])
516; CHECK-NEXT:    ret <2 x double> [[TMP1]]
517;
518  %1 = call fast <2 x double> @llvm.trunc.v2f64(<2 x double> %in)
519  ret <2 x double> %1
520}
521
522define <4 x float> @llvm_trunc_f32(<4 x float> %in) {
523; CHECK-LABEL: @llvm_trunc_f32(
524; CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.trunc.v4f32(<4 x float> [[IN:%.*]])
525; CHECK-NEXT:    ret <4 x float> [[TMP1]]
526;
527  %1 = call fast <4 x float> @llvm.trunc.v4f32(<4 x float> %in)
528  ret <4 x float> %1
529}
530
531declare <2 x double> @llvm.ceil.v2f64(<2 x double>)
532declare <4 x float> @llvm.ceil.v4f32(<4 x float>)
533declare <2 x double> @llvm.copysign.v2f64(<2 x double>, <2 x double>)
534declare <4 x float> @llvm.copysign.v4f32(<4 x float>, <4 x float>)
535declare <2 x double> @llvm.cos.v2f64(<2 x double>)
536declare <4 x float> @llvm.cos.v4f32(<4 x float>)
537declare <2 x double> @llvm.exp.v2f64(<2 x double>)
538declare <4 x float> @llvm.exp.v4f32(<4 x float>)
539declare <2 x double> @llvm.exp2.v2f64(<2 x double>)
540declare <4 x float> @llvm.exp2.v4f32(<4 x float>)
541declare <2 x double> @llvm.exp10.v2f64(<2 x double>)
542declare <4 x float> @llvm.exp10.v4f32(<4 x float>)
543declare <2 x double> @llvm.fabs.v2f64(<2 x double>)
544declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
545declare <2 x double> @llvm.floor.v2f64(<2 x double>)
546declare <4 x float> @llvm.floor.v4f32(<4 x float>)
547declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>)
548declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)
549declare <2 x double> @llvm.log.v2f64(<2 x double>)
550declare <4 x float> @llvm.log.v4f32(<4 x float>)
551declare <2 x double> @llvm.log10.v2f64(<2 x double>)
552declare <4 x float> @llvm.log10.v4f32(<4 x float>)
553declare <2 x double> @llvm.log2.v2f64(<2 x double>)
554declare <4 x float> @llvm.log2.v4f32(<4 x float>)
555declare <2 x double> @llvm.maxnum.v2f64(<2 x double>, <2 x double>)
556declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>)
557declare <2 x double> @llvm.minnum.v2f64(<2 x double>, <2 x double>)
558declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>)
559declare <2 x double> @llvm.nearbyint.v2f64(<2 x double>)
560declare <4 x float> @llvm.nearbyint.v4f32(<4 x float>)
561declare <2 x double> @llvm.pow.v2f64(<2 x double>, <2 x double>)
562declare <4 x float> @llvm.pow.v4f32(<4 x float>, <4 x float>)
563declare <2 x double> @llvm.rint.v2f64(<2 x double>)
564declare <4 x float> @llvm.rint.v4f32(<4 x float>)
565declare <2 x double> @llvm.round.v2f64(<2 x double>)
566declare <4 x float> @llvm.round.v4f32(<4 x float>)
567declare <2 x double> @llvm.sin.v2f64(<2 x double>)
568declare <4 x float> @llvm.sin.v4f32(<4 x float>)
569declare <2 x double> @llvm.sqrt.v2f64(<2 x double>)
570declare <4 x float> @llvm.sqrt.v4f32(<4 x float>)
571declare <2 x double> @llvm.tan.v2f64(<2 x double>)
572declare <4 x float> @llvm.tan.v4f32(<4 x float>)
573declare <2 x double> @llvm.trunc.v2f64(<2 x double>)
574declare <4 x float> @llvm.trunc.v4f32(<4 x float>)
575;.
576; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
577;.
578