setOperationAction(ISD::FSQRT, MVT::f32, Expand);
//IA64 has these, but they are not implemented
- setOperationAction(ISD::CTPOP, MVT::i64 , Expand);
setOperationAction(ISD::CTTZ , MVT::i64 , Expand);
setOperationAction(ISD::CTLZ , MVT::i64 , Expand);
return Result;
}
+ case ISD::CTPOP: {
+ Tmp1 = SelectExpr(N.getOperand(0));
+ BuildMI(BB, IA64::POPCNT, 1, Result).addReg(Tmp1);
+ return Result;
+ }
+
case ISD::SHL: {
Tmp1 = SelectExpr(N.getOperand(0));
if (ConstantSDNode *CN = dyn_cast<ConstantSDNode>(N.getOperand(1))) {
def LD8 : AForm<0x03, 0x0b, (ops GR:$dst, GR:$srcPtr),
"ld8 $dst = [$srcPtr];;">;
+def POPCNT : AForm<0x03, 0x0b, (ops GR:$dst, GR:$src), "popcnt $dst = $src;;">;
+
// some FP stuff:
def FADD : AForm<0x03, 0x0b, (ops FP:$dst, FP:$src1, FP:$src2),
"fadd $dst = $src1, $src2;;">;