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]);
|
return new CallInst(F, Args[0]);
|
||||||
}
|
}
|
||||||
break;
|
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' : {
|
case 'v' : {
|
||||||
const Type* PtrTy = PointerType::get(Type::Int8Ty);
|
const Type* PtrTy = PointerType::get(Type::Int8Ty);
|
||||||
std::vector<const Type*> Params;
|
std::vector<const Type*> Params;
|
||||||
|
Loading…
Reference in New Issue
Block a user