1 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tonga
-show-encoding
%s | FileCheck
%s
--check-prefix
=GCN
--check-prefix
=VI
--check-prefix
=GFX89
2 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=gfx900
-show-encoding
%s | FileCheck
%s
--check-prefix
=GCN
--check-prefix
=GFX9
--check-prefix
=GFX89
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
--check-prefix
=NOGFX89
8 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=gfx900
-show-encoding
%s
2>&1 | FileCheck
%s
--check-prefix
=NOGFX9
--check-prefix
=NOGFX89
10 //---------------------------------------------------------------------------//
11 // Check SDWA operands
12 //---------------------------------------------------------------------------//
15 // GFX89
: v_mov_b32_sdwa v1
, v2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x7e,0x02,0x10,0x06,0x00]
16 v_mov_b32 v1
, v2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
19 // GFX89
: v_mov_b32_sdwa v3
, v4 dst_sel
:BYTE_1 dst_unused
:UNUSED_PRESERVE src0_sel
:WORD_1 ; encoding
: [0xf9,0x02,0x06,0x7e,0x04,0x11,0x05,0x00]
20 v_mov_b32 v3
, v4 dst_sel
:BYTE_1 dst_unused
:UNUSED_PRESERVE src0_sel
:WORD_1
23 // GFX89
: v_mov_b32_sdwa v15
, v99 dst_sel
:BYTE_2 dst_unused
:UNUSED_SEXT src0_sel
:WORD_0 ; encoding
: [0xf9,0x02,0x1e,0x7e,0x63,0x0a,0x04,0x00]
24 v_mov_b32 v15
, v99 dst_sel
:BYTE_2 dst_unused
:UNUSED_SEXT src0_sel
:WORD_0
27 // GFX89
: v_min_u32_sdwa v194
, v13
, v1 dst_sel
:BYTE_3 dst_unused
:UNUSED_SEXT src0_sel
:BYTE_3 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x02,0x84,0x1d,0x0d,0x0b,0x03,0x02]
28 v_min_u32 v194
, v13
, v1 dst_sel
:BYTE_3 dst_unused
:UNUSED_SEXT src0_sel
:BYTE_3 src1_sel
:BYTE_2
31 // GFX89
: v_min_u32_sdwa v255
, v4
, v1 dst_sel
:WORD_0 dst_unused
:UNUSED_PAD src0_sel
:BYTE_2 src1_sel
:WORD_1 ; encoding
: [0xf9,0x02,0xfe,0x1d,0x04,0x04,0x02,0x05]
32 v_min_u32 v255
, v4
, v1 dst_sel
:WORD_0 dst_unused
:UNUSED_PAD src0_sel
:BYTE_2 src1_sel
:WORD_1
35 // GFX89
: v_min_u32_sdwa v200
, v200
, v1 dst_sel
:WORD_1 dst_unused
:UNUSED_PAD src0_sel
:BYTE_1 src1_sel
:DWORD ; encoding
: [0xf9,0x02,0x90,0x1d,0xc8,0x05,0x01,0x06]
36 v_min_u32 v200
, v200
, v1 dst_sel
:WORD_1 dst_unused
:UNUSED_PAD src0_sel
:BYTE_1 src1_sel
:DWORD
39 // GFX89
: v_min_u32_sdwa v1
, v1
, v1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:BYTE_0 src1_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x1c,0x01,0x06,0x00,0x06]
40 v_min_u32 v1
, v1
, v1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:BYTE_0 src1_sel
:DWORD
42 //---------------------------------------------------------------------------//
43 // Check optional operands
44 //---------------------------------------------------------------------------//
47 // GFX89
: v_cvt_u32_f32_sdwa v0
, v0 clamp dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x0e,0x00,0x7e,0x00,0x36,0x06,0x00]
48 v_cvt_u32_f32 v0
, v0 clamp dst_sel
:DWORD
51 // GFX89
: v_fract_f32_sdwa v0
, v0 clamp dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x36,0x00,0x7e,0x00,0x26,0x06,0x00]
52 v_fract_f32 v0
, v0 clamp dst_sel
:DWORD dst_unused
:UNUSED_PAD
55 // GFX89
: v_sin_f32_sdwa v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x05,0x00]
56 v_sin_f32 v0
, v0 dst_unused
:UNUSED_PAD src0_sel
:WORD_1
59 // GFX89
: v_mov_b32_sdwa v1
, v0 clamp dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:WORD_1 ; encoding
: [0xf9,0x02,0x02,0x7e,0x00,0x36,0x05,0x00]
60 v_mov_b32 v1
, v0 clamp src0_sel
:WORD_1
63 // GFX89
: v_trunc_f32_sdwa v1
, v0 clamp dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:WORD_1 ; encoding
: [0xf9,0x38,0x02,0x7e,0x00,0x36,0x05,0x00]
64 v_trunc_f32 v1
, v0 clamp dst_sel
:DWORD src0_sel
:WORD_1
67 // GFX89
: v_mov_b32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x7e,0x00,0x16,0x06,0x00]
71 // GFX89
: v_add_f32_sdwa v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:DWORD ; encoding
: [0xf9,0x00,0x00,0x02,0x00,0x06,0x05,0x06]
72 v_add_f32_sdwa v0
, v0
, v0 dst_unused
:UNUSED_PAD src0_sel
:WORD_1
75 // GFX89
: v_min_f32_sdwa v0
, v0
, v0 clamp dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x14,0x00,0x36,0x06,0x02]
76 v_min_f32 v0
, v0
, v0 clamp dst_sel
:DWORD src1_sel
:BYTE_2
79 // GFX89
: v_and_b32_sdwa v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x26,0x00,0x06,0x06,0x02]
80 v_and_b32 v0
, v0
, v0 dst_unused
:UNUSED_PAD src1_sel
:BYTE_2
83 // GFX89
: v_mul_i32_i24_sdwa v1
, v2
, v3 clamp dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x06,0x02,0x0c,0x02,0x36,0x06,0x06]
84 v_mul_i32_i24_sdwa v1
, v2
, v3 clamp
86 //===----------------------------------------------------------------------===//
88 //===----------------------------------------------------------------------===//
91 // GFX89
: v_fract_f32_sdwa v0
, |v0| dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x36,0x00,0x7e,0x00,0x06,0x25,0x00]
92 v_fract_f32 v0
, |v0| dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
95 // GFX89
: v_sin_f32_sdwa v0
, -|v0| dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x35,0x00]
96 v_sin_f32 v0
, -abs(v0
) dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
99 // GFX89
: v_add_f32_sdwa v0
, -|v0|
, -v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x02,0x00,0x06,0x35,0x12]
100 v_add_f32 v0
, -|v0|
, -v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
103 // GFX89
: v_min_f32_sdwa v0
, |v0|
, -v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x14,0x00,0x06,0x25,0x12]
104 v_min_f32 v0
, abs(v0
), -v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
107 // GFX89
: v_mov_b32_sdwa v1
, sext
(v0
) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x7e,0x00,0x16,0x0e,0x00]
108 v_mov_b32_sdwa v1
, sext
(v0
)
111 // GFX89
: v_and_b32_sdwa v0
, sext
(v0
), sext
(v0
) dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x26,0x00,0x06,0x0e,0x0a]
112 v_and_b32 v0
, sext
(v0
), sext
(v0
) dst_unused
:UNUSED_PAD src1_sel
:BYTE_2
115 // VI
: v_cmp_class_f32 vcc
, -v1
, sext
(v2
) src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x20,0x7c,0x01,0x00,0x12,0x0c]
116 // GFX9
: v_cmp_class_f32_sdwa vcc
, -v1
, sext
(v2
) src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x20,0x7c,0x01,0x00,0x12,0x0c]
117 v_cmp_class_f32_sdwa vcc
, -v1
, sext
(v2
) src0_sel
:BYTE_2 src1_sel
:WORD_0
119 //===----------------------------------------------------------------------===//
120 // Check VOP1 opcodes
121 //===----------------------------------------------------------------------===//
124 // GFX89
: v_nop ; encoding
: [0xf9,0x00,0x00,0x7e,0x00,0x00,0x00,0x00]
128 // GFX89
: v_cvt_u32_f32_sdwa v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x0e,0x00,0x7e,0x00,0x06,0x05,0x00]
129 v_cvt_u32_f32 v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
132 // GFX89
: v_fract_f32_sdwa v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x36,0x00,0x7e,0x00,0x06,0x05,0x00]
133 v_fract_f32 v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
136 // GFX89
: v_sin_f32_sdwa v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x05,0x00]
137 v_sin_f32 v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
140 // GFX89
: v_mov_b32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x02,0x02,0x7e,0x00,0x06,0x05,0x00]
141 v_mov_b32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
144 // GFX89
: v_cvt_f32_i32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x0a,0x02,0x7e,0x00,0x06,0x05,0x00]
145 v_cvt_f32_i32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
148 // GFX89
: v_cvt_f32_u32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x0c,0x02,0x7e,0x00,0x06,0x05,0x00]
149 v_cvt_f32_u32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
152 // GFX89
: v_cvt_i32_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x10,0x02,0x7e,0x00,0x06,0x05,0x00]
153 v_cvt_i32_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
156 // GFX89
: v_cvt_f16_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x14,0x02,0x7e,0x00,0x06,0x05,0x00]
157 v_cvt_f16_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
160 // GFX89
: v_cvt_f32_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x16,0x02,0x7e,0x00,0x06,0x05,0x00]
161 v_cvt_f32_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
164 // GFX89
: v_cvt_rpi_i32_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x18,0x02,0x7e,0x00,0x06,0x05,0x00]
165 v_cvt_rpi_i32_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
168 // GFX89
: v_cvt_flr_i32_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x1a,0x02,0x7e,0x00,0x06,0x05,0x00]
169 v_cvt_flr_i32_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
172 // GFX89
: v_cvt_off_f32_i4_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x1c,0x02,0x7e,0x00,0x06,0x05,0x00]
173 v_cvt_off_f32_i4 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
176 // GFX89
: v_cvt_f32_ubyte0_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x22,0x02,0x7e,0x00,0x06,0x05,0x00]
177 v_cvt_f32_ubyte0 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
180 // GFX89
: v_cvt_f32_ubyte1_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x24,0x02,0x7e,0x00,0x06,0x05,0x00]
181 v_cvt_f32_ubyte1 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
184 // GFX89
: v_cvt_f32_ubyte2_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x26,0x02,0x7e,0x00,0x06,0x05,0x00]
185 v_cvt_f32_ubyte2 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
188 // GFX89
: v_cvt_f32_ubyte3_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x28,0x02,0x7e,0x00,0x06,0x05,0x00]
189 v_cvt_f32_ubyte3 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
192 // GFX89
: v_trunc_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x38,0x02,0x7e,0x00,0x06,0x05,0x00]
193 v_trunc_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
196 // GFX89
: v_ceil_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x3a,0x02,0x7e,0x00,0x06,0x05,0x00]
197 v_ceil_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
200 // GFX89
: v_rndne_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x3c,0x02,0x7e,0x00,0x06,0x05,0x00]
201 v_rndne_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
204 // GFX89
: v_floor_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x3e,0x02,0x7e,0x00,0x06,0x05,0x00]
205 v_floor_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
208 // GFX89
: v_exp_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x40,0x02,0x7e,0x00,0x06,0x05,0x00]
209 v_exp_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
212 // GFX89
: v_log_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x42,0x02,0x7e,0x00,0x06,0x05,0x00]
213 v_log_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
216 // GFX89
: v_rcp_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x44,0x02,0x7e,0x00,0x06,0x05,0x00]
217 v_rcp_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
220 // GFX89
: v_rcp_iflag_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x46,0x02,0x7e,0x00,0x06,0x05,0x00]
221 v_rcp_iflag_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
224 // GFX89
: v_rsq_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x48,0x02,0x7e,0x00,0x06,0x05,0x00]
225 v_rsq_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
228 // GFX89
: v_sqrt_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x4e,0x02,0x7e,0x00,0x06,0x05,0x00]
229 v_sqrt_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
232 // GFX89
: v_cos_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x54,0x02,0x7e,0x00,0x06,0x05,0x00]
233 v_cos_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
236 // GFX89
: v_not_b32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x56,0x02,0x7e,0x00,0x06,0x05,0x00]
237 v_not_b32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
240 // GFX89
: v_bfrev_b32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x58,0x02,0x7e,0x00,0x06,0x05,0x00]
241 v_bfrev_b32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
244 // GFX89
: v_ffbh_u32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x5a,0x02,0x7e,0x00,0x06,0x05,0x00]
245 v_ffbh_u32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
248 // GFX89
: v_ffbl_b32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x5c,0x02,0x7e,0x00,0x06,0x05,0x00]
249 v_ffbl_b32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
252 // GFX89
: v_ffbh_i32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x5e,0x02,0x7e,0x00,0x06,0x05,0x00]
253 v_ffbh_i32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
256 // GFX89
: v_frexp_exp_i32_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x66,0x02,0x7e,0x00,0x06,0x05,0x00]
257 v_frexp_exp_i32_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
260 // GFX89
: v_frexp_mant_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x68,0x02,0x7e,0x00,0x06,0x05,0x00]
261 v_frexp_mant_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
264 // GFX89
: v_log_legacy_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x98,0x02,0x7e,0x00,0x06,0x05,0x00]
265 v_log_legacy_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
268 // GFX89
: v_exp_legacy_f32_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x96,0x02,0x7e,0x00,0x06,0x05,0x00]
269 v_exp_legacy_f32 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
272 // GFX89
: v_cvt_f16_u16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x72,0x02,0x7e,0x00,0x06,0x05,0x00]
273 v_cvt_f16_u16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
276 // GFX89
: v_cvt_f16_i16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x74,0x02,0x7e,0x00,0x06,0x05,0x00]
277 v_cvt_f16_i16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
280 // GFX89
: v_cvt_u16_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x76,0x02,0x7e,0x00,0x06,0x05,0x00]
281 v_cvt_u16_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
284 // GFX89
: v_cvt_i16_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x78,0x02,0x7e,0x00,0x06,0x05,0x00]
285 v_cvt_i16_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
288 // GFX89
: v_rcp_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x7a,0x02,0x7e,0x00,0x06,0x05,0x00]
289 v_rcp_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
292 // GFX89
: v_sqrt_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x7c,0x02,0x7e,0x00,0x06,0x05,0x00]
293 v_sqrt_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
296 // GFX89
: v_rsq_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x7e,0x02,0x7e,0x00,0x06,0x05,0x00]
297 v_rsq_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
300 // GFX89
: v_log_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x80,0x02,0x7e,0x00,0x06,0x05,0x00]
301 v_log_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
304 // GFX89
: v_exp_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x82,0x02,0x7e,0x00,0x06,0x05,0x00]
305 v_exp_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
308 // GFX89
: v_frexp_mant_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x84,0x02,0x7e,0x00,0x06,0x05,0x00]
309 v_frexp_mant_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
312 // GFX89
: v_frexp_exp_i16_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x86,0x02,0x7e,0x00,0x06,0x05,0x00]
313 v_frexp_exp_i16_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
316 // GFX89
: v_floor_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x88,0x02,0x7e,0x00,0x06,0x05,0x00]
317 v_floor_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
320 // GFX89
: v_ceil_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x8a,0x02,0x7e,0x00,0x06,0x05,0x00]
321 v_ceil_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
324 // GFX89
: v_trunc_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x8c,0x02,0x7e,0x00,0x06,0x05,0x00]
325 v_trunc_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
328 // GFX89
: v_rndne_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x8e,0x02,0x7e,0x00,0x06,0x05,0x00]
329 v_rndne_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
332 // GFX89
: v_fract_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x90,0x02,0x7e,0x00,0x06,0x05,0x00]
333 v_fract_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
336 // GFX89
: v_sin_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x92,0x02,0x7e,0x00,0x06,0x05,0x00]
337 v_sin_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
340 // GFX89
: v_cos_f16_sdwa v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x94,0x02,0x7e,0x00,0x06,0x05,0x00]
341 v_cos_f16 v1
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
343 // GFX9
: v_cvt_norm_i16_f16_sdwa v5
, -v1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x9a,0x0a,0x7e,0x01,0x06,0x16,0x00]
346 v_cvt_norm_i16_f16_sdwa v5
, -v1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
348 // GFX9
: v_cvt_norm_i16_f16_sdwa v5
, |v1| dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x9a,0x0a,0x7e,0x01,0x06,0x26,0x00]
351 v_cvt_norm_i16_f16_sdwa v5
, |v1| dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
353 // GFX9
: v_cvt_norm_u16_f16_sdwa v5
, v1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x9c,0x0a,0x7e,0x01,0x16,0x06,0x00]
356 v_cvt_norm_u16_f16_sdwa v5
, v1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
358 // GFX9
: v_cvt_norm_u16_f16_sdwa v5
, v1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 ; encoding
: [0xf9,0x9c,0x0a,0x7e,0x01,0x06,0x05,0x00]
361 v_cvt_norm_u16_f16_sdwa v5
, v1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1
363 // GFX9
: v_sat_pk_u8_i16_sdwa v5
, sext
(v1
) dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x9e,0x0a,0x7e,0x01,0x06,0x0e,0x00]
366 v_sat_pk_u8_i16_sdwa v5
, sext
(v1
) dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
368 //===----------------------------------------------------------------------===//
369 // Check VOP2 opcodes
370 //===----------------------------------------------------------------------===//
373 // GFX89
: v_add_f32_sdwa v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x02,0x00,0x06,0x05,0x02]
374 v_add_f32 v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
377 // GFX89
: v_min_f32_sdwa v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x14,0x00,0x06,0x05,0x02]
378 v_min_f32 v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
381 // GFX89
: v_and_b32_sdwa v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x26,0x00,0x06,0x05,0x02]
382 v_and_b32 v0
, v0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
385 // GFX89
: v_mul_i32_i24_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x0c,0x02,0x06,0x05,0x02]
386 v_mul_i32_i24 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
389 // GFX89
: v_sub_f32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x04,0x02,0x06,0x05,0x02]
390 v_sub_f32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
393 // GFX89
: v_subrev_f32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x06,0x02,0x06,0x05,0x02]
394 v_subrev_f32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
397 // GFX89
: v_mul_f32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x0a,0x02,0x06,0x05,0x02]
398 v_mul_f32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
401 // GFX89
: v_mul_hi_i32_i24_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x0e,0x02,0x06,0x05,0x02]
402 v_mul_hi_i32_i24 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
405 // GFX89
: v_mul_u32_u24_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x10,0x02,0x06,0x05,0x02]
406 v_mul_u32_u24 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
409 // GFX89
: v_mul_hi_u32_u24_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x12,0x02,0x06,0x05,0x02]
410 v_mul_hi_u32_u24 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
413 // GFX89
: v_max_f32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x16,0x02,0x06,0x05,0x02]
414 v_max_f32 v1
, v2 v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
417 // GFX89
: v_min_i32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x18,0x02,0x06,0x05,0x02]
418 v_min_i32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
421 // GFX89
: v_max_i32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x1a,0x02,0x06,0x05,0x02]
422 v_max_i32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
425 // GFX89
: v_min_u32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x1c,0x02,0x06,0x05,0x02]
426 v_min_u32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
429 // GFX89
: v_max_u32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x1e,0x02,0x06,0x05,0x02]
430 v_max_u32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
433 // GFX89
: v_lshrrev_b32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x20,0x02,0x06,0x05,0x02]
434 v_lshrrev_b32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
437 // GFX89
: v_ashrrev_i32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x22,0x02,0x06,0x05,0x02]
438 v_ashrrev_i32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
441 // GFX89
: v_lshlrev_b32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x24,0x02,0x06,0x05,0x02]
442 v_lshlrev_b32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
445 // GFX89
: v_or_b32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x28,0x02,0x06,0x05,0x02]
446 v_or_b32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
449 // GFX89
: v_xor_b32_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x2a,0x02,0x06,0x05,0x02]
450 v_xor_b32 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
453 // GFX89
: v_add_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x3e,0x02,0x06,0x05,0x02]
454 v_add_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
457 // GFX89
: v_sub_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x40,0x02,0x06,0x05,0x02]
458 v_sub_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
461 // GFX89
: v_subrev_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x42,0x02,0x06,0x05,0x02]
462 v_subrev_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
465 // GFX89
: v_mul_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x44,0x02,0x06,0x05,0x02]
466 v_mul_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
469 // GFX89
: v_add_u16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x4c,0x02,0x06,0x05,0x02]
470 v_add_u16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
473 // GFX89
: v_sub_u16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x4e,0x02,0x06,0x05,0x02]
474 v_sub_u16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
477 // GFX89
: v_subrev_u16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x50,0x02,0x06,0x05,0x02]
478 v_subrev_u16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
481 // GFX89
: v_mul_lo_u16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x52,0x02,0x06,0x05,0x02]
482 v_mul_lo_u16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
485 // GFX89
: v_lshlrev_b16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x54,0x02,0x06,0x05,0x02]
486 v_lshlrev_b16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
489 // GFX89
: v_lshrrev_b16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x56,0x02,0x06,0x05,0x02]
490 v_lshrrev_b16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
493 // GFX89
: v_ashrrev_i16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x58,0x02,0x06,0x05,0x02]
494 v_ashrrev_i16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
497 // GFX89
: v_max_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x5a,0x02,0x06,0x05,0x02]
498 v_max_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
501 // GFX89
: v_min_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x5c,0x02,0x06,0x05,0x02]
502 v_min_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
505 // GFX89
: v_max_u16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x5e,0x02,0x06,0x05,0x02]
506 v_max_u16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
509 // GFX89
: v_max_i16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x60,0x02,0x06,0x05,0x02]
510 v_max_i16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
513 // GFX89
: v_min_u16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x62,0x02,0x06,0x05,0x02]
514 v_min_u16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
517 // GFX89
: v_min_i16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x64,0x02,0x06,0x05,0x02]
518 v_min_i16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
521 // GFX89
: v_ldexp_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x66,0x02,0x06,0x05,0x02]
522 v_ldexp_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
526 // VI
: v_add_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x32,0x02,0x06,0x05,0x02]
527 v_add_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
531 // VI
: v_sub_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x34,0x02,0x06,0x05,0x02]
532 v_sub_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
536 // VI
: v_subrev_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x36,0x02,0x06,0x05,0x02]
537 v_subrev_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
541 // VI
: v_addc_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x38,0x02,0x06,0x05,0x02]
542 v_addc_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
546 // VI
: v_subb_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x3a,0x02,0x06,0x05,0x02]
547 v_subb_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
551 // VI
: v_subbrev_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x3c,0x02,0x06,0x05,0x02]
552 v_subbrev_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
556 // GFX9
: v_add_co_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x32,0x02,0x06,0x05,0x02]
557 v_add_co_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
561 // GFX9
: v_sub_co_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x34,0x02,0x06,0x05,0x02]
562 v_sub_co_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
566 // GFX9
: v_subrev_co_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x36,0x02,0x06,0x05,0x02]
567 v_subrev_co_u32_sdwa v1
, vcc
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
571 // GFX9
: v_addc_co_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x38,0x02,0x06,0x05,0x02]
572 v_addc_co_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
576 // GFX9
: v_subb_co_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x3a,0x02,0x06,0x05,0x02]
577 v_subb_co_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
581 // GFX9
: v_subbrev_co_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x3c,0x02,0x06,0x05,0x02]
582 v_subbrev_co_u32_sdwa v1
, vcc
, v2
, v3
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
585 // GFX89
: v_cndmask_b32_sdwa v5
, v1
, v2
, vcc dst_sel
:BYTE_0 dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x00,0x01,0x00,0x06,0x06]
586 v_cndmask_b32_sdwa v5
, v1
, v2
, vcc dst_sel
:BYTE_0 dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
590 // GFX9
: v_cndmask_b32_sdwa v5
, -1, v2
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x00,0xc1,0x06,0x86,0x06]
591 v_cndmask_b32_sdwa v5
, -1, v2
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
594 // GFX89
: v_cndmask_b32_sdwa v5
, v1
, sext
(v2
), vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x00,0x01,0x06,0x06,0x0e]
595 v_cndmask_b32_sdwa v5
, v1
, sext
(v2
), vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
597 v_cndmask_b32_sdwa v5
, vcc_lo
, v2
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
598 // NOSICI
: error
: not a valid operand
599 // NOVI
: error
: invalid operand for instruction
600 // NOGFX9
: error
: invalid operand
(violates constant bus restrictions
)
602 //===----------------------------------------------------------------------===//
603 // Check VOPC opcodes
604 //===----------------------------------------------------------------------===//
607 // VI
: v_cmp_eq_f32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x84,0x7c,0x01,0x00,0x02,0x04]
608 // GFX9
: v_cmp_eq_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x84,0x7c,0x01,0x00,0x02,0x04]
609 v_cmp_eq_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
612 // VI
: v_cmp_nle_f32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x98,0x7c,0x01,0x00,0x02,0x04]
613 // GFX9
: v_cmp_nle_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x98,0x7c,0x01,0x00,0x02,0x04]
614 v_cmp_nle_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
617 // VI
: v_cmpx_gt_f32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xa8,0x7c,0x01,0x00,0x02,0x04]
618 // GFX9
: v_cmpx_gt_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xa8,0x7c,0x01,0x00,0x02,0x04]
619 v_cmpx_gt_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
622 // VI
: v_cmpx_nlt_f32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xbc,0x7c,0x01,0x00,0x02,0x04]
623 // GFX9
: v_cmpx_nlt_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xbc,0x7c,0x01,0x00,0x02,0x04]
624 v_cmpx_nlt_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
627 // VI
: v_cmp_lt_i32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x82,0x7d,0x01,0x00,0x02,0x04]
628 // GFX9
: v_cmp_lt_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x82,0x7d,0x01,0x00,0x02,0x04]
629 v_cmp_lt_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
632 // VI
: v_cmp_t_i32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x8e,0x7d,0x01,0x00,0x02,0x04]
633 // GFX9
: v_cmp_t_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x8e,0x7d,0x01,0x00,0x02,0x04]
634 v_cmp_t_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
637 // VI
: v_cmpx_eq_i32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xa4,0x7d,0x01,0x00,0x02,0x04]
638 // GFX9
: v_cmpx_eq_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xa4,0x7d,0x01,0x00,0x02,0x04]
639 v_cmpx_eq_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
642 // VI
: v_cmpx_ne_i32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xaa,0x7d,0x01,0x00,0x02,0x04]
643 // GFX9
: v_cmpx_ne_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xaa,0x7d,0x01,0x00,0x02,0x04]
644 v_cmpx_ne_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
647 // VI
: v_cmp_f_u32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x90,0x7d,0x01,0x00,0x02,0x04]
648 // GFX9
: v_cmp_f_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x90,0x7d,0x01,0x00,0x02,0x04]
649 v_cmp_f_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
652 // VI
: v_cmp_gt_u32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x98,0x7d,0x01,0x00,0x02,0x04]
653 // GFX9
: v_cmp_gt_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x98,0x7d,0x01,0x00,0x02,0x04]
654 v_cmp_gt_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
657 // VI
: v_cmpx_le_u32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xb6,0x7d,0x01,0x00,0x02,0x04]
658 // GFX9
: v_cmpx_le_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xb6,0x7d,0x01,0x00,0x02,0x04]
659 v_cmpx_le_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
662 // VI
: v_cmpx_ne_u32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xba,0x7d,0x01,0x00,0x02,0x04]
663 // GFX9
: v_cmpx_ne_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0xba,0x7d,0x01,0x00,0x02,0x04]
664 v_cmpx_ne_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
667 // VI
: v_cmp_class_f32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x20,0x7c,0x01,0x00,0x02,0x04]
668 // GFX9
: v_cmp_class_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x20,0x7c,0x01,0x00,0x02,0x04]
669 v_cmp_class_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
672 // VI
: v_cmpx_class_f32 vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x22,0x7c,0x01,0x00,0x02,0x04]
673 // GFX9
: v_cmpx_class_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0 ; encoding
: [0xf9,0x04,0x22,0x7c,0x01,0x00,0x02,0x04]
674 v_cmpx_class_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
676 //===----------------------------------------------------------------------===//
677 // Check GFX9-specific SDWA features
678 //===----------------------------------------------------------------------===//
680 //===----------------------------------------------------------------------===//
681 // v_mac_f16
/f32 is prohibited
682 //===----------------------------------------------------------------------===//
685 // VI
: v_mac_f32_sdwa v3
, v4
, v5 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:WORD_1 src1_sel
:DWORD ; encoding
: [0xf9,0x0a,0x06,0x2c,0x04,0x16,0x05,0x06]
686 // NOGFX9
: error
: instruction
not supported on this GPU
687 v_mac_f32 v3
, v4
, v5 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:WORD_1
690 // VI
: v_mac_f32_sdwa v15
, v99
, v194 dst_sel
:DWORD dst_unused
:UNUSED_SEXT src0_sel
:WORD_0 src1_sel
:DWORD ; encoding
: [0xf9,0x84,0x1f,0x2c,0x63,0x0e,0x04,0x06]
691 // NOGFX9
: error
: instruction
not supported on this GPU
692 v_mac_f32 v15
, v99
, v194 dst_sel
:DWORD dst_unused
:UNUSED_SEXT src0_sel
:WORD_0
695 // NOVI
: error
: invalid operand for instruction
696 // NOGFX9
: error
: instruction
not supported on this GPU
697 v_mac_f32 v194
, v13
, v1 dst_sel
:BYTE_0 dst_unused
:UNUSED_SEXT src0_sel
:BYTE_3 src1_sel
:BYTE_2
700 // VI
: v_mac_f16_sdwa v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x06,0x02,0x46,0x02,0x06,0x05,0x02]
701 // NOGFX9
: error
: instruction
not supported on this GPU
702 v_mac_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
704 //===----------------------------------------------------------------------===//
705 // Scalar registers are allowed
706 //===----------------------------------------------------------------------===//
710 // GFX9
: v_mov_b32_sdwa v1
, s2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x7e,0x02,0x10,0x86,0x00]
711 v_mov_b32 v1
, s2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
715 // GFX9
: v_mov_b32_sdwa v1
, exec_lo dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x7e,0x7e,0x10,0x86,0x00]
716 v_mov_b32 v1
, exec_lo dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
720 // GFX9
: v_mov_b32_sdwa v1
, ttmp12 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x7e,0x78,0x10,0x86,0x00]
721 v_mov_b32_sdwa v1
, ttmp12 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
725 // GFX9
: v_add_f32_sdwa v0
, s0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x02,0x00,0x06,0x85,0x02]
726 v_add_f32 v0
, s0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
730 // GFX9
: v_add_f32_sdwa v0
, v0
, s22 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x2c,0x00,0x02,0x00,0x06,0x05,0x82]
731 v_add_f32 v0
, v0
, s22 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
735 // NO
: invalid operand
(violates constant bus restrictions
)
736 v_add_f32 v0
, exec_lo
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
740 // NO
: error
: not a valid operand
741 v_add_f32 v0
, v1
, tba_lo dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
745 // NO
: error
: not a valid operand
746 v_add_f32 v0
, v1
, tma_hi dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
750 // GFX9
: v_cmp_eq_f32_sdwa vcc
, s1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x04,0x84,0x7c,0x01,0x00,0x85,0x02]
751 v_cmp_eq_f32_sdwa vcc
, s1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
755 // GFX9
: v_cmp_eq_f32_sdwa vcc
, v1
, s22 src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x2c,0x84,0x7c,0x01,0x00,0x05,0x82]
756 v_cmp_eq_f32_sdwa vcc
, v1
, s22 src0_sel
:WORD_1 src1_sel
:BYTE_2
760 // GFX9
: v_cmp_eq_f32_sdwa ttmp
[12:13], v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x04,0x84,0x7c,0x01,0xf8,0x05,0x02]
761 v_cmp_eq_f32_sdwa ttmp
[12:13], v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
765 // NO
: error
: not a valid operand
766 v_cmp_eq_f32_sdwa tba
, v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
770 // NO
: error
: not a valid operand
771 v_cmp_eq_f32_sdwa tma
, v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
775 // GFX9
: v_cmp_eq_f32_sdwa vcc
, v1
, ttmp15 src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0xf6,0x84,0x7c,0x01,0x00,0x05,0x82]
776 v_cmp_eq_f32_sdwa vcc
, v1
, ttmp15 src0_sel
:WORD_1 src1_sel
:BYTE_2
780 // NOGFX9
: error
: invalid operand
(violates constant bus restrictions
)
781 v_cmp_eq_f32_sdwa vcc
, exec_lo
, vcc_lo src0_sel
:WORD_1 src1_sel
:BYTE_2
785 // GFX9
: v_ceil_f16_sdwa v5
, flat_scratch_lo dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x8a,0x0a,0x7e,0x66,0x06,0x86,0x00]
786 v_ceil_f16_sdwa v5
, flat_scratch_lo dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
788 //===----------------------------------------------------------------------===//
789 // Inline constants are allowed
(though semantics is
not clear yet
)
790 //===----------------------------------------------------------------------===//
794 // GFX9
: v_mov_b32_sdwa v5
, 0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x0a,0x7e,0x80,0x06,0x86,0x00]
795 v_mov_b32_sdwa v5
, 0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
799 // GFX9
: v_mov_b32_sdwa v5
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x0a,0x7e,0xc1,0x06,0x86,0x00]
800 v_mov_b32_sdwa v5
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
804 // GFX9
: v_mov_b32_sdwa v5
, 0.5 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x0a,0x7e,0xf0,0x06,0x86,0x00]
805 v_mov_b32_sdwa v5
, 0.5 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
809 // GFX9
: v_mov_b32_sdwa v5
, -4.0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x0a,0x7e,0xf7,0x06,0x86,0x00]
810 v_mov_b32_sdwa v5
, -4.0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
814 // GFX9
: v_mov_b32_sdwa v5
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x0a,0x7e,0xc1,0x16,0x8e,0x00]
815 v_mov_b32_sdwa v5
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
819 // GFX9
: v_add_f32_sdwa v5
, -1, v2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xc1,0x06,0x86,0x06]
820 v_add_f32_sdwa v5
, -1, v2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
824 // GFX9
: v_add_f32_sdwa v5
, |
-1|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xc1,0x16,0xa6,0x06]
825 v_add_f32_sdwa v5
, |
-1|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
829 // GFX9
: v_add_f32_sdwa v5
, neg(-1), -|v2| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xc1,0x16,0x96,0x36]
830 v_add_f32_sdwa v5
, neg(-1), -|v2| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
834 // GFX9
: v_add_f32_sdwa v5
, -|
-1|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xc1,0x16,0xb6,0x06]
835 v_add_f32_sdwa v5
, -|
-1|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
839 // GFX9
: v_add_f32_sdwa v5
, 0.5, v2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xf0,0x06,0x86,0x06]
840 v_add_f32_sdwa v5
, 0.5, v2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
844 // GFX9
: v_add_f32_sdwa v5
, |
-4.0|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xf7,0x16,0xa6,0x06]
845 v_add_f32_sdwa v5
, |
-4.0|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
849 // GFX9
: v_add_f32_sdwa v5
, neg(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xf7,0x16,0x96,0x06]
850 v_add_f32_sdwa v5
, neg(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
854 // GFX9
: v_add_f32_sdwa v5
, -|
-4.0|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x02,0xf7,0x16,0xb6,0x06]
855 v_add_f32_sdwa v5
, -|
-4.0|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
859 // GFX9
: v_add_f32_sdwa v5
, v2
, -4.0 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0xee,0x0b,0x02,0x02,0x16,0x06,0x86]
860 v_add_f32_sdwa v5
, v2
, -4.0 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
864 // GFX9
: v_add_f32_sdwa v5
, v2
, |
-4.0| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0xee,0x0b,0x02,0x02,0x16,0x06,0xa6]
865 v_add_f32_sdwa v5
, v2
, |
-4.0| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
869 // GFX9
: v_add_f32_sdwa v5
, v2
, neg(-4.0) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0xee,0x0b,0x02,0x02,0x16,0x06,0x96]
870 v_add_f32_sdwa v5
, v2
, neg(-4.0) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
874 // GFX9
: v_add_f32_sdwa v5
, v2
, -|
-4.0| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0xee,0x0b,0x02,0x02,0x16,0x06,0xb6]
875 v_add_f32_sdwa v5
, v2
, -|
-4.0| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
879 // GFX9
: v_add_f32_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x02,0x02,0x16,0x06,0x86]
880 v_add_f32_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
884 // GFX9
: v_add_f32_sdwa v5
, v2
, |
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x02,0x02,0x16,0x06,0xa6]
885 v_add_f32_sdwa v5
, v2
, |
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
889 // GFX9
: v_add_f32_sdwa v5
, v2
, neg(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x02,0x02,0x16,0x06,0x96]
890 v_add_f32_sdwa v5
, v2
, neg(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
894 // GFX9
: v_add_f32_sdwa v5
, v2
, -|
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x02,0x02,0x16,0x06,0xb6]
895 v_add_f32_sdwa v5
, v2
, -|
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
899 // GFX9
: v_and_b32_sdwa v5
, -4.0, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x26,0xf7,0x16,0x86,0x06]
900 v_and_b32_sdwa v5
, -4.0, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
904 // GFX9
: v_and_b32_sdwa v5
, sext
(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x26,0xf7,0x16,0x8e,0x06]
905 v_and_b32_sdwa v5
, sext
(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
909 // GFX9
: v_and_b32_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x26,0x02,0x16,0x06,0x86]
910 v_and_b32_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
914 // GFX9
: v_and_b32_sdwa v5
, v2
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x26,0x02,0x16,0x06,0x8e]
915 v_and_b32_sdwa v5
, v2
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
919 // GFX9
: v_exp_f16_sdwa v5
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xc1,0x16,0x86,0x00]
920 v_exp_f16_sdwa v5
, -1
924 // GFX9
: v_exp_f16_sdwa v5
, |
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xc1,0x16,0xa6,0x00]
925 v_exp_f16_sdwa v5
, |
-1|
929 // GFX9
: v_exp_f16_sdwa v5
, neg(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xc1,0x16,0x96,0x00]
930 v_exp_f16_sdwa v5
, neg(-1)
934 // GFX9
: v_exp_f16_sdwa v5
, -|
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xc1,0x16,0xb6,0x00]
935 v_exp_f16_sdwa v5
, -|
-1|
939 // GFX9
: v_exp_f16_sdwa v5
, 0.5 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xf0,0x16,0x86,0x00]
940 v_exp_f16_sdwa v5
, 0.5
944 // GFX9
: v_exp_f16_sdwa v5
, |
0.5| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xf0,0x16,0xa6,0x00]
945 v_exp_f16_sdwa v5
, |
0.5|
949 // GFX9
: v_exp_f16_sdwa v5
, neg(0.5) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xf0,0x16,0x96,0x00]
950 v_exp_f16_sdwa v5
, neg(0.5)
954 // GFX9
: v_exp_f16_sdwa v5
, -|
0.5| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x82,0x0a,0x7e,0xf0,0x16,0xb6,0x00]
955 v_exp_f16_sdwa v5
, -|
0.5|
959 // GFX9
: v_max_i16_sdwa v5
, -4.0, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x60,0xf7,0x16,0x86,0x06]
960 v_max_i16_sdwa v5
, -4.0, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
964 // GFX9
: v_max_i16_sdwa v5
, sext
(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x0a,0x60,0xf7,0x16,0x8e,0x06]
965 v_max_i16_sdwa v5
, sext
(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
969 // GFX9
: v_max_i16_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x60,0x02,0x16,0x06,0x86]
970 v_max_i16_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
974 // GFX9
: v_max_i16_sdwa v5
, v2
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x0b,0x60,0x02,0x16,0x06,0x8e]
975 v_max_i16_sdwa v5
, v2
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
979 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], -4.0, v2 src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x84,0x7c,0xf7,0x86,0x86,0x06]
980 v_cmp_eq_f32_sdwa s
[6:7], -4.0, v2 src0_sel
:DWORD src1_sel
:DWORD
984 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], |
-4.0|
, v2 src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x84,0x7c,0xf7,0x86,0xa6,0x06]
985 v_cmp_eq_f32_sdwa s
[6:7], |
-4.0|
, v2 src0_sel
:DWORD src1_sel
:DWORD
989 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], neg(-4.0), v2 src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x84,0x7c,0xf7,0x86,0x96,0x06]
990 v_cmp_eq_f32_sdwa s
[6:7], neg(-4.0), v2 src0_sel
:DWORD src1_sel
:DWORD
994 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], -|
-4.0|
, v2 src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x04,0x84,0x7c,0xf7,0x86,0xb6,0x06]
995 v_cmp_eq_f32_sdwa s
[6:7], -|
-4.0|
, v2 src0_sel
:DWORD src1_sel
:DWORD
999 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], v2
, -1 src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x85,0x7c,0x02,0x86,0x06,0x86]
1000 v_cmp_eq_f32_sdwa s
[6:7], v2
, -1 src0_sel
:DWORD src1_sel
:DWORD
1004 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], v2
, |
-1| src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x85,0x7c,0x02,0x86,0x06,0xa6]
1005 v_cmp_eq_f32_sdwa s
[6:7], v2
, |
-1| src0_sel
:DWORD src1_sel
:DWORD
1009 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], v2
, neg(-1) src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x85,0x7c,0x02,0x86,0x06,0x96]
1010 v_cmp_eq_f32_sdwa s
[6:7], v2
, neg(-1) src0_sel
:DWORD src1_sel
:DWORD
1014 // GFX9
: v_cmp_eq_f32_sdwa s
[6:7], v2
, -|
-1| src0_sel
:DWORD src1_sel
:DWORD ; encoding
: [0xf9,0x82,0x85,0x7c,0x02,0x86,0x06,0xb6]
1015 v_cmp_eq_f32_sdwa s
[6:7], v2
, -|
-1| src0_sel
:DWORD src1_sel
:DWORD
1017 //===----------------------------------------------------------------------===//
1018 // Literals are
not allowed
1019 //===----------------------------------------------------------------------===//
1022 // NOGFX89
: error
: invalid operand for instruction
1023 v_add_f32 v0
, v1
, 3.45 src0_sel
:BYTE_2 src1_sel
:WORD_0
1026 // NOGFX89
: error
: invalid operand for instruction
1027 v_cmpx_class_f32 vcc
, v1
, 200 src0_sel
:BYTE_2 src1_sel
:WORD_0
1030 // NOGFX89
: error
: invalid operand for instruction
1031 v_cmpx_class_f32 vcc
, 200, v1 src0_sel
:BYTE_2 src1_sel
:WORD_0
1034 // NOGFX89
: error
: invalid operand for instruction
1035 v_mov_b32_sdwa v5
, -17 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
1037 //===----------------------------------------------------------------------===//
1038 // VOPC with arbitrary SGPR destination
1039 //===----------------------------------------------------------------------===//
1043 // GFX9
: v_cmp_eq_f32_sdwa s
[2:3], v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x04,0x84,0x7c,0x01,0x82,0x05,0x02]
1044 v_cmp_eq_f32_sdwa s
[2:3], v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
1048 // GFX9
: v_cmp_eq_f32_sdwa exec
, v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x04,0x84,0x7c,0x01,0xfe,0x05,0x02]
1049 v_cmp_eq_f32_sdwa exec
, v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
1053 // GFX9
: v_cmp_eq_f32_sdwa exec
, s2
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x04,0x84,0x7c,0x02,0xfe,0x85,0x02]
1054 v_cmp_eq_f32_sdwa exec
, s2
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
1056 //===----------------------------------------------------------------------===//
1057 // OMod output modifier allowed
1058 //===----------------------------------------------------------------------===//
1062 // GFX9
: v_trunc_f32_sdwa v1
, v2
mul:2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x38,0x02,0x7e,0x02,0x50,0x06,0x00]
1063 v_trunc_f32 v1
, v2
mul:2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
1067 // GFX9
: v_trunc_f32_sdwa v1
, v2 clamp
div:2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x38,0x02,0x7e,0x02,0xf0,0x06,0x00]
1068 v_trunc_f32 v1
, v2 clamp
div:2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
1072 // GFX9
: v_add_f32_sdwa v0
, v0
, v0
mul:2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x02,0x00,0x46,0x05,0x02]
1073 v_add_f32 v0
, v0
, v0
mul:2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1077 // GFX9
: v_add_f32_sdwa v0
, v0
, v0 clamp
div:2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2 ; encoding
: [0xf9,0x00,0x00,0x02,0x00,0xe6,0x05,0x02]
1078 v_add_f32 v0
, v0
, v0 clamp
div:2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1080 //---------------------------------------------------------------------------//
1081 // Check Instructions
1082 //---------------------------------------------------------------------------//
1086 // GFX9
: v_screen_partition_4se_b32_sdwa v5
, v1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:BYTE_0 ; encoding
: [0xf9,0x6e,0x0a,0x7e,0x01,0x16,0x00,0x00]
1087 v_screen_partition_4se_b32_sdwa v5
, v1 src0_sel
:BYTE_0
1089 //===----------------------------------------------------------------------===//
1090 // Validate register size checks
(bug
37943)
1091 //===----------------------------------------------------------------------===//
1093 // NOSICI
: error
: invalid operand for instruction
1094 // NOGFX89
: error
: invalid operand for instruction
1095 v_add_f32 v0
, s
[0:1], v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1097 // NOSICI
: error
: invalid operand for instruction
1098 // NOGFX89
: error
: invalid operand for instruction
1099 v_add_f32 v0
, s
[0:3], v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1101 // NOSICI
: error
: invalid operand for instruction
1102 // NOGFX89
: error
: invalid operand for instruction
1103 v_add_f32 v0
, v
[0:1], v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1105 // NOSICI
: error
: invalid operand for instruction
1106 // NOGFX89
: error
: invalid operand for instruction
1107 v_add_f32 v0
, v
[0:2], v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1109 // NOSICI
: error
: invalid operand for instruction
1110 // NOGFX89
: error
: invalid operand for instruction
1111 v_add_f32 v0
, v0
, s
[0:1] dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1113 // NOSICI
: error
: invalid operand for instruction
1114 // NOGFX89
: error
: invalid operand for instruction
1115 v_add_f32 v0
, s0
, v
[0:1] dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1117 // NOSICI
: error
: invalid operand for instruction
1118 // NOGFX89
: error
: invalid operand for instruction
1119 v_add_f32 v0
, s0
, v
[0:3] dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1121 // NOSICI
: error
: not a valid operand
1122 // NOGFX89
: error
: invalid operand for instruction
1123 v_add_f16 v1
, v
[2:3], v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1125 // NOSICI
: error
: not a valid operand
1126 // NOGFX89
: error
: invalid operand for instruction
1127 v_add_f16 v1
, s
[2:3], v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1129 // NOSICI
: error
: not a valid operand
1130 // NOGFX89
: error
: invalid operand for instruction
1131 v_add_f16 v1
, v2
, v
[2:3] dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1133 // NOSICI
: error
: not a valid operand
1134 // NOGFX89
: error
: invalid operand for instruction
1135 v_add_f16 v1
, v2
, s
[2:3] dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1137 // NOSICI
: error
: not a valid operand
1138 // NOVI
: error
: not a valid operand
1139 // NOGFX9
: error
: invalid operand for instruction
1140 v_add_u32 v1
, v
[2:3], v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1142 // NOSICI
: error
: not a valid operand
1143 // NOVI
: error
: not a valid operand
1144 // NOGFX9
: error
: invalid operand for instruction
1145 v_add_u32 v1
, s
[2:3], v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1147 // NOSICI
: error
: not a valid operand
1148 // NOVI
: error
: not a valid operand
1149 // NOGFX9
: error
: invalid operand for instruction
1150 v_add_u32 v1
, v3
, v
[2:3] dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1152 // NOSICI
: error
: not a valid operand
1153 // NOVI
: error
: not a valid operand
1154 // NOGFX9
: error
: invalid operand for instruction
1155 v_add_u32 v1
, v3
, s
[2:3] dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2