brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.2 KiB · dcd64f5 Raw
298 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs -run-pass si-fold-operands,dead-mi-elimination  %s -o - | FileCheck -check-prefix=GCN %s3 4# Kernels can have no FP5---6name: kernel_no_fold_fi_non_stack_rsrc_and_soffset7tracksRegLiveness: true8frameInfo:9  maxAlignment:    410  localFrameSize:  411stack:12  - { id: 0, size: 4, alignment: 4, local-offset: 0 }13machineFunctionInfo:14  isEntryFunction: true15  scratchRSrcReg:  '$sgpr96_sgpr97_sgpr98_sgpr99'16  stackPtrOffsetReg: '$sgpr32'17body:             |18  bb.0:19    liveins: $sgpr12_sgpr13_sgpr14_sgpr1520 21    ; GCN-LABEL: name: kernel_no_fold_fi_non_stack_rsrc_and_soffset22    ; GCN: liveins: $sgpr12_sgpr13_sgpr14_sgpr1523    ; GCN-NEXT: {{  $}}24    ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr1525    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec26    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_IDXEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN [[V_MOV_B32_e32_]], [[COPY]], 0, 0, 0, 0, implicit $exec27    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_IDXEN]]28    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr029    %0:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr1530    %1:sreg_32_xm0 = S_MOV_B32 031    %2:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec32    %3:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN %2, %0, %1, 0, 0, 0, implicit $exec33    $vgpr0 = COPY %334    SI_RETURN_TO_EPILOG $vgpr035 36...37 38---39name: kernel_no_fold_fi_non_stack_rsrc40tracksRegLiveness: true41frameInfo:42  maxAlignment:    443  localFrameSize:  444stack:45  - { id: 0, size: 4, alignment: 4, local-offset: 0 }46machineFunctionInfo:47  isEntryFunction: true48  scratchRSrcReg:  '$sgpr96_sgpr97_sgpr98_sgpr99'49  stackPtrOffsetReg: '$sgpr32'50body:             |51  bb.0:52    liveins: $sgpr12_sgpr13_sgpr14_sgpr1553 54    ; GCN-LABEL: name: kernel_no_fold_fi_non_stack_rsrc55    ; GCN: liveins: $sgpr12_sgpr13_sgpr14_sgpr1556    ; GCN-NEXT: {{  $}}57    ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr1558    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec59    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_IDXEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN [[V_MOV_B32_e32_]], [[COPY]], 0, 0, 0, 0, implicit $exec60    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_IDXEN]]61    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr062    %0:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr1563    %2:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec64    %3:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN %2, %0, 0, 0, 0, 0, implicit $exec65    $vgpr0 = COPY %366    SI_RETURN_TO_EPILOG $vgpr067 68...69 70---71name: kernel_no_fold_fi_non_stack_soffset72tracksRegLiveness: true73frameInfo:74  maxAlignment:    475  localFrameSize:  476stack:77  - { id: 0, size: 4, alignment: 4, local-offset: 0 }78machineFunctionInfo:79  isEntryFunction: true80  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'81  stackPtrOffsetReg: '$sgpr32'82body:             |83  bb.0:84 85    ; GCN-LABEL: name: kernel_no_fold_fi_non_stack_soffset86    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec87    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 7, implicit $exec88    ; GCN-NEXT: BUFFER_STORE_DWORD_OFFEN [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec89    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec90    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]91    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr092    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec93    %1:vgpr_32 = V_MOV_B32_e32 7, implicit $exec94    %2:sreg_32_xm0 = S_MOV_B32 095 96    BUFFER_STORE_DWORD_OFFEN %1:vgpr_32, %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, %2, 0, 0, 0, implicit $exec97    %3:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, %2, 0, 0, 0, implicit $exec98    $vgpr0 = COPY %399    S_ENDPGM 0, implicit $vgpr0100 101...102 103---104name: kernel_fold_fi_mubuf105tracksRegLiveness: true106frameInfo:107  maxAlignment:    4108  localFrameSize:  4109stack:110  - { id: 0, size: 4, alignment: 4, local-offset: 0 }111machineFunctionInfo:112  isEntryFunction: true113  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'114  stackPtrOffsetReg: '$sgpr32'115body:             |116  bb.0:117 118    ; GCN-LABEL: name: kernel_fold_fi_mubuf119    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 7, implicit $exec120    ; GCN-NEXT: BUFFER_STORE_DWORD_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec121    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec122    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]123    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0124    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec125    %1:vgpr_32 = V_MOV_B32_e32 7, implicit $exec126 127    BUFFER_STORE_DWORD_OFFEN %1:vgpr_32, %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec128    %2:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec129    $vgpr0 = COPY %2130    S_ENDPGM 0, implicit $vgpr0131 132...133 134 135# Functions have an unswizzled SP/FP relative to the wave offset136---137name: function_no_fold_fi_non_stack_rsrc_and_soffset138tracksRegLiveness: true139frameInfo:140  maxAlignment:    4141  localFrameSize:  4142stack:143  - { id: 0, size: 4, alignment: 4, local-offset: 0 }144machineFunctionInfo:145  isEntryFunction: false146  scratchRSrcReg:  '$sgpr96_sgpr97_sgpr98_sgpr99'147  frameOffsetReg:  '$sgpr32'148  stackPtrOffsetReg: '$sgpr32'149body:             |150  bb.0:151    liveins: $sgpr12_sgpr13_sgpr14_sgpr15152 153    ; GCN-LABEL: name: function_no_fold_fi_non_stack_rsrc_and_soffset154    ; GCN: liveins: $sgpr12_sgpr13_sgpr14_sgpr15155    ; GCN-NEXT: {{  $}}156    ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr15157    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec158    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_IDXEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN [[V_MOV_B32_e32_]], [[COPY]], 0, 0, 0, 0, implicit $exec159    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_IDXEN]]160    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr0161    %0:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr15162    %1:sreg_32_xm0 = S_MOV_B32 0163    %2:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec164    %3:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN %2, %0, %1, 0, 0, 0, implicit $exec165    $vgpr0 = COPY %3166    SI_RETURN_TO_EPILOG $vgpr0167 168...169 170---171name: function_no_fold_fi_non_stack_rsrc172tracksRegLiveness: true173frameInfo:174  maxAlignment:    4175  localFrameSize:  4176stack:177  - { id: 0, size: 4, alignment: 4, local-offset: 0 }178machineFunctionInfo:179  isEntryFunction: false180  scratchRSrcReg:  '$sgpr96_sgpr97_sgpr98_sgpr99'181  frameOffsetReg:  '$sgpr32'182  stackPtrOffsetReg: '$sgpr32'183body:             |184  bb.0:185    liveins: $sgpr12_sgpr13_sgpr14_sgpr15186 187    ; GCN-LABEL: name: function_no_fold_fi_non_stack_rsrc188    ; GCN: liveins: $sgpr12_sgpr13_sgpr14_sgpr15189    ; GCN-NEXT: {{  $}}190    ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr15191    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec192    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_IDXEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN [[V_MOV_B32_e32_]], [[COPY]], 0, 0, 0, 0, implicit $exec193    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_IDXEN]]194    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr0195    %0:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr15196    %2:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec197    %3:vgpr_32 = BUFFER_LOAD_DWORD_IDXEN %2, %0, 0, 0, 0, 0, implicit $exec198    $vgpr0 = COPY %3199    SI_RETURN_TO_EPILOG $vgpr0200 201...202 203---204name: function_no_fold_fi_non_stack_soffset205tracksRegLiveness: true206frameInfo:207  maxAlignment:    4208  localFrameSize:  4209stack:210  - { id: 0, size: 4, alignment: 4, local-offset: 0 }211machineFunctionInfo:212  isEntryFunction: false213  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'214  frameOffsetReg:  '$sgpr32'215  stackPtrOffsetReg: '$sgpr32'216body:             |217  bb.0:218 219    ; GCN-LABEL: name: function_no_fold_fi_non_stack_soffset220    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 7, implicit $exec221    ; GCN-NEXT: BUFFER_STORE_DWORD_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec222    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec223    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]224    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0225    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec226    %1:vgpr_32 = V_MOV_B32_e32 7, implicit $exec227 228    BUFFER_STORE_DWORD_OFFEN %1:vgpr_32, %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec229    %2:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec230    $vgpr0 = COPY %2231    S_ENDPGM 0, implicit $vgpr0232 233...234 235---236name: function_fold_fi_mubuf_wave_relative237tracksRegLiveness: true238frameInfo:239  maxAlignment:    4240  localFrameSize:  4241stack:242  - { id: 0, size: 4, alignment: 4, local-offset: 0 }243machineFunctionInfo:244  isEntryFunction: false245  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'246  frameOffsetReg:  '$sgpr32'247  stackPtrOffsetReg: '$sgpr32'248body:             |249  bb.0:250 251    ; GCN-LABEL: name: function_fold_fi_mubuf_wave_relative252    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 7, implicit $exec253    ; GCN-NEXT: BUFFER_STORE_DWORD_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec254    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec255    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]256    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0257    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec258    %1:vgpr_32 = V_MOV_B32_e32 7, implicit $exec259 260    BUFFER_STORE_DWORD_OFFEN %1:vgpr_32, %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec261    %2:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec262    $vgpr0 = COPY %2263    S_ENDPGM 0, implicit $vgpr0264 265...266 267---268name: function_fold_fi_mubuf_stack_relative269tracksRegLiveness: true270frameInfo:271  maxAlignment:    4272  localFrameSize:  4273stack:274  - { id: 0, size: 4, alignment: 4, local-offset: 0 }275machineFunctionInfo:276  isEntryFunction: false277  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'278  frameOffsetReg:  '$sgpr32'279  stackPtrOffsetReg: '$sgpr32'280body:             |281  bb.0:282 283    ; GCN-LABEL: name: function_fold_fi_mubuf_stack_relative284    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 7, implicit $exec285    ; GCN-NEXT: BUFFER_STORE_DWORD_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec286    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec287    ; GCN-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]288    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0289    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec290    %1:vgpr_32 = V_MOV_B32_e32 7, implicit $exec291 292    BUFFER_STORE_DWORD_OFFEN %1:vgpr_32, %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec293    %2:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %0:vgpr_32, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec294    $vgpr0 = COPY %2295    S_ENDPGM 0, implicit $vgpr0296 297...298