1 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tonga
-show-encoding
%s | FileCheck
%s
--check-prefix
=GCN
--check-prefix
=VI
--check-prefix
=VI9
2 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=gfx900
-show-encoding
%s | FileCheck
%s
--check-prefix
=GCN
--check-prefix
=GFX9
--check-prefix
=VI9
4 // RUN
: not llvm-mc
-arch
=amdgcn
-show-encoding
%s
2>&1 | FileCheck
%s
--check-prefix
=NOSI
--check-prefix
=NOSICI
5 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tahiti
-show-encoding
%s
2>&1 | FileCheck
%s
--check-prefix
=NOSI
--check-prefix
=NOSICI
6 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=bonaire
-show-encoding
%s
2>&1 | FileCheck
%s
--check-prefix
=NOSICI
7 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tonga
-show-encoding
%s
2>&1 | FileCheck
%s
--check-prefix
=NOVI
8 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=gfx900
-show-encoding
%s
2>&1 | FileCheck
%s
--check-prefix
=NOGFX9
10 //===----------------------------------------------------------------------===//
11 // Check dpp_ctrl values
12 //===----------------------------------------------------------------------===//
15 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[0,2,1,1] row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x58,0x00,0xff]
16 v_mov_b32 v0
, v0 quad_perm
:[0,2,1,1]
19 // VI9
: v_mov_b32_dpp v0
, v0 row_shl
:1 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x01,0x01,0xff]
20 v_mov_b32 v0
, v0 row_shl
:1
23 // VI9
: v_mov_b32_dpp v0
, v0 row_shr
:15 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x1f,0x01,0xff]
24 v_mov_b32 v0
, v0 row_shr
:0xf
27 // VI9
: v_mov_b32_dpp v0
, v0 row_ror
:12 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x2c,0x01,0xff]
28 v_mov_b32 v0
, v0 row_ror
:0xc
31 // VI9
: v_mov_b32_dpp v0
, v0 wave_shl
:1 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x30,0x01,0xff]
32 v_mov_b32 v0
, v0 wave_shl
:1
35 // VI9
: v_mov_b32_dpp v0
, v0 wave_rol
:1 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x34,0x01,0xff]
36 v_mov_b32 v0
, v0 wave_rol
:1
39 // VI9
: v_mov_b32_dpp v0
, v0 wave_shr
:1 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x38,0x01,0xff]
40 v_mov_b32 v0
, v0 wave_shr
:1
43 // VI9
: v_mov_b32_dpp v0
, v0 wave_ror
:1 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x3c,0x01,0xff]
44 v_mov_b32 v0
, v0 wave_ror
:1
47 // VI9
: v_mov_b32_dpp v0
, v0 row_mirror row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x40,0x01,0xff]
48 v_mov_b32 v0
, v0 row_mirror
51 // VI9
: v_mov_b32_dpp v0
, v0 row_half_mirror row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x41,0x01,0xff]
52 v_mov_b32 v0
, v0 row_half_mirror
55 // VI9
: v_mov_b32_dpp v0
, v0 row_bcast
:15 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x42,0x01,0xff]
56 v_mov_b32 v0
, v0 row_bcast
:15
59 // VI9
: v_mov_b32_dpp v0
, v0 row_bcast
:31 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x43,0x01,0xff]
60 v_mov_b32 v0
, v0 row_bcast
:31
62 //===----------------------------------------------------------------------===//
63 // Check optional fields
64 //===----------------------------------------------------------------------===//
67 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xa1]
68 v_mov_b32 v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
71 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bank_mask
:0xf ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xaf]
72 v_mov_b32 v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa
75 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xf bank_mask
:0x1 ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xf1]
76 v_mov_b32 v0
, v0 quad_perm
:[1,3,0,1] bank_mask
:0x1
79 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xf bank_mask
:0xf bound_ctrl
:0 ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xff]
80 v_mov_b32 v0
, v0 quad_perm
:[1,3,0,1] bound_ctrl
:0
83 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bank_mask
:0x1 ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xa1]
84 v_mov_b32 v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bank_mask
:0x1
87 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bank_mask
:0xf bound_ctrl
:0 ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xaf]
88 v_mov_b32 v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bound_ctrl
:0
91 // VI9
: v_mov_b32_dpp v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xf bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xf1]
92 v_mov_b32 v0
, v0 quad_perm
:[1,3,0,1] bank_mask
:0x1 bound_ctrl
:0
94 //===----------------------------------------------------------------------===//
96 //===----------------------------------------------------------------------===//
99 // VI9
: v_add_f32_dpp v0
, -v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x02,0x00,0x01,0x19,0xa1]
100 v_add_f32 v0
, -v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
103 // VI9
: v_add_f32_dpp v0
, v0
, |v0| row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x02,0x00,0x01,0x89,0xa1]
104 v_add_f32 v0
, v0
, |v0| row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
107 // VI9
: v_add_f32_dpp v0
, -v0
, |v0| row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x02,0x00,0x01,0x99,0xa1]
108 v_add_f32 v0
, -v0
, |v0| row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
111 // VI9
: v_add_f32_dpp v0
, |v0|
, -v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x02,0x00,0x01,0x69,0xa1]
112 v_add_f32 v0
, |v0|
, -v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
114 //===----------------------------------------------------------------------===//
115 // Check VOP1 opcodes
116 //===----------------------------------------------------------------------===//
119 v_nop row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
122 // VI9
: v_cvt_u32_f32_dpp v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x0e,0x00,0x7e,0x00,0x01,0x09,0xa1]
123 v_cvt_u32_f32 v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
126 // VI9
: v_fract_f32_dpp v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x36,0x00,0x7e,0x00,0x01,0x09,0xa1]
127 v_fract_f32 v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
130 // VI9
: v_sin_f32_dpp v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x52,0x00,0x7e,0x00,0x01,0x09,0xa1]
131 v_sin_f32 v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
134 // VI9
: v_mov_b32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x02,0x02,0x7e,0x00,0x01,0x09,0xa1]
135 v_mov_b32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
138 // VI9
: v_cvt_f32_i32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x0a,0x02,0x7e,0x00,0x01,0x09,0xa1]
139 v_cvt_f32_i32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
142 // VI9
: v_cvt_f32_u32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x0c,0x02,0x7e,0x00,0x01,0x09,0xa1]
143 v_cvt_f32_u32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
146 // VI9
: v_cvt_i32_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x10,0x02,0x7e,0x00,0x01,0x09,0xa1]
147 v_cvt_i32_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
150 // VI9
: v_cvt_f16_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x14,0x02,0x7e,0x00,0x01,0x09,0xa1]
151 v_cvt_f16_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
154 // VI9
: v_cvt_f32_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x16,0x02,0x7e,0x00,0x01,0x09,0xa1]
155 v_cvt_f32_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
158 // VI9
: v_cvt_rpi_i32_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x18,0x02,0x7e,0x00,0x01,0x09,0xa1]
159 v_cvt_rpi_i32_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
162 // VI9
: v_cvt_flr_i32_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x1a,0x02,0x7e,0x00,0x01,0x09,0xa1]
163 v_cvt_flr_i32_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
166 // VI9
: v_cvt_off_f32_i4_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x1c,0x02,0x7e,0x00,0x01,0x09,0xa1]
167 v_cvt_off_f32_i4 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
170 // VI9
: v_cvt_f32_ubyte0_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x22,0x02,0x7e,0x00,0x01,0x09,0xa1]
171 v_cvt_f32_ubyte0 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
174 // VI9
: v_cvt_f32_ubyte1_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x24,0x02,0x7e,0x00,0x01,0x09,0xa1]
175 v_cvt_f32_ubyte1 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
178 // VI9
: v_cvt_f32_ubyte2_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x26,0x02,0x7e,0x00,0x01,0x09,0xa1]
179 v_cvt_f32_ubyte2 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
182 // VI9
: v_cvt_f32_ubyte3_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x28,0x02,0x7e,0x00,0x01,0x09,0xa1]
183 v_cvt_f32_ubyte3 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
186 // VI9
: v_trunc_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x38,0x02,0x7e,0x00,0x01,0x09,0xa1]
187 v_trunc_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
190 // VI9
: v_ceil_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x3a,0x02,0x7e,0x00,0x01,0x09,0xa1]
191 v_ceil_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
194 // VI9
: v_rndne_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x3c,0x02,0x7e,0x00,0x01,0x09,0xa1]
195 v_rndne_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
198 // VI9
: v_floor_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x3e,0x02,0x7e,0x00,0x01,0x09,0xa1]
199 v_floor_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
202 // VI9
: v_exp_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x40,0x02,0x7e,0x00,0x01,0x09,0xa1]
203 v_exp_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
206 // VI9
: v_log_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x42,0x02,0x7e,0x00,0x01,0x09,0xa1]
207 v_log_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
210 // VI9
: v_rcp_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x44,0x02,0x7e,0x00,0x01,0x09,0xa1]
211 v_rcp_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
214 // VI9
: v_rcp_iflag_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x46,0x02,0x7e,0x00,0x01,0x09,0xa1]
215 v_rcp_iflag_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
218 // VI9
: v_rsq_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x48,0x02,0x7e,0x00,0x01,0x09,0xa1]
219 v_rsq_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
222 // VI9
: v_sqrt_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x4e,0x02,0x7e,0x00,0x01,0x09,0xa1]
223 v_sqrt_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
226 // VI9
: v_cos_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x54,0x02,0x7e,0x00,0x01,0x09,0xa1]
227 v_cos_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
230 // VI9
: v_not_b32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x56,0x02,0x7e,0x00,0x01,0x09,0xa1]
231 v_not_b32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
234 // VI9
: v_bfrev_b32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x58,0x02,0x7e,0x00,0x01,0x09,0xa1]
235 v_bfrev_b32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
238 // VI9
: v_ffbh_u32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x5a,0x02,0x7e,0x00,0x01,0x09,0xa1]
239 v_ffbh_u32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
242 // VI9
: v_ffbl_b32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x5c,0x02,0x7e,0x00,0x01,0x09,0xa1]
243 v_ffbl_b32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
246 // VI9
: v_ffbh_i32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x5e,0x02,0x7e,0x00,0x01,0x09,0xa1]
247 v_ffbh_i32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
250 // VI9
: v_frexp_exp_i32_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x66,0x02,0x7e,0x00,0x01,0x09,0xa1]
251 v_frexp_exp_i32_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
254 // VI9
: v_frexp_mant_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x68,0x02,0x7e,0x00,0x01,0x09,0xa1]
255 v_frexp_mant_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
258 // VI9
: v_log_legacy_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x98,0x02,0x7e,0x00,0x01,0x09,0xa1]
259 v_log_legacy_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
262 // VI9
: v_exp_legacy_f32_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x96,0x02,0x7e,0x00,0x01,0x09,0xa1]
263 v_exp_legacy_f32 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
266 // VI9
: v_cvt_f16_u16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x72,0x02,0x7e,0x00,0x01,0x09,0xa1]
267 v_cvt_f16_u16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
270 // VI9
: v_cvt_f16_i16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x74,0x02,0x7e,0x00,0x01,0x09,0xa1]
271 v_cvt_f16_i16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
274 // VI9
: v_cvt_u16_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x76,0x02,0x7e,0x00,0x01,0x09,0xa1]
275 v_cvt_u16_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
278 // VI9
: v_cvt_i16_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x78,0x02,0x7e,0x00,0x01,0x09,0xa1]
279 v_cvt_i16_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
282 // VI9
: v_rcp_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x7a,0x02,0x7e,0x00,0x01,0x09,0xa1]
283 v_rcp_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
286 // VI9
: v_sqrt_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x7c,0x02,0x7e,0x00,0x01,0x09,0xa1]
287 v_sqrt_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
290 // VI9
: v_rsq_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x7e,0x02,0x7e,0x00,0x01,0x09,0xa1]
291 v_rsq_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
294 // VI9
: v_log_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x80,0x02,0x7e,0x00,0x01,0x09,0xa1]
295 v_log_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
298 // VI9
: v_exp_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x82,0x02,0x7e,0x00,0x01,0x09,0xa1]
299 v_exp_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
302 // VI9
: v_frexp_mant_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x84,0x02,0x7e,0x00,0x01,0x09,0xa1]
303 v_frexp_mant_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
306 // VI9
: v_frexp_exp_i16_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x86,0x02,0x7e,0x00,0x01,0x09,0xa1]
307 v_frexp_exp_i16_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
310 // VI9
: v_floor_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x88,0x02,0x7e,0x00,0x01,0x09,0xa1]
311 v_floor_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
314 // VI9
: v_ceil_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x8a,0x02,0x7e,0x00,0x01,0x09,0xa1]
315 v_ceil_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
318 // VI9
: v_trunc_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x8c,0x02,0x7e,0x00,0x01,0x09,0xa1]
319 v_trunc_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
322 // VI9
: v_rndne_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x8e,0x02,0x7e,0x00,0x01,0x09,0xa1]
323 v_rndne_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
326 // VI9
: v_fract_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x90,0x02,0x7e,0x00,0x01,0x09,0xa1]
327 v_fract_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
330 // VI9
: v_sin_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x92,0x02,0x7e,0x00,0x01,0x09,0xa1]
331 v_sin_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
334 // VI9
: v_cos_f16_dpp v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x94,0x02,0x7e,0x00,0x01,0x09,0xa1]
335 v_cos_f16 v1
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
337 // GFX9
: v_cvt_norm_i16_f16_dpp v5
, |v1| quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0 ; encoding
: [0xfa,0x9a,0x0a,0x7e,0x01,0xe4,0x20,0x00]
340 v_cvt_norm_i16_f16_dpp v5
, |v1| quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0
342 // GFX9
: v_cvt_norm_u16_f16_dpp v5
, v1 quad_perm
:[3,2,1,0] row_mask
:0x0 bank_mask
:0x0 ; encoding
: [0xfa,0x9c,0x0a,0x7e,0x01,0x1b,0x00,0x00]
345 v_cvt_norm_u16_f16_dpp v5
, v1 quad_perm
:[3,2,1,0] row_mask
:0x0 bank_mask
:0x0
347 // GFX9
: v_sat_pk_u8_i16_dpp v5
, v1 row_ror
:15 row_mask
:0x0 bank_mask
:0x0 ; encoding
: [0xfa,0x9e,0x0a,0x7e,0x01,0x2f,0x01,0x00]
350 v_sat_pk_u8_i16_dpp v5
, v1 row_ror
:15 row_mask
:0x0 bank_mask
:0x0
354 // GFX9
: v_screen_partition_4se_b32_dpp v5
, v1 quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0 bound_ctrl
:0 ; encoding
: [0xfa,0x6e,0x0a,0x7e,0x01,0xe4,0x08,0x00]
355 v_screen_partition_4se_b32_dpp v5
, v1 quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0 bound_ctrl
:0
357 //===----------------------------------------------------------------------===//
358 // Check VOP2 opcodes
359 //===----------------------------------------------------------------------===//
360 // ToDo
: VOP2bInst instructions
: v_add_u32
, v_sub_u32
... (vcc and ApplyMnemonic in AsmMatcherEmitter.cpp)
363 // VI9
: v_mac_f32_dpp v0
, v0
, v0 row_shl
:1 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x00,0x00,0x2c,0x00,0x01,0x01,0xff]
364 v_mac_f32 v0
, v0
, v0 row_shl
:1
367 // VI9
: v_mac_f32_dpp v0
, v0
, v0 row_shr
:15 row_mask
:0xf bank_mask
:0xf ; encoding
: [0xfa,0x00,0x00,0x2c,0x00,0x1f,0x01,0xff]
368 v_mac_f32 v0
, v0
, v0 row_shr
:0xf
371 // VI9
: v_mac_f32_dpp v0
, v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bank_mask
:0xf bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x2c,0x00,0x4d,0x08,0xaf]
372 v_mac_f32 v0
, v0
, v0 quad_perm
:[1,3,0,1] row_mask
:0xa bound_ctrl
:0
375 // VI9
: v_add_f32_dpp v0
, v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x02,0x00,0x01,0x09,0xa1]
376 v_add_f32 v0
, v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
379 // VI9
: v_min_f32_dpp v0
, v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x14,0x00,0x01,0x09,0xa1]
380 v_min_f32 v0
, v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
383 // VI9
: v_and_b32_dpp v0
, v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x00,0x00,0x26,0x00,0x01,0x09,0xa1]
384 v_and_b32 v0
, v0
, v0 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
387 // VI9
: v_mul_i32_i24_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x0c,0x02,0x01,0x09,0xa1]
388 v_mul_i32_i24 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
391 // VI9
: v_sub_f32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x04,0x02,0x01,0x09,0xa1]
392 v_sub_f32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
395 // VI9
: v_subrev_f32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x06,0x02,0x01,0x09,0xa1]
396 v_subrev_f32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
399 // VI9
: v_mul_f32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x0a,0x02,0x01,0x09,0xa1]
400 v_mul_f32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
403 // VI9
: v_mul_hi_i32_i24_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x0e,0x02,0x01,0x09,0xa1]
404 v_mul_hi_i32_i24 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
407 // VI9
: v_mul_u32_u24_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x10,0x02,0x01,0x09,0xa1]
408 v_mul_u32_u24 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
411 // VI9
: v_mul_hi_u32_u24_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x12,0x02,0x01,0x09,0xa1]
412 v_mul_hi_u32_u24 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
415 // VI9
: v_max_f32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x16,0x02,0x01,0x09,0xa1]
416 v_max_f32 v1
, v2 v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
419 // VI9
: v_min_i32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x18,0x02,0x01,0x09,0xa1]
420 v_min_i32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
423 // VI9
: v_max_i32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x1a,0x02,0x01,0x09,0xa1]
424 v_max_i32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
427 // VI9
: v_min_u32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x1c,0x02,0x01,0x09,0xa1]
428 v_min_u32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
431 // VI9
: v_max_u32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x1e,0x02,0x01,0x09,0xa1]
432 v_max_u32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
435 // VI9
: v_lshrrev_b32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x20,0x02,0x01,0x09,0xa1]
436 v_lshrrev_b32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
439 // VI9
: v_ashrrev_i32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x22,0x02,0x01,0x09,0xa1]
440 v_ashrrev_i32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
443 // VI9
: v_lshlrev_b32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x24,0x02,0x01,0x09,0xa1]
444 v_lshlrev_b32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
447 // VI9
: v_or_b32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x28,0x02,0x01,0x09,0xa1]
448 v_or_b32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
451 // VI9
: v_xor_b32_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x2a,0x02,0x01,0x09,0xa1]
452 v_xor_b32 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
455 // VI9
: v_add_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x3e,0x02,0x01,0x09,0xa1]
456 v_add_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
459 // VI9
: v_sub_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x40,0x02,0x01,0x09,0xa1]
460 v_sub_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
463 // VI9
: v_subrev_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x42,0x02,0x01,0x09,0xa1]
464 v_subrev_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
467 // VI9
: v_mul_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x44,0x02,0x01,0x09,0xa1]
468 v_mul_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
471 // VI9
: v_mac_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x46,0x02,0x01,0x09,0xa1]
472 v_mac_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
475 // VI9
: v_add_u16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x4c,0x02,0x01,0x09,0xa1]
476 v_add_u16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
479 // VI9
: v_sub_u16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x4e,0x02,0x01,0x09,0xa1]
480 v_sub_u16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
483 // VI9
: v_subrev_u16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x50,0x02,0x01,0x09,0xa1]
484 v_subrev_u16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
487 // VI9
: v_mul_lo_u16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x52,0x02,0x01,0x09,0xa1]
488 v_mul_lo_u16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
491 // VI9
: v_lshlrev_b16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x54,0x02,0x01,0x09,0xa1]
492 v_lshlrev_b16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
495 // VI9
: v_lshrrev_b16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x56,0x02,0x01,0x09,0xa1]
496 v_lshrrev_b16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
499 // VI9
: v_ashrrev_i16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x58,0x02,0x01,0x09,0xa1]
500 v_ashrrev_i16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
503 // VI9
: v_max_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x5a,0x02,0x01,0x09,0xa1]
504 v_max_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
507 // VI9
: v_min_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x5c,0x02,0x01,0x09,0xa1]
508 v_min_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
511 // VI9
: v_max_u16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x5e,0x02,0x01,0x09,0xa1]
512 v_max_u16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
515 // VI9
: v_max_i16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x60,0x02,0x01,0x09,0xa1]
516 v_max_i16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
519 // VI9
: v_min_u16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x62,0x02,0x01,0x09,0xa1]
520 v_min_u16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
523 // VI9
: v_min_i16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x64,0x02,0x01,0x09,0xa1]
524 v_min_i16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
527 // VI9
: v_ldexp_f16_dpp v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x66,0x02,0x01,0x09,0xa1]
528 v_ldexp_f16 v1
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
532 // VI
: v_add_u32_dpp v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x32,0x02,0x01,0x09,0xa1]
533 v_add_u32 v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
537 // VI
: v_sub_u32_dpp v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x34,0x02,0x01,0x09,0xa1]
538 v_sub_u32 v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
542 // VI
: v_subrev_u32_dpp v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x36,0x02,0x01,0x09,0xa1]
543 v_subrev_u32 v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
547 // VI
: v_addc_u32_dpp v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x38,0x02,0x01,0x09,0xa1]
548 v_addc_u32 v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
552 // VI
: v_subb_u32_dpp v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x3a,0x02,0x01,0x09,0xa1]
553 v_subb_u32 v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
557 // VI
: v_subbrev_u32_dpp v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x3c,0x02,0x01,0x09,0xa1]
558 v_subbrev_u32 v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
562 // GFX9
: v_add_co_u32_dpp v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x32,0x02,0x01,0x09,0xa1]
563 v_add_co_u32 v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
567 // GFX9
: v_sub_co_u32_dpp v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x34,0x02,0x01,0x09,0xa1]
568 v_sub_co_u32 v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
572 // GFX9
: v_subrev_co_u32_dpp v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x36,0x02,0x01,0x09,0xa1]
573 v_subrev_co_u32 v1
, vcc
, v2
, v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
577 // GFX9
: v_addc_co_u32_dpp v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x38,0x02,0x01,0x09,0xa1]
578 v_addc_co_u32 v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
582 // GFX9
: v_subb_co_u32_dpp v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x3a,0x02,0x01,0x09,0xa1]
583 v_subb_co_u32 v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
587 // GFX9
: v_subbrev_co_u32_dpp v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0 ; encoding
: [0xfa,0x06,0x02,0x3c,0x02,0x01,0x09,0xa1]
588 v_subbrev_co_u32 v1
, vcc
, v2
, v3
, vcc row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
591 // VI9
: v_cndmask_b32_dpp v5
, v1
, v2
, vcc quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0 ; encoding
: [0xfa,0x04,0x0a,0x00,0x01,0xe4,0x00,0x00]
592 v_cndmask_b32_dpp v5
, v1
, v2
, vcc quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0
595 // VI9
: v_cndmask_b32_dpp v5
, v1
, v2
, vcc row_shl
:15 row_mask
:0x0 bank_mask
:0x0 ; encoding
: [0xfa,0x04,0x0a,0x00,0x01,0x0f,0x01,0x00]
596 v_cndmask_b32_dpp v5
, v1
, v2
, vcc row_shl
:15 row_mask
:0x0 bank_mask
:0x0
598 //===----------------------------------------------------------------------===//
599 // Check that immideates
and scalar regs are
not supported
600 //===----------------------------------------------------------------------===//
602 // NOSICI
: error
: not a valid operand
603 // NOVI
: error
: invalid operand for instruction
604 // NOGFX9
: error
: invalid operand for instruction
605 v_mov_b32 v0
, 1 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
607 // NOSICI
: error
: not a valid operand
608 // NOVI
: error
: invalid operand for instruction
609 // NOGFX9
: error
: invalid operand for instruction
610 v_and_b32 v0
, 42, v1 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
612 // NOSICI
: error
: not a valid operand
613 // NOVI
: error
: invalid operand for instruction
614 // NOGFX9
: error
: invalid operand for instruction
615 v_add_f32 v0
, v1
, 345 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
617 // NOSICI
: error
: not a valid operand
618 // NOVI
: error
: invalid operand for instruction
619 // NOGFX9
: error
: invalid operand for instruction
620 v_mov_b32 v0
, s1 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
622 // NOSICI
: error
: not a valid operand
623 // NOVI
: error
: invalid operand for instruction
624 // NOGFX9
: error
: invalid operand for instruction
625 v_and_b32 v0
, s42
, v1 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
627 // NOSICI
: error
: not a valid operand
628 // NOVI
: error
: invalid operand for instruction
629 // NOGFX9
: error
: invalid operand for instruction
630 v_add_f32 v0
, v1
, s45 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
632 //===----------------------------------------------------------------------===//
633 // Validate register size checks
(bug
37943)
634 //===----------------------------------------------------------------------===//
636 // NOSICI
: error
: not a valid operand
637 // NOVI
: error
: invalid operand for instruction
638 // NOGFX9
: error
: invalid operand for instruction
639 v_add_f32_dpp v5
, v
[1:2], v2 quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0
641 // NOSICI
: error
: not a valid operand
642 // NOVI
: error
: invalid operand for instruction
643 // NOGFX9
: error
: invalid operand for instruction
644 v_add_f32_dpp v5
, v
[1:3], v2 quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0
646 // NOSICI
: error
: not a valid operand
647 // NOVI
: error
: invalid operand for instruction
648 // NOGFX9
: error
: invalid operand for instruction
649 v_add_f32_dpp v5
, v1
, v
[1:2] quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0
651 // NOSICI
: error
: not a valid operand
652 // NOVI
: error
: invalid operand for instruction
653 // NOGFX9
: error
: invalid operand for instruction
654 v_add_f32_dpp v5
, v1
, v
[1:4] quad_perm
:[0,1,2,3] row_mask
:0x0 bank_mask
:0x0
656 // NOSICI
: error
: not a valid operand
657 // NOVI
: error
: invalid operand for instruction
658 // NOGFX9
: error
: invalid operand for instruction
659 v_add_f16 v1
, v
[2:3], v3 row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0
661 // NOSICI
: error
: not a valid operand
662 // NOVI
: error
: invalid operand for instruction
663 // NOGFX9
: error
: invalid operand for instruction
664 v_add_f16 v1
, v3
, v
[2:3] row_shl
:1 row_mask
:0xa bank_mask
:0x1 bound_ctrl
:0