mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
gallium/tgsi: Add some missing opcodes to tgsi_ureg.
Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6567>
This commit is contained in:
parent
1ca9f22a8b
commit
34b3e1f512
2 changed files with 58 additions and 0 deletions
|
|
@ -40,11 +40,14 @@ OP11(ARL)
|
|||
OP11(MOV)
|
||||
OP11(LIT)
|
||||
OP11(RCP)
|
||||
OP11(DRCP)
|
||||
OP11(RSQ)
|
||||
OP11(DRSQ)
|
||||
OP11(EXP)
|
||||
OP11(LOG)
|
||||
OP12(MUL)
|
||||
OP12(ADD)
|
||||
OP12(DADD)
|
||||
OP12(DP3)
|
||||
OP12(DP4)
|
||||
OP12(DST)
|
||||
|
|
@ -53,9 +56,11 @@ OP12(MAX)
|
|||
OP12(SLT)
|
||||
OP12(SGE)
|
||||
OP13(MAD)
|
||||
OP13(DMAD)
|
||||
OP12_TEX(TEX_LZ)
|
||||
OP13(LRP)
|
||||
OP11(SQRT)
|
||||
OP11(DSQRT)
|
||||
OP11(FRC)
|
||||
OP12_TEX(TXF_LZ)
|
||||
OP11(FLR)
|
||||
|
|
@ -100,6 +105,7 @@ OP01_LBL(UIF)
|
|||
OP00_LBL(ELSE)
|
||||
OP00(ENDIF)
|
||||
OP11(CEIL)
|
||||
OP11(DCEIL)
|
||||
OP11(I2F)
|
||||
OP11(NOT)
|
||||
OP11(TRUNC)
|
||||
|
|
@ -113,6 +119,8 @@ OP12_TEX(TXQ)
|
|||
OP00(CONT)
|
||||
OP01(EMIT)
|
||||
OP01(ENDPRIM)
|
||||
OP00(BARRIER)
|
||||
OP01(MEMBAR)
|
||||
OP00_LBL(BGNLOOP)
|
||||
OP00(BGNSUB)
|
||||
OP00_LBL(ENDLOOP)
|
||||
|
|
@ -125,6 +133,10 @@ OP12(FSEQ)
|
|||
OP12(FSGE)
|
||||
OP12(FSLT)
|
||||
OP12(FSNE)
|
||||
OP12(DSEQ)
|
||||
OP12(DSGE)
|
||||
OP12(DSLT)
|
||||
OP12(DSNE)
|
||||
OP12(IDIV)
|
||||
OP12(IMAX)
|
||||
OP12(IMIN)
|
||||
|
|
@ -146,6 +158,12 @@ OP12(USGE)
|
|||
OP12(USHR)
|
||||
OP12(USLT)
|
||||
OP12(USNE)
|
||||
OP12(I64SLT)
|
||||
OP12(I64SGE)
|
||||
OP12(U64SEQ)
|
||||
OP12(U64SLT)
|
||||
OP12(U64SGE)
|
||||
OP12(U64SNE)
|
||||
OP01(SWITCH)
|
||||
OP01(CASE)
|
||||
OP00(DEFAULT)
|
||||
|
|
@ -165,13 +183,27 @@ OP11(SAMP2HND)
|
|||
|
||||
OP12(IMUL_HI)
|
||||
OP12(UMUL_HI)
|
||||
OP13(IBFE)
|
||||
OP13(UBFE)
|
||||
OP14(BFI)
|
||||
OP11(BREV)
|
||||
OP11(POPC)
|
||||
OP11(IMSB)
|
||||
OP11(UMSB)
|
||||
OP11(LSB)
|
||||
OP12(LDEXP)
|
||||
OP12(DLDEXP)
|
||||
|
||||
OP11(F2D)
|
||||
OP11(D2F)
|
||||
OP11(U2D)
|
||||
OP11(D2U)
|
||||
OP12(DMUL)
|
||||
|
||||
OP11(INTERP_CENTROID)
|
||||
OP12(INTERP_SAMPLE)
|
||||
OP12(INTERP_OFFSET)
|
||||
|
||||
#undef OP00
|
||||
#undef OP01
|
||||
#undef OP10
|
||||
|
|
|
|||
|
|
@ -814,6 +814,32 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
|||
ureg_fixup_insn_size( ureg, insn.insn_token ); \
|
||||
}
|
||||
|
||||
#define OP14( op ) \
|
||||
static inline void ureg_##op( struct ureg_program *ureg, \
|
||||
struct ureg_dst dst, \
|
||||
struct ureg_src src0, \
|
||||
struct ureg_src src1, \
|
||||
struct ureg_src src2, \
|
||||
struct ureg_src src3 ) \
|
||||
{ \
|
||||
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||
struct ureg_emit_insn_result insn; \
|
||||
if (ureg_dst_is_empty(dst)) \
|
||||
return; \
|
||||
insn = ureg_emit_insn(ureg, \
|
||||
opcode, \
|
||||
dst.Saturate, \
|
||||
0, \
|
||||
1, \
|
||||
4); \
|
||||
ureg_emit_dst( ureg, dst ); \
|
||||
ureg_emit_src( ureg, src0 ); \
|
||||
ureg_emit_src( ureg, src1 ); \
|
||||
ureg_emit_src( ureg, src2 ); \
|
||||
ureg_emit_src( ureg, src3 ); \
|
||||
ureg_fixup_insn_size( ureg, insn.insn_token ); \
|
||||
}
|
||||
|
||||
#define OP14_TEX( op ) \
|
||||
static inline void ureg_##op( struct ureg_program *ureg, \
|
||||
struct ureg_dst dst, \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue