annotate llvm/test/CodeGen/AMDGPU/fold-imm-f16-f32.mir @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1f2b6ac9f198
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 # RUN: llc --mtriple=amdgcn--amdhsa -mcpu=fiji -verify-machineinstrs -run-pass si-fold-operands,si-shrink-instructions %s -o - | FileCheck %s
anatofuz
parents:
diff changeset
2 --- |
anatofuz
parents:
diff changeset
3 define amdgpu_kernel void @add_f32_1.0_one_f16_use() #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
4 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
5 %f16.val1 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
6 %f32.val = load volatile float, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
7 %f16.add0 = fadd half %f16.val0, 0xH3C00
anatofuz
parents:
diff changeset
8 %f32.add = fadd float %f32.val, 1.000000e+00
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
9 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
10 store volatile float %f32.add, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
11 ret void
anatofuz
parents:
diff changeset
12 }
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 define amdgpu_kernel void @add_f32_1.0_multi_f16_use() #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
15 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
16 %f16.val1 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
17 %f32.val = load volatile float, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
18 %f16.add0 = fadd half %f16.val0, 0xH3C00
anatofuz
parents:
diff changeset
19 %f32.add = fadd float %f32.val, 1.000000e+00
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
20 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
21 store volatile float %f32.add, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
22 ret void
anatofuz
parents:
diff changeset
23 }
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 define amdgpu_kernel void @add_f32_1.0_one_f32_use_one_f16_use () #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
26 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
27 %f16.val1 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
28 %f32.val = load volatile float, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
29 %f16.add0 = fadd half %f16.val0, 0xH3C00
anatofuz
parents:
diff changeset
30 %f32.add = fadd float %f32.val, 1.000000e+00
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
31 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
32 store volatile float %f32.add, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
33 ret void
anatofuz
parents:
diff changeset
34 }
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 define amdgpu_kernel void @add_f32_1.0_one_f32_use_multi_f16_use () #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
37 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
38 %f16.val1 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
39 %f32.val = load volatile float, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
40 %f16.add0 = fadd half %f16.val0, 0xH3C00
anatofuz
parents:
diff changeset
41 %f16.add1 = fadd half %f16.val1, 0xH3C00
anatofuz
parents:
diff changeset
42 %f32.add = fadd float %f32.val, 1.000000e+00
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
43 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
44 store volatile half %f16.add1, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
45 store volatile float %f32.add, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
46 ret void
anatofuz
parents:
diff changeset
47 }
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49 define amdgpu_kernel void @add_i32_1_multi_f16_use() #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
50 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
51 %f16.val1 = load volatile half, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
52 %f16.add0 = fadd half %f16.val0, 0xH0001
anatofuz
parents:
diff changeset
53 %f16.add1 = fadd half %f16.val1, 0xH0001
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
54 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
55 store volatile half %f16.add1,ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
56 ret void
anatofuz
parents:
diff changeset
57 }
anatofuz
parents:
diff changeset
58
anatofuz
parents:
diff changeset
59 define amdgpu_kernel void @add_i32_m2_one_f32_use_multi_f16_use () #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
60 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
61 %f16.val1 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
62 %f32.val = load volatile float, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
63 %f16.add0 = fadd half %f16.val0, 0xHFFFE
anatofuz
parents:
diff changeset
64 %f16.add1 = fadd half %f16.val1, 0xHFFFE
anatofuz
parents:
diff changeset
65 %f32.add = fadd float %f32.val, 0xffffffffc0000000
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
66 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
67 store volatile half %f16.add1, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
68 store volatile float %f32.add, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
69 ret void
anatofuz
parents:
diff changeset
70 }
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 define amdgpu_kernel void @add_f16_1.0_multi_f32_use() #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
73 %f32.val0 = load volatile float, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
74 %f32.val1 = load volatile float, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
75 %f32.val = load volatile float, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
76 %f32.add0 = fadd float %f32.val0, 1.0
anatofuz
parents:
diff changeset
77 %f32.add1 = fadd float %f32.val1, 1.0
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
78 store volatile float %f32.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
79 store volatile float %f32.add1, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
80 ret void
anatofuz
parents:
diff changeset
81 }
anatofuz
parents:
diff changeset
82
anatofuz
parents:
diff changeset
83 define amdgpu_kernel void @add_f16_1.0_other_high_bits_multi_f16_use() #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
84 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
85 %f16.val1 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
86 %f32.val = load volatile half, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
87 %f16.add0 = fadd half %f16.val0, 0xH3C00
anatofuz
parents:
diff changeset
88 %f32.add = fadd half %f32.val, 1.000000e+00
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
89 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
90 store volatile half %f32.add, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
91 ret void
anatofuz
parents:
diff changeset
92 }
anatofuz
parents:
diff changeset
93
anatofuz
parents:
diff changeset
94 define amdgpu_kernel void @add_f16_1.0_other_high_bits_use_f16_f32() #0 {
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
95 %f16.val0 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
96 %f16.val1 = load volatile half, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
97 %f32.val = load volatile half, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
98 %f16.add0 = fadd half %f16.val0, 0xH3C00
anatofuz
parents:
diff changeset
99 %f32.add = fadd half %f32.val, 1.000000e+00
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
100 store volatile half %f16.add0, ptr addrspace(1) undef
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
101 store volatile half %f32.add, ptr addrspace(1) undef
150
anatofuz
parents:
diff changeset
102 ret void
anatofuz
parents:
diff changeset
103 }
anatofuz
parents:
diff changeset
104
anatofuz
parents:
diff changeset
105 attributes #0 = { nounwind }
anatofuz
parents:
diff changeset
106
anatofuz
parents:
diff changeset
107 ...
anatofuz
parents:
diff changeset
108 ---
anatofuz
parents:
diff changeset
109
anatofuz
parents:
diff changeset
110 # f32 1.0 with a single use should be folded as the low 32-bits of a
anatofuz
parents:
diff changeset
111 # literal constant.
anatofuz
parents:
diff changeset
112
anatofuz
parents:
diff changeset
113 # CHECK-LABEL: name: add_f32_1.0_one_f16_use
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
114 # CHECK: %13:vgpr_32 = V_ADD_F16_e32 1065353216, killed %11, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
115
anatofuz
parents:
diff changeset
116 name: add_f32_1.0_one_f16_use
anatofuz
parents:
diff changeset
117 alignment: 1
anatofuz
parents:
diff changeset
118 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
119 legalized: false
anatofuz
parents:
diff changeset
120 regBankSelected: false
anatofuz
parents:
diff changeset
121 selected: false
anatofuz
parents:
diff changeset
122 tracksRegLiveness: true
anatofuz
parents:
diff changeset
123 registers:
anatofuz
parents:
diff changeset
124 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
125 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
126 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
127 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
128 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
129 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
130 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
131 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
132 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
133 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
134 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
135 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
136 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
137 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
138 frameInfo:
anatofuz
parents:
diff changeset
139 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
140 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
141 hasStackMap: false
anatofuz
parents:
diff changeset
142 hasPatchPoint: false
anatofuz
parents:
diff changeset
143 stackSize: 0
anatofuz
parents:
diff changeset
144 offsetAdjustment: 0
anatofuz
parents:
diff changeset
145 maxAlignment: 0
anatofuz
parents:
diff changeset
146 adjustsStack: false
anatofuz
parents:
diff changeset
147 hasCalls: false
anatofuz
parents:
diff changeset
148 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
149 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
150 hasVAStart: false
anatofuz
parents:
diff changeset
151 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
152 body: |
anatofuz
parents:
diff changeset
153 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
154 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
155 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
156 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
157 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
158 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
159 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
160 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
161 %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
162 %12 = V_MOV_B32_e32 1065353216, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
163 %13 = V_ADD_F16_e64 0, killed %11, 0, %12, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
164 BUFFER_STORE_SHORT_OFFSET killed %13, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
165 S_ENDPGM 0
anatofuz
parents:
diff changeset
166
anatofuz
parents:
diff changeset
167 ...
anatofuz
parents:
diff changeset
168 ---
anatofuz
parents:
diff changeset
169 # Materialized f32 inline immediate should not be folded into the f16
anatofuz
parents:
diff changeset
170 # operands
anatofuz
parents:
diff changeset
171
anatofuz
parents:
diff changeset
172 # CHECK-LABEL: name: add_f32_1.0_multi_f16_use
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
173 # CHECK: %14:vgpr_32 = V_ADD_F16_e32 1065353216, killed %11, implicit $mode, implicit $exec
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
174 # CHECK: %15:vgpr_32 = V_ADD_F16_e32 1065353216, killed %12, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
175
anatofuz
parents:
diff changeset
176
anatofuz
parents:
diff changeset
177 name: add_f32_1.0_multi_f16_use
anatofuz
parents:
diff changeset
178 alignment: 1
anatofuz
parents:
diff changeset
179 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
180 legalized: false
anatofuz
parents:
diff changeset
181 regBankSelected: false
anatofuz
parents:
diff changeset
182 selected: false
anatofuz
parents:
diff changeset
183 tracksRegLiveness: true
anatofuz
parents:
diff changeset
184 registers:
anatofuz
parents:
diff changeset
185 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
186 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
187 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
188 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
189 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
190 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
191 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
192 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
193 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
194 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
195 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
196 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
197 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
198 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
199 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
200 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
201 frameInfo:
anatofuz
parents:
diff changeset
202 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
203 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
204 hasStackMap: false
anatofuz
parents:
diff changeset
205 hasPatchPoint: false
anatofuz
parents:
diff changeset
206 stackSize: 0
anatofuz
parents:
diff changeset
207 offsetAdjustment: 0
anatofuz
parents:
diff changeset
208 maxAlignment: 0
anatofuz
parents:
diff changeset
209 adjustsStack: false
anatofuz
parents:
diff changeset
210 hasCalls: false
anatofuz
parents:
diff changeset
211 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
212 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
213 hasVAStart: false
anatofuz
parents:
diff changeset
214 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
215 body: |
anatofuz
parents:
diff changeset
216 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
217 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
218 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
219 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
220 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
221 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
222 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
223 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
224 %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
225 %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
226 %13 = V_MOV_B32_e32 1065353216, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
227 %14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
228 %15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
229 BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
230 BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
231 S_ENDPGM 0
anatofuz
parents:
diff changeset
232
anatofuz
parents:
diff changeset
233 ...
anatofuz
parents:
diff changeset
234 ---
anatofuz
parents:
diff changeset
235
anatofuz
parents:
diff changeset
236 # f32 1.0 should be folded into the single f32 use as an inline
anatofuz
parents:
diff changeset
237 # immediate, and folded into the single f16 use as a literal constant
anatofuz
parents:
diff changeset
238
anatofuz
parents:
diff changeset
239 # CHECK-LABEL: name: add_f32_1.0_one_f32_use_one_f16_use
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
240 # CHECK: %15:vgpr_32 = V_ADD_F16_e32 1065353216, %11, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
241 # CHECK: %16:vgpr_32 = V_ADD_F32_e32 1065353216, killed %13, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
242
anatofuz
parents:
diff changeset
243 name: add_f32_1.0_one_f32_use_one_f16_use
anatofuz
parents:
diff changeset
244 alignment: 1
anatofuz
parents:
diff changeset
245 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
246 legalized: false
anatofuz
parents:
diff changeset
247 regBankSelected: false
anatofuz
parents:
diff changeset
248 selected: false
anatofuz
parents:
diff changeset
249 tracksRegLiveness: true
anatofuz
parents:
diff changeset
250 registers:
anatofuz
parents:
diff changeset
251 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
252 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
253 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
254 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
255 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
256 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
257 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
258 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
259 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
260 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
261 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
262 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
263 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
264 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
265 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
266 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
267 - { id: 16, class: vgpr_32 }
anatofuz
parents:
diff changeset
268 frameInfo:
anatofuz
parents:
diff changeset
269 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
270 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
271 hasStackMap: false
anatofuz
parents:
diff changeset
272 hasPatchPoint: false
anatofuz
parents:
diff changeset
273 stackSize: 0
anatofuz
parents:
diff changeset
274 offsetAdjustment: 0
anatofuz
parents:
diff changeset
275 maxAlignment: 0
anatofuz
parents:
diff changeset
276 adjustsStack: false
anatofuz
parents:
diff changeset
277 hasCalls: false
anatofuz
parents:
diff changeset
278 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
279 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
280 hasVAStart: false
anatofuz
parents:
diff changeset
281 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
282 body: |
anatofuz
parents:
diff changeset
283 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
284 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
285 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
286 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
287 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
288 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
289 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
290 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
291 %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
292 %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
293 %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
294 %14 = V_MOV_B32_e32 1065353216, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
295 %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
296 %16 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
297 BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
298 BUFFER_STORE_DWORD_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
299 S_ENDPGM 0
anatofuz
parents:
diff changeset
300
anatofuz
parents:
diff changeset
301 ...
anatofuz
parents:
diff changeset
302 ---
anatofuz
parents:
diff changeset
303
anatofuz
parents:
diff changeset
304 # f32 1.0 should be folded for the single f32 use as an inline
anatofuz
parents:
diff changeset
305 # constant, and not folded as a multi-use literal for the f16 cases
anatofuz
parents:
diff changeset
306
anatofuz
parents:
diff changeset
307 # CHECK-LABEL: name: add_f32_1.0_one_f32_use_multi_f16_use
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
308 # CHECK: %15:vgpr_32 = V_ADD_F16_e32 1065353216, %11, implicit $mode, implicit $exec
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
309 # CHECK: %16:vgpr_32 = V_ADD_F16_e32 1065353216, %12, implicit $mode, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
310 # CHECK: %17:vgpr_32 = V_ADD_F32_e32 1065353216, killed %13, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
311
anatofuz
parents:
diff changeset
312 name: add_f32_1.0_one_f32_use_multi_f16_use
anatofuz
parents:
diff changeset
313 alignment: 1
anatofuz
parents:
diff changeset
314 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
315 legalized: false
anatofuz
parents:
diff changeset
316 regBankSelected: false
anatofuz
parents:
diff changeset
317 selected: false
anatofuz
parents:
diff changeset
318 tracksRegLiveness: true
anatofuz
parents:
diff changeset
319 registers:
anatofuz
parents:
diff changeset
320 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
321 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
322 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
323 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
324 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
325 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
326 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
327 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
328 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
329 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
330 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
331 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
332 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
333 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
334 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
335 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
336 - { id: 16, class: vgpr_32 }
anatofuz
parents:
diff changeset
337 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
338 frameInfo:
anatofuz
parents:
diff changeset
339 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
340 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
341 hasStackMap: false
anatofuz
parents:
diff changeset
342 hasPatchPoint: false
anatofuz
parents:
diff changeset
343 stackSize: 0
anatofuz
parents:
diff changeset
344 offsetAdjustment: 0
anatofuz
parents:
diff changeset
345 maxAlignment: 0
anatofuz
parents:
diff changeset
346 adjustsStack: false
anatofuz
parents:
diff changeset
347 hasCalls: false
anatofuz
parents:
diff changeset
348 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
349 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
350 hasVAStart: false
anatofuz
parents:
diff changeset
351 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
352 body: |
anatofuz
parents:
diff changeset
353 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
354 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
355 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
356 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
357 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
358 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
359 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
360 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
361 %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
362 %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
363 %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
364 %14 = V_MOV_B32_e32 1065353216, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
365 %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
366 %16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
367 %17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
368 BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
369 BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
370 BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
371 S_ENDPGM 0
anatofuz
parents:
diff changeset
372
anatofuz
parents:
diff changeset
373 ...
anatofuz
parents:
diff changeset
374 ---
anatofuz
parents:
diff changeset
375 # CHECK-LABEL: name: add_i32_1_multi_f16_use
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
376 # CHECK: %14:vgpr_32 = V_ADD_F16_e32 1, killed %11, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
377 # CHECK: %15:vgpr_32 = V_ADD_F16_e32 1, killed %12, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
378
anatofuz
parents:
diff changeset
379
anatofuz
parents:
diff changeset
380 name: add_i32_1_multi_f16_use
anatofuz
parents:
diff changeset
381 alignment: 1
anatofuz
parents:
diff changeset
382 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
383 legalized: false
anatofuz
parents:
diff changeset
384 regBankSelected: false
anatofuz
parents:
diff changeset
385 selected: false
anatofuz
parents:
diff changeset
386 tracksRegLiveness: true
anatofuz
parents:
diff changeset
387 registers:
anatofuz
parents:
diff changeset
388 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
389 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
390 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
391 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
392 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
393 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
394 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
395 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
396 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
397 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
398 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
399 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
400 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
401 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
402 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
403 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
404 frameInfo:
anatofuz
parents:
diff changeset
405 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
406 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
407 hasStackMap: false
anatofuz
parents:
diff changeset
408 hasPatchPoint: false
anatofuz
parents:
diff changeset
409 stackSize: 0
anatofuz
parents:
diff changeset
410 offsetAdjustment: 0
anatofuz
parents:
diff changeset
411 maxAlignment: 0
anatofuz
parents:
diff changeset
412 adjustsStack: false
anatofuz
parents:
diff changeset
413 hasCalls: false
anatofuz
parents:
diff changeset
414 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
415 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
416 hasVAStart: false
anatofuz
parents:
diff changeset
417 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
418 body: |
anatofuz
parents:
diff changeset
419 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
420 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
421 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
422 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
423 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
424 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
425 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
426 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
427 %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
428 %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
429 %13 = V_MOV_B32_e32 1, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
430 %14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
431 %15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
432 BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
433 BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
434 S_ENDPGM 0
anatofuz
parents:
diff changeset
435
anatofuz
parents:
diff changeset
436 ...
anatofuz
parents:
diff changeset
437 ---
anatofuz
parents:
diff changeset
438
anatofuz
parents:
diff changeset
439 # CHECK-LABEL: name: add_i32_m2_one_f32_use_multi_f16_use
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
440 # CHECK: %15:vgpr_32 = V_ADD_F16_e32 -2, %11, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
441 # CHECK: %16:vgpr_32 = V_ADD_F16_e32 -2, %12, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
442 # CHECK: %17:vgpr_32 = V_ADD_F32_e32 -2, killed %13, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
443
anatofuz
parents:
diff changeset
444 name: add_i32_m2_one_f32_use_multi_f16_use
anatofuz
parents:
diff changeset
445 alignment: 1
anatofuz
parents:
diff changeset
446 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
447 legalized: false
anatofuz
parents:
diff changeset
448 regBankSelected: false
anatofuz
parents:
diff changeset
449 selected: false
anatofuz
parents:
diff changeset
450 tracksRegLiveness: true
anatofuz
parents:
diff changeset
451 registers:
anatofuz
parents:
diff changeset
452 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
453 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
454 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
455 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
456 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
457 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
458 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
459 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
460 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
461 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
462 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
463 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
464 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
465 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
466 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
467 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
468 - { id: 16, class: vgpr_32 }
anatofuz
parents:
diff changeset
469 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
470 frameInfo:
anatofuz
parents:
diff changeset
471 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
472 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
473 hasStackMap: false
anatofuz
parents:
diff changeset
474 hasPatchPoint: false
anatofuz
parents:
diff changeset
475 stackSize: 0
anatofuz
parents:
diff changeset
476 offsetAdjustment: 0
anatofuz
parents:
diff changeset
477 maxAlignment: 0
anatofuz
parents:
diff changeset
478 adjustsStack: false
anatofuz
parents:
diff changeset
479 hasCalls: false
anatofuz
parents:
diff changeset
480 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
481 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
482 hasVAStart: false
anatofuz
parents:
diff changeset
483 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
484 body: |
anatofuz
parents:
diff changeset
485 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
486 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
487 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
488 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
489 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
490 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
491 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
492 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
493 %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
494 %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
495 %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
496 %14 = V_MOV_B32_e32 -2, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
497 %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
498 %16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
499 %17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
500 BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
501 BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
502 BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
503 S_ENDPGM 0
anatofuz
parents:
diff changeset
504
anatofuz
parents:
diff changeset
505 ...
anatofuz
parents:
diff changeset
506 ---
anatofuz
parents:
diff changeset
507
anatofuz
parents:
diff changeset
508 # f32 1.0 should be folded for the single f32 use as an inline
anatofuz
parents:
diff changeset
509 # constant, and not folded as a multi-use literal for the f16 cases
anatofuz
parents:
diff changeset
510
anatofuz
parents:
diff changeset
511 # CHECK-LABEL: name: add_f16_1.0_multi_f32_use
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
512 # CHECK: %14:vgpr_32 = V_ADD_F32_e32 15360, %11, implicit $mode, implicit $exec
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
513 # CHECK: %15:vgpr_32 = V_ADD_F32_e32 15360, %12, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
514
anatofuz
parents:
diff changeset
515 name: add_f16_1.0_multi_f32_use
anatofuz
parents:
diff changeset
516 alignment: 1
anatofuz
parents:
diff changeset
517 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
518 legalized: false
anatofuz
parents:
diff changeset
519 regBankSelected: false
anatofuz
parents:
diff changeset
520 selected: false
anatofuz
parents:
diff changeset
521 tracksRegLiveness: true
anatofuz
parents:
diff changeset
522 registers:
anatofuz
parents:
diff changeset
523 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
524 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
525 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
526 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
527 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
528 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
529 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
530 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
531 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
532 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
533 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
534 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
535 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
536 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
537 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
538 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
539 frameInfo:
anatofuz
parents:
diff changeset
540 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
541 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
542 hasStackMap: false
anatofuz
parents:
diff changeset
543 hasPatchPoint: false
anatofuz
parents:
diff changeset
544 stackSize: 0
anatofuz
parents:
diff changeset
545 offsetAdjustment: 0
anatofuz
parents:
diff changeset
546 maxAlignment: 0
anatofuz
parents:
diff changeset
547 adjustsStack: false
anatofuz
parents:
diff changeset
548 hasCalls: false
anatofuz
parents:
diff changeset
549 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
550 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
551 hasVAStart: false
anatofuz
parents:
diff changeset
552 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
553 body: |
anatofuz
parents:
diff changeset
554 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
555 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
556 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
557 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
558 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
559 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
560 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
561 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
562 %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
563 %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
564 %13 = V_MOV_B32_e32 15360, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
565 %14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
566 %15 = V_ADD_F32_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
567 BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
568 BUFFER_STORE_DWORD_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
569 S_ENDPGM 0
anatofuz
parents:
diff changeset
570
anatofuz
parents:
diff changeset
571 ...
anatofuz
parents:
diff changeset
572 ---
anatofuz
parents:
diff changeset
573
anatofuz
parents:
diff changeset
574 # The low 16-bits are an inline immediate, but the high bits are junk
anatofuz
parents:
diff changeset
575
anatofuz
parents:
diff changeset
576 # CHECK-LABEL: name: add_f16_1.0_other_high_bits_multi_f16_use
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
577 # CHECK: %14:vgpr_32 = V_ADD_F16_e32 80886784, %11, implicit $mode, implicit $exec
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
578 # CHECK: %15:vgpr_32 = V_ADD_F16_e32 80886784, %12, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
579
anatofuz
parents:
diff changeset
580 name: add_f16_1.0_other_high_bits_multi_f16_use
anatofuz
parents:
diff changeset
581 alignment: 1
anatofuz
parents:
diff changeset
582 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
583 legalized: false
anatofuz
parents:
diff changeset
584 regBankSelected: false
anatofuz
parents:
diff changeset
585 selected: false
anatofuz
parents:
diff changeset
586 tracksRegLiveness: true
anatofuz
parents:
diff changeset
587 registers:
anatofuz
parents:
diff changeset
588 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
589 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
590 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
591 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
592 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
593 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
594 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
595 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
596 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
597 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
598 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
599 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
600 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
601 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
602 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
603 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
604 frameInfo:
anatofuz
parents:
diff changeset
605 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
606 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
607 hasStackMap: false
anatofuz
parents:
diff changeset
608 hasPatchPoint: false
anatofuz
parents:
diff changeset
609 stackSize: 0
anatofuz
parents:
diff changeset
610 offsetAdjustment: 0
anatofuz
parents:
diff changeset
611 maxAlignment: 0
anatofuz
parents:
diff changeset
612 adjustsStack: false
anatofuz
parents:
diff changeset
613 hasCalls: false
anatofuz
parents:
diff changeset
614 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
615 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
616 hasVAStart: false
anatofuz
parents:
diff changeset
617 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
618 body: |
anatofuz
parents:
diff changeset
619 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
620 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
621 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
622 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
623 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
624 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
625 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
626 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
627 %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
628 %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
629 %13 = V_MOV_B32_e32 80886784, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
630 %14 = V_ADD_F16_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
631 %15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
632 BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
633 BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
634 S_ENDPGM 0
anatofuz
parents:
diff changeset
635
anatofuz
parents:
diff changeset
636 ...
anatofuz
parents:
diff changeset
637 ---
anatofuz
parents:
diff changeset
638
anatofuz
parents:
diff changeset
639 # CHECK-LABEL: name: add_f16_1.0_other_high_bits_use_f16_f32
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
640 # CHECK: %14:vgpr_32 = V_ADD_F32_e32 305413120, %11, implicit $mode, implicit $exec
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
641 # CHECK: %15:vgpr_32 = V_ADD_F16_e32 305413120, %12, implicit $mode, implicit $exec
150
anatofuz
parents:
diff changeset
642 name: add_f16_1.0_other_high_bits_use_f16_f32
anatofuz
parents:
diff changeset
643 alignment: 1
anatofuz
parents:
diff changeset
644 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
645 legalized: false
anatofuz
parents:
diff changeset
646 regBankSelected: false
anatofuz
parents:
diff changeset
647 selected: false
anatofuz
parents:
diff changeset
648 tracksRegLiveness: true
anatofuz
parents:
diff changeset
649 registers:
anatofuz
parents:
diff changeset
650 - { id: 0, class: sreg_64 }
anatofuz
parents:
diff changeset
651 - { id: 1, class: sreg_32 }
anatofuz
parents:
diff changeset
652 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
653 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
654 - { id: 4, class: sreg_64 }
anatofuz
parents:
diff changeset
655 - { id: 5, class: sreg_32 }
anatofuz
parents:
diff changeset
656 - { id: 6, class: sreg_64 }
anatofuz
parents:
diff changeset
657 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
658 - { id: 8, class: sreg_32 }
anatofuz
parents:
diff changeset
659 - { id: 9, class: sreg_32 }
anatofuz
parents:
diff changeset
660 - { id: 10, class: sgpr_128 }
anatofuz
parents:
diff changeset
661 - { id: 11, class: vgpr_32 }
anatofuz
parents:
diff changeset
662 - { id: 12, class: vgpr_32 }
anatofuz
parents:
diff changeset
663 - { id: 13, class: vgpr_32 }
anatofuz
parents:
diff changeset
664 - { id: 14, class: vgpr_32 }
anatofuz
parents:
diff changeset
665 - { id: 15, class: vgpr_32 }
anatofuz
parents:
diff changeset
666 frameInfo:
anatofuz
parents:
diff changeset
667 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
668 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
669 hasStackMap: false
anatofuz
parents:
diff changeset
670 hasPatchPoint: false
anatofuz
parents:
diff changeset
671 stackSize: 0
anatofuz
parents:
diff changeset
672 offsetAdjustment: 0
anatofuz
parents:
diff changeset
673 maxAlignment: 0
anatofuz
parents:
diff changeset
674 adjustsStack: false
anatofuz
parents:
diff changeset
675 hasCalls: false
anatofuz
parents:
diff changeset
676 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
677 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
678 hasVAStart: false
anatofuz
parents:
diff changeset
679 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
680 body: |
anatofuz
parents:
diff changeset
681 bb.0 (%ir-block.0):
anatofuz
parents:
diff changeset
682 %4 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
683 %5 = COPY %4.sub1
anatofuz
parents:
diff changeset
684 %6 = IMPLICIT_DEF
anatofuz
parents:
diff changeset
685 %7 = COPY %6.sub0
anatofuz
parents:
diff changeset
686 %8 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
687 %9 = S_MOV_B32 -1
anatofuz
parents:
diff changeset
688 %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
689 %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
690 %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
691 %13 = V_MOV_B32_e32 305413120, implicit $exec
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
692 %14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
693 %15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
694 BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
695 BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
150
anatofuz
parents:
diff changeset
696 S_ENDPGM 0
anatofuz
parents:
diff changeset
697
anatofuz
parents:
diff changeset
698 ...