Skip to content

Commit 2aa629d

Browse files
authored
AArch64: Enable terminal rule (llvm#165959)
1 parent f8e9723 commit 2aa629d

12 files changed

+177
-204
lines changed

llvm/lib/Target/AArch64/AArch64Subtarget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ class AArch64Subtarget final : public AArch64GenSubtargetInfo {
157157
bool enableMachineScheduler() const override { return true; }
158158
bool enablePostRAScheduler() const override { return usePostRAScheduler(); }
159159
bool enableSubRegLiveness() const override { return EnableSubregLiveness; }
160-
160+
bool enableTerminalRule() const override { return true; }
161161
bool enableMachinePipeliner() const override;
162162
bool useDFAforSMS() const override { return false; }
163163

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)