diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-04-25 17:24:24 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-04-25 17:24:24 +0000 |
commit | 04f826c0625a9701dd941fa0fb5db110f5971421 (patch) | |
tree | 7f6d74740698735b3405af5ad6d413953f041176 /test/CodeGen | |
parent | 5d71d87bff0c22dd117e378d1e6289f72d675baf (diff) | |
download | llvm-04f826c0625a9701dd941fa0fb5db110f5971421.tar.gz llvm-04f826c0625a9701dd941fa0fb5db110f5971421.tar.bz2 llvm-04f826c0625a9701dd941fa0fb5db110f5971421.tar.xz |
ARM: provide a new generic hint intrinsic
Introduce the llvm.arm.hint(i32) intrinsic that can be used to inject hints into
the instruction stream. This is particularly useful for generating IR from a
compiler where the user may inject an intrinsic (e.g. __yield). These are then
pattern substituted into the correct instruction which already existed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207242 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/ARM/hints.ll | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/hints.ll b/test/CodeGen/ARM/hints.ll new file mode 100644 index 0000000000..18abbbecaa --- /dev/null +++ b/test/CodeGen/ARM/hints.ll @@ -0,0 +1,69 @@ +; RUN: llc -mtriple armv7-eabi -o - %s | FileCheck %s +; RUN: llc -mtriple thumbv6m-eabi -o - %s | FileCheck %s +; RUN: llc -mtriple thumbv7-eabi -o - %s | FileCheck %s + +declare void @llvm.arm.hint(i32) nounwind + +define void @hint_nop() { +entry: + tail call void @llvm.arm.hint(i32 0) nounwind + ret void +} + +; CHECK-LABEL: hint_nop +; CHECK: nop + +define void @hint_yield() { +entry: + tail call void @llvm.arm.hint(i32 1) nounwind + ret void +} + +; CHECK-LABEL: hint_yield +; CHECK: yield + +define void @hint_wfe() { +entry: + tail call void @llvm.arm.hint(i32 2) nounwind + ret void +} + +; CHECK-LABEL: hint_wfe +; CHECK: wfe + +define void @hint_wfi() { +entry: + tail call void @llvm.arm.hint(i32 3) nounwind + ret void +} + +; CHECK-LABEL: hint_wfi +; CHECK: wfi + +define void @hint_sev() { +entry: + tail call void @llvm.arm.hint(i32 4) nounwind + ret void +} + +; CHECK-LABEL: hint_sev +; CHECK: sev + +define void @hint_sevl() { +entry: + tail call void @llvm.arm.hint(i32 5) nounwind + ret void +} + +; CHECK-LABEL: hint_sevl +; CHECK: hint #5 + +define void @hint_undefined() { +entry: + tail call void @llvm.arm.hint(i32 8) nounwind + ret void +} + +; CHECK-LABEL: hint_undefined +; CHECK: hint #8 + |