[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