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
595 // GFX9
: 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]
596 v_cndmask_b32_sdwa v5
, v1
, sext
(v2
), vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
598 //===----------------------------------------------------------------------===//
599 // Check VOPC opcodes
600 //===----------------------------------------------------------------------===//
603 // 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]
604 // 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]
605 v_cmp_eq_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
608 // 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]
609 // 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]
610 v_cmp_nle_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
613 // 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]
614 // 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]
615 v_cmpx_gt_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
618 // 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]
619 // 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]
620 v_cmpx_nlt_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
623 // 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]
624 // 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]
625 v_cmp_lt_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
628 // 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]
629 // 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]
630 v_cmp_t_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
633 // 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]
634 // 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]
635 v_cmpx_eq_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
638 // 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]
639 // 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]
640 v_cmpx_ne_i32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
643 // 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]
644 // 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]
645 v_cmp_f_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
648 // 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]
649 // 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]
650 v_cmp_gt_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
653 // 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]
654 // 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]
655 v_cmpx_le_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
658 // 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]
659 // 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]
660 v_cmpx_ne_u32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
663 // 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]
664 // 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]
665 v_cmp_class_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
668 // 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]
669 // 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]
670 v_cmpx_class_f32_sdwa vcc
, v1
, v2 src0_sel
:BYTE_2 src1_sel
:WORD_0
672 //===----------------------------------------------------------------------===//
673 // Check GFX9-specific SDWA features
674 //===----------------------------------------------------------------------===//
676 //===----------------------------------------------------------------------===//
677 // v_mac_f16
/f32 is prohibited
678 //===----------------------------------------------------------------------===//
681 // 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]
682 // NOGFX9
: error
: instruction
not supported on this GPU
683 v_mac_f32 v3
, v4
, v5 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:WORD_1
686 // 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]
687 // NOGFX9
: error
: instruction
not supported on this GPU
688 v_mac_f32 v15
, v99
, v194 dst_sel
:DWORD dst_unused
:UNUSED_SEXT src0_sel
:WORD_0
691 // NOVI
: error
: invalid operand for instruction
692 // NOGFX9
: error
: instruction
not supported on this GPU
693 v_mac_f32 v194
, v13
, v1 dst_sel
:BYTE_0 dst_unused
:UNUSED_SEXT src0_sel
:BYTE_3 src1_sel
:BYTE_2
696 // 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]
697 // NOGFX9
: error
: instruction
not supported on this GPU
698 v_mac_f16 v1
, v2
, v3 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
700 //===----------------------------------------------------------------------===//
701 // Scalar registers are allowed
702 //===----------------------------------------------------------------------===//
706 // 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]
707 v_mov_b32 v1
, s2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
711 // GFX9
: v_mov_b32_sdwa v1
, exec dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD ; encoding
: [0xf9,0x02,0x02,0x7e,0x7e,0x10,0x86,0x00]
712 v_mov_b32 v1
, exec dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
716 // 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]
717 v_mov_b32_sdwa v1
, ttmp12 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
721 // 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]
722 v_add_f32 v0
, s0
, v0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
726 // 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]
727 v_add_f32 v0
, v0
, s22 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
731 // NO
: invalid operand
(violates constant bus restrictions
)
732 v_add_f32 v0
, exec
, vcc dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
736 // NO
: error
: not a valid operand
737 v_add_f32 v0
, v1
, tba_lo dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
741 // NO
: error
: not a valid operand
742 v_add_f32 v0
, v1
, tma_hi dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
746 // 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]
747 v_cmp_eq_f32_sdwa vcc
, s1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
751 // 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]
752 v_cmp_eq_f32_sdwa vcc
, v1
, s22 src0_sel
:WORD_1 src1_sel
:BYTE_2
756 // 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]
757 v_cmp_eq_f32_sdwa ttmp
[12:13], v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
761 // NO
: error
: not a valid operand
762 v_cmp_eq_f32_sdwa tba
, v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
766 // NO
: error
: not a valid operand
767 v_cmp_eq_f32_sdwa tma
, v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
771 // 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]
772 v_cmp_eq_f32_sdwa vcc
, v1
, ttmp15 src0_sel
:WORD_1 src1_sel
:BYTE_2
776 // NOGFX9
: error
: invalid operand
(violates constant bus restrictions
)
777 v_cmp_eq_f32_sdwa vcc
, exec
, vcc src0_sel
:WORD_1 src1_sel
:BYTE_2
781 // 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]
782 v_ceil_f16_sdwa v5
, flat_scratch_lo dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
784 //===----------------------------------------------------------------------===//
785 // Inline constants are allowed
(though semantics is
not clear yet
)
786 //===----------------------------------------------------------------------===//
790 // 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]
791 v_mov_b32_sdwa v5
, 0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
795 // 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]
796 v_mov_b32_sdwa v5
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
800 // 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]
801 v_mov_b32_sdwa v5
, 0.5 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
805 // 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]
806 v_mov_b32_sdwa v5
, -4.0 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
810 // 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]
811 v_mov_b32_sdwa v5
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
815 // 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]
816 v_add_f32_sdwa v5
, -1, v2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
820 // 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]
821 v_add_f32_sdwa v5
, |
-1|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
825 // 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]
826 v_add_f32_sdwa v5
, neg(-1), -|v2| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
830 // 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]
831 v_add_f32_sdwa v5
, -|
-1|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
835 // 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]
836 v_add_f32_sdwa v5
, 0.5, v2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD src1_sel
:DWORD
840 // 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]
841 v_add_f32_sdwa v5
, |
-4.0|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
845 // 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]
846 v_add_f32_sdwa v5
, neg(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
850 // 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]
851 v_add_f32_sdwa v5
, -|
-4.0|
, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
855 // 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]
856 v_add_f32_sdwa v5
, v2
, -4.0 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
860 // 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]
861 v_add_f32_sdwa v5
, v2
, |
-4.0| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
865 // 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]
866 v_add_f32_sdwa v5
, v2
, neg(-4.0) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
870 // 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]
871 v_add_f32_sdwa v5
, v2
, -|
-4.0| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
875 // 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]
876 v_add_f32_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
880 // 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]
881 v_add_f32_sdwa v5
, v2
, |
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
885 // 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]
886 v_add_f32_sdwa v5
, v2
, neg(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
890 // 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]
891 v_add_f32_sdwa v5
, v2
, -|
-1| dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
895 // 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]
896 v_and_b32_sdwa v5
, -4.0, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
900 // 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]
901 v_and_b32_sdwa v5
, sext
(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
905 // 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]
906 v_and_b32_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
910 // 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]
911 v_and_b32_sdwa v5
, v2
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
915 // 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]
916 v_exp_f16_sdwa v5
, -1
920 // 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]
921 v_exp_f16_sdwa v5
, |
-1|
925 // 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]
926 v_exp_f16_sdwa v5
, neg(-1)
930 // 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]
931 v_exp_f16_sdwa v5
, -|
-1|
935 // 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]
936 v_exp_f16_sdwa v5
, 0.5
940 // 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]
941 v_exp_f16_sdwa v5
, |
0.5|
945 // 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]
946 v_exp_f16_sdwa v5
, neg(0.5)
950 // 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]
951 v_exp_f16_sdwa v5
, -|
0.5|
955 // 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]
956 v_max_i16_sdwa v5
, -4.0, v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
960 // 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]
961 v_max_i16_sdwa v5
, sext
(-4.0), v2 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
965 // 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]
966 v_max_i16_sdwa v5
, v2
, -1 dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
970 // 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]
971 v_max_i16_sdwa v5
, v2
, sext
(-1) dst_sel
:DWORD dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD src1_sel
:DWORD
975 // 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]
976 v_cmp_eq_f32_sdwa s
[6:7], -4.0, v2 src0_sel
:DWORD src1_sel
:DWORD
980 // 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]
981 v_cmp_eq_f32_sdwa s
[6:7], |
-4.0|
, v2 src0_sel
:DWORD src1_sel
:DWORD
985 // 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]
986 v_cmp_eq_f32_sdwa s
[6:7], neg(-4.0), v2 src0_sel
:DWORD src1_sel
:DWORD
990 // 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]
991 v_cmp_eq_f32_sdwa s
[6:7], -|
-4.0|
, v2 src0_sel
:DWORD src1_sel
:DWORD
995 // 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]
996 v_cmp_eq_f32_sdwa s
[6:7], v2
, -1 src0_sel
:DWORD src1_sel
:DWORD
1000 // 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]
1001 v_cmp_eq_f32_sdwa s
[6:7], v2
, |
-1| src0_sel
:DWORD src1_sel
:DWORD
1005 // 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]
1006 v_cmp_eq_f32_sdwa s
[6:7], v2
, neg(-1) src0_sel
:DWORD src1_sel
:DWORD
1010 // 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]
1011 v_cmp_eq_f32_sdwa s
[6:7], v2
, -|
-1| src0_sel
:DWORD src1_sel
:DWORD
1013 //===----------------------------------------------------------------------===//
1014 // Literals are
not allowed
1015 //===----------------------------------------------------------------------===//
1018 // NOGFX89
: error
: invalid operand for instruction
1019 v_add_f32 v0
, v1
, 3.45 src0_sel
:BYTE_2 src1_sel
:WORD_0
1022 // NOGFX89
: error
: invalid operand for instruction
1023 v_cmpx_class_f32 vcc
, v1
, 200 src0_sel
:BYTE_2 src1_sel
:WORD_0
1026 // NOGFX89
: error
: invalid operand for instruction
1027 v_cmpx_class_f32 vcc
, 200, v1 src0_sel
:BYTE_2 src1_sel
:WORD_0
1030 // NOGFX89
: error
: invalid operand for instruction
1031 v_mov_b32_sdwa v5
, -17 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:DWORD
1033 //===----------------------------------------------------------------------===//
1034 // VOPC with arbitrary SGPR destination
1035 //===----------------------------------------------------------------------===//
1039 // 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]
1040 v_cmp_eq_f32_sdwa s
[2:3], v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
1044 // 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]
1045 v_cmp_eq_f32_sdwa exec
, v1
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
1049 // 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]
1050 v_cmp_eq_f32_sdwa exec
, s2
, v2 src0_sel
:WORD_1 src1_sel
:BYTE_2
1052 //===----------------------------------------------------------------------===//
1053 // OMod output modifier allowed
1054 //===----------------------------------------------------------------------===//
1058 // 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]
1059 v_trunc_f32 v1
, v2
mul:2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
1063 // 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]
1064 v_trunc_f32 v1
, v2 clamp
div:2 dst_sel
:BYTE_0 dst_unused
:UNUSED_PRESERVE src0_sel
:DWORD
1068 // 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]
1069 v_add_f32 v0
, v0
, v0
mul:2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1073 // 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]
1074 v_add_f32 v0
, v0
, v0 clamp
div:2 dst_sel
:DWORD dst_unused
:UNUSED_PAD src0_sel
:WORD_1 src1_sel
:BYTE_2
1076 //---------------------------------------------------------------------------//
1077 // Check Instructions
1078 //---------------------------------------------------------------------------//
1082 // 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]
1083 v_screen_partition_4se_b32_sdwa v5
, v1 src0_sel
:BYTE_0