244 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx942 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN %s2 3# GCN-LABEL: name: trans32_write_non_trans32_read4# GCN: V_RCP_F325# GCN-NEXT: S_NOP 06# GCN-NEXT: V_MUL_F327name: trans32_write_non_trans32_read8body: |9 bb.0:10 $vgpr1 = V_RCP_F32_e32 $vgpr0, implicit $mode, implicit $exec11 $vgpr2 = V_MUL_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec12...13 14# GCN-LABEL: name: trans32_write_trans_read15# GCN: V_SIN_F3216# GCN-NEXT: V_COS_F3217name: trans32_write_trans_read18body: |19 bb.0:20 $vgpr0 = V_SIN_F32_e32 $vgpr1, implicit $mode, implicit $exec21 $vgpr2 = V_COS_F32_e32 $vgpr0, implicit $mode, implicit $exec22...23 24# GCN-LABEL: name: trans64_write_non_trans_read25# GCN: V_RCP_F6426# GCN-NEXT: S_NOP 027# GCN-NEXT: V_OR_B3228name: trans64_write_non_trans_read29body: |30 bb.0:31 $vgpr0_vgpr1 = V_RCP_F64_e32 $vgpr2_vgpr3, implicit $mode, implicit $exec32 $vgpr4 = V_OR_B32_e32 $vgpr1, $vgpr5, implicit $mode, implicit $exec33...34 35# GCN-LABEL: name: trans32_write_non_trans64_read36# GCN: V_EXP_F3237# GCN-NEXT: S_NOP 038# GCN-NEXT: V_MUL_F6439name: trans32_write_non_trans64_read40body: |41 bb.0:42 $vgpr1 = V_EXP_F32_e32 $vgpr0, implicit $mode, implicit $exec43 $vgpr2_vgpr3 = V_MUL_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec44...45 46# GCN-LABEL: name: opsel_hi16_write_valu_read47# GCN: V_ADD_I1648# GCN-NEXT: S_NOP 049# GCN-NEXT: V_MUL_F6450name: opsel_hi16_write_valu_read51body: |52 bb.0:53 $vgpr0 = V_ADD_I16_e64 8, $vgpr1, 0, $vgpr2, 0, 0, implicit $exec54 $vgpr4_vgpr5 = V_MUL_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec55...56 57# GCN-LABEL: name: opsel_lo16_write_valu_read58# GCN: V_ADD_I1659# GCN-NEXT: V_MUL_F6460name: opsel_lo16_write_valu_read61body: |62 bb.0:63 $vgpr0 = V_ADD_I16_e64 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $exec64 $vgpr4_vgpr5 = V_MUL_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec65...66 67# GCN-LABEL: name: sdwa_hi16_write_valu_read68# GCN: V_MOV_B32_sdwa69# GCN-NEXT: S_NOP 070# GCN-NEXT: V_MOV_B32_e3271name: sdwa_hi16_write_valu_read72body: |73 bb.0:74 $vgpr0 = V_MOV_B32_sdwa 0, $vgpr1, 0, 5, 2, 5, implicit $vgpr0(tied-def 0), implicit $exec75 $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec76...77 78# GCN-LABEL: name: sdwa_lo16_write_valu_read79# GCN: V_MOV_B32_sdwa80# GCN-NEXT: S_NOP 081# GCN-NEXT: V_MOV_B32_e3282name: sdwa_lo16_write_valu_read83body: |84 bb.0:85 $vgpr0 = V_MOV_B32_sdwa 0, $vgpr1, 0, 4, 2, 5, implicit $vgpr0(tied-def 0), implicit $exec86 $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec87...88 89# GCN-LABEL: name: sdwa_dword_write_valu_read90# GCN: V_MOV_B32_sdwa91# GCN-NEXT: V_MOV_B32_e3292name: sdwa_dword_write_valu_read93body: |94 bb.0:95 $vgpr0 = V_MOV_B32_sdwa 0, $vgpr1, 0, 6, 2, 5, implicit $vgpr0(tied-def 0), implicit $exec96 $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec97...98 99# GCN-LABEL: name: sdwa_lo16_no_write_valu_read100# GCN: V_CMP_EQ_U32_sdwa101# GCN-NEXT: V_MOV_B32_e32102name: sdwa_lo16_no_write_valu_read103body: |104 bb.0:105 $vcc = V_CMP_EQ_U32_sdwa 0, $vgpr1, 0, $vgpr0, 0, 5, 2, implicit $exec106 $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec107...108 109# GCN-LABEL: name: valu_write_sgpr_valu_read_as_constant110# GCN: V_READFIRSTLANE_B32111# GCN-NEXT: S_NOP 1112# GCN-NEXT: V_MOV_B32_e32113name: valu_write_sgpr_valu_read_as_constant114body: |115 bb.0:116 $sgpr0 = V_READFIRSTLANE_B32 $vgpr0, implicit $exec117 $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec118...119 120# GCN-LABEL: name: valu_write_vcc_valu_read_as_constant121# GCN: V_CMP_NE_U32_e32122# GCN-NEXT: S_NOP 1123# GCN-NEXT: V_ADDC_U32_e32124name: valu_write_vcc_valu_read_as_constant125body: |126 bb.0:127 V_CMP_NE_U32_e32 0, $vgpr0, implicit-def $vcc, implicit $exec128 $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec129...130 131# GCN-LABEL: name: valu_write_sgpr_readlane_read_as_laneselect132# GCN: V_READFIRSTLANE_B32133# GCN-NEXT: S_NOP 3134# GCN-NEXT: V_READLANE_B32135name: valu_write_sgpr_readlane_read_as_laneselect136body: |137 bb.0:138 $sgpr0 = V_READFIRSTLANE_B32 $vgpr0, implicit $exec139 $sgpr1 = V_READLANE_B32 $vgpr1, $sgpr0, implicit $exec140...141 142# GCN-LABEL: name: valu_write_sgpr_writelane_read_as_laneselect143# GCN: V_ADD_CO_U32_e64144# GCN-NEXT: S_NOP 3145# GCN-NEXT: V_WRITELANE_B32146name: valu_write_sgpr_writelane_read_as_laneselect147body: |148 bb.0:149 $vgpr0, $sgpr0_sgpr1 = V_ADD_CO_U32_e64 $vgpr0, 1, 0, implicit $exec150 $vgpr1 = V_WRITELANE_B32 0, $sgpr0, $vgpr1, implicit $exec151...152 153# GCN-LABEL: name: vcmpx_write_exec_valu_read_as_constant154# GCN: V_CMPX_EQ_I32_e32155# GCN-NEXT: S_NOP 1156# GCN-NEXT: V_MOV_B32_e32157name: vcmpx_write_exec_valu_read_as_constant158body: |159 bb.0:160 implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec161 $vgpr1 = V_MOV_B32_e32 $exec_lo, implicit $exec162...163 164# GCN-LABEL: name: vcmpx_write_exec_readlane165# GCN: V_CMPX_EQ_I32_e32166# GCN-NEXT: S_NOP 3167# GCN-NEXT: V_READLANE_B32168name: vcmpx_write_exec_readlane169body: |170 bb.0:171 implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec172 $sgpr1 = V_READLANE_B32 $vgpr1, 0, implicit $exec173...174 175# GCN-LABEL: name: vcmpx_write_exec_readfirstlane176# GCN: V_CMPX_EQ_I32_e32177# GCN-NEXT: S_NOP 3178# GCN-NEXT: V_READFIRSTLANE_B32179name: vcmpx_write_exec_readfirstlane180body: |181 bb.0:182 implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec183 $sgpr1 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec184...185 186# GCN-LABEL: name: vcmpx_write_exec_writelane187# GCN: V_CMPX_EQ_I32_e32188# GCN-NEXT: S_NOP 3189# GCN-NEXT: V_WRITELANE_B32190name: vcmpx_write_exec_writelane191body: |192 bb.0:193 implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec194 $vgpr1 = V_WRITELANE_B32 0, $sgpr0, $vgpr1, implicit $exec195...196 197# GCN-LABEL: name: valu_write_vgpr_readlane_read198# GCN: V_ADD_CO_U32_e32199# GCN-NEXT: S_NOP 0200# GCN-NEXT: V_READLANE_B32201name: valu_write_vgpr_readlane_read202body: |203 bb.0:204 $vgpr1 = V_ADD_CO_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $exec205 $sgpr1 = V_READLANE_B32 $vgpr1, $sgpr0, implicit $exec206...207 208# GCN-LABEL: name: valu_write_vgpr_readfirstlane_read209# GCN: V_ADD_CO_U32_e32210# GCN-NEXT: S_NOP 0211# GCN-NEXT: V_READFIRSTLANE_B32212name: valu_write_vgpr_readfirstlane_read213body: |214 bb.0:215 $vgpr1 = V_ADD_CO_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $exec216 $sgpr1 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec217...218 219# GCN-LABEL: name: global_store_dwordx4_data_hazard220# GCN: GLOBAL_STORE_DWORDX4221# GCN-NEXT: S_NOP 1222# GCN-NEXT: V_MOV_B32_e32223name: global_store_dwordx4_data_hazard224 225body: |226 bb.0:227 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5228 GLOBAL_STORE_DWORDX4 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5, 0, 0, implicit $exec229 $vgpr2 = V_MOV_B32_e32 0, implicit $exec230...231 232# GCN-LABEL: name: global_store_dwordx3_data_hazard233# GCN: GLOBAL_STORE_DWORDX3234# GCN-NEXT: S_NOP 1235# GCN-NEXT: V_MOV_B32_e32236name: global_store_dwordx3_data_hazard237 238body: |239 bb.0:240 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4241 GLOBAL_STORE_DWORDX3 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4, 0, 0, implicit $exec242 $vgpr2 = V_MOV_B32_e32 0, implicit $exec243...244