Implement __builtin_bswap32 and __builtin_bswap64.
llvm-svn: 44521
This commit is contained in:
parent
4e4186b2de
commit
ef93b9d011
|
@ -100,6 +100,18 @@ RValue CodeGenFunction::EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E) {
|
|||
llvm::Value *Condition = EmitScalarExpr(E->getArg(0));
|
||||
return RValue::get(Condition);
|
||||
}
|
||||
case Builtin::BI__builtin_bswap32:
|
||||
case Builtin::BI__builtin_bswap64: {
|
||||
llvm::Value *ArgValue = EmitScalarExpr(E->getArg(0));
|
||||
const llvm::Type *ArgType = ArgValue->getType();
|
||||
llvm::Value *F =
|
||||
llvm::Intrinsic::getDeclaration(&CGM.getModule(),
|
||||
llvm::Intrinsic::bswap,
|
||||
&ArgType, 1);
|
||||
llvm::Value *V = Builder.CreateCall(F, ArgValue, "tmp");
|
||||
|
||||
return RValue::get(V);
|
||||
}
|
||||
}
|
||||
|
||||
return RValue::get(0);
|
||||
|
|
|
@ -74,6 +74,8 @@ BUILTIN(__builtin_ctzll, "iULLi", "nc")
|
|||
|
||||
|
||||
// Random GCC builtins
|
||||
BUILTIN(__builtin_bswap32, "UiUi", "nc")
|
||||
BUILTIN(__builtin_bswap64, "ULLiULLi", "nc")
|
||||
BUILTIN(__builtin_constant_p, "UsUs", "nc")
|
||||
BUILTIN(__builtin_classify_type, "i.", "nc")
|
||||
BUILTIN(__builtin___CFStringMakeConstantString, "FC*cC*", "nc")
|
||||
|
|
Loading…
Reference in New Issue