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

Reply via email to