Skip to content

Commit d67103e

Browse files
committed
RegisterCoalescer: Enable terminal rule by default
This appears to be forgotten switch flip from 2015. This seems to do a nicer job with subregister copies. Most of the test changes are improvements or neutral, not that many are light regressions. The worst AMDGPU regressions are for true16 in the atomic tests, but I think that's due to existing true16 issues. I also had to hack many hexagon tests to disable the rule. I have no idea how to update these tests. They appear to be testing specific scheduling and packet formation of later machine passes, so any change in the incoming mir is likely hiding whatever was originally intended. I'll open an issue to fixup these tests once this lands.
1 parent cc27143 commit d67103e

File tree

153 files changed

+11243
-11332
lines changed

Some content is hidden

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

153 files changed

+11243
-11332
lines changed

llvm/lib/CodeGen/RegisterCoalescer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ static cl::opt<bool> EnableJoining("join-liveintervals",
8181

8282
static cl::opt<bool> UseTerminalRule("terminal-rule",
8383
cl::desc("Apply the terminal rule"),
84-
cl::init(false), cl::Hidden);
84+
cl::init(true), cl::Hidden);
8585

8686
/// Temporary flag to test critical edge unsplitting.
8787
static cl::opt<bool> EnableJoinSplits(

llvm/test/CodeGen/AArch64/build-vector-two-dup.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,11 @@ entry:
188188
define <8 x i8> @test11(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b) {
189189
; CHECK-LABEL: test11:
190190
; CHECK: // %bb.0: // %entry
191-
; CHECK-NEXT: ld1r { v1.8b }, [x0]
192-
; CHECK-NEXT: ld1r { v2.8b }, [x1]
193-
; CHECK-NEXT: mov v0.16b, v1.16b
194-
; CHECK-NEXT: mov v0.h[2], v2.h[0]
195-
; CHECK-NEXT: mov v0.h[3], v1.h[0]
191+
; CHECK-NEXT: ld1r { v0.8b }, [x0]
192+
; CHECK-NEXT: ld1r { v1.8b }, [x1]
193+
; CHECK-NEXT: fmov d2, d0
194+
; CHECK-NEXT: mov v0.h[2], v1.h[0]
195+
; CHECK-NEXT: mov v0.h[3], v2.h[0]
196196
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0
197197
; CHECK-NEXT: ret
198198
entry:

llvm/test/CodeGen/AArch64/machine-licm-sink-instr.ll

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,17 @@ define i32 @sink_load_and_copy(i32 %n) {
2020
; CHECK-NEXT: b.lt .LBB0_3
2121
; CHECK-NEXT: // %bb.1: // %for.body.preheader
2222
; CHECK-NEXT: adrp x8, A
23-
; CHECK-NEXT: mov w20, w19
24-
; CHECK-NEXT: ldr w21, [x8, :lo12:A]
23+
; CHECK-NEXT: mov w21, w19
24+
; CHECK-NEXT: ldr w20, [x8, :lo12:A]
2525
; CHECK-NEXT: .LBB0_2: // %for.body
2626
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
27-
; CHECK-NEXT: mov w0, w21
27+
; CHECK-NEXT: mov w0, w20
2828
; CHECK-NEXT: bl _Z3usei
29-
; CHECK-NEXT: sdiv w20, w20, w0
30-
; CHECK-NEXT: subs w19, w19, #1
29+
; CHECK-NEXT: sdiv w19, w19, w0
30+
; CHECK-NEXT: subs w21, w21, #1
3131
; CHECK-NEXT: b.ne .LBB0_2
32-
; CHECK-NEXT: b .LBB0_4
33-
; CHECK-NEXT: .LBB0_3:
34-
; CHECK-NEXT: mov w20, w19
35-
; CHECK-NEXT: .LBB0_4: // %for.cond.cleanup
36-
; CHECK-NEXT: mov w0, w20
32+
; CHECK-NEXT: .LBB0_3: // %for.cond.cleanup
33+
; CHECK-NEXT: mov w0, w19
3734
; CHECK-NEXT: ldp x20, x19, [sp, #16] // 16-byte Folded Reload
3835
; CHECK-NEXT: ldp x30, x21, [sp], #32 // 16-byte Folded Reload
3936
; CHECK-NEXT: ret
@@ -82,15 +79,12 @@ define i32 @cant_sink_successive_call(i32 %n) {
8279
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
8380
; CHECK-NEXT: mov w0, w20
8481
; CHECK-NEXT: bl _Z3usei
85-
; CHECK-NEXT: sdiv w21, w21, w0
86-
; CHECK-NEXT: subs w19, w19, #1
82+
; CHECK-NEXT: sdiv w19, w19, w0
83+
; CHECK-NEXT: subs w21, w21, #1
8784
; CHECK-NEXT: b.ne .LBB1_2
88-
; CHECK-NEXT: b .LBB1_4
89-
; CHECK-NEXT: .LBB1_3:
90-
; CHECK-NEXT: mov w21, w19
91-
; CHECK-NEXT: .LBB1_4: // %for.cond.cleanup
85+
; CHECK-NEXT: .LBB1_3: // %for.cond.cleanup
86+
; CHECK-NEXT: mov w0, w19
9287
; CHECK-NEXT: ldp x20, x19, [sp, #16] // 16-byte Folded Reload
93-
; CHECK-NEXT: mov w0, w21
9488
; CHECK-NEXT: ldp x30, x21, [sp], #32 // 16-byte Folded Reload
9589
; CHECK-NEXT: ret
9690
entry:
@@ -139,15 +133,12 @@ define i32 @cant_sink_successive_store(ptr nocapture readnone %store, i32 %n) {
139133
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
140134
; CHECK-NEXT: mov w0, w20
141135
; CHECK-NEXT: bl _Z3usei
142-
; CHECK-NEXT: sdiv w21, w21, w0
143-
; CHECK-NEXT: subs w19, w19, #1
136+
; CHECK-NEXT: sdiv w19, w19, w0
137+
; CHECK-NEXT: subs w21, w21, #1
144138
; CHECK-NEXT: b.ne .LBB2_2
145-
; CHECK-NEXT: b .LBB2_4
146-
; CHECK-NEXT: .LBB2_3:
147-
; CHECK-NEXT: mov w21, w19
148-
; CHECK-NEXT: .LBB2_4: // %for.cond.cleanup
139+
; CHECK-NEXT: .LBB2_3: // %for.cond.cleanup
140+
; CHECK-NEXT: mov w0, w19
149141
; CHECK-NEXT: ldp x20, x19, [sp, #16] // 16-byte Folded Reload
150-
; CHECK-NEXT: mov w0, w21
151142
; CHECK-NEXT: ldp x30, x21, [sp], #32 // 16-byte Folded Reload
152143
; CHECK-NEXT: ret
153144
entry:

llvm/test/CodeGen/AArch64/machine-sink-kill-flags.ll

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ define i32 @test(ptr %ptr) {
1616
; CHECK-NEXT: mov w9, wzr
1717
; CHECK-NEXT: LBB0_1: ; %.thread
1818
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
19-
; CHECK-NEXT: lsr w11, w9, #1
2019
; CHECK-NEXT: sub w10, w9, #1
21-
; CHECK-NEXT: mov w9, w11
20+
; CHECK-NEXT: lsr w9, w9, #1
2221
; CHECK-NEXT: tbnz w10, #0, LBB0_1
2322
; CHECK-NEXT: ; %bb.2: ; %bb343
2423
; CHECK-NEXT: and w9, w10, #0x1
25-
; CHECK-NEXT: mov w0, #-1
24+
; CHECK-NEXT: mov w0, #-1 ; =0xffffffff
2625
; CHECK-NEXT: str w9, [x8]
2726
; CHECK-NEXT: ret
2827
bb:

llvm/test/CodeGen/AArch64/sme-pstate-sm-changing-call-disable-coalescing.ll

Lines changed: 34 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,11 @@ define void @dont_coalesce_arg_f16(half %arg, ptr %ptr) #0 {
151151
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
152152
; CHECK-NEXT: sub sp, sp, #16
153153
; CHECK-NEXT: addvl sp, sp, #-1
154-
; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0
155154
; CHECK-NEXT: add x8, sp, #16
156155
; CHECK-NEXT: mov x19, x0
157-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
158-
; CHECK-NEXT: // kill: def $h0 killed $h0 killed $z0
159156
; CHECK-NEXT: str h0, [sp, #14] // 2-byte Folded Spill
157+
; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0
158+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
160159
; CHECK-NEXT: smstop sm
161160
; CHECK-NEXT: ldr h0, [sp, #14] // 2-byte Folded Reload
162161
; CHECK-NEXT: bl use_f16
@@ -190,12 +189,11 @@ define void @dont_coalesce_arg_f32(float %arg, ptr %ptr) #0 {
190189
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
191190
; CHECK-NEXT: sub sp, sp, #16
192191
; CHECK-NEXT: addvl sp, sp, #-1
193-
; CHECK-NEXT: // kill: def $s0 killed $s0 def $z0
194192
; CHECK-NEXT: add x8, sp, #16
195193
; CHECK-NEXT: mov x19, x0
196-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
197-
; CHECK-NEXT: // kill: def $s0 killed $s0 killed $z0
198194
; CHECK-NEXT: str s0, [sp, #12] // 4-byte Folded Spill
195+
; CHECK-NEXT: // kill: def $s0 killed $s0 def $z0
196+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
199197
; CHECK-NEXT: smstop sm
200198
; CHECK-NEXT: ldr s0, [sp, #12] // 4-byte Folded Reload
201199
; CHECK-NEXT: bl use_f32
@@ -229,12 +227,11 @@ define void @dont_coalesce_arg_f64(double %arg, ptr %ptr) #0 {
229227
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
230228
; CHECK-NEXT: sub sp, sp, #16
231229
; CHECK-NEXT: addvl sp, sp, #-1
232-
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
233230
; CHECK-NEXT: add x8, sp, #16
234231
; CHECK-NEXT: mov x19, x0
235-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
236-
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
237232
; CHECK-NEXT: str d0, [sp, #8] // 8-byte Folded Spill
233+
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
234+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
238235
; CHECK-NEXT: smstop sm
239236
; CHECK-NEXT: ldr d0, [sp, #8] // 8-byte Folded Reload
240237
; CHECK-NEXT: bl use_f64
@@ -273,12 +270,11 @@ define void @dont_coalesce_arg_v1i8(<1 x i8> %arg, ptr %ptr) #0 {
273270
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
274271
; CHECK-NEXT: sub sp, sp, #16
275272
; CHECK-NEXT: addvl sp, sp, #-1
276-
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
277273
; CHECK-NEXT: add x8, sp, #16
278274
; CHECK-NEXT: mov x19, x0
279-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
280-
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
281275
; CHECK-NEXT: str d0, [sp, #8] // 8-byte Folded Spill
276+
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
277+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
282278
; CHECK-NEXT: smstop sm
283279
; CHECK-NEXT: ldr d0, [sp, #8] // 8-byte Folded Reload
284280
; CHECK-NEXT: bl use_v16i8
@@ -313,12 +309,11 @@ define void @dont_coalesce_arg_v1i16(<1 x i16> %arg, ptr %ptr) #0 {
313309
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
314310
; CHECK-NEXT: sub sp, sp, #16
315311
; CHECK-NEXT: addvl sp, sp, #-1
316-
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
317312
; CHECK-NEXT: add x8, sp, #16
318313
; CHECK-NEXT: mov x19, x0
319-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
320-
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
321314
; CHECK-NEXT: str d0, [sp, #8] // 8-byte Folded Spill
315+
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
316+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
322317
; CHECK-NEXT: smstop sm
323318
; CHECK-NEXT: ldr d0, [sp, #8] // 8-byte Folded Reload
324319
; CHECK-NEXT: bl use_v8i16
@@ -353,12 +348,11 @@ define void @dont_coalesce_arg_v1i32(<1 x i32> %arg, ptr %ptr) #0 {
353348
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
354349
; CHECK-NEXT: sub sp, sp, #16
355350
; CHECK-NEXT: addvl sp, sp, #-1
356-
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
357351
; CHECK-NEXT: add x8, sp, #16
358352
; CHECK-NEXT: mov x19, x0
359-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
360-
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
361353
; CHECK-NEXT: str d0, [sp, #8] // 8-byte Folded Spill
354+
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
355+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
362356
; CHECK-NEXT: smstop sm
363357
; CHECK-NEXT: ldr d0, [sp, #8] // 8-byte Folded Reload
364358
; CHECK-NEXT: bl use_v4i32
@@ -393,12 +387,11 @@ define void @dont_coalesce_arg_v1i64(<1 x i64> %arg, ptr %ptr) #0 {
393387
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
394388
; CHECK-NEXT: sub sp, sp, #16
395389
; CHECK-NEXT: addvl sp, sp, #-1
396-
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
397390
; CHECK-NEXT: add x8, sp, #16
398391
; CHECK-NEXT: mov x19, x0
399-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
400-
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
401392
; CHECK-NEXT: str d0, [sp, #8] // 8-byte Folded Spill
393+
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
394+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
402395
; CHECK-NEXT: smstop sm
403396
; CHECK-NEXT: ldr d0, [sp, #8] // 8-byte Folded Reload
404397
; CHECK-NEXT: bl use_v2i64
@@ -433,12 +426,11 @@ define void @dont_coalesce_arg_v1f16(<1 x half> %arg, ptr %ptr) #0 {
433426
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
434427
; CHECK-NEXT: sub sp, sp, #16
435428
; CHECK-NEXT: addvl sp, sp, #-1
436-
; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0
437429
; CHECK-NEXT: add x8, sp, #16
438430
; CHECK-NEXT: mov x19, x0
439-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
440-
; CHECK-NEXT: // kill: def $h0 killed $h0 killed $z0
441431
; CHECK-NEXT: str h0, [sp, #14] // 2-byte Folded Spill
432+
; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0
433+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
442434
; CHECK-NEXT: smstop sm
443435
; CHECK-NEXT: ldr h0, [sp, #14] // 2-byte Folded Reload
444436
; CHECK-NEXT: bl use_v8f16
@@ -513,12 +505,11 @@ define void @dont_coalesce_arg_v1f64(<1 x double> %arg, ptr %ptr) #0 {
513505
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
514506
; CHECK-NEXT: sub sp, sp, #16
515507
; CHECK-NEXT: addvl sp, sp, #-1
516-
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
517508
; CHECK-NEXT: add x8, sp, #16
518509
; CHECK-NEXT: mov x19, x0
519-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
520-
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
521510
; CHECK-NEXT: str d0, [sp, #8] // 8-byte Folded Spill
511+
; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
512+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
522513
; CHECK-NEXT: smstop sm
523514
; CHECK-NEXT: ldr d0, [sp, #8] // 8-byte Folded Reload
524515
; CHECK-NEXT: bl use_v2f64
@@ -557,12 +548,11 @@ define void @dont_coalesce_arg_v16i8(<16 x i8> %arg, ptr %ptr) #0 {
557548
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
558549
; CHECK-NEXT: sub sp, sp, #16
559550
; CHECK-NEXT: addvl sp, sp, #-1
560-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
561551
; CHECK-NEXT: add x8, sp, #16
562552
; CHECK-NEXT: mov x19, x0
563-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
564-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
565553
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
554+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
555+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
566556
; CHECK-NEXT: smstop sm
567557
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
568558
; CHECK-NEXT: bl use_v16i8
@@ -596,12 +586,11 @@ define void @dont_coalesce_arg_v8i16(<8 x i16> %arg, ptr %ptr) #0 {
596586
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
597587
; CHECK-NEXT: sub sp, sp, #16
598588
; CHECK-NEXT: addvl sp, sp, #-1
599-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
600589
; CHECK-NEXT: add x8, sp, #16
601590
; CHECK-NEXT: mov x19, x0
602-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
603-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
604591
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
592+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
593+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
605594
; CHECK-NEXT: smstop sm
606595
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
607596
; CHECK-NEXT: bl use_v8i16
@@ -635,12 +624,11 @@ define void @dont_coalesce_arg_v4i32(<4 x i32> %arg, ptr %ptr) #0 {
635624
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
636625
; CHECK-NEXT: sub sp, sp, #16
637626
; CHECK-NEXT: addvl sp, sp, #-1
638-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
639627
; CHECK-NEXT: add x8, sp, #16
640628
; CHECK-NEXT: mov x19, x0
641-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
642-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
643629
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
630+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
631+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
644632
; CHECK-NEXT: smstop sm
645633
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
646634
; CHECK-NEXT: bl use_v4i32
@@ -674,12 +662,11 @@ define void @dont_coalesce_arg_v2i64(<2 x i64> %arg, ptr %ptr) #0 {
674662
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
675663
; CHECK-NEXT: sub sp, sp, #16
676664
; CHECK-NEXT: addvl sp, sp, #-1
677-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
678665
; CHECK-NEXT: add x8, sp, #16
679666
; CHECK-NEXT: mov x19, x0
680-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
681-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
682667
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
668+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
669+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
683670
; CHECK-NEXT: smstop sm
684671
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
685672
; CHECK-NEXT: bl use_v2i64
@@ -713,12 +700,11 @@ define void @dont_coalesce_arg_v8f16(<8 x half> %arg, ptr %ptr) #0 {
713700
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
714701
; CHECK-NEXT: sub sp, sp, #16
715702
; CHECK-NEXT: addvl sp, sp, #-1
716-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
717703
; CHECK-NEXT: add x8, sp, #16
718704
; CHECK-NEXT: mov x19, x0
719-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
720-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
721705
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
706+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
707+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
722708
; CHECK-NEXT: smstop sm
723709
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
724710
; CHECK-NEXT: bl use_v8f16
@@ -752,12 +738,11 @@ define void @dont_coalesce_arg_v8bf16(<8 x bfloat> %arg, ptr %ptr) #0 {
752738
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
753739
; CHECK-NEXT: sub sp, sp, #16
754740
; CHECK-NEXT: addvl sp, sp, #-1
755-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
756741
; CHECK-NEXT: add x8, sp, #16
757742
; CHECK-NEXT: mov x19, x0
758-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
759-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
760743
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
744+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
745+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
761746
; CHECK-NEXT: smstop sm
762747
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
763748
; CHECK-NEXT: bl use_v8bf16
@@ -791,12 +776,11 @@ define void @dont_coalesce_arg_v4f32(<4 x float> %arg, ptr %ptr) #0 {
791776
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
792777
; CHECK-NEXT: sub sp, sp, #16
793778
; CHECK-NEXT: addvl sp, sp, #-1
794-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
795779
; CHECK-NEXT: add x8, sp, #16
796780
; CHECK-NEXT: mov x19, x0
797-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
798-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
799781
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
782+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
783+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
800784
; CHECK-NEXT: smstop sm
801785
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
802786
; CHECK-NEXT: bl use_v4f32
@@ -830,12 +814,11 @@ define void @dont_coalesce_arg_v2f64(<2 x double> %arg, ptr %ptr) #0 {
830814
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
831815
; CHECK-NEXT: sub sp, sp, #16
832816
; CHECK-NEXT: addvl sp, sp, #-1
833-
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
834817
; CHECK-NEXT: add x8, sp, #16
835818
; CHECK-NEXT: mov x19, x0
836-
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
837-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
838819
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
820+
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
821+
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
839822
; CHECK-NEXT: smstop sm
840823
; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
841824
; CHECK-NEXT: bl use_v2f64

llvm/test/CodeGen/AArch64/sme-streaming-compatible-interface.ll

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,11 @@ define <2 x double> @streaming_compatible_with_neon_vectors(<2 x double> %arg) "
129129
; CHECK-NEXT: stp x30, x19, [sp, #80] // 16-byte Folded Spill
130130
; CHECK-NEXT: sub sp, sp, #16
131131
; CHECK-NEXT: addvl sp, sp, #-1
132+
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
133+
; CHECK-NEXT: mrs x19, SVCR
132134
; CHECK-NEXT: add x8, sp, #16
133135
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
134136
; CHECK-NEXT: str z0, [x8] // 16-byte Folded Spill
135-
; CHECK-NEXT: mrs x19, SVCR
136-
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
137-
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
138137
; CHECK-NEXT: tbz w19, #0, .LBB4_2
139138
; CHECK-NEXT: // %bb.1:
140139
; CHECK-NEXT: smstop sm

0 commit comments

Comments
 (0)