OLD | NEW |
1 ; Show that we handle constants in a movw, when it isn't represented as | 1 ; Show that we handle constants in a movw, when it isn't represented as |
2 ; ConstantRelocatable (see mov-imm.ll for the ConstantRelocatable case). | 2 ; ConstantRelocatable (see mov-imm.ll for the ConstantRelocatable case). |
3 | 3 |
4 ; REQUIRES: allow_dump | 4 ; REQUIRES: allow_dump |
5 | 5 |
6 ; Compile using standalone assembler. | 6 ; Compile using standalone assembler. |
7 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ | 7 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ |
8 ; RUN: --test-stack-extra 4084 | FileCheck %s --check-prefix=ASM | 8 ; RUN: --test-stack-extra 4084 | FileCheck %s --check-prefix=ASM |
9 | 9 |
10 ; Show bytes in assembled standalone code. | 10 ; Show bytes in assembled standalone code. |
(...skipping 11 matching lines...) Expand all Loading... |
22 | 22 |
23 define internal i32 @foo(i32 %x) { | 23 define internal i32 @foo(i32 %x) { |
24 entry: | 24 entry: |
25 | 25 |
26 ; ASM-LABEL: foo: | 26 ; ASM-LABEL: foo: |
27 ; ASM-NEXT: .Lfoo$entry: | 27 ; ASM-NEXT: .Lfoo$entry: |
28 ; ******* Movw case to check ******* | 28 ; ******* Movw case to check ******* |
29 ; ASM-NEXT: movw ip, #4092 | 29 ; ASM-NEXT: movw ip, #4092 |
30 ; ASM-NEXT: sub sp, sp, ip | 30 ; ASM-NEXT: sub sp, sp, ip |
31 ; ASM-NEXT: str r0, [sp, #4088] | 31 ; ASM-NEXT: str r0, [sp, #4088] |
32 | 32 ; ASM-NEXT: # [sp, #4088] = def.pseudo |
33 ; DIS-LABEL: 00000000 <foo>: | 33 ; DIS-LABEL: 00000000 <foo>: |
34 ; DIS-NEXT: 0: e300cffc | 34 ; DIS-NEXT: 0: e300cffc |
35 ; DIS-NEXT: 4: e04dd00c | 35 ; DIS-NEXT: 4: e04dd00c |
36 ; DIS-NEXT: 8: e58d0ff8 | 36 ; DIS-NEXT: 8: e58d0ff8 |
37 | 37 |
38 ; IASM-LABEL: foo: | 38 ; IASM-LABEL: foo: |
39 ; IASM-NEXT: .Lfoo$entry: | 39 ; IASM-NEXT: .Lfoo$entry: |
40 | 40 |
41 ; IASM-NEXT: .byte 0xfc | 41 ; IASM-NEXT: .byte 0xfc |
42 ; IASM-NEXT: .byte 0xcf | 42 ; IASM-NEXT: .byte 0xcf |
43 ; IASM-NEXT: .byte 0x0 | 43 ; IASM-NEXT: .byte 0x0 |
44 ; IASM-NEXT: .byte 0xe3 | 44 ; IASM-NEXT: .byte 0xe3 |
45 | 45 |
46 ; IASM-NEXT: .byte 0xc | 46 ; IASM-NEXT: .byte 0xc |
47 ; IASM-NEXT: .byte 0xd0 | 47 ; IASM-NEXT: .byte 0xd0 |
48 ; IASM-NEXT: .byte 0x4d | 48 ; IASM-NEXT: .byte 0x4d |
49 ; IASM-NEXT: .byte 0xe0 | 49 ; IASM-NEXT: .byte 0xe0 |
50 | 50 |
51 ; IASM-NEXT: .byte 0xf8 | 51 ; IASM-NEXT: .byte 0xf8 |
52 ; IASM-NEXT: .byte 0xf | 52 ; IASM-NEXT: .byte 0xf |
53 ; IASM-NEXT: .byte 0x8d | 53 ; IASM-NEXT: .byte 0x8d |
54 ; IASM-NEXT: .byte 0xe5 | 54 ; IASM-NEXT: .byte 0xe5 |
55 | 55 |
56 %mul = mul i32 %x, %x | 56 %mul = mul i32 %x, %x |
57 | 57 |
58 ; ASM-NEXT: ldr r0, [sp, #4088] | 58 ; ASM-NEXT: ldr r0, [sp, #4088] |
59 ; ASM-NEXT: ldr r1, [sp, #4088] | 59 ; ASM-NEXT: ldr r1, [sp, #4088] |
60 ; ASM-NEXT: mul r0, r0, r1 | 60 ; ASM-NEXT: mul r0, r0, r1 |
61 ; ASM-NEXT: str r0, [sp, #4084] | 61 ; ASM-NEXT: str r0, [sp, #4084] |
| 62 ; ASM-NEXT: # [sp, #4084] = def.pseudo |
62 | 63 |
63 ; DIS-NEXT: c: e59d0ff8 | 64 ; DIS-NEXT: c: e59d0ff8 |
64 ; DIS-NEXT: 10: e59d1ff8 | 65 ; DIS-NEXT: 10: e59d1ff8 |
65 ; DIS-NEXT: 14: e0000190 | 66 ; DIS-NEXT: 14: e0000190 |
66 ; DIS-NEXT: 18: e58d0ff4 | 67 ; DIS-NEXT: 18: e58d0ff4 |
67 | 68 |
68 ; IASM-NEXT: .byte 0xf8 | 69 ; IASM-NEXT: .byte 0xf8 |
69 ; IASM-NEXT: .byte 0xf | 70 ; IASM-NEXT: .byte 0xf |
70 ; IASM-NEXT: .byte 0x9d | 71 ; IASM-NEXT: .byte 0x9d |
71 ; IASM-NEXT: .byte 0xe5 | 72 ; IASM-NEXT: .byte 0xe5 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 ; IASM-NEXT: .byte 0xd0 | 113 ; IASM-NEXT: .byte 0xd0 |
113 ; IASM-NEXT: .byte 0x8d | 114 ; IASM-NEXT: .byte 0x8d |
114 ; IASM-NEXT: .byte 0xe0 | 115 ; IASM-NEXT: .byte 0xe0 |
115 | 116 |
116 ; IASM-NEXT: .byte 0x1e | 117 ; IASM-NEXT: .byte 0x1e |
117 ; IASM-NEXT: .byte 0xff | 118 ; IASM-NEXT: .byte 0xff |
118 ; IASM-NEXT: .byte 0x2f | 119 ; IASM-NEXT: .byte 0x2f |
119 ; IASM-NEXT: .byte 0xe1 | 120 ; IASM-NEXT: .byte 0xe1 |
120 | 121 |
121 } | 122 } |
OLD | NEW |