diff options
author | Eric Anholt <[email protected]> | 2015-08-18 22:19:12 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2015-08-20 23:43:04 -0700 |
commit | 8cae9f2fda37b9868ea973a665e1acc115172b45 (patch) | |
tree | b55d1429f42c32bdc6c977ca38065554b86ca205 /src/gallium/drivers/vc4 | |
parent | c800fef2e2c65f7d81215cb316de6f73b15ba6c5 (diff) |
vc4: Add algebraic opt for rcp(1.0).
We're generating rcps as part of backend lowering of the packed coordinate
in the CS, and we don't want to lower them in NIR because of the extra
newton-raphson steps in the common case. However, GLB2.7 is moving a
vertex attribute with a 1.0 W component to the position, and that makes us
produce some silly RCPs.
total instructions in shared programs: 97590 -> 97580 (-0.01%)
instructions in affected programs: 74 -> 64 (-13.51%)
Diffstat (limited to 'src/gallium/drivers/vc4')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_opt_algebraic.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_opt_algebraic.c b/src/gallium/drivers/vc4/vc4_opt_algebraic.c index 77028bc026f..5b435832b92 100644 --- a/src/gallium/drivers/vc4/vc4_opt_algebraic.c +++ b/src/gallium/drivers/vc4/vc4_opt_algebraic.c @@ -275,6 +275,14 @@ qir_opt_algebraic(struct vc4_compile *c) } break; + case QOP_RCP: + if (is_1f(c, inst->src[0])) { + replace_with_mov(c, inst, inst->src[0]); + progress = true; + break; + } + break; + default: break; } |