================
@@ -2615,6 +2618,15 @@ bool SPIRVInstructionSelector::selectDiscard(Register 
ResVReg,
       .constrainAllUses(TII, TRI, RBI);
 }
 
+bool SPIRVInstructionSelector::selectFwidth(Register ResVReg,
+                                            const SPIRVType *ResType,
+                                            MachineInstr &I) const {
+  return BuildMI(*I.getParent(), I, I.getDebugLoc(), TII.get(SPIRV::OpFwidth))
+      .addDef(ResVReg)
+      .addUse(GR.getSPIRVTypeID(ResType))
+      .addUse(I.getOperand(2).getReg());
+}
+
----------------
Alexander-Johnston wrote:

Renamed the selector for the DpdCoarse insts to `selectDerivativeInst` and sent 
the fwidth to it as well, as they all have the same pattern and require 
conversion to and from float when they are used with a half. This rule follows 
for all the other derivative instructions so far as I can tell.

https://github.com/llvm/llvm-project/pull/161378
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to