diff --git a/lib/Target/Alpha/AlphaAsmPrinter.cpp b/lib/Target/Alpha/AlphaAsmPrinter.cpp index abfc16cd38b..4bf7b56e7c9 100644 --- a/lib/Target/Alpha/AlphaAsmPrinter.cpp +++ b/lib/Target/Alpha/AlphaAsmPrinter.cpp @@ -31,6 +31,7 @@ using namespace llvm; namespace llvm { extern cl::opt EnableAlphaFTOI; + extern cl::opt EnableAlphaCT; } namespace { @@ -234,7 +235,7 @@ void AlphaAsmPrinter::printConstantPool(MachineConstantPool *MCP) { bool AlphaAsmPrinter::doInitialization(Module &M) { AsmPrinter::doInitialization(M); - if(EnableAlphaFTOI) + if(EnableAlphaFTOI || EnableAlphaCT) O << "\t.arch ev6\n"; else O << "\t.arch ev56\n"; diff --git a/lib/Target/Alpha/AlphaISelPattern.cpp b/lib/Target/Alpha/AlphaISelPattern.cpp index 53d8a9e561c..aa4ed3b13c3 100644 --- a/lib/Target/Alpha/AlphaISelPattern.cpp +++ b/lib/Target/Alpha/AlphaISelPattern.cpp @@ -36,9 +36,12 @@ namespace llvm { cl::opt EnableAlphaIDIV("enable-alpha-intfpdiv", cl::desc("Use the FP div instruction for integer div when possible"), cl::Hidden); - cl::opt EnableAlphaFTOI("enable-alpha-ftoi", + cl::opt EnableAlphaFTOI("enable-alpha-FTOI", cl::desc("Enable use of ftoi* and itof* instructions (ev6 and higher)"), cl::Hidden); + cl::opt EnableAlphaCT("enable-alpha-CT", + cl::desc("Enable use of the ctpop, ctlz, and cttz instructions"), + cl::Hidden); cl::opt EnableAlphaCount("enable-alpha-count", cl::desc("Print estimates on live ins and outs"), cl::Hidden); @@ -76,9 +79,11 @@ namespace { 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);