2
* Copyright © 2022 Imagination Technologies Ltd.
4
* Permission is hereby granted, free of charge, to any person obtaining a copy
5
* of this software and associated documentation files (the "Software"), to deal
6
* in the Software without restriction, including without limitation the rights
7
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
* copies of the Software, and to permit persons to whom the Software is
9
* furnished to do so, subject to the following conditions:
11
* The above copyright notice and this permission notice (including the next
12
* paragraph) shall be included in all copies or substantial portions of the
15
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
#ifndef PVR_ROGUE_PDS_ENCODE_H
25
#define PVR_ROGUE_PDS_ENCODE_H
29
#include "pvr_rogue_pds_defs.h"
30
#include "pvr_rogue_pds_disasm.h"
31
#include "util/macros.h"
33
static ALWAYS_INLINE uint32_t
34
pvr_pds_inst_decode_field_range_regs64tp(uint32_t value)
36
if (value <= PVR_ROGUE_PDSINST_REGS64TP_TEMP64_UPPER)
37
return PVR_ROGUE_PDSINST_REGS64TP_TEMP64;
39
if ((value >= PVR_ROGUE_PDSINST_REGS64TP_PTEMP64_LOWER) &&
40
(value <= PVR_ROGUE_PDSINST_REGS64TP_PTEMP64_UPPER)) {
41
return PVR_ROGUE_PDSINST_REGS64TP_PTEMP64;
46
static ALWAYS_INLINE uint32_t
47
pvr_pds_inst_decode_field_range_regs32(uint32_t value)
49
if (value <= PVR_ROGUE_PDSINST_REGS32_CONST32_UPPER)
50
return PVR_ROGUE_PDSINST_REGS32_CONST32;
52
if ((value >= PVR_ROGUE_PDSINST_REGS32_TEMP32_LOWER) &&
53
(value <= PVR_ROGUE_PDSINST_REGS32_TEMP32_UPPER)) {
54
return PVR_ROGUE_PDSINST_REGS32_TEMP32;
56
if ((value >= PVR_ROGUE_PDSINST_REGS32_PTEMP32_LOWER) &&
57
(value <= PVR_ROGUE_PDSINST_REGS32_PTEMP32_UPPER)) {
58
return PVR_ROGUE_PDSINST_REGS32_PTEMP32;
63
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_stflp64(uint32_t cc,
73
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SFTLP64
74
<< PVR_ROGUE_PDSINST_SFTLP64_OPCODE_SHIFT;
75
encoded |= ((dst & PVR_ROGUE_PDSINST_REGS64TP_MASK)
76
<< PVR_ROGUE_PDSINST_SFTLP64_DST_SHIFT);
77
encoded |= ((src2 & PVR_ROGUE_PDSINST_REGS32_MASK)
78
<< PVR_ROGUE_PDSINST_SFTLP64_SRC2_SHIFT);
79
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS64TP_MASK)
80
<< PVR_ROGUE_PDSINST_SFTLP64_SRC1_SHIFT);
81
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS64TP_MASK)
82
<< PVR_ROGUE_PDSINST_SFTLP64_SRC0_SHIFT);
83
encoded |= ((im & 1U) << PVR_ROGUE_PDSINST_SFTLP64_IM_SHIFT);
84
encoded |= ((lop & PVR_ROGUE_PDSINST_LOP_MASK)
85
<< PVR_ROGUE_PDSINST_SFTLP64_LOP_SHIFT);
86
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_SFTLP64_CC_SHIFT);
88
PVR_PDS_PRINT_INST(encoded);
93
static ALWAYS_INLINE uint32_t
94
pvr_pds_inst_decode_field_range_regs32t(uint32_t value)
96
if (value <= PVR_ROGUE_PDSINST_REGS32T_TEMP32_UPPER)
97
return PVR_ROGUE_PDSINST_REGS32T_TEMP32;
102
static ALWAYS_INLINE uint32_t
103
pvr_pds_inst_decode_field_range_regs32tp(uint32_t value)
105
if (value <= PVR_ROGUE_PDSINST_REGS32TP_TEMP32_UPPER)
106
return PVR_ROGUE_PDSINST_REGS32TP_TEMP32;
108
if ((value >= PVR_ROGUE_PDSINST_REGS32TP_PTEMP32_LOWER) &&
109
(value <= PVR_ROGUE_PDSINST_REGS32TP_PTEMP32_UPPER)) {
110
return PVR_ROGUE_PDSINST_REGS32TP_PTEMP32;
115
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_stflp32(uint32_t im,
123
uint32_t encoded = 0;
125
encoded |= PVR_ROGUE_PDSINST_OPCODEB_SFTLP32
126
<< PVR_ROGUE_PDSINST_SFTLP32_OPCODE_SHIFT;
127
encoded |= ((dst & PVR_ROGUE_PDSINST_REGS32T_MASK)
128
<< PVR_ROGUE_PDSINST_SFTLP32_DST_SHIFT);
129
encoded |= ((src2 & PVR_ROGUE_PDSINST_REGS32TP_MASK)
130
<< PVR_ROGUE_PDSINST_SFTLP32_SRC2_SHIFT);
131
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS32_MASK)
132
<< PVR_ROGUE_PDSINST_SFTLP32_SRC1_SHIFT);
133
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS32T_MASK)
134
<< PVR_ROGUE_PDSINST_SFTLP32_SRC0_SHIFT);
135
encoded |= ((lop & PVR_ROGUE_PDSINST_LOP_MASK)
136
<< PVR_ROGUE_PDSINST_SFTLP32_LOP_SHIFT);
137
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_SFTLP32_CC_SHIFT);
138
encoded |= ((im & 1U) << PVR_ROGUE_PDSINST_SFTLP32_IM_SHIFT);
140
PVR_PDS_PRINT_INST(encoded);
145
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_stm(uint32_t CCS_CCS_GLOBAL,
155
uint32_t encoded = 0;
157
encoded |= PVR_ROGUE_PDSINST_OPCODEB_STM
158
<< PVR_ROGUE_PDSINST_STM_OPCODE_SHIFT;
159
encoded |= ((SO_SRC3 & PVR_ROGUE_PDSINST_REGS64TP_MASK)
160
<< PVR_ROGUE_PDSINST_STM_SO_SRC3_SHIFT);
161
encoded |= ((SO_SRC2 & PVR_ROGUE_PDSINST_REGS32_MASK)
162
<< PVR_ROGUE_PDSINST_STM_SO_SRC2_SHIFT);
163
encoded |= ((SO_SRC1 & PVR_ROGUE_PDSINST_REGS64TP_MASK)
164
<< PVR_ROGUE_PDSINST_STM_SO_SRC1_SHIFT);
165
encoded |= ((SO_SRC0 & PVR_ROGUE_PDSINST_REGS64TP_MASK)
166
<< PVR_ROGUE_PDSINST_STM_SO_SRC0_SHIFT);
168
((SO & PVR_ROGUE_PDSINST_SO_MASK) << PVR_ROGUE_PDSINST_STM_SO_SHIFT);
169
encoded |= ((SO_TST & 1U) << PVR_ROGUE_PDSINST_STM_SO_TST_SHIFT);
170
encoded |= ((CCS_CCS_CC & 1U) << PVR_ROGUE_PDSINST_STM_CCS_CCS_CC_SHIFT);
171
encoded |= ((CCS_CCS_SO & 1U) << PVR_ROGUE_PDSINST_STM_CCS_CCS_SO_SHIFT);
173
((CCS_CCS_GLOBAL & 1U) << PVR_ROGUE_PDSINST_STM_CCS_CCS_GLOBAL_SHIFT);
175
PVR_PDS_PRINT_INST(encoded);
180
static ALWAYS_INLINE uint32_t
181
pvr_pds_inst_decode_field_range_regs64(uint32_t value)
183
if (value <= PVR_ROGUE_PDSINST_REGS64_CONST64_UPPER)
184
return PVR_ROGUE_PDSINST_REGS64_CONST64;
186
if ((value >= PVR_ROGUE_PDSINST_REGS64_TEMP64_LOWER) &&
187
(value <= PVR_ROGUE_PDSINST_REGS64_TEMP64_UPPER)) {
188
return PVR_ROGUE_PDSINST_REGS64_TEMP64;
190
if ((value >= PVR_ROGUE_PDSINST_REGS64_PTEMP64_LOWER) &&
191
(value <= PVR_ROGUE_PDSINST_REGS64_PTEMP64_UPPER)) {
192
return PVR_ROGUE_PDSINST_REGS64_PTEMP64;
197
static ALWAYS_INLINE uint32_t pvr_rogue_inst_encode_mad(uint32_t sna,
205
uint32_t encoded = 0;
207
encoded |= PVR_ROGUE_PDSINST_OPCODEA_MAD
208
<< PVR_ROGUE_PDSINST_MAD_OPCODE_SHIFT;
209
encoded |= ((dst & PVR_ROGUE_PDSINST_REGS64T_MASK)
210
<< PVR_ROGUE_PDSINST_MAD_DST_SHIFT);
211
encoded |= ((src2 & PVR_ROGUE_PDSINST_REGS64_MASK)
212
<< PVR_ROGUE_PDSINST_MAD_SRC2_SHIFT);
213
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS32_MASK)
214
<< PVR_ROGUE_PDSINST_MAD_SRC1_SHIFT);
215
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS32_MASK)
216
<< PVR_ROGUE_PDSINST_MAD_SRC0_SHIFT);
217
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_MAD_CC_SHIFT);
218
encoded |= ((alum & 1U) << PVR_ROGUE_PDSINST_MAD_ALUM_SHIFT);
219
encoded |= ((sna & 1U) << PVR_ROGUE_PDSINST_MAD_SNA_SHIFT);
221
PVR_PDS_PRINT_INST(encoded);
226
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_add64(uint32_t cc,
233
uint32_t encoded = 0;
235
encoded |= PVR_ROGUE_PDSINST_OPCODEC_ADD64
236
<< PVR_ROGUE_PDSINST_ADD64_OPCODE_SHIFT;
237
encoded |= ((dst & PVR_ROGUE_PDSINST_REGS64TP_MASK)
238
<< PVR_ROGUE_PDSINST_ADD64_DST_SHIFT);
239
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS64_MASK)
240
<< PVR_ROGUE_PDSINST_ADD64_SRC1_SHIFT);
241
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS64_MASK)
242
<< PVR_ROGUE_PDSINST_ADD64_SRC0_SHIFT);
243
encoded |= ((sna & 1U) << PVR_ROGUE_PDSINST_ADD64_SNA_SHIFT);
244
encoded |= ((alum & 1U) << PVR_ROGUE_PDSINST_ADD64_ALUM_SHIFT);
245
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_ADD64_CC_SHIFT);
247
PVR_PDS_PRINT_INST(encoded);
252
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_add32(uint32_t cc,
259
uint32_t encoded = 0;
261
encoded |= PVR_ROGUE_PDSINST_OPCODEC_ADD32
262
<< PVR_ROGUE_PDSINST_ADD32_OPCODE_SHIFT;
263
encoded |= ((dst & PVR_ROGUE_PDSINST_REGS32TP_MASK)
264
<< PVR_ROGUE_PDSINST_ADD32_DST_SHIFT);
265
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS32_MASK)
266
<< PVR_ROGUE_PDSINST_ADD32_SRC1_SHIFT);
267
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS32_MASK)
268
<< PVR_ROGUE_PDSINST_ADD32_SRC0_SHIFT);
269
encoded |= ((sna & 1U) << PVR_ROGUE_PDSINST_ADD32_SNA_SHIFT);
270
encoded |= ((alum & 1U) << PVR_ROGUE_PDSINST_ADD32_ALUM_SHIFT);
271
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_ADD32_CC_SHIFT);
273
PVR_PDS_PRINT_INST(encoded);
278
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_cmp(uint32_t cc,
283
uint32_t encoded = 0;
285
encoded |= PVR_ROGUE_PDSINST_OPCODEC_CMP
286
<< PVR_ROGUE_PDSINST_CMP_OPCODE_SHIFT;
287
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS64_MASK)
288
<< PVR_ROGUE_PDSINST_CMP_SRC1_SHIFT);
289
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS64TP_MASK)
290
<< PVR_ROGUE_PDSINST_CMP_SRC0_SHIFT);
291
encoded |= UINT32_C(0x0) << PVR_ROGUE_PDSINST_CMP_IM_SHIFT;
292
encoded |= UINT32_C(0x1) << PVR_ROGUE_PDSINST_CMP_SETCP_SHIFT;
294
((cop & PVR_ROGUE_PDSINST_COP_MASK) << PVR_ROGUE_PDSINST_CMP_COP_SHIFT);
295
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_CMP_CC_SHIFT);
297
PVR_PDS_PRINT_INST(encoded);
302
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_cmpi(uint32_t cc,
307
uint32_t encoded = 0;
309
encoded |= PVR_ROGUE_PDSINST_OPCODEC_CMP
310
<< PVR_ROGUE_PDSINST_CMPI_OPCODE_SHIFT;
311
encoded |= ((im16 & PVR_ROGUE_PDSINST_IMM16_MASK)
312
<< PVR_ROGUE_PDSINST_CMPI_IM16_SHIFT);
313
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS64TP_MASK)
314
<< PVR_ROGUE_PDSINST_CMPI_SRC0_SHIFT);
315
encoded |= UINT32_C(0x1) << PVR_ROGUE_PDSINST_CMPI_IM_SHIFT;
316
encoded |= UINT32_C(0x1) << PVR_ROGUE_PDSINST_CMPI_SETCP_SHIFT;
318
((cop & PVR_ROGUE_PDSINST_COP_MASK) << PVR_ROGUE_PDSINST_CMPI_COP_SHIFT);
319
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_CMPI_CC_SHIFT);
321
PVR_PDS_PRINT_INST(encoded);
326
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_bra(uint32_t srcc,
331
uint32_t encoded = 0;
333
encoded |= PVR_ROGUE_PDSINST_OPCODEC_BRA
334
<< PVR_ROGUE_PDSINST_BRA_OPCODE_SHIFT;
335
encoded |= ((addr & PVR_ROGUE_PDSINST_BRAADDR_MASK)
336
<< PVR_ROGUE_PDSINST_BRA_ADDR_SHIFT);
337
encoded |= ((setc & PVR_ROGUE_PDSINST_PREDICATE_MASK)
338
<< PVR_ROGUE_PDSINST_BRA_SETC_SHIFT);
339
encoded |= ((neg & 1U) << PVR_ROGUE_PDSINST_BRA_NEG_SHIFT);
340
encoded |= ((srcc & PVR_ROGUE_PDSINST_PREDICATE_MASK)
341
<< PVR_ROGUE_PDSINST_BRA_SRCC_SHIFT);
343
PVR_PDS_PRINT_INST(encoded);
348
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_ld(uint32_t cc, uint32_t src0)
350
uint32_t encoded = 0;
352
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP << PVR_ROGUE_PDSINST_LD_OPCODE_SHIFT;
353
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS64_MASK)
354
<< PVR_ROGUE_PDSINST_LD_SRC0_SHIFT);
355
encoded |= PVR_ROGUE_PDSINST_OPCODESP_LD << PVR_ROGUE_PDSINST_LD_OP_SHIFT;
356
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_LD_CC_SHIFT);
358
PVR_PDS_PRINT_INST(encoded);
363
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_st(uint32_t cc, uint32_t src0)
365
uint32_t encoded = 0;
367
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP << PVR_ROGUE_PDSINST_ST_OPCODE_SHIFT;
368
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS64_MASK)
369
<< PVR_ROGUE_PDSINST_ST_SRC0_SHIFT);
370
encoded |= PVR_ROGUE_PDSINST_OPCODESP_ST << PVR_ROGUE_PDSINST_ST_OP_SHIFT;
371
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_ST_CC_SHIFT);
373
PVR_PDS_PRINT_INST(encoded);
378
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_wdf(uint32_t cc)
380
uint32_t encoded = 0;
382
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP
383
<< PVR_ROGUE_PDSINST_WDF_OPCODE_SHIFT;
384
encoded |= PVR_ROGUE_PDSINST_OPCODESP_WDF << PVR_ROGUE_PDSINST_WDF_OP_SHIFT;
385
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_WDF_CC_SHIFT);
387
PVR_PDS_PRINT_INST(encoded);
392
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_limm(uint32_t cc,
397
uint32_t encoded = 0;
399
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP
400
<< PVR_ROGUE_PDSINST_LIMM_OPCODE_SHIFT;
401
encoded |= ((gr & 1U) << PVR_ROGUE_PDSINST_LIMM_GR_SHIFT);
402
encoded |= ((src0 & PVR_ROGUE_PDSINST_IMM16_MASK)
403
<< PVR_ROGUE_PDSINST_LIMM_SRC0_SHIFT);
404
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS32T_MASK)
405
<< PVR_ROGUE_PDSINST_LIMM_SRC1_SHIFT);
406
encoded |= PVR_ROGUE_PDSINST_OPCODESP_LIMM
407
<< PVR_ROGUE_PDSINST_LIMM_OP_SHIFT;
408
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_LIMM_CC_SHIFT);
410
PVR_PDS_PRINT_INST(encoded);
415
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_lock(uint32_t cc)
417
uint32_t encoded = 0;
419
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP
420
<< PVR_ROGUE_PDSINST_LOCK_OPCODE_SHIFT;
421
encoded |= PVR_ROGUE_PDSINST_OPCODESP_LOCK
422
<< PVR_ROGUE_PDSINST_LOCK_OP_SHIFT;
423
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_LOCK_CC_SHIFT);
425
PVR_PDS_PRINT_INST(encoded);
430
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_release(uint32_t cc)
432
uint32_t encoded = 0;
434
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP
435
<< PVR_ROGUE_PDSINST_RELEASE_OPCODE_SHIFT;
436
encoded |= PVR_ROGUE_PDSINST_OPCODESP_RELEASE
437
<< PVR_ROGUE_PDSINST_RELEASE_OP_SHIFT;
438
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_RELEASE_CC_SHIFT);
440
PVR_PDS_PRINT_INST(encoded);
445
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_halt(uint32_t cc)
447
uint32_t encoded = 0;
449
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP
450
<< PVR_ROGUE_PDSINST_HALT_OPCODE_SHIFT;
451
encoded |= PVR_ROGUE_PDSINST_OPCODESP_HALT
452
<< PVR_ROGUE_PDSINST_HALT_OP_SHIFT;
453
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_HALT_CC_SHIFT);
455
PVR_PDS_PRINT_INST(encoded);
460
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_stmc(uint32_t cc,
463
uint32_t encoded = 0;
465
encoded |= PVR_ROGUE_PDSINST_OPCODEC_SP
466
<< PVR_ROGUE_PDSINST_STMC_OPCODE_SHIFT;
467
encoded |= ((so_mask & PVR_ROGUE_PDSINST_SOMASK_MASK)
468
<< PVR_ROGUE_PDSINST_STMC_SOMASK_SHIFT);
469
encoded |= PVR_ROGUE_PDSINST_OPCODESP_STMC
470
<< PVR_ROGUE_PDSINST_STMC_OP_SHIFT;
471
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_STMC_CC_SHIFT);
473
PVR_PDS_PRINT_INST(encoded);
478
static ALWAYS_INLINE uint32_t
479
pvr_rogue_pds_inst_decode_field_range_regs64c(uint32_t value)
481
if (value <= PVR_ROGUE_PDSINST_REGS64C_CONST64_UPPER)
482
return PVR_ROGUE_PDSINST_REGS64C_CONST64;
487
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_ddmad(uint32_t cc,
494
uint32_t encoded = 0;
496
encoded |= PVR_ROGUE_PDSINST_OPCODEC_DDMAD
497
<< PVR_ROGUE_PDSINST_DDMAD_OPCODE_SHIFT;
498
encoded |= ((src3 & PVR_ROGUE_PDSINST_REGS64C_MASK)
499
<< PVR_ROGUE_PDSINST_DDMAD_SRC3_SHIFT);
500
encoded |= ((src2 & PVR_ROGUE_PDSINST_REGS64_MASK)
501
<< PVR_ROGUE_PDSINST_DDMAD_SRC2_SHIFT);
502
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS32T_MASK)
503
<< PVR_ROGUE_PDSINST_DDMAD_SRC1_SHIFT);
504
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS32_MASK)
505
<< PVR_ROGUE_PDSINST_DDMAD_SRC0_SHIFT);
506
encoded |= ((end & 1U) << PVR_ROGUE_PDSINST_DDMAD_END_SHIFT);
507
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_DDMAD_CC_SHIFT);
509
PVR_PDS_PRINT_INST(encoded);
514
static ALWAYS_INLINE uint32_t pvr_pds_inst_encode_dout(uint32_t cc,
520
uint32_t encoded = 0;
522
encoded |= PVR_ROGUE_PDSINST_OPCODEC_DOUT
523
<< PVR_ROGUE_PDSINST_DOUT_OPCODE_SHIFT;
524
encoded |= ((dst & PVR_ROGUE_PDSINST_DSTDOUT_MASK)
525
<< PVR_ROGUE_PDSINST_DOUT_DST_SHIFT);
526
encoded |= ((src0 & PVR_ROGUE_PDSINST_REGS64_MASK)
527
<< PVR_ROGUE_PDSINST_DOUT_SRC0_SHIFT);
528
encoded |= ((src1 & PVR_ROGUE_PDSINST_REGS32_MASK)
529
<< PVR_ROGUE_PDSINST_DOUT_SRC1_SHIFT);
530
encoded |= ((end & 1U) << PVR_ROGUE_PDSINST_DOUT_END_SHIFT);
531
encoded |= ((cc & 1U) << PVR_ROGUE_PDSINST_DOUT_CC_SHIFT);
533
PVR_PDS_PRINT_INST(encoded);
538
#endif /* PVR_ROGUE_PDS_ENCODE_H */