OLD | NEW |
1 ; Show that we know how to translate move (immediate) ARM instruction. | 1 ; Show that we know how to translate move (immediate) ARM instruction. |
2 | 2 |
3 ; REQUIRES: allow_dump | 3 ; REQUIRES: allow_dump |
4 | 4 |
5 ; Compile using standalone assembler. | 5 ; Compile using standalone assembler. |
6 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \ | 6 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \ |
7 ; RUN: | FileCheck %s --check-prefix=ASM | 7 ; RUN: | FileCheck %s --check-prefix=ASM |
8 | 8 |
9 ; Show bytes in assembled standalone code. | 9 ; Show bytes in assembled standalone code. |
10 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ | 10 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ |
(...skipping 19 matching lines...) Expand all Loading... |
30 | 30 |
31 ; IASM-LABEL: Imm1: | 31 ; IASM-LABEL: Imm1: |
32 ; IASM: .byte 0x1 | 32 ; IASM: .byte 0x1 |
33 ; IASM: .byte 0x0 | 33 ; IASM: .byte 0x0 |
34 ; IASM: .byte 0xa0 | 34 ; IASM: .byte 0xa0 |
35 ; IASM: .byte 0xe3 | 35 ; IASM: .byte 0xe3 |
36 | 36 |
37 | 37 |
38 define internal i32 @rotateFImmAA() { | 38 define internal i32 @rotateFImmAA() { |
39 ; immediate = 0x000002a8 = b 0000 0000 0000 0000 0000 0010 1010 1000 | 39 ; immediate = 0x000002a8 = b 0000 0000 0000 0000 0000 0010 1010 1000 |
40 ret i32 680 | 40 ret i32 680 |
41 } | 41 } |
42 | 42 |
43 ; ASM-LABEL: rotateFImmAA: | 43 ; ASM-LABEL: rotateFImmAA: |
44 ; ASM: mov r0, #680 | 44 ; ASM: mov r0, #680 |
45 | 45 |
46 ; DIS-LABEL:00000010 <rotateFImmAA>: | 46 ; DIS-LABEL:00000010 <rotateFImmAA>: |
47 ; DIS-NEXT: 10: e3a00faa | 47 ; DIS-NEXT: 10: e3a00faa |
48 | 48 |
49 ; IASM-LABEL: rotateFImmAA: | 49 ; IASM-LABEL: rotateFImmAA: |
50 ; IASM: .byte 0xaa | 50 ; IASM: .byte 0xaa |
(...skipping 13 matching lines...) Expand all Loading... |
64 ; DIS-NEXT: 20: e3a00eaa | 64 ; DIS-NEXT: 20: e3a00eaa |
65 | 65 |
66 ; IASM-LABEL: rotateEImmAA: | 66 ; IASM-LABEL: rotateEImmAA: |
67 ; IASM: .byte 0xaa | 67 ; IASM: .byte 0xaa |
68 ; IASM: .byte 0xe | 68 ; IASM: .byte 0xe |
69 ; IASM: .byte 0xa0 | 69 ; IASM: .byte 0xa0 |
70 ; IASM: .byte 0xe3 | 70 ; IASM: .byte 0xe3 |
71 | 71 |
72 define internal i32 @rotateDImmAA() { | 72 define internal i32 @rotateDImmAA() { |
73 ; immediate = 0x00002a80 = b 0000 0000 0000 0000 0010 1010 1000 0000 | 73 ; immediate = 0x00002a80 = b 0000 0000 0000 0000 0010 1010 1000 0000 |
74 ret i32 10880 | 74 ret i32 10880 |
75 } | 75 } |
76 | 76 |
77 ; ASM-LABEL: rotateDImmAA: | 77 ; ASM-LABEL: rotateDImmAA: |
78 ; ASM: mov r0, #10880 | 78 ; ASM: mov r0, #10880 |
79 | 79 |
80 ; DIS-LABEL:00000030 <rotateDImmAA>: | 80 ; DIS-LABEL:00000030 <rotateDImmAA>: |
81 ; DIS-NEXT: 30: e3a00daa | 81 ; DIS-NEXT: 30: e3a00daa |
82 | 82 |
83 ; IASM-LABEL: rotateDImmAA: | 83 ; IASM-LABEL: rotateDImmAA: |
84 ; IASM: .byte 0xaa | 84 ; IASM: .byte 0xaa |
85 ; IASM: .byte 0xd | 85 ; IASM: .byte 0xd |
86 ; IASM: .byte 0xa0 | 86 ; IASM: .byte 0xa0 |
87 ; IASM: .byte 0xe3 | 87 ; IASM: .byte 0xe3 |
88 | 88 |
89 define internal i32 @rotateCImmAA() { | 89 define internal i32 @rotateCImmAA() { |
90 ; immediate = 0x0000aa00 = b 0000 0000 0000 0000 1010 1010 0000 0000 | 90 ; immediate = 0x0000aa00 = b 0000 0000 0000 0000 1010 1010 0000 0000 |
91 ret i32 43520 | 91 ret i32 43520 |
92 } | 92 } |
93 | 93 |
94 ; ASM-LABEL: rotateCImmAA: | 94 ; ASM-LABEL: rotateCImmAA: |
95 ; ASM: mov r0, #43520 | 95 ; ASM: mov r0, #43520 |
96 | 96 |
97 ; DIS-LABEL:00000040 <rotateCImmAA>: | 97 ; DIS-LABEL:00000040 <rotateCImmAA>: |
98 ; DIS-NEXT: 40: e3a00caa | 98 ; DIS-NEXT: 40: e3a00caa |
99 | 99 |
100 ; IASM-LABEL: rotateCImmAA: | 100 ; IASM-LABEL: rotateCImmAA: |
101 ; IASM: .byte 0xaa | 101 ; IASM: .byte 0xaa |
102 ; IASM: .byte 0xc | 102 ; IASM: .byte 0xc |
103 ; IASM: .byte 0xa0 | 103 ; IASM: .byte 0xa0 |
104 ; IASM: .byte 0xe3 | 104 ; IASM: .byte 0xe3 |
105 | 105 |
106 define internal i32 @rotateBImmAA() { | 106 define internal i32 @rotateBImmAA() { |
107 ; immediate = 0x0002a800 = b 0000 0000 0000 0010 1010 1000 0000 0000 | 107 ; immediate = 0x0002a800 = b 0000 0000 0000 0010 1010 1000 0000 0000 |
108 ret i32 174080 | 108 ret i32 174080 |
109 } | 109 } |
110 | 110 |
111 ; ASM-LABEL: rotateBImmAA: | 111 ; ASM-LABEL: rotateBImmAA: |
112 ; ASM: mov r0, #174080 | 112 ; ASM: mov r0, #174080 |
113 | 113 |
114 ; DIS-LABEL:00000050 <rotateBImmAA>: | 114 ; DIS-LABEL:00000050 <rotateBImmAA>: |
115 ; DIS-NEXT: 50: e3a00baa | 115 ; DIS-NEXT: 50: e3a00baa |
116 | 116 |
117 ; IASM-LABEL: rotateBImmAA: | 117 ; IASM-LABEL: rotateBImmAA: |
118 ; IASM: .byte 0xaa | 118 ; IASM: .byte 0xaa |
119 ; IASM: .byte 0xb | 119 ; IASM: .byte 0xb |
120 ; IASM: .byte 0xa0 | 120 ; IASM: .byte 0xa0 |
121 ; IASM: .byte 0xe3 | 121 ; IASM: .byte 0xe3 |
122 | 122 |
123 define internal i32 @rotateAImmAA() { | 123 define internal i32 @rotateAImmAA() { |
124 ; immediate = 0x000aa000 = b 0000 0000 0000 1010 1010 0000 0000 0000 | 124 ; immediate = 0x000aa000 = b 0000 0000 0000 1010 1010 0000 0000 0000 |
125 ret i32 696320 | 125 ret i32 696320 |
126 } | 126 } |
127 | 127 |
128 ; ASM-LABEL: rotateAImmAA: | 128 ; ASM-LABEL: rotateAImmAA: |
129 ; ASM: mov r0, #696320 | 129 ; ASM: mov r0, #696320 |
130 | 130 |
131 ; DIS-LABEL:00000060 <rotateAImmAA>: | 131 ; DIS-LABEL:00000060 <rotateAImmAA>: |
132 ; DIS-NEXT: 60: e3a00aaa | 132 ; DIS-NEXT: 60: e3a00aaa |
133 | 133 |
134 ; IASM-LABEL: rotateAImmAA: | 134 ; IASM-LABEL: rotateAImmAA: |
135 ; IASM: .byte 0xaa | 135 ; IASM: .byte 0xaa |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 ; ASM: mov r0, #170 | 299 ; ASM: mov r0, #170 |
300 | 300 |
301 ; DIS-LABEL:00000100 <rotate0ImmAA>: | 301 ; DIS-LABEL:00000100 <rotate0ImmAA>: |
302 ; DIS-NEXT: 100: e3a000aa | 302 ; DIS-NEXT: 100: e3a000aa |
303 | 303 |
304 ; IASM-LABEL: rotate0ImmAA: | 304 ; IASM-LABEL: rotate0ImmAA: |
305 ; IASM: .byte 0xaa | 305 ; IASM: .byte 0xaa |
306 ; IASM: .byte 0x0 | 306 ; IASM: .byte 0x0 |
307 ; IASM: .byte 0xa0 | 307 ; IASM: .byte 0xa0 |
308 ; IASM: .byte 0xe3 | 308 ; IASM: .byte 0xe3 |
OLD | NEW |