[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-pseudo-scalar-transcendental.mir
blob916ead0ec4b6ac469040435d56068dcd75b1228f
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 ---
5 name:            v_s_exp_f32
6 legalized:       true
7 regBankSelected: true
8 tracksRegLiveness: true
9 body:             |
10   bb.0:
11     liveins: $sgpr0
13     ; CHECK-LABEL: name: v_s_exp_f32
14     ; CHECK: liveins: $sgpr0
15     ; CHECK-NEXT: {{  $}}
16     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
17     ; CHECK-NEXT: [[V_S_EXP_F32_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_EXP_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
18     ; CHECK-NEXT: $vgpr0 = COPY [[V_S_EXP_F32_e64_]]
19     %0:sgpr(s32) = COPY $sgpr0
20     %1:sgpr(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.exp2), %0
21     $vgpr0 = COPY %1(s32)
23 ...
24 ---
25 name:            v_s_exp_f16
26 legalized:       true
27 regBankSelected: true
28 tracksRegLiveness: true
29 body:             |
30   bb.0:
31     liveins: $sgpr0
33     ; CHECK-LABEL: name: v_s_exp_f16
34     ; CHECK: liveins: $sgpr0
35     ; CHECK-NEXT: {{  $}}
36     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
37     ; CHECK-NEXT: [[V_S_EXP_F16_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
38     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[V_S_EXP_F16_e64_]]
39     ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]]
40     %0:sgpr(s32) = COPY $sgpr0
41     %1:sgpr(s16) = G_TRUNC %0(s32)
42     %2:sgpr(s16) = G_INTRINSIC intrinsic(@llvm.amdgcn.exp2), %1
43     %3:sgpr(s32) = G_ANYEXT %2(s16)
44     $vgpr0 = COPY %3(s32)
46 ...
47 ---
48 name:            v_s_log_f32
49 legalized:       true
50 regBankSelected: true
51 tracksRegLiveness: true
52 body:             |
53   bb.0:
54     liveins: $sgpr0
56     ; CHECK-LABEL: name: v_s_log_f32
57     ; CHECK: liveins: $sgpr0
58     ; CHECK-NEXT: {{  $}}
59     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
60     ; CHECK-NEXT: [[V_S_LOG_F32_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_LOG_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
61     ; CHECK-NEXT: $vgpr0 = COPY [[V_S_LOG_F32_e64_]]
62     %0:sgpr(s32) = COPY $sgpr0
63     %1:sgpr(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.log), %0
64     $vgpr0 = COPY %1(s32)
66 ...
67 ---
68 name:            v_s_log_f16
69 legalized:       true
70 regBankSelected: true
71 tracksRegLiveness: true
72 body:             |
73   bb.0:
74     liveins: $sgpr0
76     ; CHECK-LABEL: name: v_s_log_f16
77     ; CHECK: liveins: $sgpr0
78     ; CHECK-NEXT: {{  $}}
79     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
80     ; CHECK-NEXT: [[V_S_LOG_F16_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
81     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[V_S_LOG_F16_e64_]]
82     ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]]
83     %0:sgpr(s32) = COPY $sgpr0
84     %1:sgpr(s16) = G_TRUNC %0(s32)
85     %2:sgpr(s16) = G_INTRINSIC intrinsic(@llvm.amdgcn.log), %1
86     %3:sgpr(s32) = G_ANYEXT %2(s16)
87     $vgpr0 = COPY %3(s32)
89 ...
90 ---
91 name:            v_s_rcp_f32
92 legalized:       true
93 regBankSelected: true
94 tracksRegLiveness: true
95 body:             |
96   bb.0:
97     liveins: $sgpr0
99     ; CHECK-LABEL: name: v_s_rcp_f32
100     ; CHECK: liveins: $sgpr0
101     ; CHECK-NEXT: {{  $}}
102     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
103     ; CHECK-NEXT: [[V_S_RCP_F32_e64_:%[0-9]+]]:sreg_32_xexec = nnan ninf nsz arcp contract afn reassoc nofpexcept V_S_RCP_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
104     ; CHECK-NEXT: $vgpr0 = COPY [[V_S_RCP_F32_e64_]]
105     %0:sgpr(s32) = COPY $sgpr0
106     %1:sgpr(s32) = nnan ninf nsz arcp contract afn reassoc G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), %0(s32)
107     $vgpr0 = COPY %1(s32)
111 name:            v_s_rcp_f16
112 legalized:       true
113 regBankSelected: true
114 tracksRegLiveness: true
115 body:             |
116   bb.0:
117     liveins: $sgpr0
119     ; CHECK-LABEL: name: v_s_rcp_f16
120     ; CHECK: liveins: $sgpr0
121     ; CHECK-NEXT: {{  $}}
122     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
123     ; CHECK-NEXT: [[V_S_RCP_F16_e64_:%[0-9]+]]:sreg_32_xexec = nnan ninf nsz arcp contract afn reassoc nofpexcept V_S_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
124     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[V_S_RCP_F16_e64_]]
125     ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]]
126     %0:sgpr(s32) = COPY $sgpr0
127     %1:sgpr(s16) = G_TRUNC %0(s32)
128     %2:sgpr(s16) = nnan ninf nsz arcp contract afn reassoc G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), %1(s16)
129     %3:sgpr(s32) = G_ANYEXT %2(s16)
130     $vgpr0 = COPY %3(s32)
134 name:            v_s_rsq_f32
135 legalized:       true
136 regBankSelected: true
137 tracksRegLiveness: true
138 body:             |
139   bb.0:
140     liveins: $sgpr0
142     ; CHECK-LABEL: name: v_s_rsq_f32
143     ; CHECK: liveins: $sgpr0
144     ; CHECK-NEXT: {{  $}}
145     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
146     ; CHECK-NEXT: [[V_S_RSQ_F32_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_RSQ_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
147     ; CHECK-NEXT: $vgpr0 = COPY [[V_S_RSQ_F32_e64_]]
148     %0:sgpr(s32) = COPY $sgpr0
149     %1:sgpr(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %0(s32)
150     $vgpr0 = COPY %1(s32)
154 name:            v_s_rsq_f16
155 legalized:       true
156 regBankSelected: true
157 tracksRegLiveness: true
158 body:             |
159   bb.0:
160     liveins: $sgpr0
162     ; CHECK-LABEL: name: v_s_rsq_f16
163     ; CHECK: liveins: $sgpr0
164     ; CHECK-NEXT: {{  $}}
165     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
166     ; CHECK-NEXT: [[V_S_RSQ_F16_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
167     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[V_S_RSQ_F16_e64_]]
168     ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]]
169     %0:sgpr(s32) = COPY $sgpr0
170     %1:sgpr(s16) = G_TRUNC %0(s32)
171     %2:sgpr(s16) = G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %1(s16)
172     %3:sgpr(s32) = G_ANYEXT %2(s16)
173     $vgpr0 = COPY %3(s32)
177 name:            v_s_sqrt_f32
178 legalized:       true
179 regBankSelected: true
180 tracksRegLiveness: true
181 body:             |
182   bb.0:
183     liveins: $sgpr0
185     ; CHECK-LABEL: name: v_s_sqrt_f32
186     ; CHECK: liveins: $sgpr0
187     ; CHECK-NEXT: {{  $}}
188     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
189     ; CHECK-NEXT: [[V_S_SQRT_F32_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_SQRT_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
190     ; CHECK-NEXT: $vgpr0 = COPY [[V_S_SQRT_F32_e64_]]
191     %0:sgpr(s32) = COPY $sgpr0
192     %1:sgpr(s32) = G_FSQRT %0
193     $vgpr0 = COPY %1(s32)
197 name:            v_s_sqrt_f16
198 legalized:       true
199 regBankSelected: true
200 tracksRegLiveness: true
201 body:             |
202   bb.0:
203     liveins: $sgpr0
205     ; CHECK-LABEL: name: v_s_sqrt_f16
206     ; CHECK: liveins: $sgpr0
207     ; CHECK-NEXT: {{  $}}
208     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
209     ; CHECK-NEXT: [[V_S_SQRT_F16_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
210     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[V_S_SQRT_F16_e64_]]
211     ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]]
212     %0:sgpr(s32) = COPY $sgpr0
213     %1:sgpr(s16) = G_TRUNC %0(s32)
214     %2:sgpr(s16) = G_FSQRT %1
215     %3:sgpr(s32) = G_ANYEXT %2(s16)
216     $vgpr0 = COPY %3(s32)
220 name:            v_amdgcn_sqrt_f32
221 legalized:       true
222 regBankSelected: true
223 tracksRegLiveness: true
224 body:             |
225   bb.0:
226     liveins: $sgpr0
228     ; CHECK-LABEL: name: v_amdgcn_sqrt_f32
229     ; CHECK: liveins: $sgpr0
230     ; CHECK-NEXT: {{  $}}
231     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
232     ; CHECK-NEXT: [[V_S_SQRT_F32_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_SQRT_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
233     ; CHECK-NEXT: $vgpr0 = COPY [[V_S_SQRT_F32_e64_]]
234     %0:sgpr(s32) = COPY $sgpr0
235     %1:sgpr(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sqrt), %0(s32)
236     $vgpr0 = COPY %1(s32)
240 name:            v_amdgcn_sqrt_f16
241 legalized:       true
242 regBankSelected: true
243 tracksRegLiveness: true
244 body:             |
245   bb.0:
246     liveins: $sgpr0
248     ; CHECK-LABEL: name: v_amdgcn_sqrt_f16
249     ; CHECK: liveins: $sgpr0
250     ; CHECK-NEXT: {{  $}}
251     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
252     ; CHECK-NEXT: [[V_S_SQRT_F16_e64_:%[0-9]+]]:sreg_32_xexec = nofpexcept V_S_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
253     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[V_S_SQRT_F16_e64_]]
254     ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]]
255     %0:sgpr(s32) = COPY $sgpr0
256     %1:sgpr(s16) = G_TRUNC %0(s32)
257     %2:sgpr(s16) = G_INTRINSIC intrinsic(@llvm.amdgcn.sqrt), %1(s16)
258     %3:sgpr(s32) = G_ANYEXT %2(s16)
259     $vgpr0 = COPY %3(s32)