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
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
8 name: hazard_vcmpx_smov_exec_lo
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
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
26 name: hazard_vcmpx_smov_exec
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
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
43 name: no_hazard_vcmpx_vmov_exec_lo
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
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
59 name: no_hazard_vcmpx_valu_impuse_exec
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
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
76 name: no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_imp
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
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
95 name: no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_exp
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
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
114 name: no_hazard_vcmpx_smov_exec_lo_depctr_fffe
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
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
133 name: no_hazard_vcmpx_smov_exec_lo_depctr_ffff
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
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
152 name: hazard_vcmpx_smov_exec_lo_depctr_effe
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