summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/XCore/events.ll
diff options
context:
space:
mode:
authorRichard Osborne <richard@xmos.com>2011-03-16 18:34:00 +0000
committerRichard Osborne <richard@xmos.com>2011-03-16 18:34:00 +0000
commitd4346f2388921b5b75cd19e64a0b3f797eaf0cd7 (patch)
tree21d2c868fff98f4549f7127dec59937fdb9e05b6 /llvm/test/CodeGen/XCore/events.ll
parentce0bc3146992557491467cf44f14efbaed22247a (diff)
downloadbcm5719-llvm-d4346f2388921b5b75cd19e64a0b3f797eaf0cd7.tar.gz
bcm5719-llvm-d4346f2388921b5b75cd19e64a0b3f797eaf0cd7.zip
Add checkevent intrinsic to check if any resources owned by the current thread
can event. llvm-svn: 127741
Diffstat (limited to 'llvm/test/CodeGen/XCore/events.ll')
-rw-r--r--llvm/test/CodeGen/XCore/events.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/XCore/events.ll b/llvm/test/CodeGen/XCore/events.ll
index 4fc2f26d1b6..30a6ec35513 100644
--- a/llvm/test/CodeGen/XCore/events.ll
+++ b/llvm/test/CodeGen/XCore/events.ll
@@ -2,6 +2,7 @@
declare void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* %p)
declare i8* @llvm.xcore.waitevent()
+declare i8* @llvm.xcore.checkevent(i8*)
declare void @llvm.xcore.clre()
define i32 @f(i8 addrspace(1)* %r) nounwind {
@@ -22,3 +23,22 @@ ret:
%retval = phi i32 [1, %L1], [2, %L2]
ret i32 %retval
}
+
+define i32 @g(i8 addrspace(1)* %r) nounwind {
+; CHECK: g:
+entry:
+; CHECK: clre
+ call void @llvm.xcore.clre()
+ call void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* blockaddress(@f, %L1))
+ %goto_addr = call i8* @llvm.xcore.checkevent(i8 *blockaddress(@f, %L2))
+; CHECK: setsr 1
+; CHECK: clrsr 1
+ indirectbr i8* %goto_addr, [label %L1, label %L2]
+L1:
+ br label %ret
+L2:
+ br label %ret
+ret:
+ %retval = phi i32 [1, %L1], [2, %L2]
+ ret i32 %retval
+}
OpenPOWER on IntegriCloud