When failing selection for an intrinsic, print this:
authorChris Lattner <sabre@nondot.org>
Sat, 25 Mar 2006 06:47:53 +0000 (06:47 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 25 Mar 2006 06:47:53 +0000 (06:47 +0000)
Cannot yet select: intrinsic %llvm.ppc.altivec.lvx

instead of this:

Cannot yet select: 0x9b047e0: v4i32,ch = INTRINSIC 0x9b04540:1, 0x9b04710, 0x9b04790, 0x9b04540

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

utils/TableGen/DAGISelEmitter.cpp

index aba54284f95b0fcea2fa1a7fe2b29e925cdb40a7..81a45e1d85e0bd1861ef34e52e3d55f6e8dcda46 100644 (file)
@@ -3114,7 +3114,14 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) {
     // the case where nothing handles a pattern.
     if (mightNotMatch)
       OS << "  std::cerr << \"Cannot yet select: \";\n"
-         << "  N.Val->dump(CurDAG);\n"
+         << "  if (N.getOpcode() != ISD::INTRINSIC) {\n"
+         << "    N.Val->dump(CurDAG);\n"
+         << "  } else {\n"
+         << "    unsigned iid = cast<ConstantSDNode>(N.getOperand("
+                 "N.getOperand(0).getValueType() == MVT::Other))->getValue();\n"
+         << "    std::cerr << \"intrinsic %\"<< "
+                       "Intrinsic::getName((Intrinsic::ID)iid);\n"
+         << "  }\n"
          << "  std::cerr << '\\n';\n"
          << "  abort();\n";
 
@@ -3275,7 +3282,14 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) {
 
   OS << "  } // end of big switch.\n\n"
      << "  std::cerr << \"Cannot yet select: \";\n"
-     << "  N.Val->dump(CurDAG);\n"
+     << "  if (N.getOpcode() != ISD::INTRINSIC) {\n"
+     << "    N.Val->dump(CurDAG);\n"
+     << "  } else {\n"
+     << "    unsigned iid = cast<ConstantSDNode>(N.getOperand("
+               "N.getOperand(0).getValueType() == MVT::Other))->getValue();\n"
+     << "    std::cerr << \"intrinsic %\"<< "
+                        "Intrinsic::getName((Intrinsic::ID)iid);\n"
+     << "  }\n"
      << "  std::cerr << '\\n';\n"
      << "  abort();\n"
      << "}\n";