blob: 9664467f914b42046dd5cc79fdd3393240aae5b9 [file] [log] [blame]
Artur Pilipenkoe812ca02017-01-25 14:12:12 +00001; RUN: opt < %s -instcombine -S | FileCheck %s
2
3declare void @llvm.experimental.guard(i1, ...)
4
Sanjoy Dase0e57952017-02-01 16:34:55 +00005define void @test_guard_adjacent_same_cond(i1 %A) {
6; CHECK-LABEL: @test_guard_adjacent_same_cond(
Artur Pilipenkoe812ca02017-01-25 14:12:12 +00007; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 %A) [ "deopt"() ]
8; CHECK-NEXT: ret void
9 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
10 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
11 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
12 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
13 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
14 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
15 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
16 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
17 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
18 call void(i1, ...) @llvm.experimental.guard( i1 %A )[ "deopt"() ]
19 ret void
20}
21
Sanjoy Dase0e57952017-02-01 16:34:55 +000022define void @test_guard_adjacent_diff_cond(i1 %A, i1 %B, i1 %C) {
23; CHECK-LABEL: @test_guard_adjacent_diff_cond(
24; CHECK-NEXT: %1 = and i1 %A, %B
25; CHECK-NEXT: %2 = and i1 %1, %C
26; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 %2, i32 123) [ "deopt"() ]
Artur Pilipenkoe812ca02017-01-25 14:12:12 +000027; CHECK-NEXT: ret void
Sanjoy Dase0e57952017-02-01 16:34:55 +000028 call void(i1, ...) @llvm.experimental.guard( i1 %A, i32 123 )[ "deopt"() ]
29 call void(i1, ...) @llvm.experimental.guard( i1 %B, i32 456 )[ "deopt"() ]
30 call void(i1, ...) @llvm.experimental.guard( i1 %C, i32 789 )[ "deopt"() ]
Artur Pilipenkoe812ca02017-01-25 14:12:12 +000031 ret void
32}