AArch64/ARM64: port more AArch64 tests to ARM64.
[oota-llvm.git] / test / CodeGen / AArch64 / neon-misc-scalar.ll
1 ;RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
2 ; arm64 already has copies of these tests (scattered).
3
4 declare <1 x i64> @llvm.arm.neon.vqneg.v1i64(<1 x i64>)
5
6 declare <1 x i64> @llvm.arm.neon.vqabs.v1i64(<1 x i64>)
7
8 declare <1 x i64> @llvm.arm.neon.vabs.v1i64(<1 x i64>)
9
10 declare <1 x i64> @llvm.aarch64.neon.usqadd.v1i64(<1 x i64>, <1 x i64>)
11
12 declare <1 x i64> @llvm.aarch64.neon.suqadd.v1i64(<1 x i64>, <1 x i64>)
13
14 define <1 x i64> @test_vuqadd_s64(<1 x i64> %a, <1 x i64> %b) {
15 entry:
16   ; CHECK: test_vuqadd_s64
17   %vuqadd2.i = tail call <1 x i64> @llvm.aarch64.neon.suqadd.v1i64(<1 x i64> %a, <1 x i64> %b)
18   ; CHECK: suqadd d{{[0-9]+}}, d{{[0-9]+}}
19   ret <1 x i64> %vuqadd2.i
20 }
21
22 define <1 x i64> @test_vsqadd_u64(<1 x i64> %a, <1 x i64> %b) {
23 entry:
24   ; CHECK: test_vsqadd_u64
25   %vsqadd2.i = tail call <1 x i64> @llvm.aarch64.neon.usqadd.v1i64(<1 x i64> %a, <1 x i64> %b)
26   ; CHECK: usqadd d{{[0-9]+}}, d{{[0-9]+}}
27   ret <1 x i64> %vsqadd2.i
28 }
29
30 define <1 x i64> @test_vabs_s64(<1 x i64> %a) {
31   ; CHECK: test_vabs_s64
32 entry:
33   %vabs1.i = tail call <1 x i64> @llvm.arm.neon.vabs.v1i64(<1 x i64> %a)
34   ; CHECK: abs d{{[0-9]+}}, d{{[0-9]+}}
35   ret <1 x i64> %vabs1.i
36 }
37
38 define <1 x i64> @test_vqabs_s64(<1 x i64> %a) {
39   ; CHECK: test_vqabs_s64
40 entry:
41   %vqabs1.i = tail call <1 x i64> @llvm.arm.neon.vqabs.v1i64(<1 x i64> %a)
42   ; CHECK: sqabs d{{[0-9]+}}, d{{[0-9]+}}
43   ret <1 x i64> %vqabs1.i
44 }
45
46 define <1 x i64> @test_vqneg_s64(<1 x i64> %a) {
47   ; CHECK: test_vqneg_s64
48 entry:
49   %vqneg1.i = tail call <1 x i64> @llvm.arm.neon.vqneg.v1i64(<1 x i64> %a)
50   ; CHECK: sqneg d{{[0-9]+}}, d{{[0-9]+}}
51   ret <1 x i64> %vqneg1.i
52 }
53
54 define <1 x i64> @test_vneg_s64(<1 x i64> %a) {
55   ; CHECK: test_vneg_s64
56 entry:
57   %sub.i = sub <1 x i64> zeroinitializer, %a
58   ; CHECK: neg d{{[0-9]+}}, d{{[0-9]+}}
59   ret <1 x i64> %sub.i
60 }
61