brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.3 KiB · becd176 Raw
199 lines · plain
1# RUN: llc -mtriple=s390x-linux-gnu -start-before=prologepilog %s -o - -print-after=prologepilog \2# RUN:  -verify-machineinstrs 2>&1 | FileCheck %s3#4# Test that R6 when used for an argument is modelled as being live throughout5# the function when not saved in the prologue..6 7# CHECK:      # *** IR Dump After Prologue/Epilogue Insertion & Frame Finalization (prologepilog) ***:8# CHECK-NEXT: # Machine code for function fun0:9# CHECK-LABEL: bb.0:10# CHECK: liveins:{{.*}} $r6d11# CHECK: STMG killed $r7d, killed $r15d12# CHECK: STG renamable $r6d13# CHECK: End machine code for function fun0.14 15 16--- |17 18  @g_181 = external dso_local global i32, align 419  @g_1390 = external dso_local constant ptr, align 820 21  define internal i8 @fun0(i8 %arg, i8 %arg1, i32 %arg2, i8 %arg3, ptr %arg4, float %F0, float %F1) #0 {22    ret i8 023  }24 25  ; Same function but in a single block which will make the verifier complain26  ; if R6 is killed by the original store before the point where the27  ; RegScavenger inserts its (killing) store of R6.28  define internal i8 @fun1(i8 %arg, i8 %arg1, i32 %arg2, i8 %arg3, ptr %arg4) #0 {29    ret i8 030  }31 32  attributes #0 = { "frame-pointer"="all" }33 34...35---36name:            fun037alignment:       1638tracksRegLiveness: true39liveins:40  - { reg: '$r6d' }41  - { reg: '$f0s' }42  - { reg: '$f2s' }43frameInfo:44  maxAlignment:    845stack:46  - { id: 0, size: 96, alignment: 8 }47  - { id: 1, size: 1960, alignment: 8 }48  - { id: 2, size: 8, alignment: 8 }49  - { id: 3, size: 320, alignment: 8 }50  - { id: 4, size: 4, alignment: 4 }51  - { id: 5, size: 8, alignment: 8 }52  - { id: 6, size: 8, alignment: 8 }53  - { id: 7, size: 4, alignment: 4 }54  - { id: 8, size: 8, alignment: 8 }55  - { id: 9, size: 4, alignment: 4 }56  - { id: 10, size: 8, alignment: 8 }57  - { id: 11, size: 8, alignment: 8 }58  - { id: 12, size: 8, alignment: 8 }59  - { id: 13, size: 8, alignment: 8 }60  - { id: 14, size: 24, alignment: 4 }61  - { id: 15, size: 4, alignment: 4 }62  - { id: 16, size: 1792, alignment: 8 }63  - { id: 17, size: 8, alignment: 8 }64  - { id: 18, size: 8, alignment: 8 }65  - { id: 19, size: 8, alignment: 8 }66  - { id: 20, size: 1, alignment: 2 }67  - { id: 21, size: 672, alignment: 8 }68  - { id: 22, size: 4, alignment: 4 }69  - { id: 23, size: 4, alignment: 4 }70  - { id: 24, size: 4, alignment: 4 }71  - { id: 25, size: 64, alignment: 8 }72machineFunctionInfo: {}73body:             |74  bb.0:75    liveins: $f0s, $f2s, $r6d76 77    STG killed renamable $r6d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)78    renamable $r0d = LARL @g_18179    nofpexcept CEBR renamable $f0s, renamable $f2s, implicit-def $cc, implicit $fpc80    STG renamable $r0d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)81    BRC 15, 4, %bb.2, implicit killed $cc82 83  bb.1:84    liveins: $f2s, $r0d85 86    renamable $f0s = COPY killed renamable $f2s87 88  bb.2:89    liveins: $f0s, $r0d90 91    STE killed renamable $f0s, undef renamable $r1d, 0, $noreg :: (volatile store (s32) into `ptr undef`)92    renamable $r1d = nuw LA %stack.0, 16, $noreg93    renamable $r2d = nuw LA %stack.0, 24, $noreg94    renamable $r3d = LA %stack.0, 40, $noreg95    renamable $r4d = LARL @g_139096    STG renamable $r4d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)97    renamable $r5d = nuw LA %stack.0, 48, $noreg98    renamable $r14d = LA %stack.0, 72, $noreg99    renamable $r13d = LA %stack.0, 80, $noreg100    renamable $r12d = LA %stack.0, 56, $noreg101    renamable $r10d = LA %stack.0, 0, $noreg102    STG renamable $r10d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)103    renamable $r9d = LA %stack.0, 64, $noreg104    renamable $r8d = LA %stack.0, 88, $noreg105    renamable $r7d = nuw LA %stack.0, 8, $noreg106    MVGHI %stack.1, 904, 0107    STG killed renamable $r9d, $noreg, 0, $noreg :: (store (s64) into `ptr null`)108    STG killed renamable $r3d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)109    STG killed renamable $r14d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)110    STG killed renamable $r7d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)111    STG killed renamable $r1d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)112    STG killed renamable $r4d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)113    STG killed renamable $r2d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)114    STG killed renamable $r5d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)115    STG killed renamable $r8d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)116    STG killed renamable $r12d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)117    STG killed renamable $r13d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)118    STG killed renamable $r10d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)119    $r2l = LHI 0120    STG killed renamable $r0d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)121    Return implicit $r2l122 123...124---125name:            fun1126alignment:       16127tracksRegLiveness: true128liveins:129  - { reg: '$r6d' }130frameInfo:131  maxAlignment:    8132stack:133  - { id: 0, size: 96, alignment: 8 }134  - { id: 1, size: 1960, alignment: 8 }135  - { id: 2, size: 8, alignment: 8 }136  - { id: 3, size: 320, alignment: 8 }137  - { id: 4, size: 4, alignment: 4 }138  - { id: 5, size: 8, alignment: 8 }139  - { id: 6, size: 8, alignment: 8 }140  - { id: 7, size: 4, alignment: 4 }141  - { id: 8, size: 8, alignment: 8 }142  - { id: 9, size: 4, alignment: 4 }143  - { id: 10, size: 8, alignment: 8 }144  - { id: 11, size: 8, alignment: 8 }145  - { id: 12, size: 8, alignment: 8 }146  - { id: 13, size: 8, alignment: 8 }147  - { id: 14, size: 24, alignment: 4 }148  - { id: 15, size: 4, alignment: 4 }149  - { id: 16, size: 1792, alignment: 8 }150  - { id: 17, size: 8, alignment: 8 }151  - { id: 18, size: 8, alignment: 8 }152  - { id: 19, size: 8, alignment: 8 }153  - { id: 20, size: 1, alignment: 2 }154  - { id: 21, size: 672, alignment: 8 }155  - { id: 22, size: 4, alignment: 4 }156  - { id: 23, size: 4, alignment: 4 }157  - { id: 24, size: 4, alignment: 4 }158  - { id: 25, size: 64, alignment: 8 }159machineFunctionInfo: {}160body:             |161  bb.0:162    liveins: $r6d163 164    STG killed renamable $r6d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)165    renamable $r0d = LARL @g_181166    STG renamable $r0d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)167    renamable $r1d = nuw LA %stack.0, 16, $noreg168    renamable $r2d = nuw LA %stack.0, 24, $noreg169    renamable $r3d = LA %stack.0, 40, $noreg170    renamable $r4d = LARL @g_1390171    STG renamable $r4d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)172    renamable $r5d = nuw LA %stack.0, 48, $noreg173    renamable $r14d = LA %stack.0, 72, $noreg174    renamable $r13d = LA %stack.0, 80, $noreg175    renamable $r12d = LA %stack.0, 56, $noreg176    renamable $r10d = LA %stack.0, 0, $noreg177    STG renamable $r10d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)178    renamable $r9d = LA %stack.0, 64, $noreg179    renamable $r8d = LA %stack.0, 88, $noreg180    renamable $r7d = nuw LA %stack.0, 8, $noreg181    MVGHI %stack.1, 904, 0182    STG killed renamable $r9d, $noreg, 0, $noreg :: (store (s64) into `ptr null`)183    STG killed renamable $r3d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)184    STG killed renamable $r14d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)185    STG killed renamable $r7d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)186    STG killed renamable $r1d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)187    STG killed renamable $r4d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)188    STG killed renamable $r2d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)189    STG killed renamable $r5d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)190    STG killed renamable $r8d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)191    STG killed renamable $r12d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)192    STG killed renamable $r13d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)193    STG killed renamable $r10d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)194    $r2l = LHI 0195    STG killed renamable $r0d, undef renamable $r1d, 0, $noreg :: (store (s64) into `ptr undef`)196    Return implicit $r2l197 198...199