From: Brian Paul Date: Fri, 19 Sep 2008 23:55:54 +0000 (-0600) Subject: cell: use different opcodes for spe_move() depending on even/odd address X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=99cdfc997b9da10fee57cf1048a55354e1ee4244;p=mesa.git cell: use different opcodes for spe_move() depending on even/odd address --- diff --git a/src/gallium/auxiliary/rtasm/rtasm_ppc_spe.c b/src/gallium/auxiliary/rtasm/rtasm_ppc_spe.c index 1c3e21b4c03..491141f1908 100644 --- a/src/gallium/auxiliary/rtasm/rtasm_ppc_spe.c +++ b/src/gallium/auxiliary/rtasm/rtasm_ppc_spe.c @@ -639,7 +639,13 @@ spe_complement(struct spe_function *p, unsigned rT, unsigned rA) void spe_move(struct spe_function *p, unsigned rT, unsigned rA) { - spe_ori(p, rT, rA, 0); + /* Use different instructions depending on the instruction address + * to take advantage of the dual pipelines. + */ + if (p->num_inst & 1) + spe_shlqbyi(p, rT, rA, 0); /* odd pipe */ + else + spe_ori(p, rT, rA, 0); /* even pipe */ }