1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -verify-machineinstrs < %s -mtriple=arm64-apple-ios7.0 | FileCheck --check-prefix=CHECK-LE %s
3
- ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64_be-none-linux-gnu | FileCheck --check-prefix=CHECK-BE %s
2
+ ; RUN: llc -verify-machineinstrs < %s -mtriple=arm64-apple-ios7.0 | FileCheck --check-prefixes=CHECK-LE %s
3
+ ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64_be-none-linux-gnu | FileCheck --check-prefixes=CHECK-BE %s
4
+ ; RUN: llc -verify-machineinstrs < %s -mtriple=arm64-apple-ios7.0 -global-isel | FileCheck --check-prefixes=CHECK-GI %s
4
5
5
6
define i128 @test_simple (i128 %a , i128 %b , i128 %c ) {
6
7
; CHECK-LE-LABEL: test_simple:
@@ -18,11 +19,16 @@ define i128 @test_simple(i128 %a, i128 %b, i128 %c) {
18
19
; CHECK-BE-NEXT: subs x1, x8, x5
19
20
; CHECK-BE-NEXT: sbc x0, x9, x4
20
21
; CHECK-BE-NEXT: ret
21
-
22
+ ;
23
+ ; CHECK-GI-LABEL: test_simple:
24
+ ; CHECK-GI: ; %bb.0:
25
+ ; CHECK-GI-NEXT: adds x8, x0, x2
26
+ ; CHECK-GI-NEXT: adc x9, x1, x3
27
+ ; CHECK-GI-NEXT: subs x0, x8, x4
28
+ ; CHECK-GI-NEXT: sbc x1, x9, x5
29
+ ; CHECK-GI-NEXT: ret
22
30
%valadd = add i128 %a , %b
23
-
24
31
%valsub = sub i128 %valadd , %c
25
-
26
32
ret i128 %valsub
27
33
}
28
34
@@ -38,9 +44,13 @@ define i128 @test_imm(i128 %a) {
38
44
; CHECK-BE-NEXT: adds x1, x1, #12
39
45
; CHECK-BE-NEXT: cinc x0, x0, hs
40
46
; CHECK-BE-NEXT: ret
41
-
47
+ ;
48
+ ; CHECK-GI-LABEL: test_imm:
49
+ ; CHECK-GI: ; %bb.0:
50
+ ; CHECK-GI-NEXT: adds x0, x0, #12
51
+ ; CHECK-GI-NEXT: adc x1, x1, xzr
52
+ ; CHECK-GI-NEXT: ret
42
53
%val = add i128 %a , 12
43
-
44
54
ret i128 %val
45
55
}
46
56
@@ -58,11 +68,16 @@ define i128 @test_shifted(i128 %a, i128 %b) {
58
68
; CHECK-BE-NEXT: adds x1, x1, x3, lsl #45
59
69
; CHECK-BE-NEXT: adc x0, x0, x8
60
70
; CHECK-BE-NEXT: ret
61
-
71
+ ;
72
+ ; CHECK-GI-LABEL: test_shifted:
73
+ ; CHECK-GI: ; %bb.0:
74
+ ; CHECK-GI-NEXT: lsr x8, x2, #19
75
+ ; CHECK-GI-NEXT: adds x0, x0, x2, lsl #45
76
+ ; CHECK-GI-NEXT: orr x8, x8, x3, lsl #45
77
+ ; CHECK-GI-NEXT: adc x1, x1, x8
78
+ ; CHECK-GI-NEXT: ret
62
79
%rhs = shl i128 %b , 45
63
-
64
80
%val = add i128 %a , %rhs
65
-
66
81
ret i128 %val
67
82
}
68
83
@@ -86,11 +101,19 @@ define i128 @test_extended(i128 %a, i16 %b) {
86
101
; CHECK-BE-NEXT: extr x8, x9, x8, #61
87
102
; CHECK-BE-NEXT: adc x0, x0, x8
88
103
; CHECK-BE-NEXT: ret
89
-
104
+ ;
105
+ ; CHECK-GI-LABEL: test_extended:
106
+ ; CHECK-GI: ; %bb.0:
107
+ ; CHECK-GI-NEXT: ; kill: def $w2 killed $w2 def $x2
108
+ ; CHECK-GI-NEXT: sxth x8, w2
109
+ ; CHECK-GI-NEXT: adds x0, x0, w2, sxth #3
110
+ ; CHECK-GI-NEXT: asr x9, x8, #63
111
+ ; CHECK-GI-NEXT: lsr x8, x8, #61
112
+ ; CHECK-GI-NEXT: orr x8, x8, x9, lsl #3
113
+ ; CHECK-GI-NEXT: adc x1, x1, x8
114
+ ; CHECK-GI-NEXT: ret
90
115
%ext = sext i16 %b to i128
91
116
%rhs = shl i128 %ext , 3
92
-
93
117
%val = add i128 %a , %rhs
94
-
95
118
ret i128 %val
96
119
}
0 commit comments