Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 \ |
| 11 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s | 11 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s |
| 12 | 12 |
| 13 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) | 13 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) |
| 14 ; once enough infrastructure is in. Also, switch to --filetype=obj | 14 ; once enough infrastructure is in. Also, switch to --filetype=obj |
| 15 ; when possible. | 15 ; when possible. |
| 16 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 16 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 17 ; RUN: --command %p2i --filetype=asm --assemble \ | 17 ; RUN: --command %p2i --filetype=asm --assemble \ |
| 18 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ | 18 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ |
| 19 ; RUN: -allow-externally-defined-symbols \ | 19 ; RUN: -allow-externally-defined-symbols \ |
| 20 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ | 20 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 21 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s | 21 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s |
| 22 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 22 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 23 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ | 23 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ |
| 24 ; RUN: -i %s --args -Om1 --skip-unimplemented \ | 24 ; RUN: -i %s --args -Om1 --skip-unimplemented \ |
| 25 ; RUN: -allow-externally-defined-symbols \ | 25 ; RUN: -allow-externally-defined-symbols \ |
| 26 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ | 26 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 27 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s | 27 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s |
| 28 | 28 |
| 29 ; TODO(rkotler): Stop skipping unimplemented parts (via --skip-unimplemented) | |
| 30 ; once enough infrastructure is in. Also, switch to --filetype=obj | |
| 31 ; when possible. | |
| 32 ; RUN: %if --need=target_MIPS32 --need=allow_dump \ | |
| 33 ; RUN: --command %p2i --filetype=asm --assemble \ | |
| 34 ; RUN: --disassemble --target mips32 -i %s --args -O2 --skip-unimplemented \ | |
| 35 ; RUN: -allow-externally-defined-symbols \ | |
| 36 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ | |
| 37 ; RUN: --command FileCheck --check-prefix MIPS32 --check-prefix MIPS32-O2 %s | |
|
Jim Stichnoth
2016/01/30 17:03:29
TIL that FileCheck can take multiple --check-prefi
rkotlerimgtec
2016/01/30 23:48:31
This just mimicks what ARM is doing here. -Om1 was
Jim Stichnoth
2016/01/31 05:29:47
All the same, using -Om1 exposes lowering/legaliza
| |
| 38 | |
| 29 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 | 39 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 |
| 30 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 | 40 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 |
| 31 @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8 | 41 @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8 |
| 32 @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4 | 42 @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4 |
| 33 | 43 |
| 34 define internal i32 @ignore64BitArg(i64 %a, i32 %b, i64 %c) { | 44 define internal i32 @ignore64BitArg(i64 %a, i32 %b, i64 %c) { |
| 35 entry: | 45 entry: |
| 36 ret i32 %b | 46 ret i32 %b |
| 37 } | 47 } |
| 38 | 48 |
| 49 ; MIPS32-LABEL: ignore64BitArg | |
| 50 ; MIPS: move v0,a2 | |
| 51 | |
| 39 define internal i32 @pass64BitArg(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f ) { | 52 define internal i32 @pass64BitArg(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f ) { |
| 40 entry: | 53 entry: |
| 41 %call = call i32 @ignore64BitArgNoInline(i64 %a, i32 123, i64 %b) | 54 %call = call i32 @ignore64BitArgNoInline(i64 %a, i32 123, i64 %b) |
| 42 %call1 = call i32 @ignore64BitArgNoInline(i64 %c, i32 123, i64 %d) | 55 %call1 = call i32 @ignore64BitArgNoInline(i64 %c, i32 123, i64 %d) |
| 43 %call2 = call i32 @ignore64BitArgNoInline(i64 %e, i32 123, i64 %f) | 56 %call2 = call i32 @ignore64BitArgNoInline(i64 %e, i32 123, i64 %f) |
| 44 %add = add i32 %call1, %call | 57 %add = add i32 %call1, %call |
| 45 %add3 = add i32 %add, %call2 | 58 %add3 = add i32 %add, %call2 |
| 46 ret i32 %add3 | 59 ret i32 %add3 |
| 47 } | 60 } |
| 48 ; CHECK-LABEL: pass64BitArg | 61 ; CHECK-LABEL: pass64BitArg |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 ; ARM32: {{mov|ldr}} r0 | 108 ; ARM32: {{mov|ldr}} r0 |
| 96 ; ARM32: {{mov|ldr}} r1 | 109 ; ARM32: {{mov|ldr}} r1 |
| 97 ; ARM32: mov r2, #123 | 110 ; ARM32: mov r2, #123 |
| 98 ; ARM32: bl {{.*}} ignore64BitArgNoInline | 111 ; ARM32: bl {{.*}} ignore64BitArgNoInline |
| 99 ; ARM32: str {{.*}}, [sp] | 112 ; ARM32: str {{.*}}, [sp] |
| 100 ; ARM32: {{mov|ldr}} r0 | 113 ; ARM32: {{mov|ldr}} r0 |
| 101 ; ARM32: {{mov|ldr}} r1 | 114 ; ARM32: {{mov|ldr}} r1 |
| 102 ; ARM32: mov r2, #123 | 115 ; ARM32: mov r2, #123 |
| 103 ; ARM32: bl {{.*}} ignore64BitArgNoInline | 116 ; ARM32: bl {{.*}} ignore64BitArgNoInline |
| 104 | 117 |
| 118 ; MIPS32-LABEL: pass64BitArg | |
| 119 | |
| 105 | 120 |
| 106 declare i32 @ignore64BitArgNoInline(i64, i32, i64) | 121 declare i32 @ignore64BitArgNoInline(i64, i32, i64) |
| 107 | 122 |
| 108 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) { | 123 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) { |
| 109 entry: | 124 entry: |
| 110 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256) | 125 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256) |
| 111 ret i32 %call | 126 ret i32 %call |
| 112 } | 127 } |
| 113 ; CHECK-LABEL: pass64BitConstArg | 128 ; CHECK-LABEL: pass64BitConstArg |
| 114 ; CHECK: sub esp | 129 ; CHECK: sub esp |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 160 ; OPTM1: mov DWORD PTR{{.*}},0x7b | 175 ; OPTM1: mov DWORD PTR{{.*}},0x7b |
| 161 ; OPTM1: mov DWORD PTR{{.*}},0x0 | 176 ; OPTM1: mov DWORD PTR{{.*}},0x0 |
| 162 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline | 177 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline |
| 163 ; ARM32-LABEL: pass64BitUndefArg | 178 ; ARM32-LABEL: pass64BitUndefArg |
| 164 ; ARM32: sub sp | 179 ; ARM32: sub sp |
| 165 ; ARM32: mov {{.*}}, #0 | 180 ; ARM32: mov {{.*}}, #0 |
| 166 ; ARM32: str | 181 ; ARM32: str |
| 167 ; ARM32: mov {{.*}}, #123 | 182 ; ARM32: mov {{.*}}, #123 |
| 168 ; ARM32: bl {{.*}} ignore64BitArgNoInline | 183 ; ARM32: bl {{.*}} ignore64BitArgNoInline |
| 169 | 184 |
| 185 ; MIPS32-LABEL: pass64BitUndefArg | |
| 186 ; MIPS: jr ra | |
| 187 | |
| 170 define internal i64 @return64BitArg(i64 %padding, i64 %a) { | 188 define internal i64 @return64BitArg(i64 %padding, i64 %a) { |
| 171 entry: | 189 entry: |
| 172 ret i64 %a | 190 ret i64 %a |
| 173 } | 191 } |
| 174 ; CHECK-LABEL: return64BitArg | 192 ; CHECK-LABEL: return64BitArg |
| 175 ; CHECK: mov {{.*}},DWORD PTR [esp+0xc] | 193 ; CHECK: mov {{.*}},DWORD PTR [esp+0xc] |
| 176 ; CHECK: mov {{.*}},DWORD PTR [esp+0x10] | 194 ; CHECK: mov {{.*}},DWORD PTR [esp+0x10] |
| 177 ; | 195 ; |
| 178 ; OPTM1-LABEL: return64BitArg | 196 ; OPTM1-LABEL: return64BitArg |
| 179 ; OPTM1: mov {{.*}},DWORD PTR [esp+0xc] | 197 ; OPTM1: mov {{.*}},DWORD PTR [esp+0xc] |
| 180 ; OPTM1: mov {{.*}},DWORD PTR [esp+0x10] | 198 ; OPTM1: mov {{.*}},DWORD PTR [esp+0x10] |
| 181 | 199 |
| 182 ; ARM32-LABEL: return64BitArg | 200 ; ARM32-LABEL: return64BitArg |
| 183 ; ARM32: mov {{.*}}, r2 | 201 ; ARM32: mov {{.*}}, r2 |
| 184 ; ARM32: mov {{.*}}, r3 | 202 ; ARM32: mov {{.*}}, r3 |
| 185 ; ARM32: bx lr | 203 ; ARM32: bx lr |
| 186 | 204 |
| 205 ; MIPS-LABEL; return64BitArg | |
| 206 ; MIPS: move v0,a2 | |
| 207 ; MIPS: move v1,a3 | |
| 208 ; MIPS: jr ra | |
| 209 | |
| 187 define internal i64 @return64BitConst() { | 210 define internal i64 @return64BitConst() { |
| 188 entry: | 211 entry: |
| 189 ret i64 -2401053092306725256 | 212 ret i64 -2401053092306725256 |
| 190 } | 213 } |
| 191 ; CHECK-LABEL: return64BitConst | 214 ; CHECK-LABEL: return64BitConst |
| 192 ; CHECK: mov eax,0x12345678 | 215 ; CHECK: mov eax,0x12345678 |
| 193 ; CHECK: mov edx,0xdeadbeef | 216 ; CHECK: mov edx,0xdeadbeef |
| 194 ; | 217 ; |
| 195 ; OPTM1-LABEL: return64BitConst | 218 ; OPTM1-LABEL: return64BitConst |
| 196 ; OPTM1: mov eax,0x12345678 | 219 ; OPTM1: mov eax,0x12345678 |
| 197 ; OPTM1: mov edx,0xdeadbeef | 220 ; OPTM1: mov edx,0xdeadbeef |
| 198 | 221 |
| 199 ; ARM32-LABEL: return64BitConst | 222 ; ARM32-LABEL: return64BitConst |
| 200 ; ARM32: movw r0, #22136 ; 0x5678 | 223 ; ARM32: movw r0, #22136 ; 0x5678 |
| 201 ; ARM32: movt r0, #4660 ; 0x1234 | 224 ; ARM32: movt r0, #4660 ; 0x1234 |
| 202 ; ARM32: movw r1, #48879 ; 0xbeef | 225 ; ARM32: movw r1, #48879 ; 0xbeef |
| 203 ; ARM32: movt r1, #57005 ; 0xdead | 226 ; ARM32: movt r1, #57005 ; 0xdead |
| 204 | 227 |
| 228 ; MIPS32-LABEL: return64BitConst | |
| 229 ; MIPS32: lui v0,0x1234 | |
| 230 ; MIPS32: ori v0,v0,0x5678 | |
| 231 ; MIPS32: lui v1,0xdead | |
| 232 ; MIPS32: ori v1,v1,0xbeef | |
| 233 ; MIPS32: jr ra | |
| 234 | |
| 205 define internal i64 @add64BitSigned(i64 %a, i64 %b) { | 235 define internal i64 @add64BitSigned(i64 %a, i64 %b) { |
| 206 entry: | 236 entry: |
| 207 %add = add i64 %b, %a | 237 %add = add i64 %b, %a |
| 208 ret i64 %add | 238 ret i64 %add |
| 209 } | 239 } |
| 210 ; CHECK-LABEL: add64BitSigned | 240 ; CHECK-LABEL: add64BitSigned |
| 211 ; CHECK: add | 241 ; CHECK: add |
| 212 ; CHECK: adc | 242 ; CHECK: adc |
| 213 ; | 243 ; |
| 214 ; OPTM1-LABEL: add64BitSigned | 244 ; OPTM1-LABEL: add64BitSigned |
| 215 ; OPTM1: add | 245 ; OPTM1: add |
| 216 ; OPTM1: adc | 246 ; OPTM1: adc |
| 217 | 247 |
| 218 ; ARM32-LABEL: add64BitSigned | 248 ; ARM32-LABEL: add64BitSigned |
| 219 ; ARM32: adds | 249 ; ARM32: adds |
| 220 ; ARM32: adc | 250 ; ARM32: adc |
| 221 | 251 |
| 252 ; MIPS-LABEL: add64BitSigned | |
| 253 ; MIPS: addu | |
| 254 ; MIPS: sltu | |
| 255 ; MIPS: addu | |
| 256 ; MIPS: addu | |
| 257 | |
| 222 define internal i64 @add64BitUnsigned(i64 %a, i64 %b) { | 258 define internal i64 @add64BitUnsigned(i64 %a, i64 %b) { |
| 223 entry: | 259 entry: |
| 224 %add = add i64 %b, %a | 260 %add = add i64 %b, %a |
| 225 ret i64 %add | 261 ret i64 %add |
| 226 } | 262 } |
| 227 ; CHECK-LABEL: add64BitUnsigned | 263 ; CHECK-LABEL: add64BitUnsigned |
| 228 ; CHECK: add | 264 ; CHECK: add |
| 229 ; CHECK: adc | 265 ; CHECK: adc |
| 230 ; | 266 ; |
| 231 ; OPTM1-LABEL: add64BitUnsigned | 267 ; OPTM1-LABEL: add64BitUnsigned |
| 232 ; OPTM1: add | 268 ; OPTM1: add |
| 233 ; OPTM1: adc | 269 ; OPTM1: adc |
| 234 | 270 |
| 235 ; ARM32-LABEL: add64BitUnsigned | 271 ; ARM32-LABEL: add64BitUnsigned |
| 236 ; ARM32: adds | 272 ; ARM32: adds |
| 237 ; ARM32: adc | 273 ; ARM32: adc |
| 238 | 274 |
| 275 ; MIPS-LABEL: add64BitUnsigned | |
| 276 ; MIPS: addu | |
| 277 ; MIPS: sltu | |
| 278 ; MIPS: addu | |
| 279 ; MIPS: addu | |
| 280 | |
| 239 define internal i64 @sub64BitSigned(i64 %a, i64 %b) { | 281 define internal i64 @sub64BitSigned(i64 %a, i64 %b) { |
| 240 entry: | 282 entry: |
| 241 %sub = sub i64 %a, %b | 283 %sub = sub i64 %a, %b |
| 242 ret i64 %sub | 284 ret i64 %sub |
| 243 } | 285 } |
| 244 ; CHECK-LABEL: sub64BitSigned | 286 ; CHECK-LABEL: sub64BitSigned |
| 245 ; CHECK: sub | 287 ; CHECK: sub |
| 246 ; CHECK: sbb | 288 ; CHECK: sbb |
| 247 ; | 289 ; |
| 248 ; OPTM1-LABEL: sub64BitSigned | 290 ; OPTM1-LABEL: sub64BitSigned |
| 249 ; OPTM1: sub | 291 ; OPTM1: sub |
| 250 ; OPTM1: sbb | 292 ; OPTM1: sbb |
| 251 | 293 |
| 252 ; ARM32-LABEL: sub64BitSigned | 294 ; ARM32-LABEL: sub64BitSigned |
| 253 ; ARM32: subs | 295 ; ARM32: subs |
| 254 ; ARM32: sbc | 296 ; ARM32: sbc |
| 255 | 297 |
| 298 ; MIPS-LABEL: sub64BitSigned | |
| 299 ; MIPS: subu | |
| 300 ; MIPS: sltu | |
| 301 ; MIPS: addu | |
| 302 ; MIPS: subu | |
| 303 | |
| 256 define internal i64 @sub64BitUnsigned(i64 %a, i64 %b) { | 304 define internal i64 @sub64BitUnsigned(i64 %a, i64 %b) { |
| 257 entry: | 305 entry: |
| 258 %sub = sub i64 %a, %b | 306 %sub = sub i64 %a, %b |
| 259 ret i64 %sub | 307 ret i64 %sub |
| 260 } | 308 } |
| 261 ; CHECK-LABEL: sub64BitUnsigned | 309 ; CHECK-LABEL: sub64BitUnsigned |
| 262 ; CHECK: sub | 310 ; CHECK: sub |
| 263 ; CHECK: sbb | 311 ; CHECK: sbb |
| 264 ; | 312 ; |
| 265 ; OPTM1-LABEL: sub64BitUnsigned | 313 ; OPTM1-LABEL: sub64BitUnsigned |
| 266 ; OPTM1: sub | 314 ; OPTM1: sub |
| 267 ; OPTM1: sbb | 315 ; OPTM1: sbb |
| 268 | 316 |
| 269 ; ARM32-LABEL: sub64BitUnsigned | 317 ; ARM32-LABEL: sub64BitUnsigned |
| 270 ; ARM32: subs | 318 ; ARM32: subs |
| 271 ; ARM32: sbc | 319 ; ARM32: sbc |
| 272 | 320 |
| 321 ; MIPS-LABEL: sub64BitUnsigned | |
| 322 ; MIPS: subu | |
| 323 ; MIPS: sltu | |
| 324 ; MIPS: addu | |
| 325 ; MIPS: subu | |
| 326 | |
| 273 define internal i64 @mul64BitSigned(i64 %a, i64 %b) { | 327 define internal i64 @mul64BitSigned(i64 %a, i64 %b) { |
| 274 entry: | 328 entry: |
| 275 %mul = mul i64 %b, %a | 329 %mul = mul i64 %b, %a |
| 276 ret i64 %mul | 330 ret i64 %mul |
| 277 } | 331 } |
| 278 ; CHECK-LABEL: mul64BitSigned | 332 ; CHECK-LABEL: mul64BitSigned |
| 279 ; CHECK: imul | 333 ; CHECK: imul |
| 280 ; CHECK: mul | 334 ; CHECK: mul |
| 281 ; CHECK: add | 335 ; CHECK: add |
| 282 ; CHECK: imul | 336 ; CHECK: imul |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 597 ; CHECK: and | 651 ; CHECK: and |
| 598 ; | 652 ; |
| 599 ; OPTM1-LABEL: and64BitSigned | 653 ; OPTM1-LABEL: and64BitSigned |
| 600 ; OPTM1: and | 654 ; OPTM1: and |
| 601 ; OPTM1: and | 655 ; OPTM1: and |
| 602 | 656 |
| 603 ; ARM32-LABEL: and64BitSigned | 657 ; ARM32-LABEL: and64BitSigned |
| 604 ; ARM32: and | 658 ; ARM32: and |
| 605 ; ARM32: and | 659 ; ARM32: and |
| 606 | 660 |
| 661 ; MIPS32-LABEL: and64BitSigned | |
| 662 ; MIPS32: and | |
| 663 ; MIPS32: and | |
| 664 | |
| 607 define internal i64 @and64BitUnsigned(i64 %a, i64 %b) { | 665 define internal i64 @and64BitUnsigned(i64 %a, i64 %b) { |
| 608 entry: | 666 entry: |
| 609 %and = and i64 %b, %a | 667 %and = and i64 %b, %a |
| 610 ret i64 %and | 668 ret i64 %and |
| 611 } | 669 } |
| 612 ; CHECK-LABEL: and64BitUnsigned | 670 ; CHECK-LABEL: and64BitUnsigned |
| 613 ; CHECK: and | 671 ; CHECK: and |
| 614 ; CHECK: and | 672 ; CHECK: and |
| 615 ; | 673 ; |
| 616 ; OPTM1-LABEL: and64BitUnsigned | 674 ; OPTM1-LABEL: and64BitUnsigned |
| 617 ; OPTM1: and | 675 ; OPTM1: and |
| 618 ; OPTM1: and | 676 ; OPTM1: and |
| 619 | 677 |
| 620 ; ARM32-LABEL: and64BitUnsigned | 678 ; ARM32-LABEL: and64BitUnsigned |
| 621 ; ARM32: and | 679 ; ARM32: and |
| 622 ; ARM32: and | 680 ; ARM32: and |
| 623 | 681 |
| 682 ; MIPS32-LABEL: and64BitUnsigned | |
| 683 ; MIPS32: and | |
| 684 ; MIPS32: and | |
| 685 | |
| 624 define internal i64 @or64BitSigned(i64 %a, i64 %b) { | 686 define internal i64 @or64BitSigned(i64 %a, i64 %b) { |
| 625 entry: | 687 entry: |
| 626 %or = or i64 %b, %a | 688 %or = or i64 %b, %a |
| 627 ret i64 %or | 689 ret i64 %or |
| 628 } | 690 } |
| 629 ; CHECK-LABEL: or64BitSigned | 691 ; CHECK-LABEL: or64BitSigned |
| 630 ; CHECK: or | 692 ; CHECK: or |
| 631 ; CHECK: or | 693 ; CHECK: or |
| 632 ; | 694 ; |
| 633 ; OPTM1-LABEL: or64BitSigned | 695 ; OPTM1-LABEL: or64BitSigned |
| 634 ; OPTM1: or | 696 ; OPTM1: or |
| 635 ; OPTM1: or | 697 ; OPTM1: or |
| 636 | 698 |
| 637 ; ARM32-LABEL: or64BitSigned | 699 ; ARM32-LABEL: or64BitSigned |
| 638 ; ARM32: orr | 700 ; ARM32: orr |
| 639 ; ARM32: orr | 701 ; ARM32: orr |
| 640 | 702 |
| 703 ; MIPS32-LABEL: or64BitSigned | |
| 704 ; MIPS32: or | |
| 705 ; MIPS32: or | |
| 706 | |
| 707 | |
|
Jim Stichnoth
2016/01/30 17:03:29
This and the next two tests add 2 blank lines inst
rkotlerimgtec
2016/01/30 23:48:31
Done.
| |
| 641 define internal i64 @or64BitUnsigned(i64 %a, i64 %b) { | 708 define internal i64 @or64BitUnsigned(i64 %a, i64 %b) { |
| 642 entry: | 709 entry: |
| 643 %or = or i64 %b, %a | 710 %or = or i64 %b, %a |
| 644 ret i64 %or | 711 ret i64 %or |
| 645 } | 712 } |
| 646 ; CHECK-LABEL: or64BitUnsigned | 713 ; CHECK-LABEL: or64BitUnsigned |
| 647 ; CHECK: or | 714 ; CHECK: or |
| 648 ; CHECK: or | 715 ; CHECK: or |
| 649 ; | 716 ; |
| 650 ; OPTM1-LABEL: or64BitUnsigned | 717 ; OPTM1-LABEL: or64BitUnsigned |
| 651 ; OPTM1: or | 718 ; OPTM1: or |
| 652 ; OPTM1: or | 719 ; OPTM1: or |
| 653 | 720 |
| 654 ; ARM32-LABEL: or64BitUnsigned | 721 ; ARM32-LABEL: or64BitUnsigned |
| 655 ; ARM32: orr | 722 ; ARM32: orr |
| 656 ; ARM32: orr | 723 ; ARM32: orr |
| 657 | 724 |
| 725 ; MIPS32-LABEL: or64BitUnsigned | |
| 726 ; MIPS32: or | |
| 727 ; MIPS32: or | |
| 728 | |
| 729 | |
| 658 define internal i64 @xor64BitSigned(i64 %a, i64 %b) { | 730 define internal i64 @xor64BitSigned(i64 %a, i64 %b) { |
| 659 entry: | 731 entry: |
| 660 %xor = xor i64 %b, %a | 732 %xor = xor i64 %b, %a |
| 661 ret i64 %xor | 733 ret i64 %xor |
| 662 } | 734 } |
| 663 ; CHECK-LABEL: xor64BitSigned | 735 ; CHECK-LABEL: xor64BitSigned |
| 664 ; CHECK: xor | 736 ; CHECK: xor |
| 665 ; CHECK: xor | 737 ; CHECK: xor |
| 666 ; | 738 ; |
| 667 ; OPTM1-LABEL: xor64BitSigned | 739 ; OPTM1-LABEL: xor64BitSigned |
| 668 ; OPTM1: xor | 740 ; OPTM1: xor |
| 669 ; OPTM1: xor | 741 ; OPTM1: xor |
| 670 | 742 |
| 671 ; ARM32-LABEL: xor64BitSigned | 743 ; ARM32-LABEL: xor64BitSigned |
| 672 ; ARM32: eor | 744 ; ARM32: eor |
| 673 ; ARM32: eor | 745 ; ARM32: eor |
| 674 | 746 |
| 747 ; MIPS32-LABEL: xor64BitSigned | |
| 748 ; MIPS32: xor | |
| 749 ; MIPS32: xor | |
| 750 | |
| 751 | |
| 675 define internal i64 @xor64BitUnsigned(i64 %a, i64 %b) { | 752 define internal i64 @xor64BitUnsigned(i64 %a, i64 %b) { |
| 676 entry: | 753 entry: |
| 677 %xor = xor i64 %b, %a | 754 %xor = xor i64 %b, %a |
| 678 ret i64 %xor | 755 ret i64 %xor |
| 679 } | 756 } |
| 680 ; CHECK-LABEL: xor64BitUnsigned | 757 ; CHECK-LABEL: xor64BitUnsigned |
| 681 ; CHECK: xor | 758 ; CHECK: xor |
| 682 ; CHECK: xor | 759 ; CHECK: xor |
| 683 ; | 760 ; |
| 684 ; OPTM1-LABEL: xor64BitUnsigned | 761 ; OPTM1-LABEL: xor64BitUnsigned |
| 685 ; OPTM1: xor | 762 ; OPTM1: xor |
| 686 ; OPTM1: xor | 763 ; OPTM1: xor |
| 687 | 764 |
| 688 ; ARM32-LABEL: xor64BitUnsigned | 765 ; ARM32-LABEL: xor64BitUnsigned |
| 689 ; ARM32: eor | 766 ; ARM32: eor |
| 690 ; ARM32: eor | 767 ; ARM32: eor |
| 691 | 768 |
| 769 ; MIPS32-LABEL: xor64BitUnsigned | |
| 770 ; MIPS32: xor | |
| 771 ; MIPS32: xor | |
| 772 | |
| 692 define internal i32 @trunc64To32Signed(i64 %padding, i64 %a) { | 773 define internal i32 @trunc64To32Signed(i64 %padding, i64 %a) { |
| 693 entry: | 774 entry: |
| 694 %conv = trunc i64 %a to i32 | 775 %conv = trunc i64 %a to i32 |
| 695 ret i32 %conv | 776 ret i32 %conv |
| 696 } | 777 } |
| 697 ; CHECK-LABEL: trunc64To32Signed | 778 ; CHECK-LABEL: trunc64To32Signed |
| 698 ; CHECK: mov eax,DWORD PTR [esp+0xc] | 779 ; CHECK: mov eax,DWORD PTR [esp+0xc] |
| 699 ; | 780 ; |
| 700 ; OPTM1-LABEL: trunc64To32Signed | 781 ; OPTM1-LABEL: trunc64To32Signed |
| 701 ; OPTM1: mov eax,DWORD PTR [esp+ | 782 ; OPTM1: mov eax,DWORD PTR [esp+ |
| (...skipping 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1852 ; CHECK-LABEL: phi64Undef | 1933 ; CHECK-LABEL: phi64Undef |
| 1853 ; CHECK: mov {{.*}},0x0 | 1934 ; CHECK: mov {{.*}},0x0 |
| 1854 ; CHECK: mov {{.*}},0x0 | 1935 ; CHECK: mov {{.*}},0x0 |
| 1855 ; OPTM1-LABEL: phi64Undef | 1936 ; OPTM1-LABEL: phi64Undef |
| 1856 ; OPTM1: mov {{.*}},0x0 | 1937 ; OPTM1: mov {{.*}},0x0 |
| 1857 ; OPTM1: mov {{.*}},0x0 | 1938 ; OPTM1: mov {{.*}},0x0 |
| 1858 ; ARM32-LABEL: phi64Undef | 1939 ; ARM32-LABEL: phi64Undef |
| 1859 ; ARM32: mov {{.*}} #0 | 1940 ; ARM32: mov {{.*}} #0 |
| 1860 ; ARM32: mov {{.*}} #0 | 1941 ; ARM32: mov {{.*}} #0 |
| 1861 | 1942 |
| OLD | NEW |