1# RUN: llc -march=amdgcn -mcpu=gfx1010 -mattr=-wavefrontsize32,+wavefrontsize64 -verify-machineinstrs -run-pass si-insert-skips,post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s 2 3# GCN-LABEL: name: hazard_vcmpx_smov_exec_lo 4# GCN: $sgpr0 = S_MOV_B32 $exec_lo 5# GCN-NEXT: S_WAITCNT_DEPCTR 65534 6# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 7--- 8name: hazard_vcmpx_smov_exec_lo 9body: | 10 bb.0: 11 successors: %bb.1 12 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 13 $sgpr0 = S_MOV_B32 $exec_lo 14 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 15 S_BRANCH %bb.1 16 17 bb.1: 18 S_ENDPGM 0 19... 20 21# GCN-LABEL: name: hazard_vcmpx_smov_exec 22# GCN: $sgpr0_sgpr1 = S_MOV_B64 $exec 23# GCN-NEXT: S_WAITCNT_DEPCTR 65534 24# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 25--- 26name: hazard_vcmpx_smov_exec 27body: | 28 bb.0: 29 successors: %bb.1 30 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 31 $sgpr0_sgpr1 = S_MOV_B64 $exec 32 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 33 S_BRANCH %bb.1 34 35 bb.1: 36 S_ENDPGM 0 37... 38 39# GCN-LABEL: name: no_hazard_vcmpx_vmov_exec_lo 40# GCN: $vgpr0 = V_MOV_B32_e32 $exec_lo, implicit $exec 41# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 42--- 43name: no_hazard_vcmpx_vmov_exec_lo 44body: | 45 bb.0: 46 successors: %bb.1 47 $vgpr0 = V_MOV_B32_e32 $exec_lo, implicit $exec 48 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 49 S_BRANCH %bb.1 50 51 bb.1: 52 S_ENDPGM 0 53... 54 55# GCN-LABEL: name: no_hazard_vcmpx_valu_impuse_exec 56# GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 57# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 58--- 59name: no_hazard_vcmpx_valu_impuse_exec 60body: | 61 bb.0: 62 successors: %bb.1 63 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 64 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 65 S_BRANCH %bb.1 66 67 bb.1: 68 S_ENDPGM 0 69... 70 71# GCN-LABEL: name: no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_imp 72# GCN: $sgpr0 = S_MOV_B32 $exec_lo 73# GCN-NEXT: $vgpr0 = V_ADDC_U32_e32 0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec 74# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 75--- 76name: no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_imp 77body: | 78 bb.0: 79 successors: %bb.1 80 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 81 $sgpr0 = S_MOV_B32 $exec_lo 82 $vgpr0 = V_ADDC_U32_e32 0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec 83 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 84 S_BRANCH %bb.1 85 86 bb.1: 87 S_ENDPGM 0 88... 89 90# GCN-LABEL: name: no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_exp 91# GCN: $sgpr0 = S_MOV_B32 $exec_lo 92# GCN-NEXT: $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 $vgpr0, 0, implicit $exec 93# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 94--- 95name: no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_exp 96body: | 97 bb.0: 98 successors: %bb.1 99 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 100 $sgpr0 = S_MOV_B32 $exec_lo 101 $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 $vgpr0, 0, implicit $exec 102 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 103 S_BRANCH %bb.1 104 105 bb.1: 106 S_ENDPGM 0 107... 108 109# GCN-LABEL: name: no_hazard_vcmpx_smov_exec_lo_depctr_fffe 110# GCN: $sgpr0 = S_MOV_B32 $exec_lo 111# GCN-NEXT: S_WAITCNT_DEPCTR 65534 112# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 113--- 114name: no_hazard_vcmpx_smov_exec_lo_depctr_fffe 115body: | 116 bb.0: 117 successors: %bb.1 118 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 119 $sgpr0 = S_MOV_B32 $exec_lo 120 S_WAITCNT_DEPCTR 65534 121 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 122 S_BRANCH %bb.1 123 124 bb.1: 125 S_ENDPGM 0 126... 127 128# GCN-LABEL: name: no_hazard_vcmpx_smov_exec_lo_depctr_ffff 129# GCN: $sgpr0 = S_MOV_B32 $exec_lo 130# GCN-NEXT: S_WAITCNT_DEPCTR 65535 131# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 132--- 133name: no_hazard_vcmpx_smov_exec_lo_depctr_ffff 134body: | 135 bb.0: 136 successors: %bb.1 137 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 138 $sgpr0 = S_MOV_B32 $exec_lo 139 S_WAITCNT_DEPCTR 65535 140 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 141 S_BRANCH %bb.1 142 143 bb.1: 144 S_ENDPGM 0 145... 146 147# GCN-LABEL: name: hazard_vcmpx_smov_exec_lo_depctr_effe 148# GCN: $sgpr0 = S_MOV_B32 $exec_lo 149# GCN: S_WAITCNT_DEPCTR 65534 150# GCN-NEXT: V_CMPX_LE_F32_nosdst_e32 151--- 152name: hazard_vcmpx_smov_exec_lo_depctr_effe 153body: | 154 bb.0: 155 successors: %bb.1 156 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 157 $sgpr0 = S_MOV_B32 $exec_lo 158 S_WAITCNT_DEPCTR 61438 159 SI_KILL_F32_COND_IMM_TERMINATOR $vgpr0, 0, 3, implicit-def $exec, implicit-def $vcc, implicit-def $scc, implicit $exec 160 S_BRANCH %bb.1 161 162 bb.1: 163 S_ENDPGM 0 164... 165