[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-phi.mir
blob84fc03637333ed3e7a7cd87e67c22715f6636e1a
1 # RUN: llc -mtriple=aarch64-unknown-unknown -o - -verify-machineinstrs -run-pass=instruction-select -global-isel-abort=1 %s | FileCheck %s
2 --- |
3   ; ModuleID = '/tmp/test.ll'
4   source_filename = "/tmp/test.ll"
5   target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
6   target triple = "aarch64-unknown-unknown"
8   define i32 @test_phi(i32 %argc) {
9   entry:
10     %cmp = icmp ugt i32 %argc, 0
11     br i1 %cmp, label %case1, label %case2
13   case1:                                            ; preds = %entry
14     %tmp1 = add i32 %argc, 1
15     br label %return
17   case2:                                            ; preds = %entry
18     %tmp2 = add i32 %argc, 2
19     br label %return
21   return:                                           ; preds = %case2, %case1
22     %res = phi i32 [ %tmp1, %case1 ], [ %tmp2, %case2 ]
23     ret i32 %res
24   }
26   define i64* @test_phi_ptr(i64* %a, i64* %b, i1 %cond) {
27   entry:
28     ret i64* null
29   }
31 ...
32 ---
33 name:            test_phi
34 alignment:       4
35 exposesReturnsTwice: false
36 legalized:       true
37 regBankSelected: true
38 selected:        false
39 tracksRegLiveness: true
40 registers:
41   - { id: 0, class: gpr, preferred-register: '' }
42   - { id: 1, class: gpr, preferred-register: '' }
43   - { id: 2, class: gpr, preferred-register: '' }
44   - { id: 3, class: gpr, preferred-register: '' }
45   - { id: 4, class: gpr, preferred-register: '' }
46   - { id: 5, class: gpr, preferred-register: '' }
47   - { id: 6, class: gpr, preferred-register: '' }
48   - { id: 7, class: gpr, preferred-register: '' }
49   - { id: 8, class: gpr, preferred-register: '' }
50 liveins:
51 body:             |
52   bb.1.entry:
53     successors: %bb.2.case1(0x40000000), %bb.3.case2(0x40000000)
54     liveins: $w0
55     ; CHECK-LABEL: name: test_phi
56     ; CHECK: [[RES:%.*]]:gpr32 = PHI
58     %0(s32) = COPY $w0
59     %1(s32) = G_CONSTANT i32 0
60     %3(s32) = G_CONSTANT i32 1
61     %5(s32) = G_CONSTANT i32 2
62     %8(s32) = G_ICMP intpred(ugt), %0(s32), %1
63     G_BRCOND %8, %bb.2.case1
64     G_BR %bb.3.case2
66   bb.2.case1:
67     successors: %bb.4.return(0x80000000)
69     %4(s32) = G_ADD %0, %3
70     G_BR %bb.4.return
72   bb.3.case2:
73     successors: %bb.4.return(0x80000000)
75     %6(s32) = G_ADD %0, %5
77   bb.4.return:
78     %7(s32) = G_PHI %4(s32), %bb.2.case1, %6(s32), %bb.3.case2
79     $w0 = COPY %7(s32)
80     RET_ReallyLR implicit $w0
82 ...
84 ---
85 name:            test_phi_ptr
86 alignment:       4
87 exposesReturnsTwice: false
88 legalized:       true
89 regBankSelected: true
90 selected:        false
91 tracksRegLiveness: true
92 registers:
93   - { id: 0, class: gpr, preferred-register: '' }
94   - { id: 1, class: gpr, preferred-register: '' }
95   - { id: 2, class: gpr, preferred-register: '' }
96   - { id: 3, class: gpr, preferred-register: '' }
97   - { id: 4, class: _, preferred-register: '' }
98   - { id: 5, class: _, preferred-register: '' }
99 liveins:
100 body:             |
101   bb.0:
102     successors: %bb.1, %bb.2
103     liveins: $w2, $x0, $x1
104     ; CHECK-LABEL: name: test_phi_ptr
106     %0(p0) = COPY $x0
107     %1(p0) = COPY $x1
108     %2:gpr(s32) = COPY $w2
109     G_BRCOND %2, %bb.1
110     G_BR %bb.2
112   bb.1:
113     successors: %bb.2
116   bb.2:
117     ; CHECK: %{{[0-9]+}}:gpr64 = PHI %{{[0-9]+}}, %bb.0, %{{[0-9]+}}, %bb.1
118     %3(p0) = G_PHI %0(p0), %bb.0, %1(p0), %bb.1
119     $x0 = COPY %3(p0)
120     RET_ReallyLR implicit $x0