[ARM] Add a builtin to allow you to use the 'sevl' instruction.

llvm-svn: 191816
This commit is contained in:
Joey Gouly 2013-10-02 10:00:18 +00:00
parent 9fe6a3b9b1
commit 75987a65f3
3 changed files with 14 additions and 0 deletions

View File

@ -58,6 +58,9 @@ BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc")
BUILTIN(__builtin_arm_crc32d, "UiUiLLUi", "nc")
BUILTIN(__builtin_arm_crc32cd, "UiUiLLUi", "nc")
// HINT
BUILTIN(__builtin_arm_sevl, "v", "")
// NEON
#define GET_NEON_BUILTINS
#include "clang/Basic/arm_neon.inc"

View File

@ -2372,6 +2372,11 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
return Builder.CreateCall(F);
}
if (BuiltinID == ARM::BI__builtin_arm_sevl) {
Function *F = CGM.getIntrinsic(Intrinsic::arm_sevl);
return Builder.CreateCall(F);
}
// CRC32
Intrinsic::ID CRCIntrinsicID = Intrinsic::not_intrinsic;
switch (BuiltinID) {

View File

@ -18,3 +18,9 @@ void test_eh_return_data_regno()
res = __builtin_eh_return_data_regno(0); // CHECK: store volatile i32 0
res = __builtin_eh_return_data_regno(1); // CHECK: store volatile i32 1
}
void sevl() {
__builtin_arm_sevl();
}
// CHECK: call {{.*}} @llvm.arm.sevl