From: Joey Gouly Date: Wed, 2 Oct 2013 10:00:18 +0000 (+0000) Subject: [ARM] Add a builtin to allow you to use the 'sevl' instruction. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=594e193073fe36b9ecbce9a105c269e20f82b3c9;p=clang [ARM] Add a builtin to allow you to use the 'sevl' instruction. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191816 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsARM.def b/include/clang/Basic/BuiltinsARM.def index 1d8087921e..5a2b573b16 100644 --- a/include/clang/Basic/BuiltinsARM.def +++ b/include/clang/Basic/BuiltinsARM.def @@ -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" diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index 450b5f0c82..a6911bab34 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -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) { diff --git a/test/CodeGen/builtins-arm.c b/test/CodeGen/builtins-arm.c index e6c7cede1f..f8c7f730a9 100644 --- a/test/CodeGen/builtins-arm.c +++ b/test/CodeGen/builtins-arm.c @@ -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