xref: /llvm-project/llvm/test/CodeGen/Generic/replace-intrinsics-with-veclib-darwin-libsystem-m.ll (revision 93a9a8a8d90f5b9bb6965ebb1104082692d41833)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes
2; RUN: opt -vector-library=Darwin_libsystem_m -replace-with-veclib -S < %s | FileCheck %s
3
4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
5target triple = "x86_64-unknown-linux-gnu"
6
7define <4 x float> @sin_v4f32(<4 x float> %in) {
8; CHECK-LABEL: define {{[^@]+}}@sin_v4f32
9; CHECK-SAME: (<4 x float> [[IN:%.*]]) {
10; CHECK-NEXT:    [[TMP1:%.*]] = call <4 x float> @_simd_sin_f4(<4 x float> [[IN]])
11; CHECK-NEXT:    ret <4 x float> [[TMP1]]
12;
13  %call = call <4 x float> @llvm.sin.v4f32(<4 x float> %in)
14  ret <4 x float> %call
15}
16declare <4 x float> @llvm.sin.v4f32(<4 x float>) #0
17
18define <2 x double> @sin_v2f64(<2 x double> %in) {
19; CHECK-LABEL: define {{[^@]+}}@sin_v2f64
20; CHECK-SAME: (<2 x double> [[IN:%.*]]) {
21; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x double> @_simd_sin_d2(<2 x double> [[IN]])
22; CHECK-NEXT:    ret <2 x double> [[TMP1]]
23;
24  %call = call <2 x double> @llvm.sin.v2f64(<2 x double> %in)
25  ret <2 x double> %call
26}
27declare <2 x double> @llvm.sin.v2f64(<2 x double>)
28
29
30define <2 x double> @exp_v2(<2 x double> %in) {
31; CHECK-LABEL: define {{[^@]+}}@exp_v2
32; CHECK-SAME: (<2 x double> [[IN:%.*]]) {
33; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x double> @_simd_exp_d2(<2 x double> [[IN]])
34; CHECK-NEXT:    ret <2 x double> [[TMP1]]
35;
36  %call = call <2 x double> @llvm.exp.v2f64(<2 x double> %in)
37  ret <2 x double> %call
38}
39
40declare <2 x double> @llvm.exp.v2f64(<2 x double>) #0
41
42define <4 x float> @exp_f32(<4 x float> %in) {
43; CHECK-LABEL: define {{[^@]+}}@exp_f32
44; CHECK-SAME: (<4 x float> [[IN:%.*]]) {
45; CHECK-NEXT:    [[TMP1:%.*]] = call <4 x float> @_simd_exp_f4(<4 x float> [[IN]])
46; CHECK-NEXT:    ret <4 x float> [[TMP1]]
47;
48  %call = call <4 x float> @llvm.exp.v4f32(<4 x float> %in)
49  ret <4 x float> %call
50}
51
52declare <4 x float> @llvm.exp.v4f32(<4 x float>) #0
53
54define <3 x double> @exp_v3(<3 x double> %in) {
55; CHECK-LABEL: define {{[^@]+}}@exp_v3
56; CHECK-SAME: (<3 x double> [[IN:%.*]]) {
57; CHECK-NEXT:    [[CALL:%.*]] = call <3 x double> @llvm.exp.v3f64(<3 x double> [[IN]])
58; CHECK-NEXT:    ret <3 x double> [[CALL]]
59;
60  %call = call <3 x double> @llvm.exp.v3f64(<3 x double> %in)
61  ret <3 x double> %call
62}
63
64declare <3 x double> @llvm.exp.v3f64(<3 x double>) #0
65