Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: tests_lit/llvm2ice_tests/fp.cmp.ll

Issue 1436623002: Improve bool folding (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Enabled fcmp folding and test Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; This tries to be a comprehensive test of f32 and f64 compare operations. 1 ; This tries to be a comprehensive test of f32 and f64 compare operations.
2 ; The CHECK lines are only checking for basic instruction patterns 2 ; The CHECK lines are only checking for basic instruction patterns
3 ; that should be present regardless of the optimization level, so 3 ; that should be present regardless of the optimization level, so
4 ; there are no special OPTM1 match lines. 4 ; there are no special OPTM1 match lines.
Jim Stichnoth 2015/11/11 14:05:20 This intro is by now almost entirely untrue. :) I
sehr 2015/11/13 06:00:52 I have removed the comment.
5 5
6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ 6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
7 ; RUN: -allow-externally-defined-symbols | FileCheck %s 7 ; RUN: -allow-externally-defined-symbols | FileCheck %s
8 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ 8 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
9 ; RUN: -allow-externally-defined-symbols | FileCheck %s 9 ; RUN: -allow-externally-defined-symbols | FileCheck %s \
10 ; RUN: --check-prefix=CHECK-OM1
10 11
11 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \ 12 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \
12 ; RUN: --target arm32 -i %s --args -O2 \ 13 ; RUN: --target arm32 -i %s --args -O2 \
13 ; RUN: -allow-externally-defined-symbols \ 14 ; RUN: -allow-externally-defined-symbols \
14 ; RUN: | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \ 15 ; RUN: | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \
15 ; RUN: --check-prefix=ARM32 --check-prefix=ARM32-O2 16 ; RUN: --check-prefix=ARM32 --check-prefix=ARM32-O2
16 17
17 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \ 18 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \
18 ; RUN: --target arm32 -i %s --args -Om1 \ 19 ; RUN: --target arm32 -i %s --args -Om1 \
19 ; RUN: -allow-externally-defined-symbols \ 20 ; RUN: -allow-externally-defined-symbols \
(...skipping 15 matching lines...) Expand all
35 36
36 if.then2: ; preds = %if.end 37 if.then2: ; preds = %if.end
37 call void @func() 38 call void @func()
38 br label %if.end3 39 br label %if.end3
39 40
40 if.end3: ; preds = %if.then2, %if.end 41 if.end3: ; preds = %if.then2, %if.end
41 ret void 42 ret void
42 } 43 }
43 ; CHECK-LABEL: fcmpEq 44 ; CHECK-LABEL: fcmpEq
44 ; CHECK: ucomiss 45 ; CHECK: ucomiss
45 ; CHECK: jne 46 ; CHECK-NEXT: jne
47 ; CHECK-NEXT: jp
48 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
49 ; CHECK: ucomisd
50 ; CHECK-NEXT: jne
46 ; CHECK-NEXT: jp 51 ; CHECK-NEXT: jp
47 ; CHECK: call {{.*}} R_{{.*}} func 52 ; CHECK: call {{.*}} R_{{.*}} func
48 ; CHECK: ucomisd 53 ; CHECK-OM1-LABEL: fcmpEq
49 ; CHECK: jne 54 ; CHECK-OM1: ucomiss
50 ; CHECK-NEXT: jp 55 ; CHECK-OM1: jne
51 ; CHECK: call {{.*}} R_{{.*}} func 56 ; CHECK-OM1-NEXT: jp
57 ; CHECK-OM1: call {{.*}} R_{{.*}} func
58 ; CHECK-OM1: ucomisd
59 ; CHECK-OM1: jne
60 ; CHECK-NEXT-OM1: jp
52 ; ARM32-LABEL: fcmpEq 61 ; ARM32-LABEL: fcmpEq
53 ; ARM32: vcmp.f32 62 ; ARM32: vcmp.f32
54 ; ARM32: vmrs 63 ; ARM32: vmrs
55 ; ARM32-OM1: movne [[R0:r[0-9]+]], #0 64 ; ARM32-OM1: movne [[R0:r[0-9]+]], #0
56 ; ARM32-OM1: moveq [[R0]], #1 65 ; ARM32-OM1: moveq [[R0]], #1
57 ; ARM32-O2: bne 66 ; ARM32-O2: bne
58 ; ARM32: bl func 67 ; ARM32: bl func
59 ; ARM32: vcmp.f64 68 ; ARM32: vcmp.f64
60 ; ARM32: vmrs 69 ; ARM32: vmrs
61 ; ARM32-OM1: movne [[R1:r[0-9]+]], #0 70 ; ARM32-OM1: movne [[R1:r[0-9]+]], #0
(...skipping 17 matching lines...) Expand all
79 88
80 if.then2: ; preds = %if.end 89 if.then2: ; preds = %if.end
81 call void @func() 90 call void @func()
82 br label %if.end3 91 br label %if.end3
83 92
84 if.end3: ; preds = %if.then2, %if.end 93 if.end3: ; preds = %if.then2, %if.end
85 ret void 94 ret void
86 } 95 }
87 ; CHECK-LABEL: fcmpNe 96 ; CHECK-LABEL: fcmpNe
88 ; CHECK: ucomiss 97 ; CHECK: ucomiss
89 ; CHECK: jne 98 ; CHECK-NEXT: jne
90 ; CHECK-NEXT: jp 99 ; CHECK-NEXT: jp
91 ; CHECK: call {{.*}} R_{{.*}} func 100 ; CHECK-NEXT: jmp
101 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
92 ; CHECK: ucomisd 102 ; CHECK: ucomisd
93 ; CHECK: jne 103 ; CHECK-NEXT: jne
94 ; CHECK-NEXT: jp 104 ; CHECK-NEXT: jp
95 ; CHECK: call {{.*}} R_{{.*}} func 105 ; CHECK-NEXT: jmp
106 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
107 ; CHECK-OM1-LABEL: fcmpNe
108 ; CHECK-OM1: ucomiss
109 ; CHECK-OM1: jne
110 ; CHECK-OM1: jp
111 ; CHECK-OM1: jmp
112 ; CHECK-OM1: call {{.*}} R_{{.*}} func
113 ; CHECK-OM1: ucomisd
114 ; CHECK-OM1: jne
115 ; CHECK-OM1: jp
116 ; CHECK-OM1: jmp
117 ; CHECK-OM1: call {{.*}} R_{{.*}} func
96 ; ARM32-LABEL: fcmpNe 118 ; ARM32-LABEL: fcmpNe
97 ; ARM32: vcmp.f32 119 ; ARM32: vcmp.f32
98 ; ARM32: vmrs 120 ; ARM32: vmrs
99 ; ARM32-OM1: moveq [[R0:r[0-9]+]], #0 121 ; ARM32-OM1: moveq [[R0:r[0-9]+]], #0
100 ; ARM32-OM1: movne [[R0]], #1 122 ; ARM32-OM1: movne [[R0]], #1
101 ; ARM32-O2: beq 123 ; ARM32-O2: beq
102 ; ARM32: vcmp.f64 124 ; ARM32: vcmp.f64
103 ; ARM32: vmrs 125 ; ARM32: vmrs
104 ; ARM32-OM1: moveq [[R1:r[0-9]+]], #0 126 ; ARM32-OM1: moveq [[R1:r[0-9]+]], #0
105 ; ARM32-OM1: movne [[R1]], #1 127 ; ARM32-OM1: movne [[R1]], #1
(...skipping 14 matching lines...) Expand all
120 142
121 if.then2: ; preds = %if.end 143 if.then2: ; preds = %if.end
122 call void @func() 144 call void @func()
123 br label %if.end3 145 br label %if.end3
124 146
125 if.end3: ; preds = %if.then2, %if.end 147 if.end3: ; preds = %if.then2, %if.end
126 ret void 148 ret void
127 } 149 }
128 ; CHECK-LABEL: fcmpGt 150 ; CHECK-LABEL: fcmpGt
129 ; CHECK: ucomiss 151 ; CHECK: ucomiss
130 ; CHECK: seta 152 ; CHECK-NEXT: jbe
131 ; CHECK: call {{.*}} R_{{.*}} func 153 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
132 ; CHECK: ucomisd 154 ; CHECK: ucomisd
133 ; CHECK: seta 155 ; CHECK-NEXT: jbe
134 ; CHECK: call {{.*}} R_{{.*}} func 156 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
157 ; CHECK-OM1-LABEL: fcmpGt
158 ; CHECK-OM1: ucomiss
159 ; CHECK-OM1: seta
160 ; CHECK-OM1: call {{.*}} R_{{.*}} func
161 ; CHECK-OM1: ucomisd
162 ; CHECK-OM1: seta
163 ; CHECK-OM1: call {{.*}} R_{{.*}} func
135 ; ARM32-LABEL: fcmpGt 164 ; ARM32-LABEL: fcmpGt
136 ; ARM32: vcmp.f32 165 ; ARM32: vcmp.f32
137 ; ARM32: vmrs 166 ; ARM32: vmrs
138 ; ARM32-OM1: movle [[R0:r[0-9]+]], #0 167 ; ARM32-OM1: movle [[R0:r[0-9]+]], #0
139 ; ARM32-OM1: movgt [[R0]], #1 168 ; ARM32-OM1: movgt [[R0]], #1
140 ; ARM32-O2: ble 169 ; ARM32-O2: ble
141 ; ARM32: vcmp.f64 170 ; ARM32: vcmp.f64
142 ; ARM32: vmrs 171 ; ARM32: vmrs
143 ; ARM32-OM1: movle [[R1:r[0-9]+]], #0 172 ; ARM32-OM1: movle [[R1:r[0-9]+]], #0
144 ; ARM32-OM1: movgt [[R1]], #1 173 ; ARM32-OM1: movgt [[R1]], #1
(...skipping 14 matching lines...) Expand all
159 188
160 if.then2: ; preds = %if.end 189 if.then2: ; preds = %if.end
161 call void @func() 190 call void @func()
162 br label %if.end3 191 br label %if.end3
163 192
164 if.end3: ; preds = %if.end, %if.then2 193 if.end3: ; preds = %if.end, %if.then2
165 ret void 194 ret void
166 } 195 }
167 ; CHECK-LABEL: fcmpGe 196 ; CHECK-LABEL: fcmpGe
168 ; CHECK: ucomiss 197 ; CHECK: ucomiss
169 ; CHECK: setb 198 ; CHECK-NEXT: jb
170 ; CHECK: call {{.*}} R_{{.*}} func 199 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
171 ; CHECK: ucomisd 200 ; CHECK: ucomisd
172 ; CHECK: setb 201 ; CHECK-NEXT: jb
173 ; CHECK: call {{.*}} R_{{.*}} func 202 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
203 ; CHECK-OM1-LABEL: fcmpGe
204 ; CHECK-OM1: ucomiss
205 ; CHECK-OM1-NEXT: setb
206 ; CHECK-OM1: call {{.*}} R_{{.*}} func
207 ; CHECK-OM1: ucomisd
208 ; CHECK-OM1-NEXT: setb
209 ; CHECK-OM1: call {{.*}} R_{{.*}} func
174 ; ARM32-LABEL: fcmpGe 210 ; ARM32-LABEL: fcmpGe
175 ; ARM32: vcmp.f32 211 ; ARM32: vcmp.f32
176 ; ARM32: vmrs 212 ; ARM32: vmrs
177 ; ARM32-OM1: movge [[R0:r[0-9]+]], #0 213 ; ARM32-OM1: movge [[R0:r[0-9]+]], #0
178 ; ARM32-OM1: movlt [[R0]], #1 214 ; ARM32-OM1: movlt [[R0]], #1
179 ; ARM32-O2: blt 215 ; ARM32-O2: blt
180 ; ARM32: vcmp.f64 216 ; ARM32: vcmp.f64
181 ; ARM32: vmrs 217 ; ARM32: vmrs
182 ; ARM32-OM1: movge [[R1:r[0-9]+]], #0 218 ; ARM32-OM1: movge [[R1:r[0-9]+]], #0
183 ; ARM32-OM1: movlt [[R1]], #1 219 ; ARM32-OM1: movlt [[R1]], #1
(...skipping 14 matching lines...) Expand all
198 234
199 if.then2: ; preds = %if.end 235 if.then2: ; preds = %if.end
200 call void @func() 236 call void @func()
201 br label %if.end3 237 br label %if.end3
202 238
203 if.end3: ; preds = %if.then2, %if.end 239 if.end3: ; preds = %if.then2, %if.end
204 ret void 240 ret void
205 } 241 }
206 ; CHECK-LABEL: fcmpLt 242 ; CHECK-LABEL: fcmpLt
207 ; CHECK: ucomiss 243 ; CHECK: ucomiss
208 ; CHECK: seta 244 ; CHECK-NEXT: jbe
209 ; CHECK: call {{.*}} R_{{.*}} func 245 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
210 ; CHECK: ucomisd 246 ; CHECK: ucomisd
211 ; CHECK: seta 247 ; CHECK-NEXT: jbe
212 ; CHECK: call {{.*}} R_{{.*}} func 248 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
249 ; CHECK-OM1-LABEL: fcmpLt
250 ; CHECK-OM1: ucomiss
251 ; CHECK-OM1-NEXT: seta
252 ; CHECK-OM1: call {{.*}} R_{{.*}} func
253 ; CHECK-OM1: ucomisd
254 ; CHECK-OM1-NEXT: seta
255 ; CHECK-OM1: call {{.*}} R_{{.*}} func
213 ; ARM32-LABEL: fcmpLt 256 ; ARM32-LABEL: fcmpLt
214 ; ARM32: vcmp.f32 257 ; ARM32: vcmp.f32
215 ; ARM32: vmrs 258 ; ARM32: vmrs
216 ; ARM32-OM1: movpl [[R0:r[0-9]+]], #0 259 ; ARM32-OM1: movpl [[R0:r[0-9]+]], #0
217 ; ARM32-OM1: movmi [[R0]], #1 260 ; ARM32-OM1: movmi [[R0]], #1
218 ; ARM32-O2: bpl 261 ; ARM32-O2: bpl
219 ; ARM32: vcmp.f64 262 ; ARM32: vcmp.f64
220 ; ARM32: vmrs 263 ; ARM32: vmrs
221 ; ARM32-OM1: movpl [[R1:r[0-9]+]], #0 264 ; ARM32-OM1: movpl [[R1:r[0-9]+]], #0
222 ; ARM32-OM1: movmi [[R1]], #1 265 ; ARM32-OM1: movmi [[R1]], #1
(...skipping 14 matching lines...) Expand all
237 280
238 if.then2: ; preds = %if.end 281 if.then2: ; preds = %if.end
239 call void @func() 282 call void @func()
240 br label %if.end3 283 br label %if.end3
241 284
242 if.end3: ; preds = %if.end, %if.then2 285 if.end3: ; preds = %if.end, %if.then2
243 ret void 286 ret void
244 } 287 }
245 ; CHECK-LABEL: fcmpLe 288 ; CHECK-LABEL: fcmpLe
246 ; CHECK: ucomiss 289 ; CHECK: ucomiss
247 ; CHECK: setb 290 ; CHECK-NEXT: jb
248 ; CHECK: call {{.*}} R_{{.*}} func 291 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
249 ; CHECK: ucomisd 292 ; CHECK: ucomisd
250 ; CHECK: setb 293 ; CHECK-NEXT: jb
251 ; CHECK: call {{.*}} R_{{.*}} func 294 ; CHECK-NEXT: call {{.*}} R_{{.*}} func
295 ; CHECK-OM1-LABEL: fcmpLe
296 ; CHECK-OM1: ucomiss
297 ; CHECK-OM1-NEXT: setb
298 ; CHECK-OM1: call {{.*}} R_{{.*}} func
299 ; CHECK-OM1: ucomisd
300 ; CHECK-OM1-NEXT: setb
301 ; CHECK-OM1: call {{.*}} R_{{.*}} func
252 ; ARM32-LABEL: fcmpLe 302 ; ARM32-LABEL: fcmpLe
253 ; ARM32: vcmp.f32 303 ; ARM32: vcmp.f32
254 ; ARM32: vmrs 304 ; ARM32: vmrs
255 ; ARM32-OM1: movls [[R0:r[0-9]+]], #0 305 ; ARM32-OM1: movls [[R0:r[0-9]+]], #0
256 ; ARM32-OM1: movhi [[R0]], #1 306 ; ARM32-OM1: movhi [[R0]], #1
257 ; ARM32-O2: bhi 307 ; ARM32-O2: bhi
258 ; ARM32: vcmp.f64 308 ; ARM32: vcmp.f64
259 ; ARM32: vmrs 309 ; ARM32: vmrs
260 ; ARM32-OM1: movls [[R1:r[0-9]+]], #0 310 ; ARM32-OM1: movls [[R1:r[0-9]+]], #0
261 ; ARM32-OM1: movhi [[R1]], #1 311 ; ARM32-OM1: movhi [[R1]], #1
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 } 807 }
758 ; CHECK-LABEL: selectDoubleVarVar 808 ; CHECK-LABEL: selectDoubleVarVar
759 ; CHECK: ucomisd 809 ; CHECK: ucomisd
760 ; CHECK: seta 810 ; CHECK: seta
761 ; CHECK: fld 811 ; CHECK: fld
762 ; ARM32-LABEL: selectDoubleVarVar 812 ; ARM32-LABEL: selectDoubleVarVar
763 ; ARM32: vcmp.f64 813 ; ARM32: vcmp.f64
764 ; ARM32-OM1: vmovne.f64 d{{[0-9]+}} 814 ; ARM32-OM1: vmovne.f64 d{{[0-9]+}}
765 ; ARM32-O2: vmovmi.f64 d{{[0-9]+}} 815 ; ARM32-O2: vmovmi.f64 d{{[0-9]+}}
766 ; ARM32: bx 816 ; ARM32: bx
OLDNEW
« src/IceTargetLoweringX86BaseImpl.h ('K') | « src/IceTargetLoweringX86BaseImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698