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.