mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Upgrade the bit count intrinsics to have an i32 result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35578 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f1b18a7bdb
commit
8918cb42db
@ -1466,6 +1466,25 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID,
|
||||
return new CallInst(F, Args[0]);
|
||||
}
|
||||
break;
|
||||
case 'c':
|
||||
if ((Name.length() <= 14 && !memcmp(&Name[5], "ctpop.i", 7)) ||
|
||||
(Name.length() <= 13 && !memcmp(&Name[5], "ctlz.i", 6)) ||
|
||||
(Name.length() <= 13 && !memcmp(&Name[5], "cttz.i", 6))) {
|
||||
// These intrinsics changed their result type.
|
||||
const Type* ArgTy = Args[0]->getType();
|
||||
Function *OldF = CurModule.CurrentModule->getFunction(Name);
|
||||
if (OldF)
|
||||
OldF->setName("upgrd.rm." + Name);
|
||||
|
||||
Function *NewF = cast<Function>(
|
||||
CurModule.CurrentModule->getOrInsertFunction(Name, Type::Int32Ty,
|
||||
ArgTy, (void*)0));
|
||||
|
||||
Instruction *Call = new CallInst(NewF, Args[0], "", CurBB);
|
||||
return CastInst::createIntegerCast(Call, RetTy, false);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'v' : {
|
||||
const Type* PtrTy = PointerType::get(Type::Int8Ty);
|
||||
std::vector<const Type*> Params;
|
||||
|
Loading…
Reference in New Issue
Block a user