[PATCH] D40373: [x86][icelake]GFNI

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 22 11:50:46 PST 2017


craig.topper added inline comments.


================
Comment at: lib/Support/Host.cpp:1479
 
+  // Enable Galios Field Arithmetics
+  Features["gfni"] = HasLeaf7 && ((ECX >> 8) & 1);
----------------
This needs to be rebased. The current code is here is ordered by bit position and nicely formatted. Please insert this bit in the correct position in the code


================
Comment at: lib/Target/X86/X86ISelLowering.cpp:19568
     case INTR_TYPE_2OP_MASK:
+    case INTR_TYPE_2OP_MASKZ:
     case INTR_TYPE_2OP_IMM8_MASK: {
----------------
I have trouble believing you need a 2OP_MASKZ. Can't the caller pass the zero vector to the mask version like we do for everything else? The reason we have OP3_MASKZ is because the OP3_MASK uses the passthru input in both the select op and the operation. So we needed a separate intrinsic to define the zero semantics of the select independent of the operation.


================
Comment at: lib/Target/X86/X86ISelLowering.cpp:19652
       SDValue Src3 = Op.getOperand(3);
-      SDValue PassThru = Op.getOperand(4);
+      SDValue PassThru = IntrData->Type == INTR_TYPE_3OP_IMM8_MASKZ ?
+        getZeroVector(Op.getSimpleValueType(), Subtarget, DAG, dl)  :
----------------
Again I think you can pass the zero vector to the masked intrinsic when its called.


Repository:
  rL LLVM

https://reviews.llvm.org/D40373





More information about the llvm-commits mailing list