Skip to content

Commit dbd53a1

Browse files
committed
Temporarily Revert "RegAllocFast: Rewrite and improve"
as it's breaking a few tests in the lldb test suite. Bot: http://lab.llvm.org:8011/builders/lldb-arm-ubuntu/builds/4226/steps/test/logs/stdio This reverts commit c8757ff.
1 parent e9f9027 commit dbd53a1

File tree

184 files changed

+10800
-11181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

184 files changed

+10800
-11181
lines changed

llvm/lib/CodeGen/RegAllocFast.cpp

Lines changed: 547 additions & 725 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/AArch64/GlobalISel/darwin-tls-call-clobber.ll

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ target triple = "arm64-apple-ios13.0.0"
3131
; This test checks that we don't re-use the register for the variable descriptor
3232
; for the second ldr.
3333
; CHECK: adrp x[[PTR1:[0-9]+]], _t_val@TLVPPAGE
34-
; CHECK: ldr x0, [x[[PTR1]], _t_val@TLVPPAGEOFF]
35-
; CHECK: ldr x[[FPTR:[0-9]+]], [x0]
34+
; CHECK: ldr x[[PTR1]], [x[[PTR1]], _t_val@TLVPPAGEOFF]
35+
; CHECK: ldr x[[FPTR:[0-9]+]], [x[[PTR1]]]
36+
; CHECK: mov x0, x[[PTR1]]
3637
; CHECK: blr x[[FPTR]]
3738

3839
define void @_Z4funcPKc(i8* %id) {

llvm/test/CodeGen/AArch64/arm64-fast-isel-br.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ entry:
9494
store i32 %c, i32* %c.addr, align 4
9595
store i64 %d, i64* %d.addr, align 8
9696
%0 = load i16, i16* %b.addr, align 2
97-
; CHECK: tbz {{w[0-9]+}}, #0, LBB4_2
97+
; CHECK: tbz w8, #0, LBB4_2
9898
%conv = trunc i16 %0 to i1
9999
br i1 %conv, label %if.then, label %if.end
100100

llvm/test/CodeGen/AArch64/arm64-fast-isel-call.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ declare i32 @bar(i8 zeroext, i8 zeroext, i8 zeroext, i8 zeroext, i8 zeroext, i8
7979
define i32 @t2() {
8080
entry:
8181
; CHECK-LABEL: t2
82-
; CHECK: mov x0, xzr
82+
; CHECK: mov [[REG1:x[0-9]+]], xzr
83+
; CHECK: mov x0, [[REG1]]
8384
; CHECK: mov w1, #-8
8485
; CHECK: mov [[REG2:w[0-9]+]], #1023
8586
; CHECK: uxth w2, [[REG2]]

llvm/test/CodeGen/AArch64/arm64-fast-isel-conversion-fallback.ll

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
define i32 @fptosi_wh(half %a) nounwind ssp {
55
entry:
66
; CHECK-LABEL: fptosi_wh
7-
; CHECK: fcvt [[REG:s[0-9]+]], h0
8-
; CHECK: fcvtzs w0, [[REG]]
7+
; CHECK: fcvt s0, h0
8+
; CHECK: fcvtzs [[REG:w[0-9]+]], s0
9+
; CHECK: mov w0, [[REG]]
910
%conv = fptosi half %a to i32
1011
ret i32 %conv
1112
}
@@ -14,8 +15,9 @@ entry:
1415
define i32 @fptoui_swh(half %a) nounwind ssp {
1516
entry:
1617
; CHECK-LABEL: fptoui_swh
17-
; CHECK: fcvt [[REG:s[0-9]+]], h0
18-
; CHECK: fcvtzu w0, [[REG]]
18+
; CHECK: fcvt s0, h0
19+
; CHECK: fcvtzu [[REG:w[0-9]+]], s0
20+
; CHECK: mov w0, [[REG]]
1921
%conv = fptoui half %a to i32
2022
ret i32 %conv
2123
}
@@ -24,8 +26,8 @@ entry:
2426
define half @sitofp_hw_i1(i1 %a) nounwind ssp {
2527
entry:
2628
; CHECK-LABEL: sitofp_hw_i1
27-
; CHECK: sbfx [[REG:w[0-9]+]], w0, #0, #1
28-
; CHECK: scvtf s0, [[REG]]
29+
; CHECK: sbfx w8, w0, #0, #1
30+
; CHECK: scvtf s0, w8
2931
; CHECK: fcvt h0, s0
3032
%conv = sitofp i1 %a to half
3133
ret half %conv
@@ -35,8 +37,8 @@ entry:
3537
define half @sitofp_hw_i8(i8 %a) nounwind ssp {
3638
entry:
3739
; CHECK-LABEL: sitofp_hw_i8
38-
; CHECK: sxtb [[REG:w[0-9]+]], w0
39-
; CHECK: scvtf s0, [[REG]]
40+
; CHECK: sxtb w8, w0
41+
; CHECK: scvtf s0, w8
4042
; CHECK: fcvt h0, s0
4143
%conv = sitofp i8 %a to half
4244
ret half %conv
@@ -46,8 +48,8 @@ entry:
4648
define half @sitofp_hw_i16(i16 %a) nounwind ssp {
4749
entry:
4850
; CHECK-LABEL: sitofp_hw_i16
49-
; CHECK: sxth [[REG:w[0-9]+]], w0
50-
; CHECK: scvtf s0, [[REG]]
51+
; CHECK: sxth w8, w0
52+
; CHECK: scvtf s0, w8
5153
; CHECK: fcvt h0, s0
5254
%conv = sitofp i16 %a to half
5355
ret half %conv
@@ -77,8 +79,8 @@ entry:
7779
define half @uitofp_hw_i1(i1 %a) nounwind ssp {
7880
entry:
7981
; CHECK-LABEL: uitofp_hw_i1
80-
; CHECK: and [[REG:w[0-9]+]], w0, #0x1
81-
; CHECK: ucvtf s0, [[REG]]
82+
; CHECK: and w8, w0, #0x1
83+
; CHECK: ucvtf s0, w8
8284
; CHECK: fcvt h0, s0
8385
%conv = uitofp i1 %a to half
8486
ret half %conv
@@ -88,8 +90,8 @@ entry:
8890
define half @uitofp_hw_i8(i8 %a) nounwind ssp {
8991
entry:
9092
; CHECK-LABEL: uitofp_hw_i8
91-
; CHECK: and [[REG:w[0-9]+]], w0, #0xff
92-
; CHECK: ucvtf s0, [[REG]]
93+
; CHECK: and w8, w0, #0xff
94+
; CHECK: ucvtf s0, w8
9395
; CHECK: fcvt h0, s0
9496
%conv = uitofp i8 %a to half
9597
ret half %conv
@@ -99,8 +101,8 @@ entry:
99101
define half @uitofp_hw_i16(i16 %a) nounwind ssp {
100102
entry:
101103
; CHECK-LABEL: uitofp_hw_i16
102-
; CHECK: and [[REG:w[0-9]+]], w0, #0xffff
103-
; CHECK: ucvtf s0, [[REG]]
104+
; CHECK: and w8, w0, #0xffff
105+
; CHECK: ucvtf s0, w8
104106
; CHECK: fcvt h0, s0
105107
%conv = uitofp i16 %a to half
106108
ret half %conv

llvm/test/CodeGen/AArch64/arm64-fast-isel-conversion.ll

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -O0 -fast-isel -fast-isel-abort=1 -verify-machineinstrs -mtriple=arm64-apple-darwin -mcpu=cyclone < %s | FileCheck -enable-var-scope %s
1+
; RUN: llc -O0 -fast-isel -fast-isel-abort=1 -verify-machineinstrs -mtriple=arm64-apple-darwin -mcpu=cyclone < %s | FileCheck %s
22

33
;; Test various conversions.
44
define zeroext i32 @trunc_(i8 zeroext %a, i16 zeroext %b, i32 %c, i64 %d) nounwind ssp {
@@ -49,12 +49,13 @@ entry:
4949
; CHECK: strh w1, [sp, #12]
5050
; CHECK: str w2, [sp, #8]
5151
; CHECK: str x3, [sp]
52-
; CHECK: ldrb [[REG0:w[0-9]+]], [sp, #15]
53-
; CHECK: strh [[REG0]], [sp, #12]
54-
; CHECK: ldrh [[REG1:w[0-9]+]], [sp, #12]
55-
; CHECK: str [[REG1]], [sp, #8]
56-
; CHECK: ldr w[[REG2:[0-9]+]], [sp, #8]
57-
; CHECK: str x[[REG2]], [sp]
52+
; CHECK: ldrb w8, [sp, #15]
53+
; CHECK: strh w8, [sp, #12]
54+
; CHECK: ldrh w8, [sp, #12]
55+
; CHECK: str w8, [sp, #8]
56+
; CHECK: ldr w8, [sp, #8]
57+
; CHECK: ; kill: def $x8 killed $w8
58+
; CHECK: str x8, [sp]
5859
; CHECK: ldr x0, [sp]
5960
; CHECK: ret
6061
%a.addr = alloca i8, align 1
@@ -104,12 +105,12 @@ entry:
104105
; CHECK: strh w1, [sp, #12]
105106
; CHECK: str w2, [sp, #8]
106107
; CHECK: str x3, [sp]
107-
; CHECK: ldrsb [[REG0:w[0-9]+]], [sp, #15]
108-
; CHECK: strh [[REG0]], [sp, #12]
109-
; CHECK: ldrsh [[REG1:w[0-9]+]], [sp, #12]
110-
; CHECK: str [[REG1]], [sp, #8]
111-
; CHECK: ldrsw [[REG2:x[0-9]+]], [sp, #8]
112-
; CHECK: str [[REG2]], [sp]
108+
; CHECK: ldrsb w8, [sp, #15]
109+
; CHECK: strh w8, [sp, #12]
110+
; CHECK: ldrsh w8, [sp, #12]
111+
; CHECK: str w8, [sp, #8]
112+
; CHECK: ldrsw x8, [sp, #8]
113+
; CHECK: str x8, [sp]
113114
; CHECK: ldr x0, [sp]
114115
; CHECK: ret
115116
%a.addr = alloca i8, align 1
@@ -165,8 +166,8 @@ entry:
165166
define signext i16 @sext_i1_i16(i1 %a) nounwind ssp {
166167
entry:
167168
; CHECK-LABEL: sext_i1_i16
168-
; CHECK: sbfx [[REG:w[0-9]+]], w0, #0, #1
169-
; CHECK: sxth w0, [[REG]]
169+
; CHECK: sbfx w8, w0, #0, #1
170+
; CHECK-NEXT: sxth w0, w8
170171
%conv = sext i1 %a to i16
171172
ret i16 %conv
172173
}
@@ -175,8 +176,8 @@ entry:
175176
define signext i8 @sext_i1_i8(i1 %a) nounwind ssp {
176177
entry:
177178
; CHECK-LABEL: sext_i1_i8
178-
; CHECK: sbfx [[REG:w[0-9]+]], w0, #0, #1
179-
; CHECK: sxtb w0, [[REG]]
179+
; CHECK: sbfx w8, w0, #0, #1
180+
; CHECK-NEXT: sxtb w0, w8
180181
%conv = sext i1 %a to i8
181182
ret i8 %conv
182183
}
@@ -239,8 +240,8 @@ entry:
239240
define float @sitofp_sw_i1(i1 %a) nounwind ssp {
240241
entry:
241242
; CHECK-LABEL: sitofp_sw_i1
242-
; CHECK: sbfx [[REG:w[0-9]+]], w0, #0, #1
243-
; CHECK: scvtf s0, [[REG]]
243+
; CHECK: sbfx w8, w0, #0, #1
244+
; CHECK: scvtf s0, w8
244245
%conv = sitofp i1 %a to float
245246
ret float %conv
246247
}
@@ -249,8 +250,8 @@ entry:
249250
define float @sitofp_sw_i8(i8 %a) nounwind ssp {
250251
entry:
251252
; CHECK-LABEL: sitofp_sw_i8
252-
; CHECK: sxtb [[REG:w[0-9]+]], w0
253-
; CHECK: scvtf s0, [[REG]]
253+
; CHECK: sxtb w8, w0
254+
; CHECK: scvtf s0, w8
254255
%conv = sitofp i8 %a to float
255256
ret float %conv
256257
}
@@ -303,8 +304,8 @@ entry:
303304
define float @uitofp_sw_i1(i1 %a) nounwind ssp {
304305
entry:
305306
; CHECK-LABEL: uitofp_sw_i1
306-
; CHECK: and [[REG:w[0-9]+]], w0, #0x1
307-
; CHECK: ucvtf s0, [[REG]]
307+
; CHECK: and w8, w0, #0x1
308+
; CHECK: ucvtf s0, w8
308309
%conv = uitofp i1 %a to float
309310
ret float %conv
310311
}
@@ -373,8 +374,7 @@ entry:
373374
define zeroext i16 @i64_trunc_i16(i64 %a) nounwind ssp {
374375
entry:
375376
; CHECK-LABEL: i64_trunc_i16
376-
; CHECK: mov x[[TMP:[0-9]+]], x0
377-
; CHECK: and [[REG2:w[0-9]+]], w[[TMP]], #0xffff{{$}}
377+
; CHECK: and [[REG2:w[0-9]+]], w0, #0xffff
378378
; CHECK: uxth w0, [[REG2]]
379379
%conv = trunc i64 %a to i16
380380
ret i16 %conv
@@ -383,8 +383,7 @@ entry:
383383
define zeroext i8 @i64_trunc_i8(i64 %a) nounwind ssp {
384384
entry:
385385
; CHECK-LABEL: i64_trunc_i8
386-
; CHECK: mov x[[TMP:[0-9]+]], x0
387-
; CHECK: and [[REG2:w[0-9]+]], w[[TMP]], #0xff{{$}}
386+
; CHECK: and [[REG2:w[0-9]+]], w0, #0xff
388387
; CHECK: uxtb w0, [[REG2]]
389388
%conv = trunc i64 %a to i8
390389
ret i8 %conv
@@ -393,8 +392,7 @@ entry:
393392
define zeroext i1 @i64_trunc_i1(i64 %a) nounwind ssp {
394393
entry:
395394
; CHECK-LABEL: i64_trunc_i1
396-
; CHECK: mov x[[TMP:[0-9]+]], x0
397-
; CHECK: and [[REG2:w[0-9]+]], w[[TMP]], #0x1{{$}}
395+
; CHECK: and [[REG2:w[0-9]+]], w0, #0x1
398396
; CHECK: and w0, [[REG2]], #0x1
399397
%conv = trunc i64 %a to i1
400398
ret i1 %conv

llvm/test/CodeGen/AArch64/arm64-vcvt_f.ll

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,10 @@ define <4 x float> @test_vcvt_high_f32_f64(<2 x float> %x, <2 x double> %v) noun
210210
;
211211
; FAST-LABEL: test_vcvt_high_f32_f64:
212212
; FAST: // %bb.0:
213+
; FAST-NEXT: // implicit-def: $q2
213214
; FAST-NEXT: mov.16b v2, v0
214-
; FAST-NEXT: // implicit-def: $q0
215+
; FAST-NEXT: fcvtn2 v2.4s, v1.2d
215216
; FAST-NEXT: mov.16b v0, v2
216-
; FAST-NEXT: fcvtn2 v0.4s, v1.2d
217217
; FAST-NEXT: ret
218218
;
219219
; GISEL-LABEL: test_vcvt_high_f32_f64:
@@ -249,10 +249,10 @@ define <4 x float> @test_vcvtx_high_f32_f64(<2 x float> %x, <2 x double> %v) nou
249249
;
250250
; FAST-LABEL: test_vcvtx_high_f32_f64:
251251
; FAST: // %bb.0:
252+
; FAST-NEXT: // implicit-def: $q2
252253
; FAST-NEXT: mov.16b v2, v0
253-
; FAST-NEXT: // implicit-def: $q0
254+
; FAST-NEXT: fcvtxn2 v2.4s, v1.2d
254255
; FAST-NEXT: mov.16b v0, v2
255-
; FAST-NEXT: fcvtxn2 v0.4s, v1.2d
256256
; FAST-NEXT: ret
257257
;
258258
; GISEL-LABEL: test_vcvtx_high_f32_f64:
@@ -283,12 +283,17 @@ define i16 @to_half(float %in) {
283283
;
284284
; FAST-LABEL: to_half:
285285
; FAST: // %bb.0:
286-
; FAST-NEXT: fcvt h1, s0
286+
; FAST-NEXT: sub sp, sp, #16 // =16
287+
; FAST-NEXT: .cfi_def_cfa_offset 16
288+
; FAST-NEXT: fcvt h0, s0
287289
; FAST-NEXT: // implicit-def: $w0
288-
; FAST-NEXT: fmov s0, w0
289-
; FAST-NEXT: mov.16b v0, v1
290-
; FAST-NEXT: fmov w0, s0
291-
; FAST-NEXT: // kill: def $w1 killed $w0
290+
; FAST-NEXT: fmov s1, w0
291+
; FAST-NEXT: mov.16b v1, v0
292+
; FAST-NEXT: fmov w8, s1
293+
; FAST-NEXT: mov w0, w8
294+
; FAST-NEXT: str w0, [sp, #12] // 4-byte Folded Spill
295+
; FAST-NEXT: mov w0, w8
296+
; FAST-NEXT: add sp, sp, #16 // =16
292297
; FAST-NEXT: ret
293298
;
294299
; GISEL-LABEL: to_half:

llvm/test/CodeGen/AArch64/arm64_32-fastisel.ll

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ declare [2 x i32] @callee()
1717
define void @test_struct_return(i32* %addr) {
1818
; CHECK-LABEL: test_struct_return:
1919
; CHECK: bl _callee
20-
; CHECK: x[[COPYX0:[0-9]+]], x0
21-
; CHECK-DAG: lsr [[HI:x[0-9]+]], x[[COPYX0]], #32
22-
; CHECK-DAG: str w[[COPYX0]]
20+
; CHECK-DAG: lsr [[HI:x[0-9]+]], x0, #32
21+
; CHECK-DAG: str w0
2322
%res = call [2 x i32] @callee()
2423
%res.0 = extractvalue [2 x i32] %res, 0
2524
store i32 %res.0, i32* %addr

llvm/test/CodeGen/AArch64/arm64_32-null.ll

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@ define void @test_store(i8** %p) {
1313
define void @test_phi(i8** %p) {
1414
; CHECK-LABEL: test_phi:
1515
; CHECK: mov [[R1:x[0-9]+]], xzr
16-
; CHECK: str [[R1]], [sp, #8]
16+
; CHECK: str [[R1]], [sp]
1717
; CHECK: b [[BB:LBB[0-9_]+]]
1818
; CHECK: [[BB]]:
19-
; CHECK: ldr x0, [sp, #8]
20-
; CHECK: mov w8, w0
21-
; CHECK: str w8, [x{{.*}}]
19+
; CHECK: ldr x0, [sp]
20+
; CHECK: str w0, [x{{.*}}]
2221

2322
bb0:
2423
br label %bb1

llvm/test/CodeGen/AArch64/br-cond-not-merge.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ bb3:
6464
; OPT: b.gt [[L:\.LBB[0-9_]+]]
6565
; OPT: tbz w1, #0, [[L]]
6666
;
67-
; NOOPT: str w1, [sp, #[[SLOT2:[0-9]+]]]
6867
; NOOPT: subs w{{[0-9]+}}, w{{[0-9]+}}, #0
6968
; NOOPT: cset [[R1:w[0-9]+]], gt
69+
; NOOPT: str w1, [sp, #[[SLOT2:[0-9]+]]]
7070
; NOOPT: str [[R1]], [sp, #[[SLOT1:[0-9]+]]]
7171
; NOOPT: b .LBB
7272
; NOOPT: ldr [[R2:w[0-9]+]], [sp, #[[SLOT1]]]

0 commit comments

Comments
 (0)