Add some notes for expanding clz/ctz
authorChris Lattner <sabre@nondot.org>
Wed, 11 May 2005 05:27:09 +0000 (05:27 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 11 May 2005 05:27:09 +0000 (05:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21862 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 27e621f6d8a25555ee759a9529a3ab3be51dab3d..0f6f3d5915162abf2a4cacc9bd3ce216f2097ca4 100644 (file)
@@ -1132,10 +1132,27 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
         Result = Tmp1;
         break;
       }
-//       case ISD::CTTZ:
-//         break;
-//       case ISD::CTLZ:
-//         break;
+      case ISD::CTTZ:
+        /* This should be used for targets that support ctpop:
+int nlz5(unsigned x) {
+   int pop(unsigned x);
+
+   x = x | (x >> 1);
+   x = x | (x >> 2);
+   x = x | (x >> 4);
+   x = x | (x >> 8);
+   x = x | (x >>16);
+   return ctpop(~x);
+}
+          See also: http://www.hackersdelight.org/HDcode/nlz.cc
+*/
+
+        assert(0 && "Cannot expand this yet!");
+        break;
+      case ISD::CTLZ:
+        // See Also: http://www.hackersdelight.org/HDcode/ntz.cc
+        assert(0 && "Cannot expand this yet!");
+        break;
       default:
         assert(0 && "Cannot expand this yet!");
         break;