yuzu/src/shader_recompiler/ir_opt
ReinUsesLisp 66a0cedba3 shader: Fold integer FMA from Nvidia's pattern
Fold shaders doing "a * b + c" on integers from the pattern generated by
Nvidia's GL compiler.

On a somewhat complex compute shader it reduces the code size by 16
instructions from 2 matches on Turing GPUs.

On Intel as extracted from KHR_pipeline_executable_properties:
Before the optimization:
```
Instruction Count: 2057
Basic Block Count: 45
Scratch Memory Size: 14752
Spill Count: 232
Fill Count: 261
SEND Count: 610
Cycle Count: 11325
```

After the optimization:
```
Instruction Count: 2046
Basic Block Count: 44
Scratch Memory Size: 13728
Spill Count: 219
Fill Count: 268
SEND Count: 604
Cycle Count: 11367
```
2021-07-26 04:58:02 -03:00
..
collect_shader_info_pass.cpp glsl: Fix tracking of info.uses_shadow_lod 2021-07-22 21:51:40 -04:00
constant_propagation_pass.cpp shader: Fold integer FMA from Nvidia's pattern 2021-07-26 04:58:02 -03:00
dead_code_elimination_pass.cpp shader: Avoid usage of C++20 ranges to build in clang 2021-07-22 21:51:40 -04:00
dual_vertex_pass.cpp shader: Avoid usage of C++20 ranges to build in clang 2021-07-22 21:51:40 -04:00
global_memory_to_storage_buffer_pass.cpp shader: Avoid usage of C++20 ranges to build in clang 2021-07-22 21:51:40 -04:00
identity_removal_pass.cpp glasm: Rework control flow introducing a syntax list 2021-07-22 21:51:31 -04:00
lower_fp16_to_fp32.cpp shader: Move microinstruction header to the value header 2021-07-22 21:51:28 -04:00
lower_int64_to_int32.cpp shader: Avoid usage of C++20 ranges to build in clang 2021-07-22 21:51:40 -04:00
passes.h shader: Add int64 to int32 lowering pass 2021-07-22 21:51:39 -04:00
ssa_rewrite_pass.cpp shader: Avoid usage of C++20 ranges to build in clang 2021-07-22 21:51:40 -04:00
texture_pass.cpp texture_pass: Fix is_read image qualification 2021-07-22 21:51:38 -04:00
verification_pass.cpp glasm: Remove unintentionally committed fmt::prints 2021-07-22 21:51:33 -04:00