• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -o - %s -verify-machineinstrs -mtriple=aarch64-linux-gnu -mattr=+neon | FileCheck %s
2
3
4define <2 x float> @test_cos_v2f64(<2 x double> %v1) {
5; CHECK-LABEL: test_cos_v2f64:
6; CHECK: bl cos
7; CHECK: bl cos
8  %1 = call <2 x double> @llvm.cos.v2f64(<2 x double> %v1)
9  %2 = fptrunc <2 x double> %1 to <2 x float>
10  ret <2 x float> %2
11}
12
13define <2 x float> @test_sin_v2f64(<2 x double> %v1) {
14; CHECK-LABEL: test_sin_v2f64:
15; CHECK: bl sin
16; CHECK: bl sin
17  %1 = call <2 x double> @llvm.sin.v2f64(<2 x double> %v1)
18  %2 = fptrunc <2 x double> %1 to <2 x float>
19  ret <2 x float> %2
20}
21
22define <2 x float> @test_pow_v2f64(<2 x double> %v1, <2 x double> %v2) {
23; CHECK-LABEL: test_pow_v2f64:
24; CHECK: bl pow
25; CHECK: bl pow
26  %1 = call <2 x double> @llvm.pow.v2f64(<2 x double> %v1, <2 x double> %v2)
27  %2 = fptrunc <2 x double> %1 to <2 x float>
28  ret <2 x float> %2
29}
30
31declare <2 x double> @llvm.cos.v2f64(<2 x double>)
32declare <2 x double> @llvm.sin.v2f64(<2 x double>)
33declare <2 x double> @llvm.pow.v2f64(<2 x double>, <2 x double>)
34
35define <2 x float> @test_cos_v2f32(<2 x float> %v1) {
36; CHECK-LABEL: test_cos_v2f32:
37; CHECK: bl cos
38; CHECK: bl cos
39  %1 = call <2 x float> @llvm.cos.v2f32(<2 x float> %v1)
40  ret <2 x float> %1
41}
42
43define <2 x float> @test_sin_v2f32(<2 x float> %v1) {
44; CHECK-LABEL: test_sin_v2f32:
45; CHECK: bl sin
46; CHECK: bl sin
47  %1 = call <2 x float> @llvm.sin.v2f32(<2 x float> %v1)
48  ret <2 x float> %1
49}
50
51define <2 x float> @test_pow_v2f32(<2 x float> %v1, <2 x float> %v2) {
52; CHECK-LABEL: test_pow_v2f32:
53; CHECK: bl pow
54; CHECK: bl pow
55  %1 = call <2 x float> @llvm.pow.v2f32(<2 x float> %v1, <2 x float> %v2)
56  ret <2 x float> %1
57}
58
59declare <2 x float> @llvm.cos.v2f32(<2 x float>)
60declare <2 x float> @llvm.sin.v2f32(<2 x float>)
61declare <2 x float> @llvm.pow.v2f32(<2 x float>, <2 x float>)
62
63define <4 x float> @test_cos_v4f32(<4 x float> %v1) {
64; CHECK-LABEL: test_cos_v4f32:
65; CHECK: bl cos
66; CHECK: bl cos
67; CHECK: bl cos
68; CHECK: bl cos
69  %1 = call <4 x float> @llvm.cos.v4f32(<4 x float> %v1)
70  ret <4 x float> %1
71}
72
73define <4 x float> @test_sin_v4f32(<4 x float> %v1) {
74; CHECK-LABEL: test_sin_v4f32:
75; CHECK: bl sin
76; CHECK: bl sin
77; CHECK: bl sin
78; CHECK: bl sin
79  %1 = call <4 x float> @llvm.sin.v4f32(<4 x float> %v1)
80  ret <4 x float> %1
81}
82
83define <4 x float> @test_pow_v4f32(<4 x float> %v1, <4 x float> %v2) {
84; CHECK-LABEL: test_pow_v4f32:
85; CHECK: bl pow
86; CHECK: bl pow
87; CHECK: bl pow
88; CHECK: bl pow
89  %1 = call <4 x float> @llvm.pow.v4f32(<4 x float> %v1, <4 x float> %v2)
90  ret <4 x float> %1
91}
92
93declare <4 x float> @llvm.cos.v4f32(<4 x float>)
94declare <4 x float> @llvm.sin.v4f32(<4 x float>)
95declare <4 x float> @llvm.pow.v4f32(<4 x float>, <4 x float>)
96
97