Issue |
137255
|
Summary |
[SPIRV] Add PreLegalizer instCombine for `faceforward` GL extension
|
Labels |
new issue
|
Assignees |
|
Reporter |
kmpeng
|
Follow up to #99114.
The codegen for `faceforward` looks something like
```asm
faceforward(p1, p2, p3) ->
dResult = dot(p2, p3)
cmpResult = fcmp dResult, 0.0
subResult = fsub -0.0 p1
select(cmpResult, p1, subResult)
```
which means we can pattern match in `SPIRVCombine.td` and `SPIRVPreLegalizerCombiner.cpp` to
```c#
select(
fcmp(
dot(p2, p3),
0),
p1,
0 - p1)
```
This would allow us to change `select(fcmp(dot(p2, p3), 0), p1, 0 - p1)` to `faceforward(p1, p2, p3)` so that we use the right SPIR-V extension function.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs