Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / Transforms / Inline / guard-intrinsic.ll
blob4e2bdfb196a404407f1d30afee1e2660ae661332
1 ; RUN: opt -S -passes=always-inline < %s | FileCheck %s
3 declare void @llvm.experimental.guard(i1, ...)
5 define i8 @callee(ptr %c_ptr) alwaysinline {
6   %c = load volatile i1, ptr %c_ptr
7   call void(i1, ...) @llvm.experimental.guard(i1 %c, i32 1) [ "deopt"(i32 1) ]
8   ret i8 5
11 define void @caller_0(ptr %c, ptr %ptr) {
12 ; CHECK-LABEL: @caller_0(
13 entry:
14 ; CHECK:  [[COND:%[^ ]+]] = load volatile i1, ptr %c
15 ; CHECK-NEXT:  call void (i1, ...) @llvm.experimental.guard(i1 [[COND]], i32 1) [ "deopt"(i32 2, i32 1) ]
16 ; CHECK-NEXT:  store i8 5, ptr %ptr
18   %v = call i8 @callee(ptr %c)  [ "deopt"(i32 2) ]
19   store i8 %v, ptr %ptr
20   ret void
23 define i32 @caller_1(ptr %c, ptr %ptr) personality i8 3 {
24 ; CHECK-LABEL: @caller_1(
25 ; CHECK:  [[COND:%[^ ]+]] = load volatile i1, ptr %c
26 ; CHECK-NEXT:  call void (i1, ...) @llvm.experimental.guard(i1 [[COND]], i32 1) [ "deopt"(i32 3, i32 1) ]
27 ; CHECK-NEXT:  br label %normal
28 entry:
29   %v = invoke i8 @callee(ptr %c)  [ "deopt"(i32 3) ] to label %normal
30        unwind label %unwind
32 unwind:
33   %lp = landingpad i32 cleanup
34   ret i32 43
36 normal:
37   store i8 %v, ptr %ptr
38   ret i32 42