diff options
| author | Farzon Lotfi <1802579+farzonl@users.noreply.github.com> | 2024-03-14 20:25:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-14 20:25:57 -0400 |
| commit | de1a97db3948608822a6d099cc3460690132e1cb (patch) | |
| tree | 3f71ffa9e3ad4101c65063a6c1ec420234992ef5 /llvm/lib/Bitcode/Reader/BitcodeAnalyzer.cpp | |
| parent | 58ef9bec071383744fb703ff08df9806f25e4095 (diff) | |
| download | llvm-de1a97db3948608822a6d099cc3460690132e1cb.zip llvm-de1a97db3948608822a6d099cc3460690132e1cb.tar.gz llvm-de1a97db3948608822a6d099cc3460690132e1cb.tar.bz2 | |
[DXIL] `exp`, `any`, `lerp`, & `rcp` Intrinsic Lowering (#84526)
This change implements lowering for #70076, #70100, #70072, & #70102
`CGBuiltin.cpp` - - simplify `lerp` intrinsic
`IntrinsicsDirectX.td` - simplify `lerp` intrinsic
`SemaChecking.cpp` - remove unnecessary check
`DXILIntrinsicExpansion.*` - add intrinsic to instruction expansion
cases
`DXILOpLowering.cpp` - make sure `DXILIntrinsicExpansion` happens first
`DirectX.h` - changes to support new pass
`DirectXTargetMachine.cpp` - changes to support new pass
Why `any`, and `lerp` as instruction expansion just for DXIL?
- SPIR-V there is an
[OpAny](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#OpAny)
- SPIR-V has a GLSL lerp extension via
[Fmix](https://registry.khronos.org/SPIR-V/specs/1.0/GLSL.std.450.html#FMix)
Why `exp` instruction expansion?
- We have an `exp2` opcode and `exp` reuses that opcode. So instruction
expansion is a convenient way to do preprocessing.
- Further SPIR-V has a GLSL exp extension via
[Exp](https://registry.khronos.org/SPIR-V/specs/1.0/GLSL.std.450.html#Exp)
and
[Exp2](https://registry.khronos.org/SPIR-V/specs/1.0/GLSL.std.450.html#Exp2)
Why `rcp` as instruction expansion?
This one is a bit of the odd man out and might have to move to
`cgbuiltins` when we better understand SPIRV requirements. However I
included it because it seems like [fast math mode has an AllowRecip
flag](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_fp_fast_math_mode)
which lets you compute the reciprocal without performing the division.
We don't have that in DXIL so thought to include it.
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeAnalyzer.cpp')
0 files changed, 0 insertions, 0 deletions
