198 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=tonga -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN -check-prefix=VI %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx803 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN -check-prefix=GFX8 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN -check-prefix=GFX9 %s4 5# GCN-LABEL: name: hazard_implicit_def6# GCN: bb.0.entry:7# GCN: $m0 = S_MOV_B328# GFX9: S_NOP 09# VI-NOT: S_NOP_010# GCN: V_INTERP_P1_F3211 12---13name: hazard_implicit_def14alignment: 115exposesReturnsTwice: false16legalized: false17regBankSelected: false18selected: false19tracksRegLiveness: true20registers:21liveins:22 - { reg: '$sgpr7', virtual-reg: '' }23 - { reg: '$vgpr4', virtual-reg: '' }24body: |25 bb.0.entry:26 liveins: $sgpr7, $vgpr427 28 $m0 = S_MOV_B32 killed $sgpr729 $vgpr5 = IMPLICIT_DEF30 $vgpr0 = V_INTERP_P1_F32 killed $vgpr4, 0, 0, implicit $mode, implicit $m0, implicit $exec31 SI_RETURN_TO_EPILOG killed $vgpr5, killed $vgpr032 33...34 35# GCN-LABEL: name: hazard_inlineasm36# GCN: bb.0.entry:37# GCN: $m0 = S_MOV_B3238# GFX9: S_NOP 039# VI-NOT: S_NOP_040# GCN: V_INTERP_P1_F3241---42name: hazard_inlineasm43alignment: 144exposesReturnsTwice: false45legalized: false46regBankSelected: false47selected: false48tracksRegLiveness: true49registers:50liveins:51 - { reg: '$sgpr7', virtual-reg: '' }52 - { reg: '$vgpr4', virtual-reg: '' }53body: |54 bb.0.entry:55 liveins: $sgpr7, $vgpr456 57 $m0 = S_MOV_B32 killed $sgpr758 INLINEASM &"; no-op", 1, 327690, def $vgpr559 $vgpr0 = V_INTERP_P1_F32 killed $vgpr4, 0, 0, implicit $mode, implicit $m0, implicit $exec60 SI_RETURN_TO_EPILOG killed $vgpr5, killed $vgpr061...62 63# IMPLICIT_DEF/DBG_VALUE instructions should not prevent the hazard recognizer64# from adding s_nop instructions between m0 update and s_sendmsg.65 66# GCN-LABEL: name: hazard-lookahead-implicit-def67# GCN: $vgpr6 = IMPLICIT_DEF68# GFX8-NEXT: S_NOP 069# GFX9-NEXT: S_NOP 070# GCN: S_SENDMSG 3, implicit $exec, implicit $m071---72name: hazard-lookahead-implicit-def73body: |74 bb.0:75 $m0 = S_MOV_B32 killed $sgpr1276 $vgpr0 = IMPLICIT_DEF77 $vgpr1 = IMPLICIT_DEF78 $vgpr2 = IMPLICIT_DEF79 $vgpr3 = IMPLICIT_DEF80 $vgpr4 = IMPLICIT_DEF81 $vgpr5 = IMPLICIT_DEF82 $vgpr6 = IMPLICIT_DEF83 S_SENDMSG 3, implicit $exec, implicit $m084 S_ENDPGM 085...86 87# GCN-LABEL: name: hazard-lookahead-dbg-value88# GCN: DBG_VALUE 689# GFX8-NEXT: S_NOP 090# GFX9-NEXT: S_NOP 091# GCN: S_SENDMSG 3, implicit $exec, implicit $m092---93name: hazard-lookahead-dbg-value94body: |95 bb.0:96 $m0 = S_MOV_B32 killed $sgpr1297 DBG_VALUE 098 DBG_VALUE 199 DBG_VALUE 2100 DBG_VALUE 3101 DBG_VALUE 4102 DBG_VALUE 5103 DBG_VALUE 6104 S_SENDMSG 3, implicit $exec, implicit $m0105 S_ENDPGM 0106...107 108# GCN-LABEL: name: hazard-lookahead-dbg-label109# GCN: DBG_LABEL 6110# GFX8-NEXT: S_NOP 0111# GFX9-NEXT: S_NOP 0112# GCN: S_SENDMSG 3, implicit $exec, implicit $m0113---114name: hazard-lookahead-dbg-label115body: |116 bb.0:117 $m0 = S_MOV_B32 killed $sgpr12118 DBG_LABEL 0119 DBG_LABEL 1120 DBG_LABEL 2121 DBG_LABEL 3122 DBG_LABEL 4123 DBG_LABEL 5124 DBG_LABEL 6125 S_SENDMSG 3, implicit $exec, implicit $m0126 S_ENDPGM 0127...128# GCN-LABEL: name: hazard-lookahead-wave-barrier129# GCN: S_WAITCNT 0130# GCN-NEXT: S_NOP 0131# GCN-NEXT: V_ADD_F16_dpp132---133name: hazard-lookahead-wave-barrier134body: |135 bb.0:136 liveins: $vgpr0, $vgpr1, $vgpr3137 138 renamable $vgpr1 = contract nofpexcept V_ADD_F16_e32 killed $vgpr1, $vgpr0, implicit $mode, implicit $exec139 WAVE_BARRIER140 S_WAITCNT 0141 renamable $vgpr2 = contract nofpexcept V_ADD_F16_dpp undef $vgpr2, 0, $vgpr1, 0, $vgpr3, 273, 15, 15, 1, implicit $mode, implicit $exec142...143# GCN-LABEL: name: hazard-lookahead-masked-unreachable144# GCN: SI_MASKED_UNREACHABLE145# GCN-NEXT: S_NOP 0146# GCN-NEXT: S_SENDMSG147---148name: hazard-lookahead-masked-unreachable149body: |150 bb.0:151 $m0 = S_MOV_B32 -1152 SI_MASKED_UNREACHABLE153 S_SENDMSG 3, implicit $exec, implicit $m0154 155 bb.1:156 S_ENDPGM 0157...158# GCN-LABEL: name: fallthrough-hazard-lookahead-masked-unreachable159# GCN: SI_MASKED_UNREACHABLE160# GCN-LABEL: bb.1:161# GCN-NEXT: S_NOP 0162# GCN-NEXT: S_SENDMSG163---164name: fallthrough-hazard-lookahead-masked-unreachable165body: |166 bb.0:167 $m0 = S_MOV_B32 -1168 SI_MASKED_UNREACHABLE169 170 bb.1:171 S_SENDMSG 3, implicit $exec, implicit $m0172 S_ENDPGM 0173...174 175# GCN-LABEL: name: buffer_store_lds_dword176# GCN: $m0 = S_MOV_B32 0177# GFX9-NEXT: S_NOP 0178# GCN-NEXT: BUFFER_STORE_LDS_DWORD179---180name: buffer_store_lds_dword181body: |182 bb.0:183 $m0 = S_MOV_B32 0184 BUFFER_STORE_LDS_DWORD $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec, implicit $m0185...186 187# GCN-LABEL: name: lds_direct_read_m0188# GCN: $m0 = S_MOV_B32 0189# GFX9-NEXT: S_NOP 0190# GCN-NEXT: V_MOV_B32191---192name: lds_direct_read_m0193body: |194 bb.0:195 $m0 = S_MOV_B32 0196 $vgpr0 = V_MOV_B32_e32 $lds_direct, implicit $exec, implicit $m0197...198