diff options
author | Marek Olšák <[email protected]> | 2017-08-19 20:25:08 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-08-22 16:42:17 +0200 |
commit | 497506ad93d737db0c75f512626df2ae82c27560 (patch) | |
tree | af19e9b67d6fdac75576f4928bf2aa7405c7045a /src/gallium/drivers/etnaviv/etnaviv_compiler.c | |
parent | 33efa6416f6ec58a5ec535c4c11501850514d5e7 (diff) |
gallium: remove TGSI opcode SCS
use COS+SIN instead.
Reviewed-by: Roland Scheidegger <[email protected]>
Acked-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/drivers/etnaviv/etnaviv_compiler.c')
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_compiler.c | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler.c b/src/gallium/drivers/etnaviv/etnaviv_compiler.c index 4f09f71cc10..c4ca80fe190 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler.c @@ -1474,9 +1474,6 @@ trans_trig(const struct instr_translater *t, struct etna_compile *c, * - Output an x and y component, which need to be multiplied to * get the result */ - /* TGSI lowering should deal with SCS */ - assert(inst->Instruction.Opcode != TGSI_OPCODE_SCS); - struct etna_native_reg temp = etna_compile_get_inner_temp(c); /* only using .xyz */ emit_inst(c, &(struct etna_inst) { .opcode = INST_OPCODE_MUL, @@ -1503,9 +1500,6 @@ trans_trig(const struct instr_translater *t, struct etna_compile *c, }); } else if (c->specs->has_sin_cos_sqrt) { - /* TGSI lowering should deal with SCS */ - assert(inst->Instruction.Opcode != TGSI_OPCODE_SCS); - struct etna_native_reg temp = etna_compile_get_inner_temp(c); /* add divide by PI/2, using a temp register. GC2000 * fails with src==dst for the trig instruction. */ @@ -1540,8 +1534,6 @@ trans_trig(const struct instr_translater *t, struct etna_compile *c, * DP3 t.x___, t.xyww, C, void (for scs) * MAD t._y_w, t,xxzz, |t.xxzz|, -t.xxzz * MAD dst, t.ywyw, .2225, t.xzxz - * - * TODO: we don't set dst.zw correctly for SCS. */ struct etna_inst *p, ins[9] = { }; struct etna_native_reg t0 = etna_compile_get_inner_temp(c); @@ -1597,19 +1589,7 @@ trans_trig(const struct instr_translater *t, struct etna_compile *c, ins[4].src[0] = swizzle(t0s, dp3_swiz); ins[4].src[1] = swizzle(sincos[0], SWIZZLE(Z, W, W, W)); - if (inst->Instruction.Opcode == TGSI_OPCODE_SCS) { - ins[5] = ins[3]; - ins[6] = ins[4]; - ins[4].dst.comps = INST_COMPS_X; - ins[6].dst.comps = INST_COMPS_Z; - ins[5].src[0] = swizzle(t0s, SWIZZLE(W, Z, W, W)); - ins[6].src[0] = swizzle(t0s, SWIZZLE(Z, Y, W, W)); - ins[5].src[1] = absolute(ins[5].src[0]); - p = &ins[7]; - } else { - p = &ins[5]; - } - + p = &ins[5]; p->opcode = INST_OPCODE_MAD; p->dst = etna_native_to_dst(t0, INST_COMPS_Y | INST_COMPS_W); p->src[0] = swizzle(t0s, SWIZZLE(X, X, Z, Z)); @@ -1809,7 +1789,6 @@ static const struct instr_translater translaters[TGSI_OPCODE_LAST] = { INSTR(SIN, trans_trig), INSTR(COS, trans_trig), - INSTR(SCS, trans_trig), INSTR(SLT, trans_instr, .opc = INST_OPCODE_SET, .src = {0, 1, -1}, .cond = INST_CONDITION_LT), INSTR(SGE, trans_instr, .opc = INST_OPCODE_SET, .src = {0, 1, -1}, .cond = INST_CONDITION_GE), @@ -2309,7 +2288,6 @@ etna_compile_shader(struct etna_shader_variant *v) const struct etna_specs *specs = v->shader->specs; struct tgsi_lowering_config lconfig = { - .lower_SCS = specs->has_sin_cos_sqrt, .lower_FLR = !specs->has_sign_floor_ceil, .lower_CEIL = !specs->has_sign_floor_ceil, .lower_POW = true, |