[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / Mips / longbranch / branch-limits-fp-micromips.mir
blob2411f65b1758f2f5cfc19c3d0d127c7f737bfd71
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=mips-mti-linux-gnu -mattr=+micromips %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion | FileCheck %s --check-prefix=MM
3 # RUN: llc -mtriple=mips-mti-linux-gnu -mattr=+micromips %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion -relocation-model=pic | FileCheck %s --check-prefix=PIC
5 # Test the long branch expansion of various branches
7 --- |
9   define i32 @a(double %a, double %b) {
10   entry:
11     %cmp = fcmp une double %a, %b
12     br i1 %cmp, label %if.then, label %return
14   if.then:
15     call void asm sideeffect ".space 310680", "~{$1}"()
16     ret i32 0
18   return:
19     ret i32 1
20   }
22   define i32 @b(double %a, double %b) {
23   entry:
24     %cmp = fcmp ueq double %a, %b
25     br i1 %cmp, label %if.then, label %return
27   if.then:
28     call void asm sideeffect ".space 310680", "~{$1}"()
29     ret i32 0
31   return:
32     ret i32 1
33   }
35 ...
36 ---
37 name:            a
38 alignment:       4
39 exposesReturnsTwice: false
40 legalized:       false
41 regBankSelected: false
42 selected:        false
43 failedISel:      false
44 tracksRegLiveness: true
45 registers:
46 liveins:
47   - { reg: '$d6', virtual-reg: '' }
48   - { reg: '$d7', virtual-reg: '' }
49 frameInfo:
50   isFrameAddressTaken: false
51   isReturnAddressTaken: false
52   hasStackMap:     false
53   hasPatchPoint:   false
54   stackSize:       0
55   offsetAdjustment: 0
56   maxAlignment:    1
57   adjustsStack:    false
58   hasCalls:        false
59   stackProtector:  ''
60   maxCallFrameSize: 0
61   hasOpaqueSPAdjustment: false
62   hasVAStart:      false
63   hasMustTailInVarArgFunc: false
64   localFrameSize:  0
65   savePoint:       ''
66   restorePoint:    ''
67 fixedStack:
68 stack:
69 constants:
70 body:             |
71   ; MM-LABEL: name: a
72   ; MM: bb.0.entry:
73   ; MM:   successors: %bb.2(0x50000000), %bb.1(0x30000000)
74   ; MM:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
75   ; MM:   BC1F_MM $fcc0, %bb.2, implicit-def $at {
76   ; MM:     NOP
77   ; MM:   }
78   ; MM: bb.1.entry:
79   ; MM:   successors: %bb.3(0x80000000)
80   ; MM:   J %bb.3, implicit-def $at {
81   ; MM:     NOP
82   ; MM:   }
83   ; MM: bb.2.if.then:
84   ; MM:   INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
85   ; MM:   $v0 = LI16_MM 0
86   ; MM:   JRC16_MM undef $ra, implicit killed $v0
87   ; MM: bb.3.return:
88   ; MM:   $v0 = LI16_MM 1
89   ; MM:   JRC16_MM undef $ra, implicit killed $v0
90   ; PIC-LABEL: name: a
91   ; PIC: bb.0.entry:
92   ; PIC:   successors: %bb.3(0x50000000), %bb.1(0x30000000)
93   ; PIC:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
94   ; PIC:   BC1F_MM $fcc0, %bb.3, implicit-def $at {
95   ; PIC:     NOP
96   ; PIC:   }
97   ; PIC: bb.1.entry:
98   ; PIC:   successors: %bb.2(0x80000000)
99   ; PIC:   $sp = ADDiu $sp, -8
100   ; PIC:   SW $ra, $sp, 0
101   ; PIC:   $at = LONG_BRANCH_LUi target-flags(mips-abs-hi) %bb.4, %bb.2
102   ; PIC:   BAL_BR_MM %bb.2, implicit-def $ra {
103   ; PIC:     $at = LONG_BRANCH_ADDiu $at, target-flags(mips-abs-lo) %bb.4, %bb.2
104   ; PIC:   }
105   ; PIC: bb.2.entry:
106   ; PIC:   successors: %bb.4(0x80000000)
107   ; PIC:   $at = ADDu $ra, $at
108   ; PIC:   $ra = LW $sp, 0
109   ; PIC:   JR $at {
110   ; PIC:     $sp = ADDiu $sp, 8
111   ; PIC:   }
112   ; PIC: bb.3.if.then:
113   ; PIC:   INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
114   ; PIC:   $v0 = LI16_MM 0
115   ; PIC:   JRC16_MM undef $ra, implicit killed $v0
116   ; PIC: bb.4.return:
117   ; PIC:   $v0 = LI16_MM 1
118   ; PIC:   JRC16_MM undef $ra, implicit killed $v0
119   bb.0.entry:
120     successors: %bb.1(0x50000000), %bb.2(0x30000000)
121     liveins: $d6, $d7
123     FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
124     BC1T_MM killed $fcc0, %bb.2, implicit-def dead $at
126   bb.1.if.then:
127     INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
128     $v0 = LI16_MM 0
129     PseudoReturn undef $ra, implicit killed $v0
131   bb.2.return:
132     $v0 = LI16_MM 1
133     PseudoReturn undef $ra, implicit killed $v0
137 name:            b
138 alignment:       4
139 exposesReturnsTwice: false
140 legalized:       false
141 regBankSelected: false
142 selected:        false
143 failedISel:      false
144 tracksRegLiveness: true
145 registers:
146 liveins:
147   - { reg: '$d6', virtual-reg: '' }
148   - { reg: '$d7', virtual-reg: '' }
149 frameInfo:
150   isFrameAddressTaken: false
151   isReturnAddressTaken: false
152   hasStackMap:     false
153   hasPatchPoint:   false
154   stackSize:       0
155   offsetAdjustment: 0
156   maxAlignment:    1
157   adjustsStack:    false
158   hasCalls:        false
159   stackProtector:  ''
160   maxCallFrameSize: 0
161   hasOpaqueSPAdjustment: false
162   hasVAStart:      false
163   hasMustTailInVarArgFunc: false
164   localFrameSize:  0
165   savePoint:       ''
166   restorePoint:    ''
167 fixedStack:
168 stack:
169 constants:
170 body:             |
171   ; MM-LABEL: name: b
172   ; MM: bb.0.entry:
173   ; MM:   successors: %bb.2(0x30000000), %bb.1(0x50000000)
174   ; MM:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
175   ; MM:   BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {
176   ; MM:     NOP
177   ; MM:   }
178   ; MM: bb.1.return:
179   ; MM:   $v0 = LI16_MM 1
180   ; MM:   JRC16_MM undef $ra, implicit killed $v0
181   ; MM: bb.2.if.then:
182   ; MM:   INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
183   ; MM:   $v0 = LI16_MM 0
184   ; MM:   JRC16_MM undef $ra, implicit killed $v0
185   ; PIC-LABEL: name: b
186   ; PIC: bb.0.entry:
187   ; PIC:   successors: %bb.2(0x30000000), %bb.1(0x50000000)
188   ; PIC:   FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
189   ; PIC:   BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {
190   ; PIC:     NOP
191   ; PIC:   }
192   ; PIC: bb.1.return:
193   ; PIC:   $v0 = LI16_MM 1
194   ; PIC:   JRC16_MM undef $ra, implicit killed $v0
195   ; PIC: bb.2.if.then:
196   ; PIC:   INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
197   ; PIC:   $v0 = LI16_MM 0
198   ; PIC:   JRC16_MM undef $ra, implicit killed $v0
199   bb.0.entry:
200     successors: %bb.1(0x30000000), %bb.2(0x50000000)
201     liveins: $d6, $d7
203     FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
204     BC1F_MM killed $fcc0, %bb.2, implicit-def dead $at
206   bb.2.return:
207     $v0 = LI16_MM 1
208     PseudoReturn undef $ra, implicit killed $v0
210   bb.1.if.then:
211     INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
212     $v0 = LI16_MM 0
213     PseudoReturn undef $ra, implicit killed $v0