Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / PowerPC / machine-cse-rm-pre.mir
blob32f5e0172047e497d8a9ba3b4aa83ceeabeff365
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc %s -o - -mtriple=powerpc-unknown-unknown -run-pass=machine-cse -verify-machineinstrs | FileCheck %s
3 --- |
4   define void @can_pre() {
5   entry:
6     br label %for.body
8   for.body:
9     br i1 undef, label %if.then, label %if.else
11   if.then:
12     br label %if.end
14   if.else:
15     br label %if.end
17   if.end:
18     br label %for.body
19   }
21   define void @cannot_pre() {
22   entry:
23     br label %for.body
25   for.body:
26     br i1 undef, label %if.then, label %if.else
28   if.then:
29     br label %if.end
31   if.else:
32     br label %if.end
34   if.end:
35     br label %for.body
36   }
37 ...
38 ---
39 name: can_pre
40 registers:
41   - { id: 0, class: f8rc, preferred-register: '' }
42   - { id: 1, class: f8rc, preferred-register: '' }
43   - { id: 2, class: gprc, preferred-register: '' }
44   - { id: 3, class: gprc, preferred-register: '' }
45   - { id: 4, class: f8rc, preferred-register: '' }
46   - { id: 5, class: f8rc, preferred-register: '' }
47 liveins:
48   - { reg: '$r1', virtual-reg: '%2' }
49   - { reg: '$r2', virtual-reg: '%3' }
50   - { reg: '$f1', virtual-reg: '%4' }
51   - { reg: '$f2', virtual-reg: '%5' }
52 body:             |
53   ; CHECK-LABEL: name: can_pre
54   ; CHECK: bb.0.for.body:
55   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
56   ; CHECK-NEXT:   liveins: $r1, $r2, $f1, $f2
57   ; CHECK-NEXT: {{  $}}
58   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:f8rc = COPY $f2
59   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:f8rc = COPY $f1
60   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gprc = COPY $r2
61   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gprc = COPY $r1
62   ; CHECK-NEXT:   $cr0 = CMPLWI [[COPY3]], 0
63   ; CHECK-NEXT:   %6:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
64   ; CHECK-NEXT:   BCC 44, $cr0, %bb.1
65   ; CHECK-NEXT:   B %bb.2
66   ; CHECK-NEXT: {{  $}}
67   ; CHECK-NEXT: bb.1.if.then:
68   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
69   ; CHECK-NEXT: {{  $}}
70   ; CHECK-NEXT:   B %bb.3
71   ; CHECK-NEXT: {{  $}}
72   ; CHECK-NEXT: bb.2.if.else:
73   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
74   ; CHECK-NEXT: {{  $}}
75   ; CHECK-NEXT: bb.3.if.end:
76   ; CHECK-NEXT:   BLR implicit $lr, implicit $rm
77   bb.0.for.body:
78     successors: %bb.1(0x40000000), %bb.2(0x40000000)
79     liveins: $r1, $r2, $f1, $f2
81     %5:f8rc = COPY $f2
82     %4:f8rc = COPY $f1
83     %3:gprc = COPY $r2
84     %2:gprc = COPY $r1
85     $cr0 = CMPLWI %2, 0
86     BCC 44, $cr0, %bb.1
87     B %bb.2
89   bb.1.if.then:
90     successors: %bb.3(0x80000000)
92     %0:f8rc = nofpexcept FDIV %4, %5, implicit $rm
93     B %bb.3
95   bb.2.if.else:
96     successors: %bb.3(0x80000000)
98     %1:f8rc = nofpexcept FDIV %4, %5, implicit $rm
100   bb.3.if.end:
101     BLR implicit $lr, implicit $rm
104 name: cannot_pre
105 registers:
106   - { id: 0, class: f8rc, preferred-register: '' }
107   - { id: 1, class: f8rc, preferred-register: '' }
108   - { id: 2, class: gprc, preferred-register: '' }
109   - { id: 3, class: gprc, preferred-register: '' }
110   - { id: 4, class: f8rc, preferred-register: '' }
111   - { id: 5, class: f8rc, preferred-register: '' }
112   - { id: 6, class: f8rc, preferred-register: '' }
113 liveins:
114   - { reg: '$r1', virtual-reg: '%2' }
115   - { reg: '$r2', virtual-reg: '%3' }
116   - { reg: '$f1', virtual-reg: '%4' }
117   - { reg: '$f2', virtual-reg: '%5' }
118 body:             |
119   ; CHECK-LABEL: name: cannot_pre
120   ; CHECK: bb.0.for.body:
121   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
122   ; CHECK-NEXT:   liveins: $r1, $r2, $f1, $f2
123   ; CHECK-NEXT: {{  $}}
124   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:f8rc = COPY $f2
125   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:f8rc = COPY $f1
126   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gprc = COPY $r2
127   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gprc = COPY $r1
128   ; CHECK-NEXT:   $cr0 = CMPLWI [[COPY3]], 0
129   ; CHECK-NEXT:   BCC 44, $cr0, %bb.1
130   ; CHECK-NEXT:   B %bb.2
131   ; CHECK-NEXT: {{  $}}
132   ; CHECK-NEXT: bb.1.if.then:
133   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
134   ; CHECK-NEXT: {{  $}}
135   ; CHECK-NEXT:   [[SETRND:%[0-9]+]]:f8rc = SETRND [[COPY2]], implicit-def $rm, implicit $rm
136   ; CHECK-NEXT:   %0:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
137   ; CHECK-NEXT:   B %bb.3
138   ; CHECK-NEXT: {{  $}}
139   ; CHECK-NEXT: bb.2.if.else:
140   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
141   ; CHECK-NEXT: {{  $}}
142   ; CHECK-NEXT:   %1:f8rc = nofpexcept FDIV [[COPY1]], [[COPY]], implicit $rm
143   ; CHECK-NEXT: {{  $}}
144   ; CHECK-NEXT: bb.3.if.end:
145   ; CHECK-NEXT:   BLR implicit $lr, implicit $rm
146   bb.0.for.body:
147     successors: %bb.1(0x40000000), %bb.2(0x40000000)
148     liveins: $r1, $r2, $f1, $f2
150     %5:f8rc = COPY $f2
151     %4:f8rc = COPY $f1
152     %3:gprc = COPY $r2
153     %2:gprc = COPY $r1
154     $cr0 = CMPLWI %2, 0
155     BCC 44, $cr0, %bb.1
156     B %bb.2
158   bb.1.if.then:
159     successors: %bb.3(0x80000000)
161     %6:f8rc = SETRND %3, implicit-def $rm, implicit $rm
162     %0:f8rc = nofpexcept FDIV %4, %5, implicit $rm
163     B %bb.3
165   bb.2.if.else:
166     successors: %bb.3(0x80000000)
168     %1:f8rc = nofpexcept FDIV %4, %5, implicit $rm
170   bb.3.if.end:
171     BLR implicit $lr, implicit $rm