summaryrefslogtreecommitdiffstats
path: root/llvm/test/Assembler
diff options
context:
space:
mode:
authorAnna Thomas <anna@azul.com>2016-07-21 18:41:44 +0000
committerAnna Thomas <anna@azul.com>2016-07-21 18:41:44 +0000
commit29b24dfe44f29d6adbcc84e725aa7836fc0d4831 (patch)
treea0e578e891c5b585c0c2fd6390bed97718e27a65 /llvm/test/Assembler
parent3c944ec81ac4716cba307379929832aad333ba3f (diff)
downloadbcm5719-llvm-29b24dfe44f29d6adbcc84e725aa7836fc0d4831.tar.gz
bcm5719-llvm-29b24dfe44f29d6adbcc84e725aa7836fc0d4831.zip
Invariant start/end intrinsics overloaded for address space
Summary: The llvm.invariant.start and llvm.invariant.end intrinsics currently support specifying invariant memory objects only in the default address space. With this change, these intrinsics are overloaded for any adddress space for memory objects and we can use these llvm invariant intrinsics in non-default address spaces. Example: llvm.invariant.start.p1i8(i64 4, i8 addrspace(1)* %ptr) This overloaded intrinsic is needed for representing final or invariant memory in managed languages. Reviewers: tstellarAMD, reames, apilipenko Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D22519 llvm-svn: 276316
Diffstat (limited to 'llvm/test/Assembler')
-rw-r--r--llvm/test/Assembler/auto_upgrade_intrinsics.ll15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/test/Assembler/auto_upgrade_intrinsics.ll b/llvm/test/Assembler/auto_upgrade_intrinsics.ll
index af211721107..2f0f4f779e7 100644
--- a/llvm/test/Assembler/auto_upgrade_intrinsics.ll
+++ b/llvm/test/Assembler/auto_upgrade_intrinsics.ll
@@ -76,6 +76,21 @@ define void @tests.masked.store(<2 x double>* %ptr, <2 x i1> %mask, <2 x double>
ret void
}
+
+declare {}* @llvm.invariant.start(i64, i8* nocapture) nounwind readonly
+declare void @llvm.invariant.end({}*, i64, i8* nocapture) nounwind
+
+define void @tests.invariant.start.end() {
+ ; CHECK-LABEL: @tests.invariant.start.end(
+ %a = alloca i8
+ %i = call {}* @llvm.invariant.start(i64 1, i8* %a)
+ ; CHECK: call {}* @llvm.invariant.start.p0i8
+ store i8 0, i8* %a
+ call void @llvm.invariant.end({}* %i, i64 1, i8* %a)
+ ; CHECK: call void @llvm.invariant.end.p0i8
+ ret void
+}
+
@__stack_chk_guard = external global i8*
declare void @llvm.stackprotectorcheck(i8**)
OpenPOWER on IntegriCloud