diff options
author | Francisco Jerez <[email protected]> | 2015-07-13 21:15:31 +0300 |
---|---|---|
committer | Francisco Jerez <[email protected]> | 2015-07-29 14:12:46 +0300 |
commit | 8368939e5d94f8d4ae55a1f22a755922ee77132b (patch) | |
tree | 9a7cd246e06781b23744a2c121e475205ff88573 /src/mesa/state_tracker/st_cb_strings.c | |
parent | 86ae788baefefdb2fa77fe3c242ad2d81c8e834e (diff) |
i965/fs: Implement pass to lower instructions of unsupported SIMD width.
This lowering pass implements an algorithm to expand SIMDN
instructions into a sequence of SIMDM instructions in cases where the
hardware doesn't support the original execution size natively for some
particular instruction. The most important use-cases are:
- Lowering send message instructions that don't support SIMD16
natively into SIMD8 (several texturing, framebuffer write and typed
surface operations).
- Lowering messages that don't support SIMD8 natively into SIMD16
(*cough*gen4*cough*).
- 64-bit precision operations (e.g. FP64 and 64-bit integer
multiplication).
- SIMD32.
The algorithm works by splitting the sources of the original
instruction into chunks of width appropriate for the lowered
instructions, and then interleaving the results component-wise into
the destination of the original instruction. The pass is controlled
by the get_lowered_simd_width() function that currently just returns
the original execution size making the whole pass a no-op for the
moment until some user is introduced.
Reviewed-by: Jason Ekstrand <[email protected]>
v2: Reverse order of the source transformations and split_inst emit
call to make the code a bit easier to understand.
Diffstat (limited to 'src/mesa/state_tracker/st_cb_strings.c')
0 files changed, 0 insertions, 0 deletions