diff options
| author | Craig Topper <craig.topper@intel.com> | 2017-12-15 21:18:05 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2017-12-15 21:18:05 +0000 |
| commit | 422ed23298a5666acd5dc15813d9389c26a3725e (patch) | |
| tree | 60870ddbcff5b7867f8996937b594e8efbd4f370 /llvm/lib/Target | |
| parent | f08ab74ae3a2e64b475d67ec26413b3712f438ac (diff) | |
| download | bcm5719-llvm-422ed23298a5666acd5dc15813d9389c26a3725e.tar.gz bcm5719-llvm-422ed23298a5666acd5dc15813d9389c26a3725e.zip | |
[X86] In LowerVectorCTPOP use ISD::ZERO_EXTEND/ISD::TRUNCATE instead of the target specific nodes.
The target independent nodes will get legalized to the target specific nodes by their own legalization process. Someday I'd like to stop using a target specific for zero extends and truncates of legal types so the less places we reference the target specific opcode the better.
llvm-svn: 320863
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 0429f65e73d..94714bf6920 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -23779,14 +23779,14 @@ static SDValue LowerVectorCTPOP(SDValue Op, const X86Subtarget &Subtarget, // TRUNC(CTPOP(ZEXT(X))) to make use of vXi32/vXi64 VPOPCNT instructions. if (Subtarget.hasVPOPCNTDQ()) { if (VT == MVT::v8i16) { - Op = DAG.getNode(X86ISD::VZEXT, DL, MVT::v8i64, Op0); + Op = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::v8i64, Op0); Op = DAG.getNode(ISD::CTPOP, DL, MVT::v8i64, Op); - return DAG.getNode(X86ISD::VTRUNC, DL, VT, Op); + return DAG.getNode(ISD::TRUNCATE, DL, VT, Op); } if (VT == MVT::v16i8 || VT == MVT::v16i16) { - Op = DAG.getNode(X86ISD::VZEXT, DL, MVT::v16i32, Op0); + Op = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::v16i32, Op0); Op = DAG.getNode(ISD::CTPOP, DL, MVT::v16i32, Op); - return DAG.getNode(X86ISD::VTRUNC, DL, VT, Op); + return DAG.getNode(ISD::TRUNCATE, DL, VT, Op); } } |

