diff options
author | Eric Anholt <[email protected]> | 2014-11-12 13:13:59 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2014-11-24 14:56:22 -0800 |
commit | d4864cdf15ccd30f0e82d07fd0e9db8a0c115cda (patch) | |
tree | fddfda125d068bb4b451ca411fe9fc6b130a9d62 /src/gallium/drivers | |
parent | 7361d5ba63dda35683569e76caa33f886304958f (diff) |
gallium: Drop the NRM and NRM4 opcodes.
They weren't generated in tree, and as far as I know all hardware had to
lower it to a DP, RSQ, MUL.
Reviewed-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/ilo/shader/toy_tgsi.c | 89 | ||||
-rw-r--r-- | src/gallium/drivers/r300/r300_tgsi_to_rc.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 12 | ||||
-rw-r--r-- | src/gallium/drivers/svga/svga_tgsi_insn.c | 38 |
4 files changed, 6 insertions, 135 deletions
diff --git a/src/gallium/drivers/ilo/shader/toy_tgsi.c b/src/gallium/drivers/ilo/shader/toy_tgsi.c index 1ba06061372..8cbb47ec264 100644 --- a/src/gallium/drivers/ilo/shader/toy_tgsi.c +++ b/src/gallium/drivers/ilo/shader/toy_tgsi.c @@ -705,24 +705,6 @@ aos_SCS(struct toy_compiler *tc, } static void -aos_NRM(struct toy_compiler *tc, - const struct tgsi_full_instruction *tgsi_inst, - struct toy_dst *dst, - struct toy_src *src) -{ - struct toy_dst tmp = tc_alloc_tmp(tc); - - assert(!"NRM untested"); - - tc_DP3(tc, tmp, src[0], src[0]); - tc_INV(tc, tmp, tsrc_from(tmp)); - tc_MUL(tc, tdst_writemask(dst[0], TOY_WRITEMASK_XYZ), - src[0], tsrc_from(tmp)); - - tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_W), tsrc_imm_f(1.0f)); -} - -static void aos_DIV(struct toy_compiler *tc, const struct tgsi_full_instruction *tgsi_inst, struct toy_dst *dst, @@ -803,21 +785,6 @@ aos_ENDLOOP(struct toy_compiler *tc, } static void -aos_NRM4(struct toy_compiler *tc, - const struct tgsi_full_instruction *tgsi_inst, - struct toy_dst *dst, - struct toy_src *src) -{ - struct toy_dst tmp = tc_alloc_tmp(tc); - - assert(!"NRM4 untested"); - - tc_DP4(tc, tmp, src[0], src[0]); - tc_INV(tc, tmp, tsrc_from(tmp)); - tc_MUL(tc, dst[0], tsrc_swizzle1(src[0], TOY_SWIZZLE_X), tsrc_from(tmp)); -} - -static void aos_unsupported(struct toy_compiler *tc, const struct tgsi_full_instruction *tgsi_inst, struct toy_dst *dst, @@ -897,7 +864,6 @@ static const toy_tgsi_translate aos_translate_table[TGSI_OPCODE_LAST] = { [TGSI_OPCODE_CMP] = aos_compare, [TGSI_OPCODE_SCS] = aos_SCS, [TGSI_OPCODE_TXB] = aos_tex, - [TGSI_OPCODE_NRM] = aos_NRM, [TGSI_OPCODE_DIV] = aos_DIV, [TGSI_OPCODE_DP2] = aos_simple, [TGSI_OPCODE_TXL] = aos_tex, @@ -933,7 +899,6 @@ static const toy_tgsi_translate aos_translate_table[TGSI_OPCODE_LAST] = { [TGSI_OPCODE_FSGE] = aos_set_on_cond, [TGSI_OPCODE_FSLT] = aos_set_on_cond, [TGSI_OPCODE_FSNE] = aos_set_on_cond, - [TGSI_OPCODE_NRM4] = aos_NRM4, [TGSI_OPCODE_CALLNZ] = aos_unsupported, [TGSI_OPCODE_BREAKC] = aos_unsupported, [TGSI_OPCODE_KILL_IF] = aos_simple, @@ -1369,58 +1334,6 @@ soa_SCS(struct toy_compiler *tc, } static void -soa_NRM(struct toy_compiler *tc, - const struct tgsi_full_instruction *tgsi_inst, - struct toy_dst *dst_, - struct toy_src *src_) -{ - const struct toy_dst tmp = tc_alloc_tmp(tc); - struct toy_dst dst0[4]; - struct toy_src src0[4]; - - assert(!"SoA NRM untested"); - - tdst_transpose(dst_[0], dst0); - tsrc_transpose(src_[0], src0); - - tc_MUL(tc, tmp, src0[2], src0[2]); - tc_MAC(tc, tmp, src0[1], src0[1], tsrc_from(tmp)); - tc_MAC(tc, tmp, src0[0], src0[0], tsrc_from(tmp)); - tc_INV(tc, tmp, tsrc_from(tmp)); - - tc_MUL(tc, dst0[0], src0[0], tsrc_from(tmp)); - tc_MUL(tc, dst0[1], src0[1], tsrc_from(tmp)); - tc_MUL(tc, dst0[2], src0[2], tsrc_from(tmp)); - tc_MOV(tc, dst0[3], tsrc_imm_f(1.0f)); -} - -static void -soa_NRM4(struct toy_compiler *tc, - const struct tgsi_full_instruction *tgsi_inst, - struct toy_dst *dst_, - struct toy_src *src_) -{ - const struct toy_dst tmp = tc_alloc_tmp(tc); - struct toy_dst dst0[4]; - struct toy_src src0[4]; - int i; - - assert(!"SoA NRM4 untested"); - - tdst_transpose(dst_[0], dst0); - tsrc_transpose(src_[0], src0); - - tc_MUL(tc, tmp, src0[3], src0[3]); - tc_MAC(tc, tmp, src0[2], src0[2], tsrc_from(tmp)); - tc_MAC(tc, tmp, src0[1], src0[1], tsrc_from(tmp)); - tc_MAC(tc, tmp, src0[0], src0[0], tsrc_from(tmp)); - tc_INV(tc, tmp, tsrc_from(tmp)); - - for (i = 0; i < 4; i++) - tc_MUL(tc, dst0[i], src0[0], tsrc_from(tmp)); -} - -static void soa_unsupported(struct toy_compiler *tc, const struct tgsi_full_instruction *tgsi_inst, struct toy_dst *dst_, @@ -1502,7 +1415,6 @@ static const toy_tgsi_translate soa_translate_table[TGSI_OPCODE_LAST] = { [TGSI_OPCODE_CMP] = soa_per_channel, [TGSI_OPCODE_SCS] = soa_SCS, [TGSI_OPCODE_TXB] = soa_passthrough, - [TGSI_OPCODE_NRM] = soa_NRM, [TGSI_OPCODE_DIV] = soa_per_channel, [TGSI_OPCODE_DP2] = soa_dot_product, [TGSI_OPCODE_TXL] = soa_passthrough, @@ -1538,7 +1450,6 @@ static const toy_tgsi_translate soa_translate_table[TGSI_OPCODE_LAST] = { [TGSI_OPCODE_FSGE] = soa_per_channel, [TGSI_OPCODE_FSLT] = soa_per_channel, [TGSI_OPCODE_FSNE] = soa_per_channel, - [TGSI_OPCODE_NRM4] = soa_NRM4, [TGSI_OPCODE_CALLNZ] = soa_unsupported, [TGSI_OPCODE_BREAKC] = soa_unsupported, [TGSI_OPCODE_KILL_IF] = soa_passthrough, diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c b/src/gallium/drivers/r300/r300_tgsi_to_rc.c index 7ea9cd23cf9..c08818eb19b 100644 --- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c +++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c @@ -97,7 +97,6 @@ static unsigned translate_opcode(unsigned opcode) case TGSI_OPCODE_CMP: return RC_OPCODE_CMP; case TGSI_OPCODE_SCS: return RC_OPCODE_SCS; case TGSI_OPCODE_TXB: return RC_OPCODE_TXB; - /* case TGSI_OPCODE_NRM: return RC_OPCODE_NRM; */ /* case TGSI_OPCODE_DIV: return RC_OPCODE_DIV; */ case TGSI_OPCODE_DP2: return RC_OPCODE_DP2; case TGSI_OPCODE_TXL: return RC_OPCODE_TXL; @@ -130,7 +129,6 @@ static unsigned translate_opcode(unsigned opcode) /* case TGSI_OPCODE_ENDLOOP2: return RC_OPCODE_ENDLOOP2; */ /* case TGSI_OPCODE_ENDSUB: return RC_OPCODE_ENDSUB; */ case TGSI_OPCODE_NOP: return RC_OPCODE_NOP; - /* case TGSI_OPCODE_NRM4: return RC_OPCODE_NRM4; */ /* case TGSI_OPCODE_CALLNZ: return RC_OPCODE_CALLNZ; */ /* case TGSI_OPCODE_BREAKC: return RC_OPCODE_BREAKC; */ case TGSI_OPCODE_KILL_IF: return RC_OPCODE_KIL; diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 29d27ce821c..10a5ca0b1ae 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -7257,7 +7257,7 @@ static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = { {TGSI_OPCODE_CMP, 0, ALU_OP0_NOP, tgsi_cmp}, {TGSI_OPCODE_SCS, 0, ALU_OP0_NOP, tgsi_scs}, {TGSI_OPCODE_TXB, 0, FETCH_OP_SAMPLE_LB, tgsi_tex}, - {TGSI_OPCODE_NRM, 0, ALU_OP0_NOP, tgsi_unsupported}, + {69, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_DIV, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_DP2, 0, ALU_OP2_DOT4, tgsi_dp}, {TGSI_OPCODE_TXL, 0, FETCH_OP_SAMPLE_L, tgsi_tex}, @@ -7300,7 +7300,7 @@ static struct r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] = { {TGSI_OPCODE_FSGE, 0, ALU_OP2_SETGE_DX10, tgsi_op2}, {TGSI_OPCODE_FSLT, 0, ALU_OP2_SETGT_DX10, tgsi_op2_swap}, {TGSI_OPCODE_FSNE, 0, ALU_OP2_SETNE_DX10, tgsi_op2_swap}, - {TGSI_OPCODE_NRM4, 0, ALU_OP0_NOP, tgsi_unsupported}, + {112, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_CALLNZ, 0, ALU_OP0_NOP, tgsi_unsupported}, {114, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_BREAKC, 0, ALU_OP0_NOP, tgsi_loop_breakc}, @@ -7456,7 +7456,7 @@ static struct r600_shader_tgsi_instruction eg_shader_tgsi_instruction[] = { {TGSI_OPCODE_CMP, 0, ALU_OP0_NOP, tgsi_cmp}, {TGSI_OPCODE_SCS, 0, ALU_OP0_NOP, tgsi_scs}, {TGSI_OPCODE_TXB, 0, FETCH_OP_SAMPLE_LB, tgsi_tex}, - {TGSI_OPCODE_NRM, 0, ALU_OP0_NOP, tgsi_unsupported}, + {69, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_DIV, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_DP2, 0, ALU_OP2_DOT4, tgsi_dp}, {TGSI_OPCODE_TXL, 0, FETCH_OP_SAMPLE_L, tgsi_tex}, @@ -7499,7 +7499,7 @@ static struct r600_shader_tgsi_instruction eg_shader_tgsi_instruction[] = { {TGSI_OPCODE_FSGE, 0, ALU_OP2_SETGE_DX10, tgsi_op2}, {TGSI_OPCODE_FSLT, 0, ALU_OP2_SETGT_DX10, tgsi_op2_swap}, {TGSI_OPCODE_FSNE, 0, ALU_OP2_SETNE_DX10, tgsi_op2_swap}, - {TGSI_OPCODE_NRM4, 0, ALU_OP0_NOP, tgsi_unsupported}, + {112, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_CALLNZ, 0, ALU_OP0_NOP, tgsi_unsupported}, {114, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_BREAKC, 0, ALU_OP0_NOP, tgsi_unsupported}, @@ -7655,7 +7655,7 @@ static struct r600_shader_tgsi_instruction cm_shader_tgsi_instruction[] = { {TGSI_OPCODE_CMP, 0, ALU_OP0_NOP, tgsi_cmp}, {TGSI_OPCODE_SCS, 0, ALU_OP0_NOP, tgsi_scs}, {TGSI_OPCODE_TXB, 0, FETCH_OP_SAMPLE_LB, tgsi_tex}, - {TGSI_OPCODE_NRM, 0, ALU_OP0_NOP, tgsi_unsupported}, + {69, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_DIV, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_DP2, 0, ALU_OP2_DOT4, tgsi_dp}, {TGSI_OPCODE_TXL, 0, FETCH_OP_SAMPLE_L, tgsi_tex}, @@ -7698,7 +7698,7 @@ static struct r600_shader_tgsi_instruction cm_shader_tgsi_instruction[] = { {TGSI_OPCODE_FSGE, 0, ALU_OP2_SETGE_DX10, tgsi_op2}, {TGSI_OPCODE_FSLT, 0, ALU_OP2_SETGT_DX10, tgsi_op2_swap}, {TGSI_OPCODE_FSNE, 0, ALU_OP2_SETNE_DX10, tgsi_op2_swap}, - {TGSI_OPCODE_NRM4, 0, ALU_OP0_NOP, tgsi_unsupported}, + {112, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_CALLNZ, 0, ALU_OP0_NOP, tgsi_unsupported}, {114, 0, ALU_OP0_NOP, tgsi_unsupported}, {TGSI_OPCODE_BREAKC, 0, ALU_OP0_NOP, tgsi_unsupported}, diff --git a/src/gallium/drivers/svga/svga_tgsi_insn.c b/src/gallium/drivers/svga/svga_tgsi_insn.c index b68b01a04ab..7a12b52e2dd 100644 --- a/src/gallium/drivers/svga/svga_tgsi_insn.c +++ b/src/gallium/drivers/svga/svga_tgsi_insn.c @@ -54,7 +54,6 @@ translate_opcode(uint opcode) case TGSI_OPCODE_MOV: return SVGA3DOP_MOV; case TGSI_OPCODE_MUL: return SVGA3DOP_MUL; case TGSI_OPCODE_NOP: return SVGA3DOP_NOP; - case TGSI_OPCODE_NRM4: return SVGA3DOP_NRM; default: assert(!"svga: unexpected opcode in translate_opcode()"); return SVGA3DOP_LAST_INST; @@ -1270,40 +1269,6 @@ emit_dph(struct svga_shader_emitter *emit, /** - * Translate the following TGSI DST instruction. - * NRM DST, SRC - * To the following SVGA3D instruction sequence. - * DP3 TMP, SRC, SRC - * RSQ TMP, TMP - * MUL DST, SRC, TMP - */ -static boolean -emit_nrm(struct svga_shader_emitter *emit, - const struct tgsi_full_instruction *insn) -{ - SVGA3dShaderDestToken dst = translate_dst_register( emit, insn, 0 ); - const struct src_register src0 = - translate_src_register(emit, &insn->Src[0]); - SVGA3dShaderDestToken temp = get_temp( emit ); - - /* DP3 TMP, SRC, SRC */ - if (!submit_op2( emit, inst_token( SVGA3DOP_DP3 ), temp, src0, src0 )) - return FALSE; - - /* RSQ TMP, TMP */ - if (!submit_op1( emit, inst_token( SVGA3DOP_RSQ ), temp, src( temp ))) - return FALSE; - - /* MUL DST, SRC, TMP */ - if (!submit_op2( emit, inst_token( SVGA3DOP_MUL ), dst, - src0, src( temp ))) - return FALSE; - - return TRUE; -} - - -/** * Sine / Cosine helper function. */ static boolean @@ -2962,9 +2927,6 @@ svga_emit_instruction(struct svga_shader_emitter *emit, case TGSI_OPCODE_DPH: return emit_dph( emit, insn ); - case TGSI_OPCODE_NRM: - return emit_nrm( emit, insn ); - case TGSI_OPCODE_COS: return emit_cos( emit, insn ); |