]> granicus.if.org Git - llvm/commitdiff
[X86] Simplify some code in matchBitExtract by using ANY_EXTEND.
authorCraig Topper <craig.topper@intel.com>
Wed, 27 Mar 2019 02:08:03 +0000 (02:08 +0000)
committerCraig Topper <craig.topper@intel.com>
Wed, 27 Mar 2019 02:08:03 +0000 (02:08 +0000)
We were manually outputting the code we would get from selecting ANY_EXTEND. We
can save some code by just letting an ANY_EXTEND go through isel on its own.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357045 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelDAGToDAG.cpp

index 5e2b90ff8819220eeedb25b8e97fd6c9d83795e8..f5483ef8803512c5f1b8ce3c7c7b648120d680c4 100644 (file)
@@ -3025,11 +3025,7 @@ bool X86DAGToDAGISel::matchBitExtract(SDNode *Node) {
     // Great, just emit the the BZHI..
     if (XVT != MVT::i32) {
       // But have to place the bit count into the wide-enough register first.
-      SDValue ImplDef = SDValue(
-          CurDAG->getMachineNode(TargetOpcode::IMPLICIT_DEF, DL, XVT), 0);
-      insertDAGNode(*CurDAG, SDValue(Node, 0), ImplDef);
-      NBits = CurDAG->getTargetInsertSubreg(X86::sub_32bit, DL, XVT, ImplDef,
-                                            NBits);
+      NBits = CurDAG->getNode(ISD::ANY_EXTEND, DL, XVT, NBits);
       insertDAGNode(*CurDAG, SDValue(Node, 0), NBits);
     }
 
@@ -3072,11 +3068,7 @@ bool X86DAGToDAGISel::matchBitExtract(SDNode *Node) {
 
   // But have to place the 'control' into the wide-enough register first.
   if (XVT != MVT::i32) {
-    SDValue ImplDef =
-        SDValue(CurDAG->getMachineNode(TargetOpcode::IMPLICIT_DEF, DL, XVT), 0);
-    insertDAGNode(*CurDAG, SDValue(Node, 0), ImplDef);
-    Control = CurDAG->getTargetInsertSubreg(X86::sub_32bit, DL, XVT, ImplDef,
-                                            Control);
+    Control = CurDAG->getNode(ISD::ANY_EXTEND, DL, XVT, Control);
     insertDAGNode(*CurDAG, SDValue(Node, 0), Control);
   }