288 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX10 %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN %s3 4# GCN-LABEL: name: hazard_lds_branch_buf5# GCN: bb.1:6# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 07# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN8---9name: hazard_lds_branch_buf10body: |11 bb.0:12 successors: %bb.113 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec14 S_BRANCH %bb.115 16 bb.1:17 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec18 S_ENDPGM 019...20 21# GCN-LABEL: name: hazard_buf_branch_lds22# GCN: bb.1:23# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 024# GCN-NEXT: DS_READ_B3225---26name: hazard_buf_branch_lds27body: |28 bb.0:29 successors: %bb.130 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec31 S_BRANCH %bb.132 33 bb.1:34 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec35 S_ENDPGM 036...37 38# GCN-LABEL: name: no_hazard_lds_branch_lds39# GCN: bb.1:40# GCN-NEXT: DS_READ_B3241---42name: no_hazard_lds_branch_lds43body: |44 bb.0:45 successors: %bb.146 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec47 S_BRANCH %bb.148 49 bb.1:50 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec51 S_ENDPGM 052...53 54# GCN-LABEL: name: no_hazard_buf_branch_buf55# GCN: bb.1:56# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN57---58name: no_hazard_buf_branch_buf59body: |60 bb.0:61 successors: %bb.162 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec63 S_BRANCH %bb.164 65 bb.1:66 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec67 S_ENDPGM 068...69 70# GCN-LABEL: name: no_hazard_lds_branch_buf_fallthrough71# GCN: bb.1:72# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN73---74name: no_hazard_lds_branch_buf_fallthrough75body: |76 bb.0:77 successors: %bb.178 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec79 80 bb.1:81 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec82 S_ENDPGM 083...84 85# GCN-LABEL: name: no_hazard_lds_branch_buf_samebb86# GCN: DS_READ_B3287# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN88---89name: no_hazard_lds_branch_buf_samebb90body: |91 bb.0:92 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec93 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec94 S_ENDPGM 095...96 97# GCN-LABEL: name: hazard_lds_branch_buf_loop98# GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 099# GCN: DS_READ_B32100# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN101---102name: hazard_lds_branch_buf_loop103body: |104 bb.0:105 successors: %bb.0106 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec107 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec108 S_BRANCH %bb.0109...110 111# GCN-LABEL: name: single_hazard_lds_branch_buf112# GCN: bb.1:113# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0114# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN115# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN116---117name: single_hazard_lds_branch_buf118body: |119 bb.0:120 successors: %bb.1121 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec122 S_BRANCH %bb.1123 124 bb.1:125 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec126 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec127 S_ENDPGM 0128...129 130# GCN-LABEL: name: no_hazard_lds_branch_lds_buf131# GCN: bb.1:132# GCN-NEXT: DS_READ_B32133# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN134---135name: no_hazard_lds_branch_lds_buf136body: |137 bb.0:138 successors: %bb.1139 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec140 S_BRANCH %bb.1141 142 bb.1:143 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec144 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec145 S_ENDPGM 0146...147 148# GCN-LABEL: name: no_hazard_lds_buf_branch_buf149# GCN: bb.1:150# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN151---152name: no_hazard_lds_buf_branch_buf153body: |154 bb.0:155 successors: %bb.1156 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec157 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec158 S_BRANCH %bb.1159 160 bb.1:161 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec162 S_ENDPGM 0163...164 165# GCN-LABEL: name: hazard_lds_branch_vscnt_1_buf166# GCN: bb.1:167# GCN-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 1168# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0169# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN170---171name: hazard_lds_branch_vscnt_1_buf172body: |173 bb.0:174 successors: %bb.1175 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec176 S_BRANCH %bb.1177 178 bb.1:179 S_WAITCNT_VSCNT undef $sgpr_null, 1180 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec181 S_ENDPGM 0182...183 184# GCN-LABEL: name: no_hazard_lds_branch_vscnt_0_buf185# GCN: bb.1:186# GCN-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0187# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN188---189name: no_hazard_lds_branch_vscnt_0_buf190body: |191 bb.0:192 successors: %bb.1193 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec194 S_BRANCH %bb.1195 196 bb.1:197 S_WAITCNT_VSCNT undef $sgpr_null, 0198 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec199 S_ENDPGM 0200...201 202# GCN-LABEL: name: hazard_lds_branch_vscnt_s0_buf203# GCN: bb.1:204# GCN-NEXT: S_WAITCNT_VSCNT undef $sgpr0, 0205# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0206# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN207---208name: hazard_lds_branch_vscnt_s0_buf209body: |210 bb.0:211 successors: %bb.1212 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec213 S_BRANCH %bb.1214 215 bb.1:216 S_WAITCNT_VSCNT undef $sgpr0, 0217 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec218 S_ENDPGM 0219...220 221# GCN-LABEL: name: no_hazard_lds_vscnt_0_branch_buf222# GCN: bb.1:223# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN224---225name: no_hazard_lds_vscnt_0_branch_buf226body: |227 bb.0:228 successors: %bb.1229 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec230 S_WAITCNT_VSCNT undef $sgpr_null, 0231 S_BRANCH %bb.1232 233 bb.1:234 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN undef $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, implicit $exec235 S_ENDPGM 0236...237 238# GCN-LABEL: name: hazard_lds_branch_global239# GCN: bb.1:240# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0241# GCN-NEXT: GLOBAL_LOAD_DWORD242---243name: hazard_lds_branch_global244body: |245 bb.0:246 successors: %bb.1247 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec248 S_BRANCH %bb.1249 250 bb.1:251 $vgpr1 = GLOBAL_LOAD_DWORD undef $vgpr0_vgpr1, 0, 0, implicit $exec252 S_ENDPGM 0253...254 255# GCN-LABEL: name: hazard_lds_branch_scratch256# GCN: bb.1:257# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0258# GCN-NEXT: SCRATCH_LOAD_DWORD259---260name: hazard_lds_branch_scratch261body: |262 bb.0:263 successors: %bb.1264 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec265 S_BRANCH %bb.1266 267 bb.1:268 $vgpr1 = SCRATCH_LOAD_DWORD undef $vgpr0, 0, 0, implicit $exec, implicit $flat_scr269 S_ENDPGM 0270...271 272# GCN-LABEL: name: hazard_lds_branch_flat273# GCN: bb.1:274# GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0275# GCN-NEXT: FLAT_LOAD_DWORD276---277name: hazard_lds_branch_flat278body: |279 bb.0:280 successors: %bb.1281 $vgpr1 = DS_READ_B32 undef $vgpr0, 0, 0, implicit $m0, implicit $exec282 S_BRANCH %bb.1283 284 bb.1:285 $vgpr1 = FLAT_LOAD_DWORD undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr286 S_ENDPGM 0287...288