Well, add support for ct* for 21264 only.
21164 is broken until expand works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21692 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Alpha/AlphaISelPattern.cpp b/lib/Target/Alpha/AlphaISelPattern.cpp
index 53d8a9e..aa4ed3b 100644
--- a/lib/Target/Alpha/AlphaISelPattern.cpp
+++ b/lib/Target/Alpha/AlphaISelPattern.cpp
@@ -36,9 +36,12 @@
   cl::opt<bool> EnableAlphaIDIV("enable-alpha-intfpdiv",
                              cl::desc("Use the FP div instruction for integer div when possible"),
                              cl::Hidden);
-  cl::opt<bool> EnableAlphaFTOI("enable-alpha-ftoi",
+  cl::opt<bool> EnableAlphaFTOI("enable-alpha-FTOI",
                              cl::desc("Enable use of ftoi* and itof* instructions (ev6 and higher)"),
                              cl::Hidden);
+  cl::opt<bool> EnableAlphaCT("enable-alpha-CT",
+                              cl::desc("Enable use of the ctpop, ctlz, and cttz instructions"),
+                              cl::Hidden);
   cl::opt<bool> EnableAlphaCount("enable-alpha-count",
                              cl::desc("Print estimates on live ins and outs"),
                              cl::Hidden);
@@ -76,9 +79,11 @@
       setOperationAction(ISD::SREM     , MVT::f32  , Expand);
       setOperationAction(ISD::SREM     , MVT::f64  , Expand);
 
-      //      setOperationAction(ISD::CTPOP    , MVT::i64  , Expand);
-      //      setOperationAction(ISD::CTTZ     , MVT::i64  , Expand);
-      //      setOperationAction(ISD::CTTZ     , MVT::i64  , Expand);
+      if (!EnableAlphaCT) {
+        setOperationAction(ISD::CTPOP    , MVT::i64  , Expand);
+        setOperationAction(ISD::CTTZ     , MVT::i64  , Expand);
+        setOperationAction(ISD::CTTZ     , MVT::i64  , Expand);
+      }
 
       //If this didn't legalize into a div....
       //      setOperationAction(ISD::SREM     , MVT::i64, Expand);