Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / vcmpx-permlane-hazard.mir
blob3f40a57ca1491e1d272e0cfa7f21e32e12d283ed
1 # RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
3 # RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
5 # GCN-LABEL: name: hazard_vcmpx_permlane16
6 # GCN:      V_CMPX_LE_F32_nosdst_e32
7 # GCN:      S_ADD_U32
8 # GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
9 # GCN-NEXT: V_PERMLANE16_B32_e64
10 ---
11 name:            hazard_vcmpx_permlane16
12 body:            |
13   bb.0:
14     successors: %bb.1
15     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
16     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
17     S_BRANCH %bb.1
19   bb.1:
20     $vgpr1 = IMPLICIT_DEF
21     $vgpr2 = IMPLICIT_DEF
22     $sgpr0 = IMPLICIT_DEF
23     $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
24     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
25     S_ENDPGM 0
26 ...
28 # GCN-LABEL: name: hazard_vcmpx_permlanex16
29 # GCN:      V_CMPX_LE_F32_nosdst_e32
30 # GCN:      $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
31 # GCN-NEXT: V_PERMLANEX16_B32_e64
32 ---
33 name:            hazard_vcmpx_permlanex16
34 body:            |
35   bb.0:
36     successors: %bb.1
37     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
38     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
39     S_BRANCH %bb.1
41   bb.1:
42     $vgpr1 = IMPLICIT_DEF
43     $vgpr2 = IMPLICIT_DEF
44     $sgpr0 = IMPLICIT_DEF
45     $sgpr1 = IMPLICIT_DEF
46     $vgpr1 = V_PERMLANEX16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
47     S_ENDPGM 0
48 ...
50 # GCN-LABEL: name: hazard_vcmpx_permlane16_v_nop
51 # GCN:      V_CMPX_LE_F32_nosdst_e32
52 # GCN:      V_NOP
53 # GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
54 # GCN-NEXT: V_PERMLANE16_B32_e64
55 ---
56 name:            hazard_vcmpx_permlane16_v_nop
57 body:            |
58   bb.0:
59     successors: %bb.1
60     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
61     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
62     S_BRANCH %bb.1
64   bb.1:
65     $vgpr1 = IMPLICIT_DEF
66     $vgpr2 = IMPLICIT_DEF
67     $sgpr0 = IMPLICIT_DEF
68     $sgpr1 = IMPLICIT_DEF
69     V_NOP_e32 implicit $exec
70     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
71     S_ENDPGM 0
72 ...
74 # GCN-LABEL: name: hazard_vcmpx_permlane16_far
75 # GCN:      V_CMPX_LE_F32_nosdst_e32
76 # GCN:      $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
77 # GCN-NEXT: V_PERMLANE16_B32_e64
78 ---
79 name:            hazard_vcmpx_permlane16_far
80 body:            |
81   bb.0:
82     successors: %bb.1
83     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
84     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
85     S_BRANCH %bb.1
87   bb.1:
88     $vgpr1 = IMPLICIT_DEF
89     $vgpr2 = IMPLICIT_DEF
90     $sgpr0 = IMPLICIT_DEF
91     $sgpr1 = IMPLICIT_DEF
92     V_NOP_e32 implicit $exec
93     V_NOP_e32 implicit $exec
94     V_NOP_e32 implicit $exec
95     V_NOP_e32 implicit $exec
96     V_NOP_e32 implicit $exec
97     V_NOP_e32 implicit $exec
98     V_NOP_e32 implicit $exec
99     V_NOP_e32 implicit $exec
100     V_NOP_e32 implicit $exec
101     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
102     S_ENDPGM 0
105 # GCN-LABEL: name: hazard_vcmpx_permlane16_no_hazard
106 # GCN:      V_CMPX_LE_F32_nosdst_e32
107 # GCN:      V_ADD_F32
108 # GCN-NEXT: V_PERMLANE16_B32_e64
110 name:            hazard_vcmpx_permlane16_no_hazard
111 body:            |
112   bb.0:
113     successors: %bb.1
114     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
115     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
116     S_BRANCH %bb.1
118   bb.1:
119     $vgpr1 = IMPLICIT_DEF
120     $sgpr0 = IMPLICIT_DEF
121     $sgpr1 = IMPLICIT_DEF
122     $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1,  implicit $mode, implicit $exec
123     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
124     S_ENDPGM 0
127 # GCN-LABEL: name: hazard_vcmpx_permlane16_undef_src
128 # GCN:      V_CMPX_LE_F32_nosdst_e32
129 # GCN:      S_ADD_U32
130 # GCN-NEXT: dead $vgpr1 = V_MOV_B32_e32 undef $vgpr1, implicit $exec
131 # GCN-NEXT: V_PERMLANE16_B32_e64
133 name:            hazard_vcmpx_permlane16_undef_src
134 body:            |
135   bb.0:
136     successors: %bb.1
137     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
138     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
139     S_BRANCH %bb.1
141   bb.1:
142     $vgpr2 = IMPLICIT_DEF
143     $sgpr0 = IMPLICIT_DEF
144     $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
145     $vgpr1 = V_PERMLANE16_B32_e64 0, undef $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, undef $vgpr1, 0, implicit $exec
146     S_ENDPGM 0
149 # GCN-LABEL: name: hazard_vcmpx_e64_permlane16
150 # GCN:      V_CMPX_LE_F32_nosdst_e64
151 # GCN:      S_ADD_U32
152 # GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
153 # GCN-NEXT: V_PERMLANE16_B32_e64
155 name:            hazard_vcmpx_e64_permlane16
156 body:            |
157   bb.0:
158     successors: %bb.1
159     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
160     V_CMPX_LE_F32_nosdst_e64 0, 0, 0, $vgpr0, 0, implicit-def $exec, implicit $mode, implicit $exec
161     S_BRANCH %bb.1
163   bb.1:
164     $vgpr1 = IMPLICIT_DEF
165     $vgpr2 = IMPLICIT_DEF
166     $sgpr0 = IMPLICIT_DEF
167     $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
168     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
169     S_ENDPGM 0
172 # GCN-LABEL: name: hazard_vcmpx_permlane64
173 # GCN:      V_CMPX_LE_F32_nosdst_e32
174 # GCN:      S_ADD_U32
175 # GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
176 # GCN-NEXT: V_PERMLANE64_B32
178 name:            hazard_vcmpx_permlane64
179 body:            |
180   bb.0:
181     successors: %bb.1
182     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
183     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
184     S_BRANCH %bb.1
186   bb.1:
187     $vgpr1 = IMPLICIT_DEF
188     $vgpr2 = IMPLICIT_DEF
189     $sgpr0 = IMPLICIT_DEF
190     $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
191     $vgpr1 = V_PERMLANE64_B32 killed $vgpr1, implicit $exec
192     S_ENDPGM 0