[X86] X86DAGToDAGISel - attempt to merge XMM/YMM loads with YMM/ZMM loads of the...
[llvm-project.git] / llvm / test / CodeGen / Generic / replace-intrinsics-with-veclib-darwin-libsystem-m.ll
blob7602e1900e436bf578b787bcbfe628b014901ba6
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
4 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
5 target triple = "x86_64-unknown-linux-gnu"
7 define <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]]
13   %call = call <4 x float> @llvm.sin.v4f32(<4 x float> %in)
14   ret <4 x float> %call
16 declare <4 x float> @llvm.sin.v4f32(<4 x float>) #0
18 define <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]]
24   %call = call <2 x double> @llvm.sin.v2f64(<2 x double> %in)
25   ret <2 x double> %call
27 declare <2 x double> @llvm.sin.v2f64(<2 x double>)
30 define <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]]
36   %call = call <2 x double> @llvm.exp.v2f64(<2 x double> %in)
37   ret <2 x double> %call
40 declare <2 x double> @llvm.exp.v2f64(<2 x double>) #0
42 define <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]]
48   %call = call <4 x float> @llvm.exp.v4f32(<4 x float> %in)
49   ret <4 x float> %call
52 declare <4 x float> @llvm.exp.v4f32(<4 x float>) #0
54 define <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]]
60   %call = call <3 x double> @llvm.exp.v3f64(<3 x double> %in)
61   ret <3 x double> %call
64 declare <3 x double> @llvm.exp.v3f64(<3 x double>) #0