blob: 26fd3e66b798c776947841b9ed30458448eb7faf [file] [log] [blame]
Tim Northovere3d42362013-02-01 11:40:47 +00001; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s
Tim Northovere0e3aef2013-01-31 12:12:40 +00002
3define i128 @test_simple(i128 %a, i128 %b, i128 %c) {
Stephen Linf799e3f2013-07-13 20:38:47 +00004; CHECK-LABEL: test_simple:
Tim Northovere0e3aef2013-01-31 12:12:40 +00005
6 %valadd = add i128 %a, %b
7; CHECK: adds [[ADDLO:x[0-9]+]], x0, x2
8; CHECK-NEXT: adcs [[ADDHI:x[0-9]+]], x1, x3
9
10 %valsub = sub i128 %valadd, %c
11; CHECK: subs x0, [[ADDLO]], x4
12; CHECK: sbcs x1, [[ADDHI]], x5
13
14 ret i128 %valsub
15; CHECK: ret
16}
17
18define i128 @test_imm(i128 %a) {
Stephen Linf799e3f2013-07-13 20:38:47 +000019; CHECK-LABEL: test_imm:
Tim Northovere0e3aef2013-01-31 12:12:40 +000020
21 %val = add i128 %a, 12
22; CHECK: adds x0, x0, #12
23; CHECK: adcs x1, x1, {{x[0-9]|xzr}}
24
25 ret i128 %val
26; CHECK: ret
27}
28
29define i128 @test_shifted(i128 %a, i128 %b) {
Stephen Linf799e3f2013-07-13 20:38:47 +000030; CHECK-LABEL: test_shifted:
Tim Northovere0e3aef2013-01-31 12:12:40 +000031
32 %rhs = shl i128 %b, 45
33
34 %val = add i128 %a, %rhs
35; CHECK: adds x0, x0, x2, lsl #45
36; CHECK: adcs x1, x1, {{x[0-9]}}
37
38 ret i128 %val
39; CHECK: ret
40}
41
42define i128 @test_extended(i128 %a, i16 %b) {
Stephen Linf799e3f2013-07-13 20:38:47 +000043; CHECK-LABEL: test_extended:
Tim Northovere0e3aef2013-01-31 12:12:40 +000044
45 %ext = sext i16 %b to i128
46 %rhs = shl i128 %ext, 3
47
48 %val = add i128 %a, %rhs
49; CHECK: adds x0, x0, w2, sxth #3
50; CHECK: adcs x1, x1, {{x[0-9]}}
51
52 ret i128 %val
53; CHECK: ret
54}