blob: 0488ee2142cde6d44ec114e4496a8e5ddd8753fc [file] [log] [blame]
Tim Northoverdb2860f42014-04-14 13:18:48 +00001; RUN: llc -verify-machineinstrs < %s -mtriple=arm64-apple-ios7.0 | FileCheck --check-prefix=CHECK --check-prefix=CHECK-LE %s
Tim Northover35910d72014-07-23 12:58:11 +00002; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64_be-none-linux-gnu | FileCheck --check-prefix=CHECK --check-prefix=CHECK-BE %s
Tim Northovere0e3aef2013-01-31 12:12:40 +00003
4define i128 @test_simple(i128 %a, i128 %b, i128 %c) {
Stephen Linf799e3f2013-07-13 20:38:47 +00005; CHECK-LABEL: test_simple:
Tim Northovere0e3aef2013-01-31 12:12:40 +00006
7 %valadd = add i128 %a, %b
Christian Pirker3aa0e6a2014-03-26 14:51:22 +00008; CHECK-LE: adds [[ADDLO:x[0-9]+]], x0, x2
9; CHECK-LE-NEXT: adcs [[ADDHI:x[0-9]+]], x1, x3
10; CHECK-BE: adds [[ADDLO:x[0-9]+]], x1, x3
11; CHECK-BE-NEXT: adcs [[ADDHI:x[0-9]+]], x0, x2
Tim Northovere0e3aef2013-01-31 12:12:40 +000012
13 %valsub = sub i128 %valadd, %c
Christian Pirker3aa0e6a2014-03-26 14:51:22 +000014; CHECK-LE: subs x0, [[ADDLO]], x4
15; CHECK-LE: sbcs x1, [[ADDHI]], x5
16; CHECK-BE: subs x1, [[ADDLO]], x5
17; CHECK-BE: sbcs x0, [[ADDHI]], x4
Tim Northovere0e3aef2013-01-31 12:12:40 +000018
19 ret i128 %valsub
20; CHECK: ret
21}
22
23define i128 @test_imm(i128 %a) {
Stephen Linf799e3f2013-07-13 20:38:47 +000024; CHECK-LABEL: test_imm:
Tim Northovere0e3aef2013-01-31 12:12:40 +000025
26 %val = add i128 %a, 12
Christian Pirker3aa0e6a2014-03-26 14:51:22 +000027; CHECK-LE: adds x0, x0, #12
28; CHECK-LE: adcs x1, x1, {{x[0-9]|xzr}}
29; CHECK-BE: adds x1, x1, #12
30; CHECK-BE: adcs x0, x0, {{x[0-9]|xzr}}
Tim Northovere0e3aef2013-01-31 12:12:40 +000031
32 ret i128 %val
33; CHECK: ret
34}
35
36define i128 @test_shifted(i128 %a, i128 %b) {
Stephen Linf799e3f2013-07-13 20:38:47 +000037; CHECK-LABEL: test_shifted:
Tim Northovere0e3aef2013-01-31 12:12:40 +000038
39 %rhs = shl i128 %b, 45
40
41 %val = add i128 %a, %rhs
Christian Pirker3aa0e6a2014-03-26 14:51:22 +000042; CHECK-LE: adds x0, x0, x2, lsl #45
43; CHECK-LE: adcs x1, x1, {{x[0-9]}}
44; CHECK-BE: adds x1, x1, x3, lsl #45
45; CHECK-BE: adcs x0, x0, {{x[0-9]}}
Tim Northovere0e3aef2013-01-31 12:12:40 +000046
47 ret i128 %val
48; CHECK: ret
49}
50
51define i128 @test_extended(i128 %a, i16 %b) {
Stephen Linf799e3f2013-07-13 20:38:47 +000052; CHECK-LABEL: test_extended:
Tim Northovere0e3aef2013-01-31 12:12:40 +000053
54 %ext = sext i16 %b to i128
55 %rhs = shl i128 %ext, 3
56
57 %val = add i128 %a, %rhs
Christian Pirker3aa0e6a2014-03-26 14:51:22 +000058; CHECK-LE: adds x0, x0, w2, sxth #3
59; CHECK-LE: adcs x1, x1, {{x[0-9]}}
60; CHECK-BE: adds x1, x1, w2, sxth #3
61; CHECK-BE: adcs x0, x0, {{x[0-9]}}
Tim Northovere0e3aef2013-01-31 12:12:40 +000062
63 ret i128 %val
64; CHECK: ret
65}