[Mesa-dev] [PATCH 5/6] gallium: Move duplicated helper macros to tgsi_exec.h
Jose Fonseca
jfonseca at vmware.com
Mon Jan 16 11:08:50 PST 2012
Looks good too.
Jose
----- Original Message -----
> ---
> src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 219
> +++++++++++------------
> src/gallium/auxiliary/tgsi/tgsi_exec.h | 13 ++
> src/gallium/auxiliary/tgsi/tgsi_ppc.c | 78 ++++-----
> 3 files changed, 148 insertions(+), 162 deletions(-)
>
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
> b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
> index 84a2676..1ad0b74 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
> @@ -63,19 +63,6 @@
> #include "lp_bld_printf.h"
>
>
> -#define FOR_EACH_CHANNEL( CHAN )\
> - for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++)
> -
> -#define IS_DST0_CHANNEL_ENABLED( INST, CHAN )\
> - ((INST)->Dst[0].Register.WriteMask & (1 << (CHAN)))
> -
> -#define IF_IS_DST0_CHANNEL_ENABLED( INST, CHAN )\
> - if (IS_DST0_CHANNEL_ENABLED( INST, CHAN ))
> -
> -#define FOR_EACH_DST0_ENABLED_CHANNEL( INST, CHAN )\
> - FOR_EACH_CHANNEL( CHAN )\
> - IF_IS_DST0_CHANNEL_ENABLED( INST, CHAN )
> -
> #define NUM_CHANNELS 4
>
> #define LP_MAX_INSTRUCTIONS 256
> @@ -839,7 +826,7 @@ emit_fetch_predicate(
> unsigned chan;
>
> if (!inst->Instruction.Predicate) {
> - FOR_EACH_CHANNEL( chan ) {
> + TGSI_FOR_EACH_CHANNEL( chan ) {
> pred[chan] = NULL;
> }
> return;
> @@ -853,7 +840,7 @@ emit_fetch_predicate(
> index = inst->Predicate.Index;
> assert(index < LP_MAX_TGSI_PREDS);
>
> - FOR_EACH_CHANNEL( chan ) {
> + TGSI_FOR_EACH_CHANNEL( chan ) {
> unsigned swizzle = swizzles[chan];
>
> /*
> @@ -1203,7 +1190,7 @@ emit_kil(
>
> memset(&terms, 0, sizeof terms);
>
> - FOR_EACH_CHANNEL( chan_index ) {
> + TGSI_FOR_EACH_CHANNEL( chan_index ) {
> unsigned swizzle;
>
> /* Unswizzle channel */
> @@ -1217,7 +1204,7 @@ emit_kil(
> }
>
> mask = NULL;
> - FOR_EACH_CHANNEL( chan_index ) {
> + TGSI_FOR_EACH_CHANNEL( chan_index ) {
> if(terms[chan_index]) {
> LLVMValueRef chan_mask;
>
> @@ -1408,14 +1395,14 @@ emit_instruction(
>
> assert(info->num_dst <= 1);
> if (info->num_dst) {
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = bld->base.undef;
> }
> }
>
> switch (inst->Instruction.Opcode) {
> case TGSI_OPCODE_ARL:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> tmp0 = lp_build_floor(&bld->base, tmp0);
> dst0[chan_index] = tmp0;
> @@ -1423,20 +1410,20 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_MOV:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = emit_fetch( bld, inst, 0, chan_index );
> }
> break;
>
> case TGSI_OPCODE_LIT:
> - if( IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ) {
> + if(TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ) {
> dst0[TGSI_CHAN_X] = bld->base.one;
> }
> - if( IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ) {
> + if(TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ) {
> src0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> dst0[TGSI_CHAN_Y] = lp_build_max( &bld->base, src0,
> bld->base.zero);
> }
> - if( IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) ) {
> + if(TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) ) {
> /* XMM[1] = SrcReg[0].yyyy */
> tmp1 = emit_fetch( bld, inst, 0, TGSI_CHAN_Y );
> /* XMM[1] = max(XMM[1], 0) */
> @@ -1448,7 +1435,7 @@ emit_instruction(
> tmp2 = lp_build_cmp(&bld->base, PIPE_FUNC_GREATER, tmp0,
> bld->base.zero);
> dst0[TGSI_CHAN_Z] = lp_build_select(&bld->base, tmp2, tmp1,
> bld->base.zero);
> }
> - if( IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) ) {
> + if(TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) ) {
> dst0[TGSI_CHAN_W] = bld->base.one;
> }
> break;
> @@ -1457,7 +1444,7 @@ emit_instruction(
> /* TGSI_OPCODE_RECIP */
> src0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> res = lp_build_rcp(&bld->base, src0);
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = res;
> }
> break;
> @@ -1467,47 +1454,47 @@ emit_instruction(
> src0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> src0 = lp_build_abs(&bld->base, src0);
> res = lp_build_rsqrt(&bld->base, src0);
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = res;
> }
> break;
>
> case TGSI_OPCODE_EXP:
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> - IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ||
> - IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z )) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z )) {
> LLVMValueRef *p_exp2_int_part = NULL;
> LLVMValueRef *p_frac_part = NULL;
> LLVMValueRef *p_exp2 = NULL;
>
> src0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
>
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> p_exp2_int_part = &tmp0;
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ))
> p_frac_part = &tmp1;
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> p_exp2 = &tmp2;
>
> lp_build_exp2_approx(&bld->base, src0, p_exp2_int_part,
> p_frac_part, p_exp2);
>
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> dst0[TGSI_CHAN_X] = tmp0;
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ))
> dst0[TGSI_CHAN_Y] = tmp1;
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> dst0[TGSI_CHAN_Z] = tmp2;
> }
> /* dst.w = 1.0 */
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W )) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W )) {
> dst0[TGSI_CHAN_W] = bld->base.one;
> }
> break;
>
> case TGSI_OPCODE_LOG:
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> - IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ||
> - IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z )) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z )) {
> LLVMValueRef *p_floor_log2 = NULL;
> LLVMValueRef *p_exp = NULL;
> LLVMValueRef *p_log2 = NULL;
> @@ -1515,34 +1502,34 @@ emit_instruction(
> src0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> src0 = lp_build_abs( &bld->base, src0 );
>
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> p_floor_log2 = &tmp0;
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ))
> p_exp = &tmp1;
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> p_log2 = &tmp2;
>
> lp_build_log2_approx(&bld->base, src0, p_exp, p_floor_log2,
> p_log2);
>
> /* dst.x = floor(lg2(abs(src.x))) */
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ))
> dst0[TGSI_CHAN_X] = tmp0;
> /* dst.y = abs(src)/ex2(floor(lg2(abs(src.x)))) */
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y )) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y )) {
> dst0[TGSI_CHAN_Y] = lp_build_div( &bld->base, src0,
> tmp1);
> }
> /* dst.z = lg2(abs(src.x)) */
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ))
> dst0[TGSI_CHAN_Z] = tmp2;
> }
> /* dst.w = 1.0 */
> - if (IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W )) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W )) {
> dst0[TGSI_CHAN_W] = bld->base.one;
> }
> break;
>
> case TGSI_OPCODE_MUL:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> dst0[chan_index] = lp_build_mul(&bld->base, src0, src1);
> @@ -1550,7 +1537,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_ADD:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> dst0[chan_index] = lp_build_add(&bld->base, src0, src1);
> @@ -1570,7 +1557,7 @@ emit_instruction(
> tmp2 = emit_fetch( bld, inst, 1, TGSI_CHAN_Z );
> tmp1 = lp_build_mul( &bld->base, tmp1, tmp2);
> tmp0 = lp_build_add( &bld->base, tmp0, tmp1);
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0;
> }
> break;
> @@ -1592,30 +1579,30 @@ emit_instruction(
> tmp2 = emit_fetch( bld, inst, 1, TGSI_CHAN_W );
> tmp1 = lp_build_mul( &bld->base, tmp1, tmp2);
> tmp0 = lp_build_add( &bld->base, tmp0, tmp1);
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0;
> }
> break;
>
> case TGSI_OPCODE_DST:
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) {
> dst0[TGSI_CHAN_X] = bld->base.one;
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) {
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_Y );
> tmp1 = emit_fetch( bld, inst, 1, TGSI_CHAN_Y );
> dst0[TGSI_CHAN_Y] = lp_build_mul( &bld->base, tmp0, tmp1);
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) {
> dst0[TGSI_CHAN_Z] = emit_fetch( bld, inst, 0, TGSI_CHAN_Z
> );
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) {
> dst0[TGSI_CHAN_W] = emit_fetch( bld, inst, 1, TGSI_CHAN_W
> );
> }
> break;
>
> case TGSI_OPCODE_MIN:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> dst0[chan_index] = lp_build_min( &bld->base, src0, src1 );
> @@ -1623,7 +1610,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_MAX:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> dst0[chan_index] = lp_build_max( &bld->base, src0, src1 );
> @@ -1632,7 +1619,7 @@ emit_instruction(
>
> case TGSI_OPCODE_SLT:
> /* TGSI_OPCODE_SETLT */
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> tmp0 = lp_build_cmp( &bld->base, PIPE_FUNC_LESS, src0, src1
> );
> @@ -1642,7 +1629,7 @@ emit_instruction(
>
> case TGSI_OPCODE_SGE:
> /* TGSI_OPCODE_SETGE */
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> tmp0 = lp_build_cmp( &bld->base, PIPE_FUNC_GEQUAL, src0,
> src1 );
> @@ -1652,7 +1639,7 @@ emit_instruction(
>
> case TGSI_OPCODE_MAD:
> /* TGSI_OPCODE_MADD */
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> tmp1 = emit_fetch( bld, inst, 1, chan_index );
> tmp2 = emit_fetch( bld, inst, 2, chan_index );
> @@ -1663,7 +1650,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_SUB:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> tmp1 = emit_fetch( bld, inst, 1, chan_index );
> dst0[chan_index] = lp_build_sub( &bld->base, tmp0, tmp1);
> @@ -1671,7 +1658,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_LRP:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> src2 = emit_fetch( bld, inst, 2, chan_index );
> @@ -1682,7 +1669,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_CND:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> src2 = emit_fetch( bld, inst, 2, chan_index );
> @@ -1702,13 +1689,13 @@ emit_instruction(
> tmp0 = lp_build_add( &bld->base, tmp0, tmp1); /*
> xmm0 = xmm0 + xmm1 */
> tmp1 = emit_fetch( bld, inst, 2, TGSI_CHAN_X ); /* xmm1 =
> src[2].x */
> tmp0 = lp_build_add( &bld->base, tmp0, tmp1); /*
> xmm0 = xmm0 + xmm1 */
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0; /* dest[ch] = xmm0 */
> }
> break;
>
> case TGSI_OPCODE_FRC:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> tmp0 = lp_build_floor(&bld->base, src0);
> tmp0 = lp_build_sub(&bld->base, src0, tmp0);
> @@ -1717,7 +1704,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_CLAMP:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> src2 = emit_fetch( bld, inst, 2, chan_index );
> @@ -1728,14 +1715,14 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_FLR:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> dst0[chan_index] = lp_build_floor(&bld->base, tmp0);
> }
> break;
>
> case TGSI_OPCODE_ROUND:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> dst0[chan_index] = lp_build_round(&bld->base, tmp0);
> }
> @@ -1744,7 +1731,7 @@ emit_instruction(
> case TGSI_OPCODE_EX2: {
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> tmp0 = lp_build_exp2( &bld->base, tmp0);
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0;
> }
> break;
> @@ -1753,7 +1740,7 @@ emit_instruction(
> case TGSI_OPCODE_LG2:
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> tmp0 = lp_build_log2( &bld->base, tmp0);
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0;
> }
> break;
> @@ -1762,23 +1749,23 @@ emit_instruction(
> src0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> src1 = emit_fetch( bld, inst, 1, TGSI_CHAN_X );
> res = lp_build_pow( &bld->base, src0, src1 );
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = res;
> }
> break;
>
> case TGSI_OPCODE_XPD:
> - if( IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> - IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ) {
> + if(TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ) {
> tmp1 = emit_fetch( bld, inst, 1, TGSI_CHAN_Z );
> tmp3 = emit_fetch( bld, inst, 0, TGSI_CHAN_Z );
> }
> - if( IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> - IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) ) {
> + if(TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) ) {
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_Y );
> tmp4 = emit_fetch( bld, inst, 1, TGSI_CHAN_Y );
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) {
> tmp2 = tmp0;
> tmp2 = lp_build_mul( &bld->base, tmp2, tmp1);
> tmp5 = tmp3;
> @@ -1786,30 +1773,30 @@ emit_instruction(
> tmp2 = lp_build_sub( &bld->base, tmp2, tmp5);
> dst0[TGSI_CHAN_X] = tmp2;
> }
> - if( IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ||
> - IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) ) {
> + if(TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) ) {
> tmp2 = emit_fetch( bld, inst, 1, TGSI_CHAN_X );
> tmp5 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) {
> tmp3 = lp_build_mul( &bld->base, tmp3, tmp2);
> tmp1 = lp_build_mul( &bld->base, tmp1, tmp5);
> tmp3 = lp_build_sub( &bld->base, tmp3, tmp1);
> dst0[TGSI_CHAN_Y] = tmp3;
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) {
> tmp5 = lp_build_mul( &bld->base, tmp5, tmp4);
> tmp0 = lp_build_mul( &bld->base, tmp0, tmp2);
> tmp5 = lp_build_sub( &bld->base, tmp5, tmp0);
> dst0[TGSI_CHAN_Z] = tmp5;
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) {
> dst0[TGSI_CHAN_W] = bld->base.one;
> }
> break;
>
> case TGSI_OPCODE_ABS:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> dst0[chan_index] = lp_build_abs( &bld->base, tmp0 );
> }
> @@ -1834,7 +1821,7 @@ emit_instruction(
> tmp0 = lp_build_add( &bld->base, tmp0, tmp1);
> tmp1 = emit_fetch( bld, inst, 1, TGSI_CHAN_W );
> tmp0 = lp_build_add( &bld->base, tmp0, tmp1);
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0;
> }
> break;
> @@ -1842,19 +1829,19 @@ emit_instruction(
> case TGSI_OPCODE_COS:
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> tmp0 = lp_build_cos( &bld->base, tmp0 );
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0;
> }
> break;
>
> case TGSI_OPCODE_DDX:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> emit_fetch_deriv( bld, inst, 0, chan_index, NULL,
> &dst0[chan_index], NULL);
> }
> break;
>
> case TGSI_OPCODE_DDY:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> emit_fetch_deriv( bld, inst, 0, chan_index, NULL, NULL,
> &dst0[chan_index]);
> }
> break;
> @@ -1890,7 +1877,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_SEQ:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> tmp0 = lp_build_cmp( &bld->base, PIPE_FUNC_EQUAL, src0,
> src1 );
> @@ -1899,13 +1886,13 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_SFL:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = bld->base.zero;
> }
> break;
>
> case TGSI_OPCODE_SGT:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> tmp0 = lp_build_cmp( &bld->base, PIPE_FUNC_GREATER, src0,
> src1 );
> @@ -1916,13 +1903,13 @@ emit_instruction(
> case TGSI_OPCODE_SIN:
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> tmp0 = lp_build_sin( &bld->base, tmp0 );
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0;
> }
> break;
>
> case TGSI_OPCODE_SLE:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> tmp0 = lp_build_cmp( &bld->base, PIPE_FUNC_LEQUAL, src0,
> src1 );
> @@ -1931,7 +1918,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_SNE:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> tmp0 = lp_build_cmp( &bld->base, PIPE_FUNC_NOTEQUAL, src0,
> src1 );
> @@ -1940,7 +1927,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_STR:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = bld->base.one;
> }
> break;
> @@ -1990,7 +1977,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_ARR:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> tmp0 = lp_build_round(&bld->base, tmp0);
> dst0[chan_index] = tmp0;
> @@ -2024,14 +2011,14 @@ emit_instruction(
>
> case TGSI_OPCODE_SSG:
> /* TGSI_OPCODE_SGN */
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> dst0[chan_index] = lp_build_sgn( &bld->base, tmp0 );
> }
> break;
>
> case TGSI_OPCODE_CMP:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> src0 = emit_fetch( bld, inst, 0, chan_index );
> src1 = emit_fetch( bld, inst, 1, chan_index );
> src2 = emit_fetch( bld, inst, 2, chan_index );
> @@ -2041,18 +2028,18 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_SCS:
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_X ) {
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> dst0[TGSI_CHAN_X] = lp_build_cos( &bld->base, tmp0 );
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Y ) {
> tmp0 = emit_fetch( bld, inst, 0, TGSI_CHAN_X );
> dst0[TGSI_CHAN_Y] = lp_build_sin( &bld->base, tmp0 );
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_Z ) {
> dst0[TGSI_CHAN_Z] = bld->base.zero;
> }
> - IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( inst, TGSI_CHAN_W ) {
> dst0[TGSI_CHAN_W] = bld->base.one;
> }
> break;
> @@ -2068,17 +2055,17 @@ emit_instruction(
> {
> uint dims = (inst->Instruction.Opcode == TGSI_OPCODE_NRM) ?
> 3 : 4;
>
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) ||
> - IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y) ||
> - IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z) ||
> - (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W) && dims ==
> 4)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z) ||
> + (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W) &&
> dims == 4)) {
>
> /* NOTE: Cannot use xmm regs 2/3 here (see emit_rsqrt()
> above). */
>
> /* xmm4 = src.x */
> /* xmm0 = src.x * src.x */
> tmp0 = emit_fetch(bld, inst, 0, TGSI_CHAN_X);
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X)) {
> tmp4 = tmp0;
> }
> tmp0 = lp_build_mul( &bld->base, tmp0, tmp0);
> @@ -2086,7 +2073,7 @@ emit_instruction(
> /* xmm5 = src.y */
> /* xmm0 = xmm0 + src.y * src.y */
> tmp1 = emit_fetch(bld, inst, 0, TGSI_CHAN_Y);
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> tmp5 = tmp1;
> }
> tmp1 = lp_build_mul( &bld->base, tmp1, tmp1);
> @@ -2095,7 +2082,7 @@ emit_instruction(
> /* xmm6 = src.z */
> /* xmm0 = xmm0 + src.z * src.z */
> tmp1 = emit_fetch(bld, inst, 0, TGSI_CHAN_Z);
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> tmp6 = tmp1;
> }
> tmp1 = lp_build_mul( &bld->base, tmp1, tmp1);
> @@ -2105,7 +2092,7 @@ emit_instruction(
> /* xmm7 = src.w */
> /* xmm0 = xmm0 + src.w * src.w */
> tmp1 = emit_fetch(bld, inst, 0, TGSI_CHAN_W);
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W))
> {
> tmp7 = tmp1;
> }
> tmp1 = lp_build_mul( &bld->base, tmp1, tmp1);
> @@ -2116,28 +2103,28 @@ emit_instruction(
> tmp1 = lp_build_rsqrt( &bld->base, tmp0);
>
> /* dst.x = xmm1 * src.x */
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X)) {
> dst0[TGSI_CHAN_X] = lp_build_mul( &bld->base, tmp4,
> tmp1);
> }
>
> /* dst.y = xmm1 * src.y */
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> dst0[TGSI_CHAN_Y] = lp_build_mul( &bld->base, tmp5,
> tmp1);
> }
>
> /* dst.z = xmm1 * src.z */
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> dst0[TGSI_CHAN_Z] = lp_build_mul( &bld->base, tmp6,
> tmp1);
> }
>
> /* dst.w = xmm1 * src.w */
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) && dims
> == 4) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) &&
> dims == 4) {
> dst0[TGSI_CHAN_W] = lp_build_mul( &bld->base, tmp7,
> tmp1);
> }
> }
>
> /* dst.w = 1.0 */
> - if (IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W) && dims ==
> 3) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W) && dims
> == 3) {
> dst0[TGSI_CHAN_W] = bld->base.one;
> }
> }
> @@ -2157,7 +2144,7 @@ emit_instruction(
> tmp2 = emit_fetch( bld, inst, 1, TGSI_CHAN_Y ); /* xmm2 =
> src[1].y */
> tmp1 = lp_build_mul( &bld->base, tmp1, tmp2); /*
> xmm1 = xmm1 * xmm2 */
> tmp0 = lp_build_add( &bld->base, tmp0, tmp1); /*
> xmm0 = xmm0 + xmm1 */
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> dst0[chan_index] = tmp0; /* dest[ch] = xmm0 */
> }
> break;
> @@ -2218,7 +2205,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_CEIL:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> dst0[chan_index] = lp_build_ceil(&bld->base, tmp0);
> }
> @@ -2237,7 +2224,7 @@ emit_instruction(
> break;
>
> case TGSI_OPCODE_TRUNC:
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> tmp0 = emit_fetch( bld, inst, 0, chan_index );
> dst0[chan_index] = lp_build_trunc(&bld->base, tmp0);
> }
> @@ -2321,7 +2308,7 @@ emit_instruction(
>
> emit_fetch_predicate( bld, inst, pred );
>
> - FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> emit_store( bld, inst, 0, chan_index, pred[chan_index],
> dst0[chan_index]);
> }
> }
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h
> b/src/gallium/auxiliary/tgsi/tgsi_exec.h
> index 613b383..d9e93ce 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_exec.h
> +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h
> @@ -45,6 +45,19 @@ extern "C" {
> #define TGSI_NUM_CHANNELS 4 /* R,G,B,A */
> #define TGSI_QUAD_SIZE 4 /* 4 pixel/quad */
>
> +#define TGSI_FOR_EACH_CHANNEL( CHAN )\
> + for (CHAN = 0; CHAN < TGSI_NUM_CHANNELS; CHAN++)
> +
> +#define TGSI_IS_DST0_CHANNEL_ENABLED( INST, CHAN )\
> + ((INST)->Dst[0].Register.WriteMask & (1 << (CHAN)))
> +
> +#define TGSI_IF_IS_DST0_CHANNEL_ENABLED( INST, CHAN )\
> + if (TGSI_IS_DST0_CHANNEL_ENABLED( INST, CHAN ))
> +
> +#define TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( INST, CHAN )\
> + TGSI_FOR_EACH_CHANNEL( CHAN )\
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED( INST, CHAN )
> +
>
> /**
> * Registers may be treated as float, signed int or unsigned int.
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_ppc.c
> b/src/gallium/auxiliary/tgsi/tgsi_ppc.c
> index 36400c7..1e00e2e 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_ppc.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_ppc.c
> @@ -56,20 +56,6 @@ ppc_builtin_constants[] = {
> 1.0f, -128.0f, 128.0, 0.0
> };
>
> -
> -#define FOR_EACH_CHANNEL( CHAN )\
> - for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++)
> -
> -#define IS_DST0_CHANNEL_ENABLED( INST, CHAN )\
> - ((INST).Dst[0].Register.WriteMask & (1 << (CHAN)))
> -
> -#define IF_IS_DST0_CHANNEL_ENABLED( INST, CHAN )\
> - if (IS_DST0_CHANNEL_ENABLED( INST, CHAN ))
> -
> -#define FOR_EACH_DST0_ENABLED_CHANNEL( INST, CHAN )\
> - FOR_EACH_CHANNEL( CHAN )\
> - IF_IS_DST0_CHANNEL_ENABLED( INST, CHAN )
> -
> /**
> * How many TGSI temps should be implemented with real PPC vector
> registers
> * rather than memory.
> @@ -583,7 +569,7 @@ emit_scalar_unaryop(struct gen_context *gen,
> struct tgsi_full_instruction *inst)
> assert(0);
> }
>
> - FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
> emit_store(gen, v1, inst, chan_index, FALSE);
> }
>
> @@ -597,7 +583,7 @@ emit_unaryop(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> {
> uint chan_index;
>
> - FOR_EACH_DST0_ENABLED_CHANNEL(*inst, chan_index) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL(inst, chan_index) {
> int v0 = get_src_vec(gen, inst, 0, chan_index); /* v0 =
> srcreg[0] */
> int v1 = get_dst_vec(gen, inst, chan_index);
> switch (inst->Instruction.Opcode) {
> @@ -647,7 +633,7 @@ emit_binop(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> ppc_vzero(gen->f, zero_vec);
> }
>
> - FOR_EACH_DST0_ENABLED_CHANNEL(*inst, chan) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL(inst, chan) {
> /* fetch src operands */
> int v0 = get_src_vec(gen, inst, 0, chan);
> int v1 = get_src_vec(gen, inst, 1, chan);
> @@ -690,7 +676,7 @@ emit_triop(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> {
> uint chan;
>
> - FOR_EACH_DST0_ENABLED_CHANNEL(*inst, chan) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL(inst, chan) {
> /* fetch src operands */
> int v0 = get_src_vec(gen, inst, 0, chan);
> int v1 = get_src_vec(gen, inst, 1, chan);
> @@ -727,7 +713,7 @@ emit_inequality(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> uint chan;
> int one_vec = gen_one_vec(gen);
>
> - FOR_EACH_DST0_ENABLED_CHANNEL(*inst, chan) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL(inst, chan) {
> /* fetch src operands */
> int v0 = get_src_vec(gen, inst, 0, chan);
> int v1 = get_src_vec(gen, inst, 1, chan);
> @@ -806,7 +792,7 @@ emit_dotprod(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> ppc_vaddfp(gen->f, v2, v2, v1); /* v2 = v2 + v1 */
> }
>
> - FOR_EACH_DST0_ENABLED_CHANNEL(*inst, chan_index) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL(inst, chan_index) {
> emit_store(gen, v2, inst, chan_index, FALSE); /* store v2,
> free v2 later */
> }
>
> @@ -841,13 +827,13 @@ emit_lit(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> int one_vec = gen_one_vec(gen);
>
> /* Compute X */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_X)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X)) {
> emit_store(gen, one_vec, inst, TGSI_CHAN_X, FALSE);
> }
>
> /* Compute Y, Z */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y) ||
> - IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> int x_vec;
> int zero_vec = ppc_allocate_vec_register(gen->f);
>
> @@ -856,11 +842,11 @@ emit_lit(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> ppc_vzero(gen->f, zero_vec); /* zero =
> {0,0,0,0} */
> ppc_vmaxfp(gen->f, x_vec, x_vec, zero_vec); /* x_vec =
> max(x_vec, 0) */
>
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> emit_store(gen, x_vec, inst, TGSI_CHAN_Y, FALSE);
> }
>
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> int y_vec, w_vec;
> int z_vec = ppc_allocate_vec_register(gen->f);
> int pow_vec = ppc_allocate_vec_register(gen->f);
> @@ -901,7 +887,7 @@ emit_lit(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> }
>
> /* Compute W */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_W)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W)) {
> emit_store(gen, one_vec, inst, TGSI_CHAN_W, FALSE);
> }
>
> @@ -919,7 +905,7 @@ emit_exp(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> src_vec = get_src_vec(gen, inst, 0, TGSI_CHAN_X);
>
> /* Compute X = 2^floor(src) */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_X)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X)) {
> int dst_vec = get_dst_vec(gen, inst, TGSI_CHAN_X);
> int tmp_vec = ppc_allocate_vec_register(gen->f);
> ppc_vrfim(gen->f, tmp_vec, src_vec); /* tmp =
> floor(src); */
> @@ -929,7 +915,7 @@ emit_exp(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> }
>
> /* Compute Y = src - floor(src) */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> int dst_vec = get_dst_vec(gen, inst, TGSI_CHAN_Y);
> int tmp_vec = ppc_allocate_vec_register(gen->f);
> ppc_vrfim(gen->f, tmp_vec, src_vec); /* tmp =
> floor(src); */
> @@ -939,14 +925,14 @@ emit_exp(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> }
>
> /* Compute Z = RoughApprox2ToX(src) */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> int dst_vec = get_dst_vec(gen, inst, TGSI_CHAN_Z);
> ppc_vexptefp(gen->f, dst_vec, src_vec); /* dst = 2 ^
> src */
> emit_store(gen, dst_vec, inst, TGSI_CHAN_Z, TRUE);
> }
>
> /* Compute W = 1.0 */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_W)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W)) {
> emit_store(gen, one_vec, inst, TGSI_CHAN_W, FALSE);
> }
>
> @@ -968,8 +954,8 @@ emit_log(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> abs_vec = ppc_allocate_vec_register(gen->f);
> ppc_vandc(gen->f, abs_vec, src_vec, bit31_vec); /* abs = src
> & ~bit31 */
>
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_X) &&
> - IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) &&
> + TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
>
> /* compute tmp = floor(log2(abs)) */
> int tmp_vec = ppc_allocate_vec_register(gen->f);
> @@ -977,12 +963,12 @@ emit_log(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> ppc_vrfim(gen->f, tmp_vec, tmp_vec); /* tmp =
> floor(tmp); */
>
> /* Compute X = tmp */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_X)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X)) {
> emit_store(gen, tmp_vec, inst, TGSI_CHAN_X, FALSE);
> }
>
> /* Compute Y = abs / 2^tmp */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> const int zero_vec = ppc_allocate_vec_register(gen->f);
> ppc_vzero(gen->f, zero_vec);
> ppc_vexptefp(gen->f, tmp_vec, tmp_vec); /* tmp = 2 ^
> tmp */
> @@ -997,14 +983,14 @@ emit_log(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> }
>
> /* Compute Z = RoughApproxLog2(abs) */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> int dst_vec = get_dst_vec(gen, inst, TGSI_CHAN_Z);
> ppc_vlogefp(gen->f, dst_vec, abs_vec); /* dst =
> log2(abs) */
> emit_store(gen, dst_vec, inst, TGSI_CHAN_Z, TRUE);
> }
>
> /* Compute W = 1.0 */
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_W)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_W)) {
> emit_store(gen, one_vec, inst, TGSI_CHAN_W, FALSE);
> }
>
> @@ -1023,7 +1009,7 @@ emit_pow(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
>
> ppc_vec_pow(gen->f, pow_vec, s0_vec, s1_vec);
>
> - FOR_EACH_DST0_ENABLED_CHANNEL(*inst, chan) {
> + TGSI_FOR_EACH_DST0_ENABLED_CHANNEL(inst, chan) {
> emit_store(gen, pow_vec, inst, chan, FALSE);
> }
>
> @@ -1047,37 +1033,37 @@ emit_xpd(struct gen_context *gen, struct
> tgsi_full_instruction *inst)
> tmp_vec = ppc_allocate_vec_register(gen->f);
> tmp2_vec = ppc_allocate_vec_register(gen->f);
>
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y) ||
> - IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> x0_vec = get_src_vec(gen, inst, 0, TGSI_CHAN_X);
> x1_vec = get_src_vec(gen, inst, 1, TGSI_CHAN_X);
> }
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_X) ||
> - IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Z)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z)) {
> y0_vec = get_src_vec(gen, inst, 0, TGSI_CHAN_Y);
> y1_vec = get_src_vec(gen, inst, 1, TGSI_CHAN_Y);
> }
> - if (IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_X) ||
> - IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y)) {
> + if (TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) ||
> + TGSI_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y)) {
> z0_vec = get_src_vec(gen, inst, 0, TGSI_CHAN_Z);
> z1_vec = get_src_vec(gen, inst, 1, TGSI_CHAN_Z);
> }
>
> - IF_IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_X) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_X) {
> /* tmp = y0 * z1 */
> ppc_vmaddfp(gen->f, tmp_vec, y0_vec, z1_vec, zero_vec);
> /* tmp = tmp - z0 * y1*/
> ppc_vnmsubfp(gen->f, tmp_vec, tmp_vec, z0_vec, y1_vec);
> emit_store(gen, tmp_vec, inst, TGSI_CHAN_X, FALSE);
> }
> - IF_IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Y) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Y) {
> /* tmp = z0 * x1 */
> ppc_vmaddfp(gen->f, tmp_vec, z0_vec, x1_vec, zero_vec);
> /* tmp = tmp - x0 * z1 */
> ppc_vnmsubfp(gen->f, tmp_vec, tmp_vec, x0_vec, z1_vec);
> emit_store(gen, tmp_vec, inst, TGSI_CHAN_Y, FALSE);
> }
> - IF_IS_DST0_CHANNEL_ENABLED(*inst, TGSI_CHAN_Z) {
> + TGSI_IF_IS_DST0_CHANNEL_ENABLED(inst, TGSI_CHAN_Z) {
> /* tmp = x0 * y1 */
> ppc_vmaddfp(gen->f, tmp_vec, x0_vec, y1_vec, zero_vec);
> /* tmp = tmp - y0 * x1 */
> --
> 1.7.3.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list