1 ; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s | FileCheck %s
3 declare <1 x i64> @llvm.aarch64.neon.vpadd(<2 x i64>)
5 define <1 x i64> @test_addp_v1i64(<2 x i64> %a) {
6 ; CHECK: test_addp_v1i64:
7 %val = call <1 x i64> @llvm.aarch64.neon.vpadd(<2 x i64> %a)
8 ; CHECK: addp d0, v0.2d
12 declare <1 x float> @llvm.aarch64.neon.vpfadd(<2 x float>)
14 define <1 x float> @test_faddp_v1f32(<2 x float> %a) {
15 ; CHECK: test_faddp_v1f32:
16 %val = call <1 x float> @llvm.aarch64.neon.vpfadd(<2 x float> %a)
17 ; CHECK: faddp s0, v0.2s
21 declare <1 x double> @llvm.aarch64.neon.vpfaddq(<2 x double>)
23 define <1 x double> @test_faddp_v1f64(<2 x double> %a) {
24 ; CHECK: test_faddp_v1f64:
25 %val = call <1 x double> @llvm.aarch64.neon.vpfaddq(<2 x double> %a)
26 ; CHECK: faddp d0, v0.2d
31 declare <1 x float> @llvm.aarch64.neon.vpmax(<2 x float>)
33 define <1 x float> @test_fmaxp_v1f32(<2 x float> %a) {
34 ; CHECK: test_fmaxp_v1f32:
35 %val = call <1 x float> @llvm.aarch64.neon.vpmax(<2 x float> %a)
36 ; CHECK: fmaxp s0, v0.2s
40 declare <1 x double> @llvm.aarch64.neon.vpmaxq(<2 x double>)
42 define <1 x double> @test_fmaxp_v1f64(<2 x double> %a) {
43 ; CHECK: test_fmaxp_v1f64:
44 %val = call <1 x double> @llvm.aarch64.neon.vpmaxq(<2 x double> %a)
45 ; CHECK: fmaxp d0, v0.2d
50 declare <1 x float> @llvm.aarch64.neon.vpmin(<2 x float>)
52 define <1 x float> @test_fminp_v1f32(<2 x float> %a) {
53 ; CHECK: test_fminp_v1f32:
54 %val = call <1 x float> @llvm.aarch64.neon.vpmin(<2 x float> %a)
55 ; CHECK: fminp s0, v0.2s
59 declare <1 x double> @llvm.aarch64.neon.vpminq(<2 x double>)
61 define <1 x double> @test_fminp_v1f64(<2 x double> %a) {
62 ; CHECK: test_fminp_v1f64:
63 %val = call <1 x double> @llvm.aarch64.neon.vpminq(<2 x double> %a)
64 ; CHECK: fminp d0, v0.2d
68 declare <1 x float> @llvm.aarch64.neon.vpfmaxnm(<2 x float>)
70 define <1 x float> @test_fmaxnmp_v1f32(<2 x float> %a) {
71 ; CHECK: test_fmaxnmp_v1f32:
72 %val = call <1 x float> @llvm.aarch64.neon.vpfmaxnm(<2 x float> %a)
73 ; CHECK: fmaxnmp s0, v0.2s
77 declare <1 x double> @llvm.aarch64.neon.vpfmaxnmq(<2 x double>)
79 define <1 x double> @test_fmaxnmp_v1f64(<2 x double> %a) {
80 ; CHECK: test_fmaxnmp_v1f64:
81 %val = call <1 x double> @llvm.aarch64.neon.vpfmaxnmq(<2 x double> %a)
82 ; CHECK: fmaxnmp d0, v0.2d
86 declare <1 x float> @llvm.aarch64.neon.vpfminnm(<2 x float>)
88 define <1 x float> @test_fminnmp_v1f32(<2 x float> %a) {
89 ; CHECK: test_fminnmp_v1f32:
90 %val = call <1 x float> @llvm.aarch64.neon.vpfminnm(<2 x float> %a)
91 ; CHECK: fminnmp s0, v0.2s
95 declare <1 x double> @llvm.aarch64.neon.vpfminnmq(<2 x double>)
97 define <1 x double> @test_fminnmp_v1f64(<2 x double> %a) {
98 ; CHECK: test_fminnmp_v1f64:
99 %val = call <1 x double> @llvm.aarch64.neon.vpfminnmq(<2 x double> %a)
100 ; CHECK: fminnmp d0, v0.2d
101 ret <1 x double> %val