[Nouveau] [PATCH] Autogenerate uureg opcode macros

Luca Barbieri luca at luca-barbieri.com
Thu Dec 31 09:24:30 PST 2009


Also some missing _src()s and cosmetic changes.
---
 src/gallium/programs/galliumut/Makefile            |    5 +
 .../programs/galliumut/gen_uureg_opcodes.sh        |   29 +++
 src/gallium/programs/galliumut/uureg.h             |  196 ++++----------------
 3 files changed, 71 insertions(+), 159 deletions(-)
 create mode 100644 src/gallium/programs/galliumut/gen_uureg_opcodes.sh

diff --git a/src/gallium/programs/galliumut/Makefile b/src/gallium/programs/galliumut/Makefile
index ab0d684..4cb9d7c 100644
--- a/src/gallium/programs/galliumut/Makefile
+++ b/src/gallium/programs/galliumut/Makefile
@@ -9,3 +9,8 @@ LIBRARY_DEFINES = --std=gnu99
 C_SOURCES = egl_gallium.c image.c normal_gen.c
 
 include ../../Makefile.template
+
+default: uureg_opcodes.h
+
+uureg_opcodes.h: gen_uureg_opcodes.sh
+	bash $^ > $@
diff --git a/src/gallium/programs/galliumut/gen_uureg_opcodes.sh b/src/gallium/programs/galliumut/gen_uureg_opcodes.sh
new file mode 100644
index 0000000..3a56fcb
--- /dev/null
+++ b/src/gallium/programs/galliumut/gen_uureg_opcodes.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+cat - <<EOF
+#ifndef UUREG_OPCODES_H
+#define UUREG_OPCODES_H
+
+/* Autogenerated file, do not edit manually! Use make to regenerate. */
+
+EOF
+
+cat - << EOF|cpp -P -E - -I../../auxiliary|sed -re 's/^define /#define _/; s/ CAT /##/g;'
+#define OP00(op) define op() ureg_##op(ureg)
+#define OP01(op) define op(src) ureg_##op(ureg, _src(src))
+#define OP00_LBL(op) define op(label) ureg_##op(ureg, label)
+#define OP01_LBL(op) define op(src, label) ureg_##op(ureg, _src(src), label)
+#define OP10(op) define op(dst) ureg_##op(ureg, dst)
+#define OP11(op) define op(dst, src) ureg_##op(ureg, dst, _src(src))
+#define OP12(op) define op(dst, src0, src1) ureg_##op(ureg, dst, _src(src0), _src(src1))
+#define OP12_TEX(op) define op(dst, target, src0, src1) ureg_##op(ureg, dst, TGSI_TEXTURE_ CAT target, _src(src0), _src(src1))
+#define OP13(op) define op(dst, src0, src1, src2) ureg_##op(ureg, dst, _src(src0), _src(src1), _src(src2))
+#define OP14_TEX(op) define op(dst, target, src0, src1, src2, src3) ureg_##op(ureg, dst, TGSI_TEXTURE_ CAT target, _src(src0), _src(src1), _src(src2), _src(src3))
+
+#include <tgsi/tgsi_opcode_tmp.h>
+EOF
+
+cat - <<EOF
+
+#endif
+EOF
+
diff --git a/src/gallium/programs/galliumut/uureg.h b/src/gallium/programs/galliumut/uureg.h
index a2d07a7..d30e188 100644
--- a/src/gallium/programs/galliumut/uureg.h
+++ b/src/gallium/programs/galliumut/uureg.h
@@ -60,7 +60,7 @@ static inline struct ureg_src _src(const struct ureg_src& src) {return src;}
 #define _OUTPUT(v, n, i) struct ureg_dst v = ureg_DECL_output(ureg, TGSI_SEMANTIC_##n, i)
 #define _CONST_(v, i) struct ureg_src v = ureg_DECL_constant(ureg, i)
 #define _CONST(v, s) UREG_CONST(v, ureg, s)
- #define _CONST_MAT3(v, s) UREG_CONST_MAT3(v, ureg, s)
+#define _CONST_MAT3(v, s) UREG_CONST_MAT3(v, ureg, s)
 #define _CONST_MAT4(v, s) UREG_CONST_MAT4(v, ureg, s)
 #define _ADDRESS(v) struct ureg_src v = ureg_DECL_address(ureg)
 #define _LOOP(v) struct ureg_src v = ureg_DECL_loop(ureg)
@@ -88,6 +88,41 @@ static inline struct ureg_src _src(const struct ureg_src& src) {return src;}
 #define _zy(v) _swz(v, Z, Y, Z, Y)
 #define _zw(v) _swz(v, Z, W, Z, W)
 
+#define _ind(r, a) ureg_src_indirect(_src(r), _src(a))
+#define _abs(x) ureg_abs(_src(x))
+#define _neg(x) ureg_negate(_src(x))
+#define _undef ureg_src_undef()
+#define _is_undef(v) ureg_src_is_undef(_src(v))
+
+#define _X(v) ureg_writemask((v), TGSI_WRITEMASK_X)
+#define _Y(v) ureg_writemask((v), TGSI_WRITEMASK_Y)
+#define _Z(v) ureg_writemask((v), TGSI_WRITEMASK_Z)
+#define _W(v) ureg_writemask((v), TGSI_WRITEMASK_W)
+#define _XY(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y)
+#define _XZ(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Z)
+#define _XW(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_W)
+#define _YZ(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z)
+#define _YW(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_W)
+#define _ZW(v) ureg_writemask((v), TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
+#define _XYZ(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z)
+#define _XYW(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y | TGSI_WRITEMASK_W)
+#define _XZW(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
+#define _YZW(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
+#define _XYZW(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
+
+#define _SAT(v) ureg_saturate(v)
+#define _PRED(v, n, x, y, z, w) ureg_predicate(v, n, x, y, z, w)
+#define _IND(r, a) ureg_dst_indirect(r, _src(a))
+#define _UNDEF ureg_dst_undef()
+#define _IS_UNDEF(v) ureg_dst_is_undef(v)
+
+#define _VERT struct ureg_program* ureg = ureg_create(TGSI_PROCESSOR_VERTEX)
+#define _FRAG struct ureg_program* ureg = ureg_create(TGSI_PROCESSOR_FRAGMENT)
+
+#define _END_SHADER(pipe) (_END(), ureg_create_shader_and_destroy(ureg, pipe))
+
+#include "uureg_opcodes.h"
+
 /* generate with
 #!/usr/bin/python
 l = ('x', 'y', 'z', 'w')
@@ -354,162 +389,5 @@ for i in range(256):
 #define _wwwz(v) _swz(v, W, W, W, Z)
 #define _wwww(v) _swz(v, W, W, W, W)
 
-#define _ind(r, a) ureg_src_indirect(_src(r), _src(a))
-#define _abs(x) ureg_abs(_src(x))
-#define _neg(x) ureg_negate(_src(x))
-#define _undef ureg_src_undef()
-#define _is_undef(v) ureg_src_is_undef(v)
-
-#define _X(v) ureg_writemask((v), TGSI_WRITEMASK_X)
-#define _Y(v) ureg_writemask((v), TGSI_WRITEMASK_Y)
-#define _Z(v) ureg_writemask((v), TGSI_WRITEMASK_Z)
-#define _W(v) ureg_writemask((v), TGSI_WRITEMASK_W)
-#define _XY(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y)
-#define _XZ(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Z)
-#define _XW(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_W)
-#define _YZ(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z)
-#define _YW(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_W)
-#define _ZW(v) ureg_writemask((v), TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
-#define _XYZ(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z)
-#define _XYW(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y | TGSI_WRITEMASK_W)
-#define _XZW(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
-#define _YZW(v) ureg_writemask((v), TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
-#define _XYZW(v) ureg_writemask((v), TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y | TGSI_WRITEMASK_Z | TGSI_WRITEMASK_W)
-
-#define _SAT(v) ureg_saturate(v)
-#define _PRED(v, n, x, y, z, w) ureg_predicate(v, n, x, y, z, w)
-#define _IND(r, a) ureg_dst_indirect(r, _src(a))
-#define _UNDEF ureg_dst_undef()
-#define _IS_UNDEF(v) ureg_dst_is_undef(v)
-
-#define _VERT struct ureg_program* ureg = ureg_create(TGSI_PROCESSOR_VERTEX)
-#define _FRAG struct ureg_program* ureg = ureg_create(TGSI_PROCESSOR_FRAGMENT)
-
-#define _END_SHADER(pipe) (_END(), ureg_create_shader_and_destroy(ureg, pipe))
-
-/*
-Generate with:
-cat - << EOF|gcc -E - -I../../src/gallium/auxiliary|sed -re 's/^define/#define/; s/(ureg.* )(src[0-9]+)/\1_src(\2)/; s/(ureg.* )(src[0-9]+)/\1_src(\2)/; s/(ureg.* )(src[0-9]+)/\1_src(\2)/; s/(ureg.* )(src[0-9]+)/\1_src(\2)/; s/(ureg.* )(target)/\1TGSI_TEXTURE_##\2/;'
-#define OP00(op) define op() ureg_##op(ureg)
-#define OP01(op) define op(src) ureg_##op(ureg, src)
-#define OP00_LBL(op) define op(label) ureg_##op(ureg, label)
-#define OP01_LBL(op) define op(src, label) ureg_##op(ureg, src, label)
-#define OP10(op) define op(dst) ureg_##op(ureg, dst)
-#define OP11(op) define op(dst, src) ureg_##op(ureg, dst, src)
-#define OP12(op) define op(dst, src0, src1) ureg_##op(ureg, dst, src0, src1)
-#define OP12_TEX(op) define op(dst, target, src0, src1) ureg_##op(ureg, dst, target, src0, src1)
-#define OP13(op) define op(dst, src0, src1, src2) ureg_##op(ureg, dst, src0, src1, src2)
-#define OP14_TEX(op) define op(dst, target, src0, src1, src2, src3) ureg_##op(ureg, dst, target, src0, src1, src2, src3)
-
-#include <tgsi/tgsi_opcode_tmp.h>
-EOF
-*/
-
-#define _ARL(dst, src) ureg_ARL(ureg, dst, _src(src))
-#define _MOV(dst, src) ureg_MOV(ureg, dst, _src(src))
-#define _LIT(dst, src) ureg_LIT(ureg, dst, _src(src))
-#define _RCP(dst, src) ureg_RCP(ureg, dst, _src(src))
-#define _RSQ(dst, src) ureg_RSQ(ureg, dst, _src(src))
-#define _EXP(dst, src) ureg_EXP(ureg, dst, _src(src))
-#define _LOG(dst, src) ureg_LOG(ureg, dst, _src(src))
-#define _MUL(dst, src0, src1) ureg_MUL(ureg, dst, _src(src0), _src(src1))
-#define _ADD(dst, src0, src1) ureg_ADD(ureg, dst, _src(src0), _src(src1))
-#define _DP3(dst, src0, src1) ureg_DP3(ureg, dst, _src(src0), _src(src1))
-#define _DP4(dst, src0, src1) ureg_DP4(ureg, dst, _src(src0), _src(src1))
-#define _DST(dst, src0, src1) ureg_DST(ureg, dst, _src(src0), _src(src1))
-#define _MIN(dst, src0, src1) ureg_MIN(ureg, dst, _src(src0), _src(src1))
-#define _MAX(dst, src0, src1) ureg_MAX(ureg, dst, _src(src0), _src(src1))
-#define _SLT(dst, src0, src1) ureg_SLT(ureg, dst, _src(src0), _src(src1))
-#define _SGE(dst, src0, src1) ureg_SGE(ureg, dst, _src(src0), _src(src1))
-#define _MAD(dst, src0, src1, src2) ureg_MAD(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _SUB(dst, src0, src1) ureg_SUB(ureg, dst, _src(src0), _src(src1))
-#define _LRP(dst, src0, src1, src2) ureg_LRP(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _CND(dst, src0, src1, src2) ureg_CND(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _DP2A(dst, src0, src1, src2) ureg_DP2A(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _FRC(dst, src) ureg_FRC(ureg, dst, _src(src))
-#define _CLAMP(dst, src0, src1, src2) ureg_CLAMP(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _FLR(dst, src) ureg_FLR(ureg, dst, _src(src))
-#define _ROUND(dst, src) ureg_ROUND(ureg, dst, _src(src))
-#define _EX2(dst, src) ureg_EX2(ureg, dst, _src(src))
-#define _LG2(dst, src) ureg_LG2(ureg, dst, _src(src))
-#define _POW(dst, src0, src1) ureg_POW(ureg, dst, _src(src0), _src(src1))
-#define _XPD(dst, src0, src1) ureg_XPD(ureg, dst, _src(src0), _src(src1))
-#define _ABS(dst, src) ureg_ABS(ureg, dst, _src(src))
-#define _RCC(dst, src) ureg_RCC(ureg, dst, _src(src))
-#define _DPH(dst, src0, src1) ureg_DPH(ureg, dst, _src(src0), _src(src1))
-#define _COS(dst, src) ureg_COS(ureg, dst, _src(src))
-#define _DDX(dst, src) ureg_DDX(ureg, dst, _src(src))
-#define _DDY(dst, src) ureg_DDY(ureg, dst, _src(src))
-#define _KILP() ureg_KILP(ureg)
-#define _PK2H(dst, src) ureg_PK2H(ureg, dst, _src(src))
-#define _PK2US(dst, src) ureg_PK2US(ureg, dst, _src(src))
-#define _PK4B(dst, src) ureg_PK4B(ureg, dst, _src(src))
-#define _PK4UB(dst, src) ureg_PK4UB(ureg, dst, _src(src))
-#define _RFL(dst, src0, src1) ureg_RFL(ureg, dst, _src(src0), _src(src1))
-#define _SEQ(dst, src0, src1) ureg_SEQ(ureg, dst, _src(src0), _src(src1))
-#define _SFL(dst, src0, src1) ureg_SFL(ureg, dst, _src(src0), _src(src1))
-#define _SGT(dst, src0, src1) ureg_SGT(ureg, dst, _src(src0), _src(src1))
-#define _SIN(dst, src) ureg_SIN(ureg, dst, _src(src))
-#define _SLE(dst, src0, src1) ureg_SLE(ureg, dst, _src(src0), _src(src1))
-#define _SNE(dst, src0, src1) ureg_SNE(ureg, dst, _src(src0), _src(src1))
-#define _STR(dst, src0, src1) ureg_STR(ureg, dst, _src(src0), _src(src1))
-#define _TEX(dst, target, src0, src1) ureg_TEX(ureg, dst, TGSI_TEXTURE_##target, _src(src0), _src(src1))
-#define _TXD(dst, target, src0, src1, src2, src3) ureg_TXD(ureg, dst, TGSI_TEXTURE_##target, src0, _src(src1), _src(src2), _src(src3))
-#define _TXP(dst, target, src0, src1) ureg_TXP(ureg, dst, TGSI_TEXTURE_##target, _src(src0), _src(src1))
-#define _UP2H(dst, src) ureg_UP2H(ureg, dst, _src(src))
-#define _UP2US(dst, src) ureg_UP2US(ureg, dst, _src(src))
-#define _UP4B(dst, src) ureg_UP4B(ureg, dst, _src(src))
-#define _UP4UB(dst, src) ureg_UP4UB(ureg, dst, _src(src))
-#define _X2D(dst, src0, src1, src2) ureg_X2D(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _ARA(dst, src) ureg_ARA(ureg, dst, _src(src))
-#define _ARR(dst, src) ureg_ARR(ureg, dst, _src(src))
-#define _BRA(src) ureg_BRA(ureg, _src(src))
-#define _CAL(label) ureg_CAL(ureg, label)
-#define _RET() ureg_RET(ureg)
-#define _SSG(dst, src) ureg_SSG(ureg, dst, _src(src))
-#define _CMP(dst, src0, src1, src2) ureg_CMP(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _SCS(dst, src) ureg_SCS(ureg, dst, _src(src))
-#define _TXB(dst, target, src0, src1) ureg_TXB(ureg, dst, TGSI_TEXTURE_##target, _src(src0), _src(src1))
-#define _NRM(dst, src) ureg_NRM(ureg, dst, _src(src))
-#define _DIV(dst, src0, src1) ureg_DIV(ureg, dst, _src(src0), _src(src1))
-#define _DP2(dst, src0, src1) ureg_DP2(ureg, dst, _src(src0), _src(src1))
-#define _TXL(dst, target, src0, src1) ureg_TXL(ureg, dst, TGSI_TEXTURE_##target, _src(src0), _src(src1))
-#define _BRK() ureg_BRK(ureg)
-#define _IF(src, label) ureg_IF(ureg, _src(src), label)
-#define _BGNFOR(dst, src) ureg_BGNFOR(ureg, dst, _src(src))
-#define _REP(src) ureg_REP(ureg, _src(src))
-#define _ELSE(label) ureg_ELSE(ureg, label)
-#define _ENDIF() ureg_ENDIF(ureg)
-#define _ENDFOR(dst) ureg_ENDFOR(ureg, dst)
-#define _ENDREP() ureg_ENDREP(ureg)
-#define _PUSHA(src) ureg_PUSHA(ureg, _src(src))
-#define _POPA(dst) ureg_POPA(ureg, dst)
-#define _CEIL(dst, src) ureg_CEIL(ureg, dst, _src(src))
-#define _I2F(dst, src) ureg_I2F(ureg, dst, _src(src))
-#define _NOT(dst, src) ureg_NOT(ureg, dst, _src(src))
-#define _TRUNC(dst, src) ureg_TRUNC(ureg, dst, _src(src))
-#define _SHL(dst, src0, src1) ureg_SHL(ureg, dst, _src(src0), _src(src1))
-#define _SHR(dst, src0, src1) ureg_SHR(ureg, dst, _src(src0), _src(src1))
-#define _AND(dst, src0, src1) ureg_AND(ureg, dst, _src(src0), _src(src1))
-#define _OR(dst, src0, src1) ureg_OR(ureg, dst, _src(src0), _src(src1))
-#define _MOD(dst, src0, src1) ureg_MOD(ureg, dst, _src(src0), _src(src1))
-#define _XOR(dst, src0, src1) ureg_XOR(ureg, dst, _src(src0), _src(src1))
-#define _SAD(dst, src0, src1, src2) ureg_SAD(ureg, dst, _src(src0), _src(src1), _src(src2))
-#define _TXF(dst, target, src0, src1) ureg_TXF(ureg, dst, TGSI_TEXTURE_##target, _src(src0), _src(src1))
-#define _TXQ(dst, target, src0, src1) ureg_TXQ(ureg, dst, TGSI_TEXTURE_##target, _src(src0), _src(src1))
-#define _CONT() ureg_CONT(ureg)
-#define _EMIT() ureg_EMIT(ureg)
-#define _ENDPRIM() ureg_ENDPRIM(ureg)
-#define _BGNLOOP(label) ureg_BGNLOOP(ureg, label)
-#define _BGNSUB() ureg_BGNSUB(ureg)
-#define _ENDLOOP(label) ureg_ENDLOOP(ureg, label)
-#define _ENDSUB() ureg_ENDSUB(ureg)
-#define _NOP() ureg_NOP(ureg)
-#define _NRM4(dst, src) ureg_NRM4(ureg, dst, _src(src))
-#define _CALLNZ(src) ureg_CALLNZ(ureg, _src(src))
-#define _IFC(src) ureg_IFC(ureg, _src(src))
-#define _BREAKC(src) ureg_BREAKC(ureg, _src(src))
-#define _KIL(src) ureg_KIL(ureg, _src(src))
-#define _END() ureg_END(ureg)
-
 #endif
+
-- 
1.6.3.3



More information about the Nouveau mailing list