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

Side by Side Diff: tests_lit/llvm2ice_tests/64bit.pnacl.ll

Issue 2448193008: Subzero, MIPS32: Enable MIPS support in lit tests (Closed)
Patch Set: Addressed review comments Created 4 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
« no previous file with comments | « no previous file | tests_lit/llvm2ice_tests/8bit.pnacl.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; This tries to be a comprehensive test of i64 operations, in 1 ; This tries to be a comprehensive test of i64 operations, in
2 ; particular the patterns for lowering i64 operations into constituent 2 ; particular the patterns for lowering i64 operations into constituent
3 ; i32 operations on x86-32. 3 ; i32 operations on x86-32.
4 4
5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ 6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
7 ; RUN: | %if --need=target_X8632 --command FileCheck %s 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s
8 8
9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ 10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 ; ARM32: {{mov|ldr}} r1 113 ; ARM32: {{mov|ldr}} r1
114 ; ARM32: mov r2, #123 114 ; ARM32: mov r2, #123
115 ; ARM32: bl {{.*}} ignore64BitArgNoInline 115 ; ARM32: bl {{.*}} ignore64BitArgNoInline
116 ; ARM32: str {{.*}}, [sp] 116 ; ARM32: str {{.*}}, [sp]
117 ; ARM32: {{mov|ldr}} r0 117 ; ARM32: {{mov|ldr}} r0
118 ; ARM32: {{mov|ldr}} r1 118 ; ARM32: {{mov|ldr}} r1
119 ; ARM32: mov r2, #123 119 ; ARM32: mov r2, #123
120 ; ARM32: bl {{.*}} ignore64BitArgNoInline 120 ; ARM32: bl {{.*}} ignore64BitArgNoInline
121 121
122 ; MIPS32-LABEL: pass64BitArg 122 ; MIPS32-LABEL: pass64BitArg
123 ; MIPS32-O2: sw a3,{{.*}}(sp)
124 ; MIPS32-O2: sw a2,{{.*}}(sp)
125 ; MIPS32-O2: li a2,123
126 ; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
127 ; MIPS32-O2: nop
128 ; MIPS32-O2: move s0,v0
129 ; MIPS32-O2: sw s3,{{.*}}(sp)
130 ; MIPS32-O2: sw s2,{{.*}}(sp)
131 ; MIPS32-O2: lw a0,{{.*}}(sp)
132 ; MIPS32-O2: move a1,s1
133 ; MIPS32-O2: li a2,123
134 ; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
135 ; MIPS32-O2: nop
136 ; MIPS32-O2: move s1,v0
137 ; MIPS32-O2: sw s7,{{.*}}(sp)
138 ; MIPS32-O2: sw s6,{{.*}}(sp)
139 ; MIPS32-O2: move a0,s4
140 ; MIPS32-O2: move a1,s5
141 ; MIPS32-O2: li a2,123
142 ; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
143 ; MIPS32-O2: nop
123 144
124 145
125 declare i32 @ignore64BitArgNoInline(i64, i32, i64) 146 declare i32 @ignore64BitArgNoInline(i64, i32, i64)
126 147
127 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) { 148 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) {
128 entry: 149 entry:
129 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256) 150 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256)
130 ret i32 %call 151 ret i32 %call
131 } 152 }
132 ; CHECK-LABEL: pass64BitConstArg 153 ; CHECK-LABEL: pass64BitConstArg
(...skipping 24 matching lines...) Expand all
157 ; ARM32: movt [[REG1]], {{.*}} ; 0xdead 178 ; ARM32: movt [[REG1]], {{.*}} ; 0xdead
158 ; ARM32: movw [[REG2:r.*]], {{.*}} ; 0x5678 179 ; ARM32: movw [[REG2:r.*]], {{.*}} ; 0x5678
159 ; ARM32: movt [[REG2]], {{.*}} ; 0x1234 180 ; ARM32: movt [[REG2]], {{.*}} ; 0x1234
160 ; ARM32: str [[REG1]], [sp, #4] 181 ; ARM32: str [[REG1]], [sp, #4]
161 ; ARM32: str [[REG2]], [sp] 182 ; ARM32: str [[REG2]], [sp]
162 ; ARM32: {{mov|ldr}} r0 183 ; ARM32: {{mov|ldr}} r0
163 ; ARM32: {{mov|ldr}} r1 184 ; ARM32: {{mov|ldr}} r1
164 ; ARM32: mov r2, #123 185 ; ARM32: mov r2, #123
165 ; ARM32: bl {{.*}} ignore64BitArgNoInline 186 ; ARM32: bl {{.*}} ignore64BitArgNoInline
166 187
188 ; MIPS32-LABEL: pass64BitConstArg
189 ; MIPS32-O2: lui [[REG:.*]],0xdead
190 ; MIPS32-O2: ori [[REG1:.*]],[[REG]],0xbeef
191 ; MIPS32-O2: lui [[REG:.*]],0x1234
192 ; MIPS32-O2: ori [[REG2:.*]],[[REG]],0x5678
193 ; MIPS32-O2: sw [[REG1]],{{.*}}(sp)
194 ; MIPS32-O2: sw [[REG2]],{{.*}}(sp)
195 ; MIPS32-O2: move a0,a2
196 ; MIPS32-O2: move a1,a3
197 ; MIPS32-O2: li a2,123
198 ; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
199
167 define internal i32 @pass64BitUndefArg() { 200 define internal i32 @pass64BitUndefArg() {
168 entry: 201 entry:
169 %call = call i32 @ignore64BitArgNoInline(i64 0, i32 123, i64 undef) 202 %call = call i32 @ignore64BitArgNoInline(i64 0, i32 123, i64 undef)
170 ret i32 %call 203 ret i32 %call
171 } 204 }
172 ; CHECK-LABEL: pass64BitUndefArg 205 ; CHECK-LABEL: pass64BitUndefArg
173 ; CHECK: sub esp 206 ; CHECK: sub esp
174 ; CHECK: mov DWORD PTR{{.*}},0x7b 207 ; CHECK: mov DWORD PTR{{.*}},0x7b
175 ; CHECK: mov DWORD PTR{{.*}},0x0 208 ; CHECK: mov DWORD PTR{{.*}},0x0
176 ; CHECK: call {{.*}} R_{{.*}} ignore64BitArgNoInline 209 ; CHECK: call {{.*}} R_{{.*}} ignore64BitArgNoInline
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 ; 592 ;
560 ; OPTM1-LABEL: shl64BitSignedTrunc 593 ; OPTM1-LABEL: shl64BitSignedTrunc
561 ; OPTM1: shld 594 ; OPTM1: shld
562 ; OPTM1: shl e 595 ; OPTM1: shl e
563 ; OPTM1: test {{.*}},0x20 596 ; OPTM1: test {{.*}},0x20
564 ; OPTM1: je 597 ; OPTM1: je
565 598
566 ; ARM32-LABEL: shl64BitSignedTrunc 599 ; ARM32-LABEL: shl64BitSignedTrunc
567 ; ARM32: lsl r 600 ; ARM32: lsl r
568 601
602 ; MIPS32-LABEL: shl64BitSignedTrunc
603 ; MIPS32-O2: sllv
604 ; MIPS32-O2: andi {{.*}},0x20
605 ; MIPS32-O2: movn
606
569 define internal i64 @shl64BitUnsigned(i64 %a, i64 %b) { 607 define internal i64 @shl64BitUnsigned(i64 %a, i64 %b) {
570 entry: 608 entry:
571 %shl = shl i64 %a, %b 609 %shl = shl i64 %a, %b
572 ret i64 %shl 610 ret i64 %shl
573 } 611 }
574 ; CHECK-LABEL: shl64BitUnsigned 612 ; CHECK-LABEL: shl64BitUnsigned
575 ; CHECK: shld 613 ; CHECK: shld
576 ; CHECK: shl e 614 ; CHECK: shl e
577 ; CHECK: test {{.*}},0x20 615 ; CHECK: test {{.*}},0x20
578 ; CHECK: je 616 ; CHECK: je
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 ; OPTM1: sar {{.*}},0x1f 706 ; OPTM1: sar {{.*}},0x1f
669 707
670 ; ARM32-LABEL: shr64BitSignedTrunc 708 ; ARM32-LABEL: shr64BitSignedTrunc
671 ; ARM32: lsr 709 ; ARM32: lsr
672 ; ARM32: rsb 710 ; ARM32: rsb
673 ; ARM32: orr 711 ; ARM32: orr
674 ; ARM32: sub 712 ; ARM32: sub
675 ; ARM32: cmp 713 ; ARM32: cmp
676 ; ARM32: asrge 714 ; ARM32: asrge
677 715
716 ; MIPS32-LABEL: shr64BitSignedTrunc
717 ; MIPS32-O2: srlv
718 ; MIPS32-O2: nor
719 ; MIPS32-O2: sll
720 ; MIPS32-O2: sllv
721 ; MIPS32-O2: or
722 ; MIPS32-O2: srav
723 ; MIPS32-O2: andi {{.*}},0x20
724 ; MIPS32-O2: movn
725
678 define internal i64 @shr64BitUnsigned(i64 %a, i64 %b) { 726 define internal i64 @shr64BitUnsigned(i64 %a, i64 %b) {
679 entry: 727 entry:
680 %shr = lshr i64 %a, %b 728 %shr = lshr i64 %a, %b
681 ret i64 %shr 729 ret i64 %shr
682 } 730 }
683 ; CHECK-LABEL: shr64BitUnsigned 731 ; CHECK-LABEL: shr64BitUnsigned
684 ; CHECK: shrd 732 ; CHECK: shrd
685 ; CHECK: shr 733 ; CHECK: shr
686 ; CHECK: test {{.*}},0x20 734 ; CHECK: test {{.*}},0x20
687 ; CHECK: je 735 ; CHECK: je
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 ; OPTM1: je 780 ; OPTM1: je
733 781
734 ; ARM32-LABEL: shr64BitUnsignedTrunc 782 ; ARM32-LABEL: shr64BitUnsignedTrunc
735 ; ARM32: lsr 783 ; ARM32: lsr
736 ; ARM32: rsb 784 ; ARM32: rsb
737 ; ARM32: orr 785 ; ARM32: orr
738 ; ARM32: sub 786 ; ARM32: sub
739 ; ARM32: cmp 787 ; ARM32: cmp
740 ; ARM32: lsrge 788 ; ARM32: lsrge
741 789
790 ; MIPS32-LABEL: shr64BitUnsignedTrunc
791 ; MIPS32-O2: srlv
792 ; MIPS32-O2: nor
793 ; MIPS32-O2: sll
794 ; MIPS32-O2: sllv
795 ; MIPS32-O2: or
796 ; MIPS32-O2: srlv
797 ; MIPS32-O2: andi
798 ; MIPS32-O2: movn
799
742 define internal i64 @and64BitSigned(i64 %a, i64 %b) { 800 define internal i64 @and64BitSigned(i64 %a, i64 %b) {
743 entry: 801 entry:
744 %and = and i64 %b, %a 802 %and = and i64 %b, %a
745 ret i64 %and 803 ret i64 %and
746 } 804 }
747 ; CHECK-LABEL: and64BitSigned 805 ; CHECK-LABEL: and64BitSigned
748 ; CHECK: and 806 ; CHECK: and
749 ; CHECK: and 807 ; CHECK: and
750 ; 808 ;
751 ; OPTM1-LABEL: and64BitSigned 809 ; OPTM1-LABEL: and64BitSigned
(...skipping 1414 matching lines...) Expand 10 before | Expand all | Expand 10 after
2166 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]+0x4] 2224 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]+0x4]
2167 ; 2225 ;
2168 ; OPTM1-LABEL: load64 2226 ; OPTM1-LABEL: load64
2169 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}] 2227 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}]
2170 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}+0x4] 2228 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}+0x4]
2171 2229
2172 ; ARM32-LABEL: load64 2230 ; ARM32-LABEL: load64
2173 ; ARM32: ldr r{{.*}}, [r[[REG:.*]]] 2231 ; ARM32: ldr r{{.*}}, [r[[REG:.*]]]
2174 ; ARM32: ldr r{{.*}}, [r[[REG]], #4] 2232 ; ARM32: ldr r{{.*}}, [r[[REG]], #4]
2175 2233
2234 ; MIPS32-LABEL: load64
2235 ; MIPS32-O2: lw {{.*}},0([[REG:.*]])
2236 ; MIPS32-O2: lw [[REG]],4([[REG]])
2237
2176 define internal void @store64(i32 %a, i64 %value) { 2238 define internal void @store64(i32 %a, i64 %value) {
2177 entry: 2239 entry:
2178 %__2 = inttoptr i32 %a to i64* 2240 %__2 = inttoptr i32 %a to i64*
2179 store i64 %value, i64* %__2, align 1 2241 store i64 %value, i64* %__2, align 1
2180 ret void 2242 ret void
2181 } 2243 }
2182 ; CHECK-LABEL: store64 2244 ; CHECK-LABEL: store64
2183 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4] 2245 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4]
2184 ; CHECK: mov DWORD PTR [e[[REGISTER]]+0x4], 2246 ; CHECK: mov DWORD PTR [e[[REGISTER]]+0x4],
2185 ; CHECK: mov DWORD PTR [e[[REGISTER]]], 2247 ; CHECK: mov DWORD PTR [e[[REGISTER]]],
2186 ; 2248 ;
2187 ; OPTM1-LABEL: store64 2249 ; OPTM1-LABEL: store64
2188 ; OPTM1: mov DWORD PTR [e[[REGISTER:[a-z]+]]+0x4], 2250 ; OPTM1: mov DWORD PTR [e[[REGISTER:[a-z]+]]+0x4],
2189 ; OPTM1: mov DWORD PTR [e[[REGISTER]]], 2251 ; OPTM1: mov DWORD PTR [e[[REGISTER]]],
2190 2252
2191 ; ARM32-LABEL: store64 2253 ; ARM32-LABEL: store64
2192 ; ARM32: str r{{.*}}, [r[[REG:.*]], #4] 2254 ; ARM32: str r{{.*}}, [r[[REG:.*]], #4]
2193 ; ARM32: str r{{.*}}, [r[[REG]]] 2255 ; ARM32: str r{{.*}}, [r[[REG]]]
2194 2256
2257 ; MIPS32-LABEL: store64
2258 ; MIPS32-O2: sw {{.*}},4([[REG:.*]])
2259 ; MIPS32-O2: sw {{.*}},0([[REG]])
2260
2195 define internal void @store64Const(i32 %a) { 2261 define internal void @store64Const(i32 %a) {
2196 entry: 2262 entry:
2197 %__1 = inttoptr i32 %a to i64* 2263 %__1 = inttoptr i32 %a to i64*
2198 store i64 -2401053092306725256, i64* %__1, align 1 2264 store i64 -2401053092306725256, i64* %__1, align 1
2199 ret void 2265 ret void
2200 } 2266 }
2201 ; CHECK-LABEL: store64Const 2267 ; CHECK-LABEL: store64Const
2202 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4] 2268 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4]
2203 ; CHECK: mov DWORD PTR [e[[REGISTER]]+0x4],0xdeadbeef 2269 ; CHECK: mov DWORD PTR [e[[REGISTER]]+0x4],0xdeadbeef
2204 ; CHECK: mov DWORD PTR [e[[REGISTER]]],0x12345678 2270 ; CHECK: mov DWORD PTR [e[[REGISTER]]],0x12345678
2205 ; 2271 ;
2206 ; OPTM1-LABEL: store64Const 2272 ; OPTM1-LABEL: store64Const
2207 ; OPTM1: mov DWORD PTR [e[[REGISTER:[a-z]+]]+0x4],0xdeadbeef 2273 ; OPTM1: mov DWORD PTR [e[[REGISTER:[a-z]+]]+0x4],0xdeadbeef
2208 ; OPTM1: mov DWORD PTR [e[[REGISTER]]],0x12345678 2274 ; OPTM1: mov DWORD PTR [e[[REGISTER]]],0x12345678
2209 2275
2210 ; ARM32-LABEL: store64Const 2276 ; ARM32-LABEL: store64Const
2211 ; ARM32: movw [[REG1:.*]], #48879 ; 0xbeef 2277 ; ARM32: movw [[REG1:.*]], #48879 ; 0xbeef
2212 ; ARM32: movt [[REG1:.*]], #57005 ; 0xdead 2278 ; ARM32: movt [[REG1:.*]], #57005 ; 0xdead
2213 ; ARM32: movw [[REG2:.*]], #22136 ; 0x5678 2279 ; ARM32: movw [[REG2:.*]], #22136 ; 0x5678
2214 ; ARM32: movt [[REG2:.*]], #4660 ; 0x1234 2280 ; ARM32: movt [[REG2:.*]], #4660 ; 0x1234
2215 ; ARM32: str [[REG1]], [r[[REG:.*]], #4] 2281 ; ARM32: str [[REG1]], [r[[REG:.*]], #4]
2216 ; ARM32: str [[REG2]], [r[[REG]]] 2282 ; ARM32: str [[REG2]], [r[[REG]]]
2217 2283
2284 ; MIPS32-LABEL: store64Const
2285 ; MIPS32-O2: lui [[REG1:.*]],0xdead
2286 ; MIPS32-O2: ori [[REG1:.*]],[[REG1]],0xbeef
2287 ; MIPS32-O2: lui [[REG2:.*]],0x1234
2288 ; MIPS32-O2: ori [[REG2:.*]],[[REG2]],0x5678
2289 ; MIPS32-O2: sw [[REG1]],4([[REG:.*]])
2290 ; MIPS32-O2: sw [[REG2]],0([[REG]])
2291
2218 define internal i64 @select64VarVar(i64 %a, i64 %b) { 2292 define internal i64 @select64VarVar(i64 %a, i64 %b) {
2219 entry: 2293 entry:
2220 %cmp = icmp ult i64 %a, %b 2294 %cmp = icmp ult i64 %a, %b
2221 %cond = select i1 %cmp, i64 %a, i64 %b 2295 %cond = select i1 %cmp, i64 %a, i64 %b
2222 ret i64 %cond 2296 ret i64 %cond
2223 } 2297 }
2224 ; CHECK-LABEL: select64VarVar 2298 ; CHECK-LABEL: select64VarVar
2225 ; CHECK: mov 2299 ; CHECK: mov
2226 ; CHECK: mov 2300 ; CHECK: mov
2227 ; CHECK: cmp 2301 ; CHECK: cmp
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
2461 %s = lshr i64 %a, 40 2535 %s = lshr i64 %a, 40
2462 %t = trunc i64 %s to i32 2536 %t = trunc i64 %s to i32
2463 %r = sub i32 %t, 1 2537 %r = sub i32 %t, 1
2464 ret i32 %r 2538 ret i32 %r
2465 ; ARM32-LABEL: subOneToUpperAfterShift 2539 ; ARM32-LABEL: subOneToUpperAfterShift
2466 ; ARM32: subs 2540 ; ARM32: subs
2467 ; ARM32: sbc 2541 ; ARM32: sbc
2468 ; ARM32: lsr 2542 ; ARM32: lsr
2469 ; ARM32: sub 2543 ; ARM32: sub
2470 } 2544 }
OLDNEW
« no previous file with comments | « no previous file | tests_lit/llvm2ice_tests/8bit.pnacl.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698