321 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx90a -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN %s3 4---5name: highest_reg_shift_amt_v76tracksRegLiveness: true7body: |8 bb.0:9 10 ; GCN-LABEL: name: highest_reg_shift_amt_v711 ; GCN: $vgpr7 = IMPLICIT_DEF12 ; GCN-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF13 ; GCN-NEXT: S_WAITCNT 014 ; GCN-NEXT: $vgpr0, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr0, implicit $exec15 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr0, killed $vgpr2_vgpr3, implicit $exec16 ; GCN-NEXT: $vgpr7, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr7, implicit $exec17 $vgpr7 = IMPLICIT_DEF18 $vgpr2_vgpr3 = IMPLICIT_DEF19 renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr2_vgpr3, implicit $exec20...21 22---23name: highest_reg_shift_amt_v1524tracksRegLiveness: true25body: |26 bb.0:27 28 ; GCN-LABEL: name: highest_reg_shift_amt_v1529 ; GCN: $vgpr15 = IMPLICIT_DEF30 ; GCN-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF31 ; GCN-NEXT: S_WAITCNT 032 ; GCN-NEXT: $vgpr0, $vgpr15 = V_SWAP_B32 undef $vgpr15, undef $vgpr0, implicit $exec33 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr0, killed $vgpr2_vgpr3, implicit $exec34 ; GCN-NEXT: $vgpr15, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr15, implicit $exec35 $vgpr15 = IMPLICIT_DEF36 $vgpr2_vgpr3 = IMPLICIT_DEF37 renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 killed $vgpr15, killed $vgpr2_vgpr3, implicit $exec38...39 40---41name: highest_reg_shift_amt_v25542tracksRegLiveness: true43body: |44 bb.0:45 46 ; GCN-LABEL: name: highest_reg_shift_amt_v25547 ; GCN: $vgpr255 = IMPLICIT_DEF48 ; GCN-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF49 ; GCN-NEXT: S_WAITCNT 050 ; GCN-NEXT: $vgpr0, $vgpr255 = V_SWAP_B32 undef $vgpr255, undef $vgpr0, implicit $exec51 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr0, killed $vgpr2_vgpr3, implicit $exec52 ; GCN-NEXT: $vgpr255, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr255, implicit $exec53 $vgpr255 = IMPLICIT_DEF54 $vgpr2_vgpr3 = IMPLICIT_DEF55 renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 killed $vgpr255, killed $vgpr2_vgpr3, implicit $exec56...57 58---59name: highest_reg_shift_amt_used_v0_dst60tracksRegLiveness: true61body: |62 bb.0:63 64 ; GCN-LABEL: name: highest_reg_shift_amt_used_v0_dst65 ; GCN: $vgpr7 = IMPLICIT_DEF66 ; GCN-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF67 ; GCN-NEXT: S_WAITCNT 068 ; GCN-NEXT: $vgpr4, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr4, implicit $exec69 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 undef $vgpr4, killed $vgpr2_vgpr3, implicit $exec70 ; GCN-NEXT: $vgpr7, $vgpr4 = V_SWAP_B32 $vgpr4, $vgpr7, implicit $exec71 $vgpr7 = IMPLICIT_DEF72 $vgpr2_vgpr3 = IMPLICIT_DEF73 renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr2_vgpr3, implicit $exec74...75 76---77name: highest_reg_shift_amt_used_v0_src78tracksRegLiveness: true79body: |80 bb.0:81 82 ; GCN-LABEL: name: highest_reg_shift_amt_used_v0_src83 ; GCN: $vgpr7 = IMPLICIT_DEF84 ; GCN-NEXT: $vgpr0_vgpr1 = IMPLICIT_DEF85 ; GCN-NEXT: S_WAITCNT 086 ; GCN-NEXT: $vgpr4, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr4, implicit $exec87 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr4, killed $vgpr0_vgpr1, implicit $exec88 ; GCN-NEXT: $vgpr7, $vgpr4 = V_SWAP_B32 $vgpr4, $vgpr7, implicit $exec89 $vgpr7 = IMPLICIT_DEF90 $vgpr0_vgpr1 = IMPLICIT_DEF91 renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr0_vgpr1, implicit $exec92...93 94---95name: highest_reg_shift_amt_used_v0_both96tracksRegLiveness: true97body: |98 bb.0:99 100 ; GCN-LABEL: name: highest_reg_shift_amt_used_v0_both101 ; GCN: $vgpr7 = IMPLICIT_DEF102 ; GCN-NEXT: $vgpr0_vgpr1 = IMPLICIT_DEF103 ; GCN-NEXT: S_WAITCNT 0104 ; GCN-NEXT: $vgpr2, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr2, implicit $exec105 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 undef $vgpr2, killed $vgpr0_vgpr1, implicit $exec106 ; GCN-NEXT: $vgpr7, $vgpr2 = V_SWAP_B32 $vgpr2, $vgpr7, implicit $exec107 $vgpr7 = IMPLICIT_DEF108 $vgpr0_vgpr1 = IMPLICIT_DEF109 renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr0_vgpr1, implicit $exec110...111 112---113name: highest_reg_shift_amt_overlapped_src114tracksRegLiveness: true115body: |116 bb.0:117 118 ; GCN-LABEL: name: highest_reg_shift_amt_overlapped_src119 ; GCN: $vgpr7 = IMPLICIT_DEF120 ; GCN-NEXT: $vgpr6_vgpr7 = IMPLICIT_DEF121 ; GCN-NEXT: S_WAITCNT 0122 ; GCN-NEXT: $vgpr2, $vgpr6 = V_SWAP_B32 undef $vgpr6, undef $vgpr2, implicit $exec123 ; GCN-NEXT: $vgpr3, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr3, implicit $exec124 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 undef $vgpr3, undef $vgpr2_vgpr3, implicit $exec125 ; GCN-NEXT: $vgpr6, $vgpr2 = V_SWAP_B32 $vgpr2, $vgpr6, implicit $exec126 ; GCN-NEXT: $vgpr7, $vgpr3 = V_SWAP_B32 $vgpr3, $vgpr7, implicit $exec127 $vgpr7 = IMPLICIT_DEF128 $vgpr6_vgpr7 = IMPLICIT_DEF129 renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr6_vgpr7, implicit $exec130...131 132---133name: highest_reg_shift_amt_overlapped_dst134tracksRegLiveness: true135body: |136 bb.0:137 138 ; GCN-LABEL: name: highest_reg_shift_amt_overlapped_dst139 ; GCN: $vgpr7 = IMPLICIT_DEF140 ; GCN-NEXT: $vgpr0_vgpr1 = IMPLICIT_DEF141 ; GCN-NEXT: S_WAITCNT 0142 ; GCN-NEXT: $vgpr2, $vgpr6 = V_SWAP_B32 undef $vgpr6, undef $vgpr2, implicit $exec143 ; GCN-NEXT: $vgpr3, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr3, implicit $exec144 ; GCN-NEXT: $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr3, killed $vgpr0_vgpr1, implicit $exec145 ; GCN-NEXT: $vgpr6, $vgpr2 = V_SWAP_B32 $vgpr2, $vgpr6, implicit $exec146 ; GCN-NEXT: $vgpr7, $vgpr3 = V_SWAP_B32 $vgpr3, $vgpr7, implicit $exec147 $vgpr7 = IMPLICIT_DEF148 $vgpr0_vgpr1 = IMPLICIT_DEF149 renamable $vgpr6_vgpr7 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr0_vgpr1, implicit $exec150...151 152---153name: highest_reg_shift_amt_overlapped_both154tracksRegLiveness: true155body: |156 bb.0:157 158 ; GCN-LABEL: name: highest_reg_shift_amt_overlapped_both159 ; GCN: $vgpr7 = IMPLICIT_DEF160 ; GCN-NEXT: $vgpr6_vgpr7 = IMPLICIT_DEF161 ; GCN-NEXT: S_WAITCNT 0162 ; GCN-NEXT: $vgpr0, $vgpr6 = V_SWAP_B32 undef $vgpr6, undef $vgpr0, implicit $exec163 ; GCN-NEXT: $vgpr1, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr1, implicit $exec164 ; GCN-NEXT: $vgpr0_vgpr1 = V_LSHRREV_B64_e64 undef $vgpr1, undef $vgpr0_vgpr1, implicit $exec165 ; GCN-NEXT: $vgpr6, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr6, implicit $exec166 ; GCN-NEXT: $vgpr7, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr7, implicit $exec167 $vgpr7 = IMPLICIT_DEF168 $vgpr6_vgpr7 = IMPLICIT_DEF169 renamable $vgpr6_vgpr7 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr6_vgpr7, implicit $exec170...171 172---173name: highest_reg_shift_amt_hazard_in_swap174tracksRegLiveness: true175body: |176 bb.0:177 178 ; GCN-LABEL: name: highest_reg_shift_amt_hazard_in_swap179 ; GCN: $vgpr7 = IMPLICIT_DEF180 ; GCN-NEXT: $vgpr0_vgpr1 = IMPLICIT_DEF181 ; GCN-NEXT: $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec182 ; GCN-NEXT: S_WAITCNT 0183 ; GCN-NEXT: S_NOP 4184 ; GCN-NEXT: $vgpr4, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr4, implicit $exec185 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr4, killed $vgpr0_vgpr1, implicit $exec186 ; GCN-NEXT: $vgpr7, $vgpr4 = V_SWAP_B32 $vgpr4, $vgpr7, implicit $exec187 $vgpr7 = IMPLICIT_DEF188 $vgpr0_vgpr1 = IMPLICIT_DEF189 $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec190 renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr0_vgpr1, implicit $exec191...192 193---194name: highest_reg_shift_amt_hazard_in_swap2195tracksRegLiveness: true196body: |197 bb.0:198 199 ; GCN-LABEL: name: highest_reg_shift_amt_hazard_in_swap2200 ; GCN: $vgpr1 = IMPLICIT_DEF201 ; GCN-NEXT: $vgpr7 = IMPLICIT_DEF202 ; GCN-NEXT: $vgpr6_vgpr7 = IMPLICIT_DEF203 ; GCN-NEXT: $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr7, $vgpr7, $vgpr1, implicit $exec204 ; GCN-NEXT: S_WAITCNT 0205 ; GCN-NEXT: $vgpr0, $vgpr6 = V_SWAP_B32 undef $vgpr6, undef $vgpr0, implicit $exec206 ; GCN-NEXT: S_NOP 0207 ; GCN-NEXT: $vgpr1, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr1, implicit $exec208 ; GCN-NEXT: $vgpr0_vgpr1 = V_LSHRREV_B64_e64 undef $vgpr1, undef $vgpr0_vgpr1, implicit $exec209 ; GCN-NEXT: $vgpr6, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr6, implicit $exec210 ; GCN-NEXT: $vgpr7, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr7, implicit $exec211 $vgpr1 = IMPLICIT_DEF212 $vgpr7 = IMPLICIT_DEF213 $vgpr6_vgpr7 = IMPLICIT_DEF214 $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr7, $vgpr7, $vgpr1, implicit $exec215 renamable $vgpr6_vgpr7 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr6_vgpr7, implicit $exec216...217 218---219name: highest_reg_shift_amt_v7_bundle220tracksRegLiveness: true221body: |222 bb.0:223 224 ; GCN-LABEL: name: highest_reg_shift_amt_v7_bundle225 ; GCN: $vgpr7 = IMPLICIT_DEF226 ; GCN-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF227 ; GCN-NEXT: BUNDLE implicit-def $vgpr2_vgpr3, implicit-def $vgpr7 {228 ; GCN-NEXT: S_WAITCNT 0229 ; GCN-NEXT: $vgpr0, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr0, implicit $exec230 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr0, killed $vgpr2_vgpr3, implicit $exec231 ; GCN-NEXT: }232 ; GCN-NEXT: $vgpr7, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr7, implicit $exec233 $vgpr7 = IMPLICIT_DEF234 $vgpr2_vgpr3 = IMPLICIT_DEF235 BUNDLE implicit-def $vgpr2_vgpr3, implicit-def $vgpr7 {236 renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 $vgpr7, killed $vgpr2_vgpr3, implicit $exec237 }238...239 240---241name: highest_reg_shift_amt_hazard_in_swap2_bundle242tracksRegLiveness: true243body: |244 bb.0:245 246 ; GCN-LABEL: name: highest_reg_shift_amt_hazard_in_swap2_bundle247 ; GCN: $vgpr1 = IMPLICIT_DEF248 ; GCN-NEXT: $vgpr7 = IMPLICIT_DEF249 ; GCN-NEXT: $vgpr6_vgpr7 = IMPLICIT_DEF250 ; GCN-NEXT: BUNDLE internal $vgpr7, implicit-def $vgpr1, implicit-def $vgpr6_vgpr7 {251 ; GCN-NEXT: $vgpr1 = IMPLICIT_DEF252 ; GCN-NEXT: $vgpr7 = IMPLICIT_DEF253 ; GCN-NEXT: $vgpr6_vgpr7 = IMPLICIT_DEF254 ; GCN-NEXT: $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr7, $vgpr7, $vgpr1, implicit $exec255 ; GCN-NEXT: S_WAITCNT 0256 ; GCN-NEXT: $vgpr0, $vgpr6 = V_SWAP_B32 undef $vgpr6, undef $vgpr0, implicit $exec257 ; GCN-NEXT: S_NOP 0258 ; GCN-NEXT: $vgpr1, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr1, implicit $exec259 ; GCN-NEXT: $vgpr0_vgpr1 = V_LSHRREV_B64_e64 undef $vgpr1, undef $vgpr0_vgpr1, implicit $exec260 ; GCN-NEXT: }261 ; GCN-NEXT: $vgpr6, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr6, implicit $exec262 ; GCN-NEXT: $vgpr7, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr7, implicit $exec263 $vgpr1 = IMPLICIT_DEF264 $vgpr7 = IMPLICIT_DEF265 $vgpr6_vgpr7 = IMPLICIT_DEF266 BUNDLE implicit-def $vgpr1, implicit-def $vgpr6_vgpr7, internal $vgpr7 {267 $vgpr1 = IMPLICIT_DEF268 $vgpr7 = IMPLICIT_DEF269 $vgpr6_vgpr7 = IMPLICIT_DEF270 $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr7, $vgpr7, $vgpr1, implicit $exec271 renamable $vgpr6_vgpr7 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr6_vgpr7, implicit $exec272 }273...274 275---276name: highest_reg_shift_amt_v7_defined277tracksRegLiveness: true278body: |279 bb.0:280 281 ; GCN-LABEL: name: highest_reg_shift_amt_v7_defined282 ; GCN: $vgpr0 = IMPLICIT_DEF283 ; GCN-NEXT: $vgpr7 = IMPLICIT_DEF284 ; GCN-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF285 ; GCN-NEXT: S_WAITCNT 0286 ; GCN-NEXT: $vgpr0, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr0, implicit $exec287 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 undef $vgpr0, killed $vgpr2_vgpr3, implicit $exec288 ; GCN-NEXT: $vgpr7, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr7, implicit $exec289 $vgpr0 = IMPLICIT_DEF290 $vgpr7 = IMPLICIT_DEF291 $vgpr2_vgpr3 = IMPLICIT_DEF292 renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr2_vgpr3, implicit $exec293...294 295---296name: highest_reg_shift_amt_hazard_in_swap2_defined297tracksRegLiveness: true298body: |299 bb.0:300 301 ; GCN-LABEL: name: highest_reg_shift_amt_hazard_in_swap2_defined302 ; GCN: $vgpr0 = IMPLICIT_DEF303 ; GCN-NEXT: $vgpr1 = IMPLICIT_DEF304 ; GCN-NEXT: $vgpr7 = IMPLICIT_DEF305 ; GCN-NEXT: $vgpr6_vgpr7 = IMPLICIT_DEF306 ; GCN-NEXT: $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr7, $vgpr7, $vgpr1, implicit $exec307 ; GCN-NEXT: S_WAITCNT 0308 ; GCN-NEXT: $vgpr0, $vgpr6 = V_SWAP_B32 undef $vgpr6, undef $vgpr0, implicit $exec309 ; GCN-NEXT: S_NOP 0310 ; GCN-NEXT: $vgpr1, $vgpr7 = V_SWAP_B32 undef $vgpr7, undef $vgpr1, implicit $exec311 ; GCN-NEXT: $vgpr0_vgpr1 = V_LSHRREV_B64_e64 undef $vgpr1, undef $vgpr0_vgpr1, implicit $exec312 ; GCN-NEXT: $vgpr6, $vgpr0 = V_SWAP_B32 $vgpr0, $vgpr6, implicit $exec313 ; GCN-NEXT: $vgpr7, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr7, implicit $exec314 $vgpr0 = IMPLICIT_DEF315 $vgpr1 = IMPLICIT_DEF316 $vgpr7 = IMPLICIT_DEF317 $vgpr6_vgpr7 = IMPLICIT_DEF318 $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr7, $vgpr7, $vgpr1, implicit $exec319 renamable $vgpr6_vgpr7 = V_LSHRREV_B64_e64 killed $vgpr7, killed $vgpr6_vgpr7, implicit $exec320...321