diff options
author | Roland Scheidegger <[email protected]> | 2013-06-07 21:20:01 +0200 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2013-06-08 17:33:51 +0200 |
commit | 213c207b3ac40ae769afe01b8578f566b5e7840d (patch) | |
tree | a2c21acecead6f1e470a04f3afe73260fcb56d68 /src/gallium/drivers/freedreno/freedreno_clear.c | |
parent | 0aca2c6b608b80661cb8fd35eb08195ab95743f5 (diff) |
gallivm: work around slow code generated for interleaving 128bit vectors
We use 128bit vector interleave for untwiddling in the blend code (with
256bit vectors). llvm generates terrible code for this for some reason,
so instead of generating a shuffle for 2 128bit vectors use a
extract/insert shuffle instead (it only seems to matter we're not using
128bit wide vectors for the shuffle). This decreases instruction count of
the blend code generated for a rgba8 render target without blending from
169 to 113 with llvm 3.1 and from 136 to 114 in llvm 3.2/3.3, and I got
a ~8% (llvm 3.1) and ~5% (3.2/3.3) performance improvement in gears.
(The generated code is still not terribly good as we could actually avoid
the interleaving completely but llvm can't know this.)
Reviewed-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/freedreno_clear.c')
0 files changed, 0 insertions, 0 deletions