[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / vcmpx-permlane-hazard.mir
blob534a9c1c01ca0a11a32ef6b8aed872dc15bd9356
1 # RUN: llc -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
2 # RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
4 # GCN-LABEL: name: hazard_vcmpx_permlane16
5 # GCN:      V_CMPX_LE_F32_nosdst_e32
6 # GCN:      S_ADD_U32
7 # GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
8 # GCN-NEXT: V_PERMLANE16_B32_e64
9 ---
10 name:            hazard_vcmpx_permlane16
11 body:            |
12   bb.0:
13     successors: %bb.1
14     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
15     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
16     S_BRANCH %bb.1
18   bb.1:
19     $vgpr1 = IMPLICIT_DEF
20     $vgpr2 = IMPLICIT_DEF
21     $sgpr0 = IMPLICIT_DEF
22     $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
23     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
24     S_ENDPGM 0
25 ...
27 # GCN-LABEL: name: hazard_vcmpx_permlanex16
28 # GCN:      V_CMPX_LE_F32_nosdst_e32
29 # GCN:      $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
30 # GCN-NEXT: V_PERMLANEX16_B32_e64
31 ---
32 name:            hazard_vcmpx_permlanex16
33 body:            |
34   bb.0:
35     successors: %bb.1
36     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
37     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
38     S_BRANCH %bb.1
40   bb.1:
41     $vgpr1 = IMPLICIT_DEF
42     $vgpr2 = IMPLICIT_DEF
43     $sgpr0 = IMPLICIT_DEF
44     $sgpr1 = IMPLICIT_DEF
45     $vgpr1 = V_PERMLANEX16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
46     S_ENDPGM 0
47 ...
49 # GCN-LABEL: name: hazard_vcmpx_permlane16_v_nop
50 # GCN:      V_CMPX_LE_F32_nosdst_e32
51 # GCN:      V_NOP
52 # GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
53 # GCN-NEXT: V_PERMLANE16_B32_e64
54 ---
55 name:            hazard_vcmpx_permlane16_v_nop
56 body:            |
57   bb.0:
58     successors: %bb.1
59     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
60     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
61     S_BRANCH %bb.1
63   bb.1:
64     $vgpr1 = IMPLICIT_DEF
65     $vgpr2 = IMPLICIT_DEF
66     $sgpr0 = IMPLICIT_DEF
67     $sgpr1 = IMPLICIT_DEF
68     V_NOP_e32 implicit $exec
69     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
70     S_ENDPGM 0
71 ...
73 # GCN-LABEL: name: hazard_vcmpx_permlane16_far
74 # GCN:      V_CMPX_LE_F32_nosdst_e32
75 # GCN:      $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
76 # GCN-NEXT: V_PERMLANE16_B32_e64
77 ---
78 name:            hazard_vcmpx_permlane16_far
79 body:            |
80   bb.0:
81     successors: %bb.1
82     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
83     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
84     S_BRANCH %bb.1
86   bb.1:
87     $vgpr1 = IMPLICIT_DEF
88     $vgpr2 = IMPLICIT_DEF
89     $sgpr0 = IMPLICIT_DEF
90     $sgpr1 = IMPLICIT_DEF
91     V_NOP_e32 implicit $exec
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     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
101     S_ENDPGM 0
104 # GCN-LABEL: name: hazard_vcmpx_permlane16_no_hazard
105 # GCN:      V_CMPX_LE_F32_nosdst_e32
106 # GCN:      V_ADD_F32
107 # GCN-NEXT: V_PERMLANE16_B32_e64
109 name:            hazard_vcmpx_permlane16_no_hazard
110 body:            |
111   bb.0:
112     successors: %bb.1
113     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
114     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
115     S_BRANCH %bb.1
117   bb.1:
118     $vgpr1 = IMPLICIT_DEF
119     $sgpr0 = IMPLICIT_DEF
120     $sgpr1 = IMPLICIT_DEF
121     $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1,  implicit $mode, implicit $exec
122     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
123     S_ENDPGM 0
126 # GCN-LABEL: name: hazard_vcmpx_permlane16_undef_src
127 # GCN:      V_CMPX_LE_F32_nosdst_e32
128 # GCN:      S_ADD_U32
129 # GCN-NEXT: dead $vgpr1 = V_MOV_B32_e32 undef $vgpr1, implicit $exec
130 # GCN-NEXT: V_PERMLANE16_B32_e64
132 name:            hazard_vcmpx_permlane16_undef_src
133 body:            |
134   bb.0:
135     successors: %bb.1
136     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
137     V_CMPX_LE_F32_nosdst_e32 0, $vgpr0, implicit-def $exec, implicit $mode, implicit $exec
138     S_BRANCH %bb.1
140   bb.1:
141     $vgpr2 = IMPLICIT_DEF
142     $sgpr0 = IMPLICIT_DEF
143     $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
144     $vgpr1 = V_PERMLANE16_B32_e64 0, undef $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, undef $vgpr1, 0, implicit $exec
145     S_ENDPGM 0
148 # GCN-LABEL: name: hazard_vcmpx_e64_permlane16
149 # GCN:      V_CMPX_LE_F32_nosdst_e64
150 # GCN:      S_ADD_U32
151 # GCN-NEXT: $vgpr1 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
152 # GCN-NEXT: V_PERMLANE16_B32_e64
154 name:            hazard_vcmpx_e64_permlane16
155 body:            |
156   bb.0:
157     successors: %bb.1
158     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
159     V_CMPX_LE_F32_nosdst_e64 0, 0, 0, $vgpr0, 0, implicit-def $exec, implicit $mode, implicit $exec
160     S_BRANCH %bb.1
162   bb.1:
163     $vgpr1 = IMPLICIT_DEF
164     $vgpr2 = IMPLICIT_DEF
165     $sgpr0 = IMPLICIT_DEF
166     $sgpr1 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
167     $vgpr1 = V_PERMLANE16_B32_e64 0, killed $vgpr1, 0, killed $sgpr1, 0, killed $sgpr0, $vgpr1, 0, implicit $exec
168     S_ENDPGM 0