AArch64/ARM64: enable more AArch64 tests on ARM64.
[oota-llvm.git] / test / CodeGen / AArch64 / neon-scalar-add-sub.ll
1 ; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
2
3 define <1 x i64> @add1xi64(<1 x i64> %A, <1 x i64> %B) {
4 ;CHECK: add {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5         %tmp3 = add <1 x i64> %A, %B;
6         ret <1 x i64> %tmp3
7 }
8
9 define <1 x i64> @sub1xi64(<1 x i64> %A, <1 x i64> %B) {
10 ;CHECK: sub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
11         %tmp3 = sub <1 x i64> %A, %B;
12         ret <1 x i64> %tmp3
13 }
14
15 declare <1 x i64> @llvm.aarch64.neon.vaddds(<1 x i64>, <1 x i64>)
16 declare <1 x i64> @llvm.aarch64.neon.vadddu(<1 x i64>, <1 x i64>)
17
18 define <1 x i64> @test_add_v1i64(<1 x i64> %lhs, <1 x i64> %rhs) {
19 ; CHECK: test_add_v1i64:
20   %tmp1 = call <1 x i64> @llvm.aarch64.neon.vaddds(<1 x i64> %lhs, <1 x i64> %rhs)
21 ; CHECK: add {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
22   ret <1 x i64> %tmp1
23 }
24
25 define <1 x i64> @test_uadd_v1i64(<1 x i64> %lhs, <1 x i64> %rhs) {
26 ; CHECK: test_uadd_v1i64:
27   %tmp1 = call <1 x i64> @llvm.aarch64.neon.vadddu(<1 x i64> %lhs, <1 x i64> %rhs)
28 ;CHECK: add {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
29   ret <1 x i64> %tmp1
30 }
31
32 declare <1 x i64> @llvm.aarch64.neon.vsubds(<1 x i64>, <1 x i64>)
33 declare <1 x i64> @llvm.aarch64.neon.vsubdu(<1 x i64>, <1 x i64>)
34
35 define <1 x i64> @test_sub_v1i64(<1 x i64> %lhs, <1 x i64> %rhs) {
36 ; CHECK: test_sub_v1i64:
37   %tmp1 = call <1 x i64> @llvm.aarch64.neon.vsubds(<1 x i64> %lhs, <1 x i64> %rhs)
38 ; CHECK: sub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
39   ret <1 x i64> %tmp1
40 }
41
42 define <1 x i64> @test_usub_v1i64(<1 x i64> %lhs, <1 x i64> %rhs) {
43 ; CHECK: test_usub_v1i64:
44   %tmp1 = call <1 x i64> @llvm.aarch64.neon.vsubdu(<1 x i64> %lhs, <1 x i64> %rhs)
45 ;CHECK: sub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
46   ret <1 x i64> %tmp1
47 }
48
49
50