I like the macros.... Nouveau, and probably other drivers, do lits of token pasting on all sorts of gallium tokens. I think it makes the code considerably easier to read. On Nov 24, 2014 7:07 PM, "Eric Anholt" <e...@anholt.net> wrote:
> This made it harder to modify TGSI_OPCODE_ enums without breaking the > driver. > --- > .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 278 > ++++++++++----------- > 1 file changed, 139 insertions(+), 139 deletions(-) > > diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > index 39a70aa..4ed0d5d 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > @@ -497,149 +497,149 @@ nv50_ir::CondCode Instruction::getSetCond() const > } > } > > -#define NV50_IR_OPCODE_CASE(a, b) case TGSI_OPCODE_##a: return > nv50_ir::OP_##b > +#define NV50_IR_OPCODE_CASE(a, b) case a: return nv50_ir::OP_##b > > static nv50_ir::operation translateOpcode(uint opcode) > { > switch (opcode) { > - NV50_IR_OPCODE_CASE(ARL, SHL); > - NV50_IR_OPCODE_CASE(MOV, MOV); > - > - NV50_IR_OPCODE_CASE(RCP, RCP); > - NV50_IR_OPCODE_CASE(RSQ, RSQ); > - > - NV50_IR_OPCODE_CASE(MUL, MUL); > - NV50_IR_OPCODE_CASE(ADD, ADD); > - > - NV50_IR_OPCODE_CASE(MIN, MIN); > - NV50_IR_OPCODE_CASE(MAX, MAX); > - NV50_IR_OPCODE_CASE(SLT, SET); > - NV50_IR_OPCODE_CASE(SGE, SET); > - NV50_IR_OPCODE_CASE(MAD, MAD); > - NV50_IR_OPCODE_CASE(SUB, SUB); > - > - NV50_IR_OPCODE_CASE(FLR, FLOOR); > - NV50_IR_OPCODE_CASE(ROUND, CVT); > - NV50_IR_OPCODE_CASE(EX2, EX2); > - NV50_IR_OPCODE_CASE(LG2, LG2); > - NV50_IR_OPCODE_CASE(POW, POW); > - > - NV50_IR_OPCODE_CASE(ABS, ABS); > - > - NV50_IR_OPCODE_CASE(COS, COS); > - NV50_IR_OPCODE_CASE(DDX, DFDX); > - NV50_IR_OPCODE_CASE(DDX_FINE, DFDX); > - NV50_IR_OPCODE_CASE(DDY, DFDY); > - NV50_IR_OPCODE_CASE(DDY_FINE, DFDY); > - NV50_IR_OPCODE_CASE(KILL, DISCARD); > - > - NV50_IR_OPCODE_CASE(SEQ, SET); > - NV50_IR_OPCODE_CASE(SGT, SET); > - NV50_IR_OPCODE_CASE(SIN, SIN); > - NV50_IR_OPCODE_CASE(SLE, SET); > - NV50_IR_OPCODE_CASE(SNE, SET); > - NV50_IR_OPCODE_CASE(TEX, TEX); > - NV50_IR_OPCODE_CASE(TXD, TXD); > - NV50_IR_OPCODE_CASE(TXP, TEX); > - > - NV50_IR_OPCODE_CASE(CAL, CALL); > - NV50_IR_OPCODE_CASE(RET, RET); > - NV50_IR_OPCODE_CASE(CMP, SLCT); > - > - NV50_IR_OPCODE_CASE(TXB, TXB); > - > - NV50_IR_OPCODE_CASE(DIV, DIV); > - > - NV50_IR_OPCODE_CASE(TXL, TXL); > - > - NV50_IR_OPCODE_CASE(CEIL, CEIL); > - NV50_IR_OPCODE_CASE(I2F, CVT); > - NV50_IR_OPCODE_CASE(NOT, NOT); > - NV50_IR_OPCODE_CASE(TRUNC, TRUNC); > - NV50_IR_OPCODE_CASE(SHL, SHL); > - > - NV50_IR_OPCODE_CASE(AND, AND); > - NV50_IR_OPCODE_CASE(OR, OR); > - NV50_IR_OPCODE_CASE(MOD, MOD); > - NV50_IR_OPCODE_CASE(XOR, XOR); > - NV50_IR_OPCODE_CASE(SAD, SAD); > - NV50_IR_OPCODE_CASE(TXF, TXF); > - NV50_IR_OPCODE_CASE(TXQ, TXQ); > - NV50_IR_OPCODE_CASE(TG4, TXG); > - NV50_IR_OPCODE_CASE(LODQ, TXLQ); > - > - NV50_IR_OPCODE_CASE(EMIT, EMIT); > - NV50_IR_OPCODE_CASE(ENDPRIM, RESTART); > - > - NV50_IR_OPCODE_CASE(KILL_IF, DISCARD); > - > - NV50_IR_OPCODE_CASE(F2I, CVT); > - NV50_IR_OPCODE_CASE(FSEQ, SET); > - NV50_IR_OPCODE_CASE(FSGE, SET); > - NV50_IR_OPCODE_CASE(FSLT, SET); > - NV50_IR_OPCODE_CASE(FSNE, SET); > - NV50_IR_OPCODE_CASE(IDIV, DIV); > - NV50_IR_OPCODE_CASE(IMAX, MAX); > - NV50_IR_OPCODE_CASE(IMIN, MIN); > - NV50_IR_OPCODE_CASE(IABS, ABS); > - NV50_IR_OPCODE_CASE(INEG, NEG); > - NV50_IR_OPCODE_CASE(ISGE, SET); > - NV50_IR_OPCODE_CASE(ISHR, SHR); > - NV50_IR_OPCODE_CASE(ISLT, SET); > - NV50_IR_OPCODE_CASE(F2U, CVT); > - NV50_IR_OPCODE_CASE(U2F, CVT); > - NV50_IR_OPCODE_CASE(UADD, ADD); > - NV50_IR_OPCODE_CASE(UDIV, DIV); > - NV50_IR_OPCODE_CASE(UMAD, MAD); > - NV50_IR_OPCODE_CASE(UMAX, MAX); > - NV50_IR_OPCODE_CASE(UMIN, MIN); > - NV50_IR_OPCODE_CASE(UMOD, MOD); > - NV50_IR_OPCODE_CASE(UMUL, MUL); > - NV50_IR_OPCODE_CASE(USEQ, SET); > - NV50_IR_OPCODE_CASE(USGE, SET); > - NV50_IR_OPCODE_CASE(USHR, SHR); > - NV50_IR_OPCODE_CASE(USLT, SET); > - NV50_IR_OPCODE_CASE(USNE, SET); > - > - NV50_IR_OPCODE_CASE(IMUL_HI, MUL); > - NV50_IR_OPCODE_CASE(UMUL_HI, MUL); > - > - NV50_IR_OPCODE_CASE(SAMPLE, TEX); > - NV50_IR_OPCODE_CASE(SAMPLE_B, TXB); > - NV50_IR_OPCODE_CASE(SAMPLE_C, TEX); > - NV50_IR_OPCODE_CASE(SAMPLE_C_LZ, TEX); > - NV50_IR_OPCODE_CASE(SAMPLE_D, TXD); > - NV50_IR_OPCODE_CASE(SAMPLE_L, TXL); > - NV50_IR_OPCODE_CASE(SAMPLE_I, TXF); > - NV50_IR_OPCODE_CASE(SAMPLE_I_MS, TXF); > - NV50_IR_OPCODE_CASE(GATHER4, TXG); > - NV50_IR_OPCODE_CASE(SVIEWINFO, TXQ); > - > - NV50_IR_OPCODE_CASE(ATOMUADD, ATOM); > - NV50_IR_OPCODE_CASE(ATOMXCHG, ATOM); > - NV50_IR_OPCODE_CASE(ATOMCAS, ATOM); > - NV50_IR_OPCODE_CASE(ATOMAND, ATOM); > - NV50_IR_OPCODE_CASE(ATOMOR, ATOM); > - NV50_IR_OPCODE_CASE(ATOMXOR, ATOM); > - NV50_IR_OPCODE_CASE(ATOMUMIN, ATOM); > - NV50_IR_OPCODE_CASE(ATOMUMAX, ATOM); > - NV50_IR_OPCODE_CASE(ATOMIMIN, ATOM); > - NV50_IR_OPCODE_CASE(ATOMIMAX, ATOM); > - > - NV50_IR_OPCODE_CASE(TEX2, TEX); > - NV50_IR_OPCODE_CASE(TXB2, TXB); > - NV50_IR_OPCODE_CASE(TXL2, TXL); > - > - NV50_IR_OPCODE_CASE(IBFE, EXTBF); > - NV50_IR_OPCODE_CASE(UBFE, EXTBF); > - NV50_IR_OPCODE_CASE(BFI, INSBF); > - NV50_IR_OPCODE_CASE(BREV, EXTBF); > - NV50_IR_OPCODE_CASE(POPC, POPCNT); > - NV50_IR_OPCODE_CASE(LSB, BFIND); > - NV50_IR_OPCODE_CASE(IMSB, BFIND); > - NV50_IR_OPCODE_CASE(UMSB, BFIND); > - > - NV50_IR_OPCODE_CASE(END, EXIT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ARL, SHL); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_MOV, MOV); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_RCP, RCP); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_RSQ, RSQ); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_MUL, MUL); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ADD, ADD); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_MIN, MIN); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_MAX, MAX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SLT, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SGE, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_MAD, MAD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SUB, SUB); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_FLR, FLOOR); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ROUND, CVT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_EX2, EX2); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_LG2, LG2); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_POW, POW); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ABS, ABS); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_COS, COS); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_DDX, DFDX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_DDX_FINE, DFDX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_DDY, DFDY); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_DDY_FINE, DFDY); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_KILL, DISCARD); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SEQ, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SGT, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SIN, SIN); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SLE, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SNE, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TEX, TEX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXD, TXD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXP, TEX); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_CAL, CALL); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_RET, RET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_CMP, SLCT); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXB, TXB); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_DIV, DIV); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXL, TXL); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_CEIL, CEIL); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_I2F, CVT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_NOT, NOT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TRUNC, TRUNC); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SHL, SHL); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_AND, AND); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_OR, OR); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_MOD, MOD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_XOR, XOR); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAD, SAD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXF, TXF); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXQ, TXQ); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TG4, TXG); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_LODQ, TXLQ); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_EMIT, EMIT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ENDPRIM, RESTART); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_KILL_IF, DISCARD); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_F2I, CVT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_FSEQ, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_FSGE, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_FSLT, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_FSNE, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_IDIV, DIV); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_IMAX, MAX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_IMIN, MIN); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_IABS, ABS); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_INEG, NEG); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ISGE, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ISHR, SHR); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ISLT, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_F2U, CVT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_U2F, CVT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UADD, ADD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UDIV, DIV); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UMAD, MAD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UMAX, MAX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UMIN, MIN); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UMOD, MOD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UMUL, MUL); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_USEQ, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_USGE, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_USHR, SHR); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_USLT, SET); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_USNE, SET); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_IMUL_HI, MUL); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UMUL_HI, MUL); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE, TEX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE_B, TXB); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE_C, TEX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE_C_LZ, TEX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE_D, TXD); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE_L, TXL); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE_I, TXF); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SAMPLE_I_MS, TXF); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_GATHER4, TXG); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_SVIEWINFO, TXQ); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMUADD, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMXCHG, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMCAS, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMAND, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMOR, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMXOR, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMUMIN, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMUMAX, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMIMIN, ATOM); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_ATOMIMAX, ATOM); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TEX2, TEX); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXB2, TXB); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_TXL2, TXL); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_IBFE, EXTBF); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UBFE, EXTBF); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_BFI, INSBF); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_BREV, EXTBF); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_POPC, POPCNT); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_LSB, BFIND); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_IMSB, BFIND); > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_UMSB, BFIND); > + > + NV50_IR_OPCODE_CASE(TGSI_OPCODE_END, EXIT); > > default: > return nv50_ir::OP_NOP; > -- > 2.1.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev