llvm.org GIT mirror llvm / fa87086
[AMDGPU][MC][GFX9][disassembler] Corrected decoding of op_sel_hi for v_mad_mix* See bug 35148: https://bugs.llvm.org//show_bug.cgi?id=35148 Reviewers: tamazov, SamWot, arsenm Differential Revision: https://reviews.llvm.org/D39492 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@318526 91177308-0d34-0410-b5e6-96231b3b80d8 Dmitry Preobrazhensky 2 years ago
10 changed file(s) with 545 addition(s) and 104 deletion(s). Raw diff Collapse all Expand all
10761076 OptionalImmIndexMap &OptionalIdx);
10771077 void cvtVOP3OpSel(MCInst &Inst, const OperandVector &Operands);
10781078 void cvtVOP3(MCInst &Inst, const OperandVector &Operands);
1079 void cvtVOP3PImpl(MCInst &Inst, const OperandVector &Operands,
1080 bool IsPacked);
10811079 void cvtVOP3P(MCInst &Inst, const OperandVector &Operands);
1082 void cvtVOP3P_NotPacked(MCInst &Inst, const OperandVector &Operands);
10831080
10841081 void cvtVOP3Interp(MCInst &Inst, const OperandVector &Operands);
10851082
43194316 cvtVOP3(Inst, Operands, OptionalIdx);
43204317 }
43214318
4322 void AMDGPUAsmParser::cvtVOP3PImpl(MCInst &Inst,
4323 const OperandVector &Operands,
4324 bool IsPacked) {
4319 void AMDGPUAsmParser::cvtVOP3P(MCInst &Inst,
4320 const OperandVector &Operands) {
43254321 OptionalImmIndexMap OptIdx;
4326 int Opc = Inst.getOpcode();
4322 const int Opc = Inst.getOpcode();
4323 const MCInstrDesc &Desc = MII.get(Opc);
4324
4325 const bool IsPacked = (Desc.TSFlags & SIInstrFlags::IsPacked) != 0;
43274326
43284327 cvtVOP3(Inst, Operands, OptIdx);
43294328
43394338
43404339 int OpSelHiIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel_hi);
43414340 if (OpSelHiIdx != -1) {
4342 // TODO: Should we change the printing to match?
43434341 int DefaultVal = IsPacked ? -1 : 0;
43444342 addOptionalImmOperand(Inst, Operands, OptIdx, AMDGPUOperand::ImmTyOpSelHi,
43454343 DefaultVal);
43994397
44004398 Inst.getOperand(ModIdx).setImm(Inst.getOperand(ModIdx).getImm() | ModVal);
44014399 }
4402 }
4403
4404 void AMDGPUAsmParser::cvtVOP3P(MCInst &Inst, const OperandVector &Operands) {
4405 cvtVOP3PImpl(Inst, Operands, true);
4406 }
4407
4408 void AMDGPUAsmParser::cvtVOP3P_NotPacked(MCInst &Inst,
4409 const OperandVector &Operands) {
4410 cvtVOP3PImpl(Inst, Operands, false);
44114400 }
44124401
44134402 //===----------------------------------------------------------------------===//
805805 }
806806
807807 static bool allOpsDefaultValue(const int* Ops, int NumOps, int Mod,
808 bool HasDstSel) {
809 int DefaultValue = (Mod == SISrcMods::OP_SEL_1);
808 bool IsPacked, bool HasDstSel) {
809 int DefaultValue = IsPacked && (Mod == SISrcMods::OP_SEL_1);
810810
811811 for (int I = 0; I < NumOps; ++I) {
812812 if (!!(Ops[I] & Mod) != DefaultValue)
842842 Mod == SISrcMods::OP_SEL_0 &&
843843 MII.get(MI->getOpcode()).TSFlags & SIInstrFlags::VOP3_OPSEL;
844844
845 if (allOpsDefaultValue(Ops, NumOps, Mod, HasDstSel))
845 const bool IsPacked =
846 MII.get(MI->getOpcode()).TSFlags & SIInstrFlags::IsPacked;
847
848 if (allOpsDefaultValue(Ops, NumOps, Mod, IsPacked, HasDstSel))
846849 return;
847850
848851 O << Name;
8181
8282 // Clamps hi component of register.
8383 // ClampLo and ClampHi set for packed clamp.
84 ClampHi = UINT64_C(1) << 48
84 ClampHi = UINT64_C(1) << 48,
85
86 // Is a packed VOP3P instruction.
87 IsPacked = UINT64_C(1) << 49
8588 };
8689
8790 // v_cmp_class_* etc. use a 10-bit mask for what operation is checked.
114114 // of a packed output register.
115115 field bit ClampHi = 0;
116116
117 // This bit indicates that this is a packed VOP3P instruction
118 field bit IsPacked = 0;
119
117120 // These need to be kept in sync with the enum in SIInstrFlags.
118121 let TSFlags{0} = SALU;
119122 let TSFlags{1} = VALU;
166169 let TSFlags{46} = IntClamp;
167170 let TSFlags{47} = ClampLo;
168171 let TSFlags{48} = ClampHi;
172
173 let TSFlags{49} = IsPacked;
169174
170175 let SchedRW = [Write32Bit];
171176
7979 let isCodeGenOnly = 1;
8080 let UseNamedOperandTable = 1;
8181 let VOP3_OPSEL = isVop3OpSel;
82 let IsPacked = P.IsPacked;
8283
8384 string Mnemonic = opName;
8485 string AsmOperands = !if(isVop3OpSel,
113114
114115 let AsmVariantName = AMDGPUAsmVariants.VOP3;
115116 let AsmMatchConverter =
116 !if(!and(P.IsPacked, isVOP3P),
117 !if(isVOP3P,
117118 "cvtVOP3P",
118 !if(isVOP3P, "cvtVOP3P_NotPacked",
119 !if(!or(P.HasModifiers, !or(P.HasOMod, P.HasIntClamp)),
120 "cvtVOP3",
121 "")));
119 !if(!or(P.HasModifiers, !or(P.HasOMod, P.HasIntClamp)),
120 "cvtVOP3",
121 ""));
122122
123123 VOPProfile Pfl = P;
124124 }
8282 }
8383
8484 ; GCN-LABEL: {{^}}v_mad_mixhi_f16_f16lo_f16lo_f16lo_undeflo_clamp_precvt:
85 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 clamp{{$}}
85 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel_hi:[1,1,1] clamp{{$}}
8686 ; GFX9: v_cvt_f16_f32_e32 v0, v0
8787 define <2 x half> @v_mad_mixhi_f16_f16lo_f16lo_f16lo_undeflo_clamp_precvt(half %src0, half %src1, half %src2) #0 {
8888 %src0.ext = fpext half %src0 to float
9898
9999 ; GCN-LABEL: {{^}}v_mad_mixhi_f16_f16lo_f16lo_f16lo_undeflo_clamp_postcvt:
100100 ; GCN: s_waitcnt
101 ; GFX9-NEXT: v_mad_mixhi_f16 v0, v0, v1, v2 clamp{{$}}
101 ; GFX9-NEXT: v_mad_mixhi_f16 v0, v0, v1, v2 op_sel_hi:[1,1,1] clamp{{$}}
102102 ; GFX9-NEXT: s_setpc_b64
103103 define <2 x half> @v_mad_mixhi_f16_f16lo_f16lo_f16lo_undeflo_clamp_postcvt(half %src0, half %src1, half %src2) #0 {
104104 %src0.ext = fpext half %src0 to float
115115
116116 ; GCN-LABEL: {{^}}v_mad_mixhi_f16_f16lo_f16lo_f16lo_undeflo_clamp_postcvt_multi_use:
117117 ; GCN: s_waitcnt
118 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2{{$}}
118 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2 op_sel_hi:[1,1,1]{{$}}
119119 ; GFX9-NEXT: global_store_short v{{\[[0-9]+:[0-9]+\]}}, v3
120 ; GFX9-NEXT: v_mad_mixhi_f16 v0, v0, v1, v2 clamp{{$}}
120 ; GFX9-NEXT: v_mad_mixhi_f16 v0, v0, v1, v2 op_sel_hi:[1,1,1] clamp{{$}}
121121 ; GFX9-NEXT: s_waitcnt vmcnt(0)
122122 ; GFX9-NEXT: s_setpc_b64
123123 define <2 x half> @v_mad_mixhi_f16_f16lo_f16lo_f16lo_undeflo_clamp_postcvt_multi_use(half %src0, half %src1, half %src2) #0 {
33
44 ; GCN-LABEL: mixlo_simple:
55 ; GCN: s_waitcnt
6 ; GFX9-NEXT: v_mad_mixlo_f16 v0, v0, v1, v2 op_sel_hi:[0,0,0]{{$}}
6 ; GFX9-NEXT: v_mad_mixlo_f16 v0, v0, v1, v2{{$}}
77 ; GFX9-NEXT: s_setpc_b64
88
99 ; CIVI: v_mac_f32_e32
1515 }
1616
1717 ; GCN-LABEL: {{^}}v_mad_mixlo_f16_f16lo_f16lo_f16lo:
18 ; GFX9: v_mad_mixlo_f16 v0, v0, v1, v2{{$}}
18 ; GFX9: v_mad_mixlo_f16 v0, v0, v1, v2 op_sel_hi:[1,1,1]{{$}}
1919 ; CI: v_mac_f32
2020 ; CIVI: v_cvt_f16_f32
2121 define half @v_mad_mixlo_f16_f16lo_f16lo_f16lo(half %src0, half %src1, half %src2) #0 {
7878 ; operation only clobbers relevant lane.
7979 ; GCN-LABEL: {{^}}v_mad_mix_v2f32:
8080 ; GCN: s_waitcnt
81 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2{{$}}
82 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1]{{$}}
81 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2 op_sel_hi:[1,1,1]{{$}}
82 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1]{{$}}
8383 ; GFX9-NEXT: v_mov_b32_e32 v0, v3
8484 ; GFX9-NEXT: s_setpc_b64
8585 define <2 x half> @v_mad_mix_v2f32(<2 x half> %src0, <2 x half> %src1, <2 x half> %src2) #0 {
9393
9494 ; GCN-LABEL: {{^}}v_mad_mix_v3f32:
9595 ; GCN: s_waitcnt
96 ; GFX9-NEXT: v_mad_mixlo_f16 v0, v0, v3, v6
97 ; GFX9-NEXT: v_mad_mixlo_f16 v1, v1, v4, v7
98 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v2, v5, v8
96 ; GFX9-NEXT: v_mad_mixlo_f16 v0, v0, v3, v6 op_sel_hi:[1,1,1]
97 ; GFX9-NEXT: v_mad_mixlo_f16 v1, v1, v4, v7 op_sel_hi:[1,1,1]
98 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v2, v5, v8 op_sel_hi:[1,1,1]
9999 ; GFX9-NEXT: s_setpc_b64
100100 define <3 x half> @v_mad_mix_v3f32(<3 x half> %src0, <3 x half> %src1, <3 x half> %src2) #0 {
101101 %src0.ext = fpext <3 x half> %src0 to <3 x float>
108108
109109 ; GCN-LABEL: {{^}}v_mad_mix_v4f32:
110110 ; GCN: s_waitcnt
111 ; GFX9-NEXT: v_mad_mixlo_f16 v6, v0, v2, v4
112 ; GFX9-NEXT: v_mad_mixhi_f16 v6, v0, v2, v4 op_sel:[1,1,1]
113 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v1, v3, v5
114 ; GFX9-NEXT: v_mad_mixhi_f16 v2, v1, v3, v5 op_sel:[1,1,1]
111 ; GFX9-NEXT: v_mad_mixlo_f16 v6, v0, v2, v4 op_sel_hi:[1,1,1]
112 ; GFX9-NEXT: v_mad_mixhi_f16 v6, v0, v2, v4 op_sel:[1,1,1] op_sel_hi:[1,1,1]
113 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v1, v3, v5 op_sel_hi:[1,1,1]
114 ; GFX9-NEXT: v_mad_mixhi_f16 v2, v1, v3, v5 op_sel:[1,1,1] op_sel_hi:[1,1,1]
115115 ; GFX9-NEXT: v_mov_b32_e32 v0, v6
116116 ; GFX9-NEXT: v_mov_b32_e32 v1, v2
117117 ; GFX9-NEXT: s_setpc_b64
126126
127127 ; FIXME: Fold clamp
128128 ; GCN-LABEL: {{^}}v_mad_mix_v2f32_clamp_postcvt:
129 ; GFX9: v_mad_mixlo_f16 v3, v0, v1, v2 clamp{{$}}
130 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1] clamp{{$}}
129 ; GFX9: v_mad_mixlo_f16 v3, v0, v1, v2 op_sel_hi:[1,1,1] clamp{{$}}
130 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp{{$}}
131131 ; GFX9-NEXT: v_mov_b32_e32 v0, v3
132132 ; GFX9-NEXT: s_setpc_b64
133133 define <2 x half> @v_mad_mix_v2f32_clamp_postcvt(<2 x half> %src0, <2 x half> %src1, <2 x half> %src2) #0 {
144144 ; FIXME: Should be packed into 2 registers per argument?
145145 ; GCN-LABEL: {{^}}v_mad_mix_v3f32_clamp_postcvt:
146146 ; GCN: s_waitcnt
147 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v2, v5, v8 clamp
148 ; GFX9-NEXT: v_mad_mixhi_f16 v2, v0, v0, v0 op_sel_hi:[0,0,0] clamp
149 ; GFX9-NEXT: v_mad_mixlo_f16 v0, v0, v3, v6 clamp
150 ; GFX9-NEXT: v_mad_mixhi_f16 v0, v1, v4, v7 clamp
147 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v2, v5, v8 op_sel_hi:[1,1,1] clamp
148 ; GFX9-NEXT: v_mad_mixhi_f16 v2, v0, v0, v0 clamp
149 ; GFX9-NEXT: v_mad_mixlo_f16 v0, v0, v3, v6 op_sel_hi:[1,1,1] clamp
150 ; GFX9-NEXT: v_mad_mixhi_f16 v0, v1, v4, v7 op_sel_hi:[1,1,1] clamp
151151 ; GFX9-NEXT: v_lshrrev_b32_e32 v1, 16, v0
152152 ; GFX9-NEXT: s_setpc_b64
153153 define <3 x half> @v_mad_mix_v3f32_clamp_postcvt(<3 x half> %src0, <3 x half> %src1, <3 x half> %src2) #0 {
163163
164164 ; GCN-LABEL: {{^}}v_mad_mix_v4f32_clamp_postcvt:
165165 ; GCN: s_waitcnt
166 ; GFX9-NEXT: v_mad_mixlo_f16 v6, v0, v2, v4 clamp
167 ; GFX9-NEXT: v_mad_mixhi_f16 v6, v0, v2, v4 op_sel:[1,1,1] clamp
168 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v1, v3, v5 clamp
169 ; GFX9-NEXT: v_mad_mixhi_f16 v2, v1, v3, v5 op_sel:[1,1,1] clamp
166 ; GFX9-NEXT: v_mad_mixlo_f16 v6, v0, v2, v4 op_sel_hi:[1,1,1] clamp
167 ; GFX9-NEXT: v_mad_mixhi_f16 v6, v0, v2, v4 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp
168 ; GFX9-NEXT: v_mad_mixlo_f16 v2, v1, v3, v5 op_sel_hi:[1,1,1] clamp
169 ; GFX9-NEXT: v_mad_mixhi_f16 v2, v1, v3, v5 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp
170170 ; GFX9-DAG: v_mov_b32_e32 v0, v6
171171 ; GFX9-DAG: v_mov_b32_e32 v1, v2
172172 ; GFX9: s_setpc_b64
183183
184184 ; GCN-LABEL: {{^}}v_mad_mix_v2f32_clamp_postcvt_lo:
185185 ; GCN: s_waitcnt
186 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2 clamp
187 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1]
186 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2 op_sel_hi:[1,1,1] clamp
187 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1]
188188 ; GFX9-NEXT: v_mov_b32_e32 v0, v3
189189 ; GFX9-NEXT: s_setpc_b64
190190 define <2 x half> @v_mad_mix_v2f32_clamp_postcvt_lo(<2 x half> %src0, <2 x half> %src1, <2 x half> %src2) #0 {
202202
203203 ; GCN-LABEL: {{^}}v_mad_mix_v2f32_clamp_postcvt_hi:
204204 ; GCN: s_waitcnt
205 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2
206 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1] clamp
205 ; GFX9-NEXT: v_mad_mixlo_f16 v3, v0, v1, v2 op_sel_hi:[1,1,1]
206 ; GFX9-NEXT: v_mad_mixhi_f16 v3, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp
207207 ; GFX9-NEXT: v_mov_b32_e32 v0, v3
208208 ; GFX9-NEXT: s_setpc_b64
209209 define <2 x half> @v_mad_mix_v2f32_clamp_postcvt_hi(<2 x half> %src0, <2 x half> %src1, <2 x half> %src2) #0 {
221221
222222 ; FIXME: Should be able to use mixlo/mixhi
223223 ; GCN-LABEL: {{^}}v_mad_mix_v2f32_clamp_precvt:
224 ; GFX9: v_mad_mix_f32 v3, v0, v1, v2 clamp
225 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] clamp
224 ; GFX9: v_mad_mix_f32 v3, v0, v1, v2 op_sel_hi:[1,1,1] clamp
225 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp
226226 ; GFX9: v_cvt_f16_f32_e32 v1, v3
227227 ; GFX9: v_cvt_f16_f32_e32 v0, v0
228228 ; GFX9: v_and_b32_e32 v1, 0xffff, v1
240240 }
241241
242242 ; GCN-LABEL: {{^}}v_mad_mix_v3f32_clamp_precvt:
243 ; GFX9: v_mad_mix_f32 v0, v0, v3, v6 clamp
244 ; GFX9: v_mad_mix_f32 v1, v1, v4, v7 clamp
245 ; GFX9: v_mad_mix_f32 v2, v2, v5, v8 clamp
243 ; GFX9: v_mad_mix_f32 v0, v0, v3, v6 op_sel_hi:[1,1,1] clamp
244 ; GFX9: v_mad_mix_f32 v1, v1, v4, v7 op_sel_hi:[1,1,1] clamp
245 ; GFX9: v_mad_mix_f32 v2, v2, v5, v8 op_sel_hi:[1,1,1] clamp
246246 ; GFX9: v_cvt_f16_f32
247247 ; GFX9: v_cvt_f16_f32
248248 ; GFX9: v_cvt_f16_f32
258258 }
259259
260260 ; GCN-LABEL: {{^}}v_mad_mix_v4f32_clamp_precvt:
261 ; GFX9: v_mad_mix_f32 v6, v0, v2, v4 op_sel:[1,1,1] clamp
262 ; GFX9: v_mad_mix_f32 v0, v0, v2, v4 clamp
263 ; GFX9: v_mad_mix_f32 v2, v1, v3, v5 op_sel:[1,1,1] clamp
264 ; GFX9: v_mad_mix_f32 v1, v1, v3, v5 clamp
261 ; GFX9: v_mad_mix_f32 v6, v0, v2, v4 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp
262 ; GFX9: v_mad_mix_f32 v0, v0, v2, v4 op_sel_hi:[1,1,1] clamp
263 ; GFX9: v_mad_mix_f32 v2, v1, v3, v5 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp
264 ; GFX9: v_mad_mix_f32 v1, v1, v3, v5 op_sel_hi:[1,1,1] clamp
265265 ; GFX9: v_cvt_f16_f32
266266 ; GFX9: v_cvt_f16_f32
267267 ; GFX9: v_cvt_f16_f32
22 ; RUN: llc -march=amdgcn -mcpu=hawaii -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GCN,CIVI,CI %s
33
44 ; GCN-LABEL: {{^}}v_mad_mix_f32_f16lo_f16lo_f16lo:
5 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 ; encoding: [0x00,0x40,0xa0,0xd3,0x00,0x03,0x0a,0x1c]
5 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel_hi:[1,1,1] ; encoding: [0x00,0x40,0xa0,0xd3,0x00,0x03,0x0a,0x1c]
66 ; VI: v_mac_f32
77 ; CI: v_mad_f32
88 define float @v_mad_mix_f32_f16lo_f16lo_f16lo(half %src0, half %src1, half %src2) #0 {
1414 }
1515
1616 ; GCN-LABEL: {{^}}v_mad_mix_f32_f16hi_f16hi_f16hi_int:
17 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] ; encoding
17 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1] ; encoding
1818 ; CIVI: v_mac_f32
1919 define float @v_mad_mix_f32_f16hi_f16hi_f16hi_int(i32 %src0, i32 %src1, i32 %src2) #0 {
2020 %src0.hi = lshr i32 %src0, 16
3434 }
3535
3636 ; GCN-LABEL: {{^}}v_mad_mix_f32_f16hi_f16hi_f16hi_elt:
37 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] ; encoding
37 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1] ; encoding
3838 ; VI: v_mac_f32
3939 ; CI: v_mad_f32
4040 define float @v_mad_mix_f32_f16hi_f16hi_f16hi_elt(<2 x half> %src0, <2 x half> %src1, <2 x half> %src2) #0 {
5050
5151 ; GCN-LABEL: {{^}}v_mad_mix_v2f32:
5252 ; GFX9: v_mov_b32_e32 v3, v1
53 ; GFX9-NEXT: v_mad_mix_f32 v1, v0, v3, v2 op_sel:[1,1,1]
54 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v3, v2
53 ; GFX9-NEXT: v_mad_mix_f32 v1, v0, v3, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1]
54 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v3, v2 op_sel_hi:[1,1,1]
5555
5656 ; CIVI: v_mac_f32
5757 define <2 x float> @v_mad_mix_v2f32(<2 x half> %src0, <2 x half> %src1, <2 x half> %src2) #0 {
6565 ; GCN-LABEL: {{^}}v_mad_mix_v2f32_shuffle:
6666 ; GCN: s_waitcnt
6767 ; GFX9-NEXT: v_mov_b32_e32 v3, v1
68 ; GFX9-NEXT: v_mad_mix_f32 v1, v0, v3, v2 op_sel:[0,1,1]
69 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v3, v2 op_sel:[1,0,1]
68 ; GFX9-NEXT: v_mad_mix_f32 v1, v0, v3, v2 op_sel:[0,1,1] op_sel_hi:[1,1,1]
69 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v3, v2 op_sel:[1,0,1] op_sel_hi:[1,1,1]
7070 ; GFX9-NEXT: s_setpc_b64
7171
7272 ; CIVI: v_mac_f32
8383
8484 ; GCN-LABEL: {{^}}v_mad_mix_f32_negf16lo_f16lo_f16lo:
8585 ; GFX9: s_waitcnt
86 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 ; encoding
86 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 op_sel_hi:[1,1,1] ; encoding
8787 ; GFX9-NEXT: s_setpc_b64
8888
8989 ; CIVI: v_mad_f32
9797 }
9898
9999 ; GCN-LABEL: {{^}}v_mad_mix_f32_absf16lo_f16lo_f16lo:
100 ; GFX9: v_mad_mix_f32 v0, |v0|, v1, v2
100 ; GFX9: v_mad_mix_f32 v0, |v0|, v1, v2 op_sel_hi:[1,1,1]
101101
102102 ; CIVI: v_mad_f32
103103 define float @v_mad_mix_f32_absf16lo_f16lo_f16lo(half %src0, half %src1, half %src2) #0 {
111111
112112 ; GCN-LABEL: {{^}}v_mad_mix_f32_negabsf16lo_f16lo_f16lo:
113113 ; GFX9: s_waitcnt
114 ; GFX9-NEXT: v_mad_mix_f32 v0, -|v0|, v1, v2
114 ; GFX9-NEXT: v_mad_mix_f32 v0, -|v0|, v1, v2 op_sel_hi:[1,1,1]
115115 ; GFX9-NEXT: s_setpc_b64
116116
117117 ; CIVI: v_mad_f32
281281 }
282282
283283 ; GCN-LABEL: {{^}}v_mad_mix_clamp_f32_f16hi_f16hi_f16hi_elt:
284 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] clamp ; encoding
284 ; GFX9: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp ; encoding
285285 ; VI: v_mac_f32_e64 v{{[0-9]}}, v{{[0-9]}}, v{{[0-9]}} clamp{{$}}
286286 ; CI: v_mad_f32 v{{[0-9]}}, v{{[0-9]}}, v{{[0-9]}}, v{{[0-9]}} clamp{{$}}
287287 define float @v_mad_mix_clamp_f32_f16hi_f16hi_f16hi_elt(<2 x half> %src0, <2 x half> %src1, <2 x half> %src2) #0 {
374374
375375 ; GCN-LABEL: {{^}}v_mad_mix_f32_f16lo_f16lo_f16lo_f32_flush_fmulfadd:
376376 ; GCN: s_waitcnt
377 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v1, v2 ; encoding
377 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v1, v2 op_sel_hi:[1,1,1] ; encoding
378378 ; GFX9-NEXT: s_setpc_b64
379379 define float @v_mad_mix_f32_f16lo_f16lo_f16lo_f32_flush_fmulfadd(half %src0, half %src1, half %src2) #0 {
380380 %src0.ext = fpext half %src0 to float
399399
400400 ; GCN-LABEL: {{^}}v_mad_mix_f32_negprecvtf16lo_f16lo_f16lo:
401401 ; GFX9: s_waitcnt
402 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 ; encoding
402 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 op_sel_hi:[1,1,1] ; encoding
403403 ; GFX9-NEXT: s_setpc_b64
404404
405405 ; CIVI: v_mad_f32
432432
433433 ; GCN-LABEL: {{^}}v_mad_mix_f32_precvtabsf16hi_f16lo_f16lo:
434434 ; GFX9: s_waitcnt
435 ; GFX9-NEXT: v_mad_mix_f32 v0, |v0|, v1, v2 op_sel:[1,0,0]
435 ; GFX9-NEXT: v_mad_mix_f32 v0, |v0|, v1, v2 op_sel:[1,0,0] op_sel_hi:[1,1,1]
436436 ; GFX9-NEXT: s_setpc_b64
437437 define float @v_mad_mix_f32_precvtabsf16hi_f16lo_f16lo(i32 %src0.arg, half %src1, half %src2) #0 {
438438 %src0.arg.bc = bitcast i32 %src0.arg to <2 x half>
447447
448448 ; GCN-LABEL: {{^}}v_mad_mix_f32_preextractfneg_f16hi_f16lo_f16lo:
449449 ; GFX9: s_waitcnt
450 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 op_sel:[1,0,0]
450 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 op_sel:[1,0,0] op_sel_hi:[1,1,1]
451451 ; GFX9-NEXT: s_setpc_b64
452452 define float @v_mad_mix_f32_preextractfneg_f16hi_f16lo_f16lo(i32 %src0.arg, half %src1, half %src2) #0 {
453453 %src0.arg.bc = bitcast i32 %src0.arg to <2 x half>
464464 ; GCN-LABEL: {{^}}v_mad_mix_f32_preextractfabs_f16hi_f16lo_f16lo:
465465 ; GFX9: s_waitcnt
466466 ; GFX9-NEXT: v_and_b32_e32 v0, 0x7fff0000, v0
467 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,0,0]
467 ; GFX9-NEXT: v_mad_mix_f32 v0, v0, v1, v2 op_sel:[1,0,0] op_sel_hi:[1,1,1]
468468 ; GFX9-NEXT: s_setpc_b64
469469 define float @v_mad_mix_f32_preextractfabs_f16hi_f16lo_f16lo(i32 %src0.arg, half %src1, half %src2) #0 {
470470 %src0.arg.bc = bitcast i32 %src0.arg to <2 x half>
481481 ; GCN-LABEL: {{^}}v_mad_mix_f32_preextractfabsfneg_f16hi_f16lo_f16lo:
482482 ; GFX9: s_waitcnt
483483 ; GFX9-NEXT: v_and_b32_e32 v0, 0x7fff0000, v0
484 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 op_sel:[1,0,0]
484 ; GFX9-NEXT: v_mad_mix_f32 v0, -v0, v1, v2 op_sel:[1,0,0] op_sel_hi:[1,1,1]
485485 ; GFX9-NEXT: s_setpc_b64
486486 define float @v_mad_mix_f32_preextractfabsfneg_f16hi_f16lo_f16lo(i32 %src0.arg, half %src1, half %src2) #0 {
487487 %src0.arg.bc = bitcast i32 %src0.arg to <2 x half>
168168 // GFX9: v_pk_max_f16 v0, v1, v2 ; encoding: [0x00,0x00,0x92,0xd3,0x01,0x05,0x02,0x18]
169169
170170 v_mad_mix_f32 v0, v1, v2, v3
171 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
171 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
172172
173173 v_mad_mixlo_f16 v0, v1, v2, v3
174 // GFX9: v_mad_mixlo_f16 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x04]
174 // GFX9: v_mad_mixlo_f16 v0, v1, v2, v3 ; encoding: [0x00,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x04]
175175
176176 v_mad_mixhi_f16 v0, v1, v2, v3
177 // GFX9: v_mad_mixhi_f16 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x04]
177 // GFX9: v_mad_mixhi_f16 v0, v1, v2, v3 ; encoding: [0x00,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x04]
178178
179179 //
180180 // Regular source modifiers on non-packed instructions
181181 //
182182
183183 v_mad_mix_f32 v0, abs(v1), v2, v3
184 // GFX9: v_mad_mix_f32 v0, |v1|, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x01,0xa0,0xd3,0x01,0x05,0x0e,0x04]
184 // GFX9: v_mad_mix_f32 v0, |v1|, v2, v3 ; encoding: [0x00,0x01,0xa0,0xd3,0x01,0x05,0x0e,0x04]
185185
186186 v_mad_mix_f32 v0, v1, abs(v2), v3
187 // GFX9: v_mad_mix_f32 v0, v1, |v2|, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x02,0xa0,0xd3,0x01,0x05,0x0e,0x04]
187 // GFX9: v_mad_mix_f32 v0, v1, |v2|, v3 ; encoding: [0x00,0x02,0xa0,0xd3,0x01,0x05,0x0e,0x04]
188188
189189 v_mad_mix_f32 v0, v1, v2, abs(v3)
190 // GFX9: v_mad_mix_f32 v0, v1, v2, |v3| op_sel_hi:[0,0,0] ; encoding: [0x00,0x04,0xa0,0xd3,0x01,0x05,0x0e,0x04]
190 // GFX9: v_mad_mix_f32 v0, v1, v2, |v3| ; encoding: [0x00,0x04,0xa0,0xd3,0x01,0x05,0x0e,0x04]
191191
192192 v_mad_mix_f32 v0, -v1, v2, v3
193 // GFX9: v_mad_mix_f32 v0, -v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x24]
193 // GFX9: v_mad_mix_f32 v0, -v1, v2, v3 ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x24]
194194
195195 v_mad_mix_f32 v0, v1, -v2, v3
196 // GFX9: v_mad_mix_f32 v0, v1, -v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x44]
196 // GFX9: v_mad_mix_f32 v0, v1, -v2, v3 ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x44]
197197
198198 v_mad_mix_f32 v0, v1, v2, -v3
199 // GFX9: v_mad_mix_f32 v0, v1, v2, -v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x84]
199 // GFX9: v_mad_mix_f32 v0, v1, v2, -v3 ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x84]
200200
201201 v_mad_mix_f32 v0, -abs(v1), v2, v3
202 // GFX9: v_mad_mix_f32 v0, -|v1|, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x01,0xa0,0xd3,0x01,0x05,0x0e,0x24]
202 // GFX9: v_mad_mix_f32 v0, -|v1|, v2, v3 ; encoding: [0x00,0x01,0xa0,0xd3,0x01,0x05,0x0e,0x24]
203203
204204 v_mad_mix_f32 v0, v1, -abs(v2), v3
205 // GFX9: v_mad_mix_f32 v0, v1, -|v2|, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x02,0xa0,0xd3,0x01,0x05,0x0e,0x44]
205 // GFX9: v_mad_mix_f32 v0, v1, -|v2|, v3 ; encoding: [0x00,0x02,0xa0,0xd3,0x01,0x05,0x0e,0x44]
206206
207207 v_mad_mix_f32 v0, v1, v2, -abs(v3)
208 // GFX9: v_mad_mix_f32 v0, v1, v2, -|v3| op_sel_hi:[0,0,0] ; encoding: [0x00,0x04,0xa0,0xd3,0x01,0x05,0x0e,0x84]
208 // GFX9: v_mad_mix_f32 v0, v1, v2, -|v3| ; encoding: [0x00,0x04,0xa0,0xd3,0x01,0x05,0x0e,0x84]
209209
210210 v_mad_mixlo_f16 v0, abs(v1), -v2, abs(v3)
211 // GFX9: v_mad_mixlo_f16 v0, |v1|, -v2, |v3| op_sel_hi:[0,0,0] ; encoding: [0x00,0x05,0xa1,0xd3,0x01,0x05,0x0e,0x44]
211 // GFX9: v_mad_mixlo_f16 v0, |v1|, -v2, |v3| ; encoding: [0x00,0x05,0xa1,0xd3,0x01,0x05,0x0e,0x44]
212212
213213 v_mad_mixhi_f16 v0, -v1, abs(v2), -abs(v3)
214 // GFX9: v_mad_mixhi_f16 v0, -v1, |v2|, -|v3| op_sel_hi:[0,0,0] ; encoding: [0x00,0x06,0xa2,0xd3,0x01,0x05,0x0e,0xa4]
214 // GFX9: v_mad_mixhi_f16 v0, -v1, |v2|, -|v3| ; encoding: [0x00,0x06,0xa2,0xd3,0x01,0x05,0x0e,0xa4]
215215
216216 v_mad_mixlo_f16 v0, v1, v2, v3 clamp
217 // GFX9: v_mad_mixlo_f16 v0, v1, v2, v3 op_sel_hi:[0,0,0] clamp ; encoding: [0x00,0x80,0xa1,0xd3,0x01,0x05,0x0e,0x04]
217 // GFX9: v_mad_mixlo_f16 v0, v1, v2, v3 clamp ; encoding: [0x00,0x80,0xa1,0xd3,0x01,0x05,0x0e,0x04]
218218
219219 v_mad_mixhi_f16 v0, v1, v2, v3 clamp
220 // GFX9: v_mad_mixhi_f16 v0, v1, v2, v3 op_sel_hi:[0,0,0] clamp ; encoding: [0x00,0x80,0xa2,0xd3,0x01,0x05,0x0e,0x04]
220 // GFX9: v_mad_mixhi_f16 v0, v1, v2, v3 clamp ; encoding: [0x00,0x80,0xa2,0xd3,0x01,0x05,0x0e,0x04]
221221
222222 //
223223 // op_sel with non-packed instructions
224224 //
225225
226226 v_mad_mix_f32 v0, v1, v2, v3 op_sel:[0,0,0]
227 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
227 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
228228
229229 v_mad_mix_f32 v0, v1, v2, v3 op_sel:[1,0,0]
230 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xa0,0xd3,0x01,0x05,0x0e,0x04]
230 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x08,0xa0,0xd3,0x01,0x05,0x0e,0x04]
231231
232232 v_mad_mix_f32 v0, v1, v2, v3 op_sel:[0,1,0]
233 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xa0,0xd3,0x01,0x05,0x0e,0x04]
233 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x10,0xa0,0xd3,0x01,0x05,0x0e,0x04]
234234
235235 v_mad_mix_f32 v0, v1, v2, v3 op_sel:[0,0,1]
236 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[0,0,1] op_sel_hi:[0,0,0] ; encoding: [0x00,0x20,0xa0,0xd3,0x01,0x05,0x0e,0x04]
236 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[0,0,1] ; encoding: [0x00,0x20,0xa0,0xd3,0x01,0x05,0x0e,0x04]
237237
238238 v_mad_mix_f32 v0, v1, v2, v3 op_sel:[1,1,1]
239 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[1,1,1] op_sel_hi:[0,0,0] ; encoding: [0x00,0x38,0xa0,0xd3,0x01,0x05,0x0e,0x04]
239 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel:[1,1,1] ; encoding: [0x00,0x38,0xa0,0xd3,0x01,0x05,0x0e,0x04]
240240
241241 v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[0,0,0]
242 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
242 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
243243
244244 v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[1,0,0]
245245 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x0c]
251251 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[0,0,1] ; encoding: [0x00,0x40,0xa0,0xd3,0x01,0x05,0x0e,0x04]
252252
253253 v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[1,1,1]
254 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xa0,0xd3,0x01,0x05,0x0e,0x1c]
254 // GFX9: v_mad_mix_f32 v0, v1, v2, v3 op_sel_hi:[1,1,1] ; encoding: [0x00,0x40,0xa0,0xd3,0x01,0x05,0x0e,0x1c]
255255
256256 v_mad_mixlo_f16 v0, v1, v2, v3 op_sel_hi:[1,0,1] clamp
257257 // GFX9: v_mad_mixlo_f16 v0, v1, v2, v3 op_sel_hi:[1,0,1] clamp ; encoding: [0x00,0xc0,0xa1,0xd3,0x01,0x05,0x0e,0x0c]
187187
188188 # GFX9: v_mad_u16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0x04,0xd2,0x01,0x05,0x0e,0x04]
189189 0x05,0x80,0x04,0xd2,0x01,0x05,0x0e,0x04
190
191 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
192 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04
193
194 # GFX9: v_mad_mix_f32 v255, v1, v2, v3 ; encoding: [0xff,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04]
195 0xff,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x04
196
197 # GFX9: v_mad_mix_f32 v5, v255, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0xff,0x05,0x0e,0x04]
198 0x05,0x00,0xa0,0xd3,0xff,0x05,0x0e,0x04
199
200 # GFX9: v_mad_mix_f32 v5, s1, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x04,0x0e,0x04]
201 0x05,0x00,0xa0,0xd3,0x01,0x04,0x0e,0x04
202
203 # GFX9: v_mad_mix_f32 v5, s101, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x65,0x04,0x0e,0x04]
204 0x05,0x00,0xa0,0xd3,0x65,0x04,0x0e,0x04
205
206 # GFX9: v_mad_mix_f32 v5, flat_scratch_lo, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x66,0x04,0x0e,0x04]
207 0x05,0x00,0xa0,0xd3,0x66,0x04,0x0e,0x04
208
209 # GFX9: v_mad_mix_f32 v5, flat_scratch_hi, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x67,0x04,0x0e,0x04]
210 0x05,0x00,0xa0,0xd3,0x67,0x04,0x0e,0x04
211
212 # GFX9: v_mad_mix_f32 v5, vcc_lo, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x6a,0x04,0x0e,0x04]
213 0x05,0x00,0xa0,0xd3,0x6a,0x04,0x0e,0x04
214
215 # GFX9: v_mad_mix_f32 v5, vcc_hi, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x6b,0x04,0x0e,0x04]
216 0x05,0x00,0xa0,0xd3,0x6b,0x04,0x0e,0x04
217
218 # GFX9: v_mad_mix_f32 v5, m0, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x7c,0x04,0x0e,0x04]
219 0x05,0x00,0xa0,0xd3,0x7c,0x04,0x0e,0x04
220
221 # GFX9: v_mad_mix_f32 v5, exec_lo, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x7e,0x04,0x0e,0x04]
222 0x05,0x00,0xa0,0xd3,0x7e,0x04,0x0e,0x04
223
224 # GFX9: v_mad_mix_f32 v5, exec_hi, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x7f,0x04,0x0e,0x04]
225 0x05,0x00,0xa0,0xd3,0x7f,0x04,0x0e,0x04
226
227 # GFX9: v_mad_mix_f32 v5, v1, v255, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xff,0x0f,0x04]
228 0x05,0x00,0xa0,0xd3,0x01,0xff,0x0f,0x04
229
230 # GFX9: v_mad_mix_f32 v5, v1, s2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0c,0x04]
231 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0c,0x04
232
233 # GFX9: v_mad_mix_f32 v5, v1, s101, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xcb,0x0c,0x04]
234 0x05,0x00,0xa0,0xd3,0x01,0xcb,0x0c,0x04
235
236 # GFX9: v_mad_mix_f32 v5, v1, flat_scratch_lo, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xcd,0x0c,0x04]
237 0x05,0x00,0xa0,0xd3,0x01,0xcd,0x0c,0x04
238
239 # GFX9: v_mad_mix_f32 v5, v1, flat_scratch_hi, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xcf,0x0c,0x04]
240 0x05,0x00,0xa0,0xd3,0x01,0xcf,0x0c,0x04
241
242 # GFX9: v_mad_mix_f32 v5, v1, vcc_lo, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xd5,0x0c,0x04]
243 0x05,0x00,0xa0,0xd3,0x01,0xd5,0x0c,0x04
244
245 # GFX9: v_mad_mix_f32 v5, v1, vcc_hi, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xd7,0x0c,0x04]
246 0x05,0x00,0xa0,0xd3,0x01,0xd7,0x0c,0x04
247
248 # GFX9: v_mad_mix_f32 v5, v1, m0, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xf9,0x0c,0x04]
249 0x05,0x00,0xa0,0xd3,0x01,0xf9,0x0c,0x04
250
251 # GFX9: v_mad_mix_f32 v5, v1, exec_lo, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xfd,0x0c,0x04]
252 0x05,0x00,0xa0,0xd3,0x01,0xfd,0x0c,0x04
253
254 # GFX9: v_mad_mix_f32 v5, v1, exec_hi, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0xff,0x0c,0x04]
255 0x05,0x00,0xa0,0xd3,0x01,0xff,0x0c,0x04
256
257 # GFX9: v_mad_mix_f32 v5, v1, v2, v255 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0xfe,0x07]
258 0x05,0x00,0xa0,0xd3,0x01,0x05,0xfe,0x07
259
260 # GFX9: v_mad_mix_f32 v5, v1, v2, s3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x00]
261 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x00
262
263 # GFX9: v_mad_mix_f32 v5, v1, v2, s101 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x96,0x01]
264 0x05,0x00,0xa0,0xd3,0x01,0x05,0x96,0x01
265
266 # GFX9: v_mad_mix_f32 v5, v1, v2, flat_scratch_lo ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x9a,0x01]
267 0x05,0x00,0xa0,0xd3,0x01,0x05,0x9a,0x01
268
269 # GFX9: v_mad_mix_f32 v5, v1, v2, flat_scratch_hi ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x9e,0x01]
270 0x05,0x00,0xa0,0xd3,0x01,0x05,0x9e,0x01
271
272 # GFX9: v_mad_mix_f32 v5, v1, v2, vcc_lo ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0xaa,0x01]
273 0x05,0x00,0xa0,0xd3,0x01,0x05,0xaa,0x01
274
275 # GFX9: v_mad_mix_f32 v5, v1, v2, vcc_hi ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0xae,0x01]
276 0x05,0x00,0xa0,0xd3,0x01,0x05,0xae,0x01
277
278 # GFX9: v_mad_mix_f32 v5, v1, v2, m0 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0xf2,0x01]
279 0x05,0x00,0xa0,0xd3,0x01,0x05,0xf2,0x01
280
281 # GFX9: v_mad_mix_f32 v5, v1, v2, exec_lo ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0xfa,0x01]
282 0x05,0x00,0xa0,0xd3,0x01,0x05,0xfa,0x01
283
284 # GFX9: v_mad_mix_f32 v5, v1, v2, exec_hi ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0xfe,0x01]
285 0x05,0x00,0xa0,0xd3,0x01,0x05,0xfe,0x01
286
287 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x05,0x08,0xa0,0xd3,0x01,0x05,0x0e,0x04]
288 0x05,0x08,0xa0,0xd3,0x01,0x05,0x0e,0x04
289
290 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x05,0x10,0xa0,0xd3,0x01,0x05,0x0e,0x04]
291 0x05,0x10,0xa0,0xd3,0x01,0x05,0x0e,0x04
292
293 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel:[0,0,1] ; encoding: [0x05,0x20,0xa0,0xd3,0x01,0x05,0x0e,0x04]
294 0x05,0x20,0xa0,0xd3,0x01,0x05,0x0e,0x04
295
296 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel:[1,1,1] ; encoding: [0x05,0x38,0xa0,0xd3,0x01,0x05,0x0e,0x04]
297 0x05,0x38,0xa0,0xd3,0x01,0x05,0x0e,0x04
298
299 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x0c]
300 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x0c
301
302 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x14]
303 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x14
304
305 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel_hi:[0,0,1] ; encoding: [0x05,0x40,0xa0,0xd3,0x01,0x05,0x0e,0x04]
306 0x05,0x40,0xa0,0xd3,0x01,0x05,0x0e,0x04
307
308 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 op_sel_hi:[1,1,1] ; encoding: [0x05,0x40,0xa0,0xd3,0x01,0x05,0x0e,0x1c]
309 0x05,0x40,0xa0,0xd3,0x01,0x05,0x0e,0x1c
310
311 # GFX9: v_mad_mix_f32 v5, -v1, v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x24]
312 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x24
313
314 # GFX9: v_mad_mix_f32 v5, v1, -v2, v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x44]
315 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x44
316
317 # GFX9: v_mad_mix_f32 v5, v1, v2, -v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x84]
318 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0x84
319
320 # GFX9: v_mad_mix_f32 v5, -v1, -v2, -v3 ; encoding: [0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0xe4]
321 0x05,0x00,0xa0,0xd3,0x01,0x05,0x0e,0xe4
322
323 # GFX9: v_mad_mix_f32 v5, |v1|, v2, v3 ; encoding: [0x05,0x01,0xa0,0xd3,0x01,0x05,0x0e,0x04]
324 0x05,0x01,0xa0,0xd3,0x01,0x05,0x0e,0x04
325
326 # GFX9: v_mad_mix_f32 v5, v1, |v2|, v3 ; encoding: [0x05,0x02,0xa0,0xd3,0x01,0x05,0x0e,0x04]
327 0x05,0x02,0xa0,0xd3,0x01,0x05,0x0e,0x04
328
329 # GFX9: v_mad_mix_f32 v5, v1, v2, |v3| ; encoding: [0x05,0x04,0xa0,0xd3,0x01,0x05,0x0e,0x04]
330 0x05,0x04,0xa0,0xd3,0x01,0x05,0x0e,0x04
331
332 # GFX9: v_mad_mix_f32 v5, |v1|, |v2|, |v3| ; encoding: [0x05,0x07,0xa0,0xd3,0x01,0x05,0x0e,0x04]
333 0x05,0x07,0xa0,0xd3,0x01,0x05,0x0e,0x04
334
335 # GFX9: v_mad_mix_f32 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0xa0,0xd3,0x01,0x05,0x0e,0x04]
336 0x05,0x80,0xa0,0xd3,0x01,0x05,0x0e,0x04
337
338 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x04]
339 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x04
340
341 # GFX9: v_mad_mixhi_f16 v255, v1, v2, v3 ; encoding: [0xff,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x04]
342 0xff,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x04
343
344 # GFX9: v_mad_mixhi_f16 v5, v255, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0xff,0x05,0x0e,0x04]
345 0x05,0x00,0xa2,0xd3,0xff,0x05,0x0e,0x04
346
347 # GFX9: v_mad_mixhi_f16 v5, s1, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x04,0x0e,0x04]
348 0x05,0x00,0xa2,0xd3,0x01,0x04,0x0e,0x04
349
350 # GFX9: v_mad_mixhi_f16 v5, s101, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x65,0x04,0x0e,0x04]
351 0x05,0x00,0xa2,0xd3,0x65,0x04,0x0e,0x04
352
353 # GFX9: v_mad_mixhi_f16 v5, flat_scratch_lo, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x66,0x04,0x0e,0x04]
354 0x05,0x00,0xa2,0xd3,0x66,0x04,0x0e,0x04
355
356 # GFX9: v_mad_mixhi_f16 v5, flat_scratch_hi, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x67,0x04,0x0e,0x04]
357 0x05,0x00,0xa2,0xd3,0x67,0x04,0x0e,0x04
358
359 # GFX9: v_mad_mixhi_f16 v5, vcc_lo, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x6a,0x04,0x0e,0x04]
360 0x05,0x00,0xa2,0xd3,0x6a,0x04,0x0e,0x04
361
362 # GFX9: v_mad_mixhi_f16 v5, vcc_hi, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x6b,0x04,0x0e,0x04]
363 0x05,0x00,0xa2,0xd3,0x6b,0x04,0x0e,0x04
364
365 # GFX9: v_mad_mixhi_f16 v5, m0, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x7c,0x04,0x0e,0x04]
366 0x05,0x00,0xa2,0xd3,0x7c,0x04,0x0e,0x04
367
368 # GFX9: v_mad_mixhi_f16 v5, exec_lo, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x7e,0x04,0x0e,0x04]
369 0x05,0x00,0xa2,0xd3,0x7e,0x04,0x0e,0x04
370
371 # GFX9: v_mad_mixhi_f16 v5, exec_hi, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x7f,0x04,0x0e,0x04]
372 0x05,0x00,0xa2,0xd3,0x7f,0x04,0x0e,0x04
373
374 # GFX9: v_mad_mixhi_f16 v5, v1, v255, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xff,0x0f,0x04]
375 0x05,0x00,0xa2,0xd3,0x01,0xff,0x0f,0x04
376
377 # GFX9: v_mad_mixhi_f16 v5, v1, s2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0c,0x04]
378 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0c,0x04
379
380 # GFX9: v_mad_mixhi_f16 v5, v1, s101, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xcb,0x0c,0x04]
381 0x05,0x00,0xa2,0xd3,0x01,0xcb,0x0c,0x04
382
383 # GFX9: v_mad_mixhi_f16 v5, v1, flat_scratch_lo, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xcd,0x0c,0x04]
384 0x05,0x00,0xa2,0xd3,0x01,0xcd,0x0c,0x04
385
386 # GFX9: v_mad_mixhi_f16 v5, v1, flat_scratch_hi, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xcf,0x0c,0x04]
387 0x05,0x00,0xa2,0xd3,0x01,0xcf,0x0c,0x04
388
389 # GFX9: v_mad_mixhi_f16 v5, v1, vcc_lo, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xd5,0x0c,0x04]
390 0x05,0x00,0xa2,0xd3,0x01,0xd5,0x0c,0x04
391
392 # GFX9: v_mad_mixhi_f16 v5, v1, vcc_hi, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xd7,0x0c,0x04]
393 0x05,0x00,0xa2,0xd3,0x01,0xd7,0x0c,0x04
394
395 # GFX9: v_mad_mixhi_f16 v5, v1, m0, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xf9,0x0c,0x04]
396 0x05,0x00,0xa2,0xd3,0x01,0xf9,0x0c,0x04
397
398 # GFX9: v_mad_mixhi_f16 v5, v1, exec_lo, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xfd,0x0c,0x04]
399 0x05,0x00,0xa2,0xd3,0x01,0xfd,0x0c,0x04
400
401 # GFX9: v_mad_mixhi_f16 v5, v1, exec_hi, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0xff,0x0c,0x04]
402 0x05,0x00,0xa2,0xd3,0x01,0xff,0x0c,0x04
403
404 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v255 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0xfe,0x07]
405 0x05,0x00,0xa2,0xd3,0x01,0x05,0xfe,0x07
406
407 # GFX9: v_mad_mixhi_f16 v5, v1, v2, s3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x00]
408 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x00
409
410 # GFX9: v_mad_mixhi_f16 v5, v1, v2, s101 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x96,0x01]
411 0x05,0x00,0xa2,0xd3,0x01,0x05,0x96,0x01
412
413 # GFX9: v_mad_mixhi_f16 v5, v1, v2, flat_scratch_lo ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x9a,0x01]
414 0x05,0x00,0xa2,0xd3,0x01,0x05,0x9a,0x01
415
416 # GFX9: v_mad_mixhi_f16 v5, v1, v2, flat_scratch_hi ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x9e,0x01]
417 0x05,0x00,0xa2,0xd3,0x01,0x05,0x9e,0x01
418
419 # GFX9: v_mad_mixhi_f16 v5, v1, v2, vcc_lo ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0xaa,0x01]
420 0x05,0x00,0xa2,0xd3,0x01,0x05,0xaa,0x01
421
422 # GFX9: v_mad_mixhi_f16 v5, v1, v2, vcc_hi ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0xae,0x01]
423 0x05,0x00,0xa2,0xd3,0x01,0x05,0xae,0x01
424
425 # GFX9: v_mad_mixhi_f16 v5, v1, v2, m0 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0xf2,0x01]
426 0x05,0x00,0xa2,0xd3,0x01,0x05,0xf2,0x01
427
428 # GFX9: v_mad_mixhi_f16 v5, v1, v2, exec_lo ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0xfa,0x01]
429 0x05,0x00,0xa2,0xd3,0x01,0x05,0xfa,0x01
430
431 # GFX9: v_mad_mixhi_f16 v5, v1, v2, exec_hi ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0xfe,0x01]
432 0x05,0x00,0xa2,0xd3,0x01,0x05,0xfe,0x01
433
434 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x05,0x08,0xa2,0xd3,0x01,0x05,0x0e,0x04]
435 0x05,0x08,0xa2,0xd3,0x01,0x05,0x0e,0x04
436
437 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x05,0x10,0xa2,0xd3,0x01,0x05,0x0e,0x04]
438 0x05,0x10,0xa2,0xd3,0x01,0x05,0x0e,0x04
439
440 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel:[0,0,1] ; encoding: [0x05,0x20,0xa2,0xd3,0x01,0x05,0x0e,0x04]
441 0x05,0x20,0xa2,0xd3,0x01,0x05,0x0e,0x04
442
443 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel:[1,1,1] ; encoding: [0x05,0x38,0xa2,0xd3,0x01,0x05,0x0e,0x04]
444 0x05,0x38,0xa2,0xd3,0x01,0x05,0x0e,0x04
445
446 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x0c]
447 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x0c
448
449 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x14]
450 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x14
451
452 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel_hi:[0,0,1] ; encoding: [0x05,0x40,0xa2,0xd3,0x01,0x05,0x0e,0x04]
453 0x05,0x40,0xa2,0xd3,0x01,0x05,0x0e,0x04
454
455 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 op_sel_hi:[1,1,1] ; encoding: [0x05,0x40,0xa2,0xd3,0x01,0x05,0x0e,0x1c]
456 0x05,0x40,0xa2,0xd3,0x01,0x05,0x0e,0x1c
457
458 # GFX9: v_mad_mixhi_f16 v5, -v1, v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x24]
459 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x24
460
461 # GFX9: v_mad_mixhi_f16 v5, v1, -v2, v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x44]
462 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x44
463
464 # GFX9: v_mad_mixhi_f16 v5, v1, v2, -v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x84]
465 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0x84
466
467 # GFX9: v_mad_mixhi_f16 v5, -v1, -v2, -v3 ; encoding: [0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0xe4]
468 0x05,0x00,0xa2,0xd3,0x01,0x05,0x0e,0xe4
469
470 # GFX9: v_mad_mixhi_f16 v5, |v1|, v2, v3 ; encoding: [0x05,0x01,0xa2,0xd3,0x01,0x05,0x0e,0x04]
471 0x05,0x01,0xa2,0xd3,0x01,0x05,0x0e,0x04
472
473 # GFX9: v_mad_mixhi_f16 v5, v1, |v2|, v3 ; encoding: [0x05,0x02,0xa2,0xd3,0x01,0x05,0x0e,0x04]
474 0x05,0x02,0xa2,0xd3,0x01,0x05,0x0e,0x04
475
476 # GFX9: v_mad_mixhi_f16 v5, v1, v2, |v3| ; encoding: [0x05,0x04,0xa2,0xd3,0x01,0x05,0x0e,0x04]
477 0x05,0x04,0xa2,0xd3,0x01,0x05,0x0e,0x04
478
479 # GFX9: v_mad_mixhi_f16 v5, |v1|, |v2|, |v3| ; encoding: [0x05,0x07,0xa2,0xd3,0x01,0x05,0x0e,0x04]
480 0x05,0x07,0xa2,0xd3,0x01,0x05,0x0e,0x04
481
482 # GFX9: v_mad_mixhi_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0xa2,0xd3,0x01,0x05,0x0e,0x04]
483 0x05,0x80,0xa2,0xd3,0x01,0x05,0x0e,0x04
484
485 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x04]
486 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x04
487
488 # GFX9: v_mad_mixlo_f16 v255, v1, v2, v3 ; encoding: [0xff,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x04]
489 0xff,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x04
490
491 # GFX9: v_mad_mixlo_f16 v5, v255, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0xff,0x05,0x0e,0x04]
492 0x05,0x00,0xa1,0xd3,0xff,0x05,0x0e,0x04
493
494 # GFX9: v_mad_mixlo_f16 v5, s1, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x04,0x0e,0x04]
495 0x05,0x00,0xa1,0xd3,0x01,0x04,0x0e,0x04
496
497 # GFX9: v_mad_mixlo_f16 v5, s101, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x65,0x04,0x0e,0x04]
498 0x05,0x00,0xa1,0xd3,0x65,0x04,0x0e,0x04
499
500 # GFX9: v_mad_mixlo_f16 v5, flat_scratch_lo, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x66,0x04,0x0e,0x04]
501 0x05,0x00,0xa1,0xd3,0x66,0x04,0x0e,0x04
502
503 # GFX9: v_mad_mixlo_f16 v5, flat_scratch_hi, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x67,0x04,0x0e,0x04]
504 0x05,0x00,0xa1,0xd3,0x67,0x04,0x0e,0x04
505
506 # GFX9: v_mad_mixlo_f16 v5, vcc_lo, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x6a,0x04,0x0e,0x04]
507 0x05,0x00,0xa1,0xd3,0x6a,0x04,0x0e,0x04
508
509 # GFX9: v_mad_mixlo_f16 v5, vcc_hi, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x6b,0x04,0x0e,0x04]
510 0x05,0x00,0xa1,0xd3,0x6b,0x04,0x0e,0x04
511
512 # GFX9: v_mad_mixlo_f16 v5, m0, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x7c,0x04,0x0e,0x04]
513 0x05,0x00,0xa1,0xd3,0x7c,0x04,0x0e,0x04
514
515 # GFX9: v_mad_mixlo_f16 v5, exec_lo, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x7e,0x04,0x0e,0x04]
516 0x05,0x00,0xa1,0xd3,0x7e,0x04,0x0e,0x04
517
518 # GFX9: v_mad_mixlo_f16 v5, exec_hi, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x7f,0x04,0x0e,0x04]
519 0x05,0x00,0xa1,0xd3,0x7f,0x04,0x0e,0x04
520
521 # GFX9: v_mad_mixlo_f16 v5, v1, v255, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xff,0x0f,0x04]
522 0x05,0x00,0xa1,0xd3,0x01,0xff,0x0f,0x04
523
524 # GFX9: v_mad_mixlo_f16 v5, v1, s2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0c,0x04]
525 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0c,0x04
526
527 # GFX9: v_mad_mixlo_f16 v5, v1, s101, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xcb,0x0c,0x04]
528 0x05,0x00,0xa1,0xd3,0x01,0xcb,0x0c,0x04
529
530 # GFX9: v_mad_mixlo_f16 v5, v1, flat_scratch_lo, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xcd,0x0c,0x04]
531 0x05,0x00,0xa1,0xd3,0x01,0xcd,0x0c,0x04
532
533 # GFX9: v_mad_mixlo_f16 v5, v1, flat_scratch_hi, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xcf,0x0c,0x04]
534 0x05,0x00,0xa1,0xd3,0x01,0xcf,0x0c,0x04
535
536 # GFX9: v_mad_mixlo_f16 v5, v1, vcc_lo, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xd5,0x0c,0x04]
537 0x05,0x00,0xa1,0xd3,0x01,0xd5,0x0c,0x04
538
539 # GFX9: v_mad_mixlo_f16 v5, v1, vcc_hi, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xd7,0x0c,0x04]
540 0x05,0x00,0xa1,0xd3,0x01,0xd7,0x0c,0x04
541
542 # GFX9: v_mad_mixlo_f16 v5, v1, m0, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xf9,0x0c,0x04]
543 0x05,0x00,0xa1,0xd3,0x01,0xf9,0x0c,0x04
544
545 # GFX9: v_mad_mixlo_f16 v5, v1, exec_lo, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xfd,0x0c,0x04]
546 0x05,0x00,0xa1,0xd3,0x01,0xfd,0x0c,0x04
547
548 # GFX9: v_mad_mixlo_f16 v5, v1, exec_hi, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0xff,0x0c,0x04]
549 0x05,0x00,0xa1,0xd3,0x01,0xff,0x0c,0x04
550
551 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v255 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0xfe,0x07]
552 0x05,0x00,0xa1,0xd3,0x01,0x05,0xfe,0x07
553
554 # GFX9: v_mad_mixlo_f16 v5, v1, v2, s3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x00]
555 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x00
556
557 # GFX9: v_mad_mixlo_f16 v5, v1, v2, s101 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x96,0x01]
558 0x05,0x00,0xa1,0xd3,0x01,0x05,0x96,0x01
559
560 # GFX9: v_mad_mixlo_f16 v5, v1, v2, flat_scratch_lo ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x9a,0x01]
561 0x05,0x00,0xa1,0xd3,0x01,0x05,0x9a,0x01
562
563 # GFX9: v_mad_mixlo_f16 v5, v1, v2, flat_scratch_hi ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x9e,0x01]
564 0x05,0x00,0xa1,0xd3,0x01,0x05,0x9e,0x01
565
566 # GFX9: v_mad_mixlo_f16 v5, v1, v2, vcc_lo ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0xaa,0x01]
567 0x05,0x00,0xa1,0xd3,0x01,0x05,0xaa,0x01
568
569 # GFX9: v_mad_mixlo_f16 v5, v1, v2, vcc_hi ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0xae,0x01]
570 0x05,0x00,0xa1,0xd3,0x01,0x05,0xae,0x01
571
572 # GFX9: v_mad_mixlo_f16 v5, v1, v2, m0 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0xf2,0x01]
573 0x05,0x00,0xa1,0xd3,0x01,0x05,0xf2,0x01
574
575 # GFX9: v_mad_mixlo_f16 v5, v1, v2, exec_lo ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0xfa,0x01]
576 0x05,0x00,0xa1,0xd3,0x01,0x05,0xfa,0x01
577
578 # GFX9: v_mad_mixlo_f16 v5, v1, v2, exec_hi ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0xfe,0x01]
579 0x05,0x00,0xa1,0xd3,0x01,0x05,0xfe,0x01
580
581 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x05,0x08,0xa1,0xd3,0x01,0x05,0x0e,0x04]
582 0x05,0x08,0xa1,0xd3,0x01,0x05,0x0e,0x04
583
584 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x05,0x10,0xa1,0xd3,0x01,0x05,0x0e,0x04]
585 0x05,0x10,0xa1,0xd3,0x01,0x05,0x0e,0x04
586
587 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel:[0,0,1] ; encoding: [0x05,0x20,0xa1,0xd3,0x01,0x05,0x0e,0x04]
588 0x05,0x20,0xa1,0xd3,0x01,0x05,0x0e,0x04
589
590 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel:[1,1,1] ; encoding: [0x05,0x38,0xa1,0xd3,0x01,0x05,0x0e,0x04]
591 0x05,0x38,0xa1,0xd3,0x01,0x05,0x0e,0x04
592
593 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x0c]
594 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x0c
595
596 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x14]
597 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x14
598
599 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel_hi:[0,0,1] ; encoding: [0x05,0x40,0xa1,0xd3,0x01,0x05,0x0e,0x04]
600 0x05,0x40,0xa1,0xd3,0x01,0x05,0x0e,0x04
601
602 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 op_sel_hi:[1,1,1] ; encoding: [0x05,0x40,0xa1,0xd3,0x01,0x05,0x0e,0x1c]
603 0x05,0x40,0xa1,0xd3,0x01,0x05,0x0e,0x1c
604
605 # GFX9: v_mad_mixlo_f16 v5, -v1, v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x24]
606 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x24
607
608 # GFX9: v_mad_mixlo_f16 v5, v1, -v2, v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x44]
609 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x44
610
611 # GFX9: v_mad_mixlo_f16 v5, v1, v2, -v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x84]
612 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0x84
613
614 # GFX9: v_mad_mixlo_f16 v5, -v1, -v2, -v3 ; encoding: [0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0xe4]
615 0x05,0x00,0xa1,0xd3,0x01,0x05,0x0e,0xe4
616
617 # GFX9: v_mad_mixlo_f16 v5, |v1|, v2, v3 ; encoding: [0x05,0x01,0xa1,0xd3,0x01,0x05,0x0e,0x04]
618 0x05,0x01,0xa1,0xd3,0x01,0x05,0x0e,0x04
619
620 # GFX9: v_mad_mixlo_f16 v5, v1, |v2|, v3 ; encoding: [0x05,0x02,0xa1,0xd3,0x01,0x05,0x0e,0x04]
621 0x05,0x02,0xa1,0xd3,0x01,0x05,0x0e,0x04
622
623 # GFX9: v_mad_mixlo_f16 v5, v1, v2, |v3| ; encoding: [0x05,0x04,0xa1,0xd3,0x01,0x05,0x0e,0x04]
624 0x05,0x04,0xa1,0xd3,0x01,0x05,0x0e,0x04
625
626 # GFX9: v_mad_mixlo_f16 v5, |v1|, |v2|, |v3| ; encoding: [0x05,0x07,0xa1,0xd3,0x01,0x05,0x0e,0x04]
627 0x05,0x07,0xa1,0xd3,0x01,0x05,0x0e,0x04
628
629 # GFX9: v_mad_mixlo_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0xa1,0xd3,0x01,0x05,0x0e,0x04]
630 0x05,0x80,0xa1,0xd3,0x01,0x05,0x0e,0x04