xref: /llvm-project/llvm/test/CodeGen/PowerPC/csr-save-restore-order.ll (revision 7aafdef62711c4da98a622658152aaed43d49696)
100e85f75SYi-Hong Lyu; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
200e85f75SYi-Hong Lyu; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \
300e85f75SYi-Hong Lyu; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s | FileCheck --check-prefix=CHECK-PWR9 %s
400e85f75SYi-Hong Lyu
500e85f75SYi-Hong Lyudefine i64 @test(i64 %p1, i64 %p2, i64 %p3, i64 %p4) {
600e85f75SYi-Hong Lyu; CHECK-PWR9-LABEL: test:
700e85f75SYi-Hong Lyu; CHECK-PWR9:       # %bb.0: # %entry
800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stdu r1, -528(r1)
900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_def_cfa_offset 528
1000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r14, -288
1100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r15, -280
1200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r16, -272
1300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r17, -264
1400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r18, -256
1500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r19, -248
1600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r20, -240
1700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r21, -232
1800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r22, -224
1900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r23, -216
2000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r24, -208
2100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r25, -200
2200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r26, -192
2300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r27, -184
2400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r28, -176
2500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r29, -168
2600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r30, -160
2700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset r31, -152
2800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f14, -144
2900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f15, -136
3000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f16, -128
3100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f17, -120
3200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f18, -112
3300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f19, -104
3400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f20, -96
3500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f21, -88
3600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f22, -80
3700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f23, -72
3800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f24, -64
3900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f25, -56
4000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f26, -48
4100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f27, -40
4200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f28, -32
4300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f29, -24
4400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f30, -16
4500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset f31, -8
4600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v20, -480
4700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v21, -464
4800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v22, -448
4900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v23, -432
5000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v24, -416
5100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v25, -400
5200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v26, -384
5300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v27, -368
5400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v28, -352
5500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v29, -336
5600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v30, -320
5700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    .cfi_offset v31, -304
5800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r14, 240(r1) # 8-byte Folded Spill
5900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r15, 248(r1) # 8-byte Folded Spill
603144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v20, 48(r1) # 16-byte Folded Spill
613144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v21, 64(r1) # 16-byte Folded Spill
62*7aafdef6SJinsong Ji; CHECK-PWR9-NEXT:    std r16, 256(r1) # 8-byte Folded Spill
633144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v22, 80(r1) # 16-byte Folded Spill
6400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r17, 264(r1) # 8-byte Folded Spill
653144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v23, 96(r1) # 16-byte Folded Spill
6600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r18, 272(r1) # 8-byte Folded Spill
6700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r19, 280(r1) # 8-byte Folded Spill
683144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v24, 112(r1) # 16-byte Folded Spill
6900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r20, 288(r1) # 8-byte Folded Spill
703144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v25, 128(r1) # 16-byte Folded Spill
7100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r21, 296(r1) # 8-byte Folded Spill
723144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v26, 144(r1) # 16-byte Folded Spill
7300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r22, 304(r1) # 8-byte Folded Spill
7400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r23, 312(r1) # 8-byte Folded Spill
753144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v27, 160(r1) # 16-byte Folded Spill
7600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r24, 320(r1) # 8-byte Folded Spill
773144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v28, 176(r1) # 16-byte Folded Spill
7800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r25, 328(r1) # 8-byte Folded Spill
793144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v29, 192(r1) # 16-byte Folded Spill
8000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r26, 336(r1) # 8-byte Folded Spill
8100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r27, 344(r1) # 8-byte Folded Spill
823144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v30, 208(r1) # 16-byte Folded Spill
8300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r28, 352(r1) # 8-byte Folded Spill
843144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    stxv v31, 224(r1) # 16-byte Folded Spill
8500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r29, 360(r1) # 8-byte Folded Spill
8600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r30, 368(r1) # 8-byte Folded Spill
8700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r31, 376(r1) # 8-byte Folded Spill
8800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f14, 384(r1) # 8-byte Folded Spill
8900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f15, 392(r1) # 8-byte Folded Spill
9000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f16, 400(r1) # 8-byte Folded Spill
9100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f17, 408(r1) # 8-byte Folded Spill
9200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f18, 416(r1) # 8-byte Folded Spill
9300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f19, 424(r1) # 8-byte Folded Spill
9400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f20, 432(r1) # 8-byte Folded Spill
9500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f21, 440(r1) # 8-byte Folded Spill
9600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f22, 448(r1) # 8-byte Folded Spill
9700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f23, 456(r1) # 8-byte Folded Spill
9800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f24, 464(r1) # 8-byte Folded Spill
9900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f25, 472(r1) # 8-byte Folded Spill
10000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f26, 480(r1) # 8-byte Folded Spill
10100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f27, 488(r1) # 8-byte Folded Spill
10200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f28, 496(r1) # 8-byte Folded Spill
10300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f29, 504(r1) # 8-byte Folded Spill
10400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f30, 512(r1) # 8-byte Folded Spill
10500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    stfd f31, 520(r1) # 8-byte Folded Spill
10600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r4, 40(r1) # 8-byte Folded Spill
10700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    std r3, 32(r1) # 8-byte Folded Spill
10800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    #APP
10900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    nop
11000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    #NO_APP
11100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    ld r3, 40(r1) # 8-byte Folded Reload
11200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    ld r4, 32(r1) # 8-byte Folded Reload
11300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v31, 224(r1) # 16-byte Folded Reload
11400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v30, 208(r1) # 16-byte Folded Reload
11500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    add r3, r4, r3
116*7aafdef6SJinsong Ji; CHECK-PWR9-NEXT:    lxv v29, 192(r1) # 16-byte Folded Reload
11700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v28, 176(r1) # 16-byte Folded Reload
11800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v27, 160(r1) # 16-byte Folded Reload
11900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v26, 144(r1) # 16-byte Folded Reload
12000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v25, 128(r1) # 16-byte Folded Reload
12100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v24, 112(r1) # 16-byte Folded Reload
12200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v23, 96(r1) # 16-byte Folded Reload
12300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v22, 80(r1) # 16-byte Folded Reload
12400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v21, 64(r1) # 16-byte Folded Reload
12500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lxv v20, 48(r1) # 16-byte Folded Reload
12600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f31, 520(r1) # 8-byte Folded Reload
12700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f30, 512(r1) # 8-byte Folded Reload
12800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f29, 504(r1) # 8-byte Folded Reload
12900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f28, 496(r1) # 8-byte Folded Reload
13000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f27, 488(r1) # 8-byte Folded Reload
1313144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r31, 376(r1) # 8-byte Folded Reload
1323144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r30, 368(r1) # 8-byte Folded Reload
1333144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r29, 360(r1) # 8-byte Folded Reload
1343144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r28, 352(r1) # 8-byte Folded Reload
135*7aafdef6SJinsong Ji; CHECK-PWR9-NEXT:    lfd f26, 480(r1) # 8-byte Folded Reload
1363144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r27, 344(r1) # 8-byte Folded Reload
1373144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r26, 336(r1) # 8-byte Folded Reload
1383144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r25, 328(r1) # 8-byte Folded Reload
13900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f25, 472(r1) # 8-byte Folded Reload
1403144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r24, 320(r1) # 8-byte Folded Reload
1413144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r23, 312(r1) # 8-byte Folded Reload
1423144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r22, 304(r1) # 8-byte Folded Reload
14300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f24, 464(r1) # 8-byte Folded Reload
1443144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r21, 296(r1) # 8-byte Folded Reload
1453144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r20, 288(r1) # 8-byte Folded Reload
1463144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r19, 280(r1) # 8-byte Folded Reload
14700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f23, 456(r1) # 8-byte Folded Reload
1483144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r18, 272(r1) # 8-byte Folded Reload
1493144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r17, 264(r1) # 8-byte Folded Reload
1503144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r16, 256(r1) # 8-byte Folded Reload
15100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f22, 448(r1) # 8-byte Folded Reload
1523144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r15, 248(r1) # 8-byte Folded Reload
1533144d7a2SJinsong Ji; CHECK-PWR9-NEXT:    ld r14, 240(r1) # 8-byte Folded Reload
15400e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f21, 440(r1) # 8-byte Folded Reload
15500e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f20, 432(r1) # 8-byte Folded Reload
15600e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f19, 424(r1) # 8-byte Folded Reload
15700e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f18, 416(r1) # 8-byte Folded Reload
15800e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f17, 408(r1) # 8-byte Folded Reload
15900e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f16, 400(r1) # 8-byte Folded Reload
16000e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f15, 392(r1) # 8-byte Folded Reload
16100e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    lfd f14, 384(r1) # 8-byte Folded Reload
16200e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    addi r1, r1, 528
16300e85f75SYi-Hong Lyu; CHECK-PWR9-NEXT:    blr
16400e85f75SYi-Hong Lyuentry:
16500e85f75SYi-Hong Lyu  tail call void asm sideeffect "nop", "~{r0},~{r1},~{r2},~{r3},~{r4},~{r5},~{r6},~{r7},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15},~{r16},~{r17},~{r18},~{r19},~{r20},~{r21},~{r22},~{r23},~{r24},~{r25},~{r26},~{r27},~{r28},~{r29},~{r30},~{r31},~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f8},~{f9},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15},~{f16},~{f17},~{f18},~{f19},~{f20},~{f21},~{f22},~{f23},~{f24},~{f25},~{f26},~{f27},~{f28},~{f29},~{f30},~{f31},~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() nounwind
16600e85f75SYi-Hong Lyu  %result = add i64 %p1, %p2
16700e85f75SYi-Hong Lyu  ret i64 %result
16800e85f75SYi-Hong Lyu}
169