[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / MIR / X86 / successor-basic-blocks.mir
blob0f541aa03b2fa598095ffce9edf342fd356ded16
1 # RUN: llc -march=x86-64 -run-pass none -o - %s | FileCheck %s
2 # This test ensures that the MIR parser parses basic block successors correctly.
4 --- |
6   define i32 @foo(i32 %a) {
7   entry:
8     %0 = icmp sle i32 %a, 10
9     br i1 %0, label %less, label %exit
11   less:
12     ret i32 0
14   exit:
15     ret i32 %a
16   }
18   define i32 @bar(i32 %a) {
19   entry:
20     %b = icmp sle i32 %a, 10
21     br i1 %b, label %0, label %1
23   ; <label>:0
24     ret i32 0
26   ; <label>:1
27     ret i32 %a
28   }
30 ...
31 ---
32 name:            foo
33 body: |
34   ; CHECK-LABEL: bb.0.entry:
35   ; CHECK-LABEL: bb.1.less:
36   bb.0.entry:
37     successors: %bb.1.less, %bb.2.exit
38     liveins: $edi
40     CMP32ri8 $edi, 10, implicit-def $eflags
41     JCC_1 %bb.2.exit, 15, implicit killed $eflags
43   bb.1.less:
44     $eax = MOV32r0 implicit-def dead $eflags
45     RETQ killed $eax
47   bb.2.exit:
48     liveins: $edi
50     $eax = COPY killed $edi
51     RETQ killed $eax
52 ...
53 ---
54 name:            bar
55 body: |
56   ; CHECK-LABEL: name: bar
57   ; Verify that we can have multiple lists of successors that will be merged
58   ; into one.
59   ; CHECK-LABEL: bb.0.entry:
60   ; CHECK:         successors: %bb.1(0x80000000), %bb.2(0x00000000)
61   bb.0.entry:
62     liveins: $edi
63     successors: %bb.1
64     successors: %bb.2
66     CMP32ri8 $edi, 10, implicit-def $eflags
67     JCC_1 %bb.2, 15, implicit killed $eflags
69   ; Verify that we can have an empty list of successors.
70   ; CHECK-LABEL: bb.1:
71   ; CHECK-NEXT:  $eax = MOV32r0 implicit-def dead $eflags
72   bb.1:
73     successors:
74     $eax = MOV32r0 implicit-def dead $eflags
75     RETQ killed $eax
77   bb.2:
78     liveins: $edi
80     $eax = COPY killed $edi
81     RETQ killed $eax
82 ...