[RISCV] Support 'f' Inline Assembly Constraint
[llvm-core.git] / test / CodeGen / AMDGPU / vcmpx-exec-war-hazard.mir
blob2e66aee4f43e0de750efe34e28f89a91b7454dfa
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
7 ---
8 name:            hazard_vcmpx_smov_exec_lo
9 body:            |
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
17   bb.1:
18     S_ENDPGM 0
19 ...
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 ---
26 name:            hazard_vcmpx_smov_exec
27 body:            |
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
35   bb.1:
36     S_ENDPGM 0
37 ...
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 ---
43 name:            no_hazard_vcmpx_vmov_exec_lo
44 body:            |
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
51   bb.1:
52     S_ENDPGM 0
53 ...
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 ---
59 name:            no_hazard_vcmpx_valu_impuse_exec
60 body:            |
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
67   bb.1:
68     S_ENDPGM 0
69 ...
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 ---
76 name:            no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_imp
77 body:            |
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
86   bb.1:
87     S_ENDPGM 0
88 ...
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 ---
95 name:            no_hazard_vcmpx_smov_exec_lo_valu_writes_sgpr_exp
96 body:            |
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
105   bb.1:
106     S_ENDPGM 0
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
115 body:            |
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
124   bb.1:
125     S_ENDPGM 0
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
134 body:            |
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
143   bb.1:
144     S_ENDPGM 0
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
153 body:            |
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
162   bb.1:
163     S_ENDPGM 0