[RISCV] Add shrinkwrap test cases showing gaps in current impl
[llvm-project.git] / llvm / test / CodeGen / X86 / phielim-undef.mir
blob1200449b49c785e5bcac6399b8416cb90118ffbd
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-- -verify-machineinstrs -o - %s -run-pass=livevars,phi-node-elimination,twoaddressinstruction | FileCheck %s
3 # RUN: llc -mtriple=x86_64-- -verify-machineinstrs -o - %s --passes='require<live-vars>,phi-node-elimination,two-address-instruction' -verify-each | FileCheck %s
5 --- |
6   @b114 = external global i16, align 1
8   define void @f245() {
9   entry:
10     unreachable
11   }
12 ...
13 ---
14 name: f245
15 tracksRegLiveness: true
16 body: |
17   ; CHECK-LABEL: name: f245
18   ; CHECK: bb.0:
19   ; CHECK-NEXT:   successors: %bb.5(0x40000000), %bb.1(0x40000000)
20   ; CHECK-NEXT: {{  $}}
21   ; CHECK-NEXT:   [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @b114, $noreg
22   ; CHECK-NEXT:   [[MOV16rm:%[0-9]+]]:gr16 = MOV16rm killed [[MOV64rm]], 1, $noreg, 0, $noreg :: (load (s16) from @b114, align 1)
23   ; CHECK-NEXT:   TEST8ri undef %2:gr8, 1, implicit-def $eflags
24   ; CHECK-NEXT:   JCC_1 %bb.5, 5, implicit killed $eflags
25   ; CHECK-NEXT: {{  $}}
26   ; CHECK-NEXT: bb.1:
27   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
28   ; CHECK-NEXT: {{  $}}
29   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gr16 = COPY killed [[MOV16rm]]
30   ; CHECK-NEXT:   JMP_1 %bb.2
31   ; CHECK-NEXT: {{  $}}
32   ; CHECK-NEXT: bb.2:
33   ; CHECK-NEXT:   successors: %bb.4(0x40000000), %bb.3(0x40000000)
34   ; CHECK-NEXT: {{  $}}
35   ; CHECK-NEXT:   dead %5:gr16 = IMPLICIT_DEF
36   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gr16 = COPY killed [[COPY]]
37   ; CHECK-NEXT:   TEST8ri undef %7:gr8, 1, implicit-def $eflags
38   ; CHECK-NEXT:   JCC_1 %bb.4, 5, implicit killed $eflags
39   ; CHECK-NEXT:   JMP_1 %bb.3
40   ; CHECK-NEXT: {{  $}}
41   ; CHECK-NEXT: bb.3:
42   ; CHECK-NEXT:   successors: %bb.6(0x40000000), %bb.4(0x40000000)
43   ; CHECK-NEXT: {{  $}}
44   ; CHECK-NEXT:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
45   ; CHECK-NEXT:   dead %9:gr16 = COPY killed [[MOV32r0_]].sub_16bit
46   ; CHECK-NEXT:   CMP16ri8 killed [[COPY1]], 0, implicit-def $eflags
47   ; CHECK-NEXT:   JCC_1 %bb.6, 5, implicit killed $eflags
48   ; CHECK-NEXT: {{  $}}
49   ; CHECK-NEXT: bb.4:
50   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
51   ; CHECK-NEXT: {{  $}}
52   ; CHECK-NEXT:   [[DEF:%[0-9]+]]:gr16 = IMPLICIT_DEF
53   ; CHECK-NEXT:   JMP_1 %bb.2
54   ; CHECK-NEXT: {{  $}}
55   ; CHECK-NEXT: bb.5:
56   ; CHECK-NEXT:   RET64
57   ; CHECK-NEXT: {{  $}}
58   ; CHECK-NEXT: bb.6:
59   bb.0:
60     successors: %bb.6(0x40000000), %bb.1(0x40000000)
62     %5:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @b114, $noreg
63     %6:gr16 = MOV16rm killed %5, 1, $noreg, 0, $noreg :: (load (s16) from @b114, align 1)
64     TEST8ri undef %4:gr8, 1, implicit-def $eflags
65     JCC_1 %bb.6, 5, implicit killed $eflags
67   bb.1:
68     successors: %bb.2(0x80000000)
70     JMP_1 %bb.2
72   bb.2:
73     successors: %bb.5(0x40000000), %bb.4(0x40000000)
75     %1:gr16 = PHI %6, %bb.1, undef %10:gr16, %bb.5
76     dead %2:gr16 = PHI undef %6, %bb.1, undef %3:gr16, %bb.5
77     TEST8ri undef %7:gr8, 1, implicit-def $eflags
78     JCC_1 %bb.5, 5, implicit killed $eflags
79     JMP_1 %bb.4
81   bb.4:
82     successors: %bb.7(0x40000000), %bb.5(0x40000000)
84     %8:gr32 = MOV32r0 implicit-def dead $eflags
85     %9:gr16 = COPY killed %8.sub_16bit
86     CMP16ri8 killed %1, 0, implicit-def $eflags
87     JCC_1 %bb.7, 5, implicit killed $eflags
89   bb.5:
90     successors: %bb.2(0x80000000)
92     JMP_1 %bb.2
94   bb.6:
95     RET64
97   bb.7:
98 ...