195 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN %s4 5# GCN-LABEL: name: hazard_vcmpx_permlane166# GCN: V_CMPX_LE_F32_nosdst_e327# GCN: S_ADD_U328# GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec9# GCN-NEXT: V_PERMLANE16_B32_e6410---11name: hazard_vcmpx_permlane1612body: |13 bb.0:14 successors: %bb.115 $vgpr0 = V_MOV_B32_e32 0, implicit $exec16 V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec17 S_BRANCH %bb.118 19 bb.1:20 $vgpr1 = IMPLICIT_DEF21 $vgpr2 = IMPLICIT_DEF22 $sgpr0 = IMPLICIT_DEF23 $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc24 $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec25 S_ENDPGM 026...27 28# GCN-LABEL: name: hazard_vcmpx_permlanex1629# GCN: V_CMPX_LE_F32_nosdst_e3230# GCN: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec31# GCN-NEXT: V_PERMLANEX16_B32_e6432---33name: hazard_vcmpx_permlanex1634body: |35 bb.0:36 successors: %bb.137 $vgpr0 = V_MOV_B32_e32 0, implicit $exec38 V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec39 S_BRANCH %bb.140 41 bb.1:42 $vgpr1 = IMPLICIT_DEF43 $vgpr2 = IMPLICIT_DEF44 $sgpr0 = IMPLICIT_DEF45 $sgpr1 = IMPLICIT_DEF46 $vgpr1 = V_PERMLANEX16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec47 S_ENDPGM 048...49 50# GCN-LABEL: name: hazard_vcmpx_permlane16_v_nop51# GCN: V_CMPX_LE_F32_nosdst_e3252# GCN: V_NOP53# GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec54# GFX12-NEXT: S_WAITCNT_DEPCTR55# GCN-NEXT: V_PERMLANE16_B32_e6456---57name: hazard_vcmpx_permlane16_v_nop58body: |59 bb.0:60 successors: %bb.161 $vgpr0 = V_MOV_B32_e32 0, implicit $exec62 V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec63 S_BRANCH %bb.164 65 bb.1:66 $vgpr1 = IMPLICIT_DEF67 $vgpr2 = IMPLICIT_DEF68 $sgpr0 = IMPLICIT_DEF69 $sgpr1 = IMPLICIT_DEF70 V_NOP_e32 implicit $exec71 $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec72 S_ENDPGM 073...74 75# GCN-LABEL: name: hazard_vcmpx_permlane16_far76# GCN: V_CMPX_LE_F32_nosdst_e3277# GCN: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec78# GCN-NEXT: V_PERMLANE16_B32_e6479---80name: hazard_vcmpx_permlane16_far81body: |82 bb.0:83 successors: %bb.184 $vgpr0 = V_MOV_B32_e32 0, implicit $exec85 V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec86 S_BRANCH %bb.187 88 bb.1:89 $vgpr1 = IMPLICIT_DEF90 $vgpr2 = IMPLICIT_DEF91 $sgpr0 = IMPLICIT_DEF92 $sgpr1 = IMPLICIT_DEF93 V_NOP_e32 implicit $exec94 V_NOP_e32 implicit $exec95 V_NOP_e32 implicit $exec96 V_NOP_e32 implicit $exec97 V_NOP_e32 implicit $exec98 V_NOP_e32 implicit $exec99 V_NOP_e32 implicit $exec100 V_NOP_e32 implicit $exec101 V_NOP_e32 implicit $exec102 $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec103 S_ENDPGM 0104...105 106# GCN-LABEL: name: hazard_vcmpx_permlane16_no_hazard107# GCN: V_CMPX_LE_F32_nosdst_e32108# GCN: V_ADD_F32109# GCN-NEXT: V_PERMLANE16_B32_e64110---111name: hazard_vcmpx_permlane16_no_hazard112body: |113 bb.0:114 successors: %bb.1115 $vgpr0 = V_MOV_B32_e32 0, implicit $exec116 V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec117 S_BRANCH %bb.1118 119 bb.1:120 $vgpr1 = IMPLICIT_DEF121 $sgpr0 = IMPLICIT_DEF122 $sgpr1 = IMPLICIT_DEF123 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec124 $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec125 S_ENDPGM 0126...127 128# GCN-LABEL: name: hazard_vcmpx_permlane16_undef_src129# GCN: V_CMPX_LE_F32_nosdst_e32130# GCN: S_ADD_U32131# GCN-NEXT: dead $vgpr1 = V_MOV_B32_e32 undef $vgpr1, implicit $exec132# GCN-NEXT: V_PERMLANE16_B32_e64133---134name: hazard_vcmpx_permlane16_undef_src135body: |136 bb.0:137 successors: %bb.1138 $vgpr0 = V_MOV_B32_e32 0, implicit $exec139 V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec140 S_BRANCH %bb.1141 142 bb.1:143 $vgpr2 = IMPLICIT_DEF144 $sgpr0 = IMPLICIT_DEF145 $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc146 $vgpr1 = V_PERMLANE16_B32_e64 0, undef $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, undef $vgpr1, 0, implicit $exec147 S_ENDPGM 0148...149 150# GCN-LABEL: name: hazard_vcmpx_e64_permlane16151# GCN: V_CMPX_LE_F32_nosdst_e64152# GCN: S_ADD_U32153# GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec154# GCN-NEXT: V_PERMLANE16_B32_e64155---156name: hazard_vcmpx_e64_permlane16157body: |158 bb.0:159 successors: %bb.1160 $vgpr0 = V_MOV_B32_e32 0, implicit $exec161 V_CMPX_LE_F32_nosdst_e64 0, 0, 0, $vgpr0, 0, implicit-def $exec, implicit $mode, implicit $exec162 S_BRANCH %bb.1163 164 bb.1:165 $vgpr1 = IMPLICIT_DEF166 $vgpr2 = IMPLICIT_DEF167 $sgpr0 = IMPLICIT_DEF168 $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc169 $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec170 S_ENDPGM 0171...172 173# GCN-LABEL: name: hazard_vcmpx_permlane64174# GCN: V_CMPX_LE_F32_nosdst_e32175# GCN: S_ADD_U32176# GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec177# GCN-NEXT: V_PERMLANE64_B32178---179name: hazard_vcmpx_permlane64180body: |181 bb.0:182 successors: %bb.1183 $vgpr0 = V_MOV_B32_e32 0, implicit $exec184 V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec185 S_BRANCH %bb.1186 187 bb.1:188 $vgpr1 = IMPLICIT_DEF189 $vgpr2 = IMPLICIT_DEF190 $sgpr0 = IMPLICIT_DEF191 $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc192 $vgpr1 = V_PERMLANE64_B32 killed $vgpr1, implicit $exec193 S_ENDPGM 0194...195