]> granicus.if.org Git - clang/commitdiff
[ARM] Add a builtin to allow you to use the 'sevl' instruction.
authorJoey Gouly <joey.gouly@arm.com>
Wed, 2 Oct 2013 10:00:18 +0000 (10:00 +0000)
committerJoey Gouly <joey.gouly@arm.com>
Wed, 2 Oct 2013 10:00:18 +0000 (10:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191816 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsARM.def
lib/CodeGen/CGBuiltin.cpp
test/CodeGen/builtins-arm.c

index 1d8087921e9d4feb67b017f4d12e52e5c72b4128..5a2b573b16342ad295f6ba08ea861a0f8596e1d4 100644 (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"
index 450b5f0c82fc686bc0c5ffaacc9a187079adaf69..a6911bab3483ba19ea9953d37187385f7223313f 100644 (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) {
index e6c7cede1fdccee911b8f004cc6d05b336a4d40b..f8c7f730a9a3191993f6e7cf5ec6af01f3503356 100644 (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