OLD | NEW |
(Empty) | |
| 1 ; Show that we know how to translate move (immediate) ARM instructions. |
| 2 |
| 3 ; RUN: %p2i --filetype=asm -i %s --target=arm32 \ |
| 4 ; RUN: | FileCheck %s --check-prefix=ASM |
| 5 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 \ |
| 6 ; RUN: | FileCheck %s --check-prefix=IASM |
| 7 |
| 8 define internal i32 @Imm1() { |
| 9 ret i32 1 |
| 10 } |
| 11 |
| 12 ; ASM-LABEL: Imm1: |
| 13 ; ASM: mov r0, #1 |
| 14 ; IASM-LABEL: Imm1: |
| 15 ; IASM: .byte 0x1 |
| 16 ; IASM: .byte 0x0 |
| 17 ; IASM: .byte 0xa0 |
| 18 ; IASM: .byte 0xe3 |
| 19 |
| 20 |
| 21 define internal i32 @rotateFImmAA() { |
| 22 ; immediate = 0x000002a8 = b 0000 0000 0000 0000 0000 0010 1010 1000 |
| 23 ret i32 680 |
| 24 } |
| 25 |
| 26 ; ASM-LABEL: rotateFImmAA: |
| 27 ; ASM: mov r0, #680 |
| 28 |
| 29 ; IASM-LABEL: rotateFImmAA: |
| 30 ; IASM: .byte 0xaa |
| 31 ; IASM: .byte 0xf |
| 32 ; IASM: .byte 0xa0 |
| 33 ; IASM: .byte 0xe3 |
| 34 |
| 35 define internal i32 @rotateEImmAA() { |
| 36 ; immediate = 0x00000aa0 = b 0000 0000 0000 0000 0000 1010 1010 0000 |
| 37 ret i32 2720 |
| 38 } |
| 39 |
| 40 ; ASM-LABEL: rotateEImmAA: |
| 41 ; ASM: mov r0, #2720 |
| 42 |
| 43 ; IASM-LABEL: rotateEImmAA: |
| 44 ; IASM: .byte 0xaa |
| 45 ; IASM: .byte 0xe |
| 46 ; IASM: .byte 0xa0 |
| 47 ; IASM: .byte 0xe3 |
| 48 |
| 49 define internal i32 @rotateDImmAA() { |
| 50 ; immediate = 0x00002a80 = b 0000 0000 0000 0000 0010 1010 1000 0000 |
| 51 ret i32 10880 |
| 52 } |
| 53 |
| 54 ; ASM-LABEL: rotateDImmAA: |
| 55 ; ASM: mov r0, #10880 |
| 56 |
| 57 ; IASM-LABEL: rotateDImmAA: |
| 58 ; IASM: .byte 0xaa |
| 59 ; IASM: .byte 0xd |
| 60 ; IASM: .byte 0xa0 |
| 61 ; IASM: .byte 0xe3 |
| 62 |
| 63 define internal i32 @rotateCImmAA() { |
| 64 ; immediate = 0x0000aa00 = b 0000 0000 0000 0000 1010 1010 0000 0000 |
| 65 ret i32 43520 |
| 66 } |
| 67 |
| 68 ; ASM-LABEL: rotateCImmAA: |
| 69 ; ASM: mov r0, #43520 |
| 70 |
| 71 ; IASM-LABEL: rotateCImmAA: |
| 72 ; IASM: .byte 0xaa |
| 73 ; IASM: .byte 0xc |
| 74 ; IASM: .byte 0xa0 |
| 75 ; IASM: .byte 0xe3 |
| 76 |
| 77 define internal i32 @rotateBImmAA() { |
| 78 ; immediate = 0x0002a800 = b 0000 0000 0000 0010 1010 1000 0000 0000 |
| 79 ret i32 174080 |
| 80 } |
| 81 |
| 82 ; ASM-LABEL: rotateBImmAA: |
| 83 ; ASM: mov r0, #174080 |
| 84 |
| 85 ; IASM-LABEL: rotateBImmAA: |
| 86 ; IASM: .byte 0xaa |
| 87 ; IASM: .byte 0xb |
| 88 ; IASM: .byte 0xa0 |
| 89 ; IASM: .byte 0xe3 |
| 90 |
| 91 define internal i32 @rotateAImmAA() { |
| 92 ; immediate = 0x000aa000 = b 0000 0000 0000 1010 1010 0000 0000 0000 |
| 93 ret i32 696320 |
| 94 } |
| 95 |
| 96 ; ASM-LABEL: rotateAImmAA: |
| 97 ; ASM: mov r0, #696320 |
| 98 |
| 99 ; IASM-LABEL: rotateAImmAA: |
| 100 ; IASM: .byte 0xaa |
| 101 ; IASM: .byte 0xa |
| 102 ; IASM: .byte 0xa0 |
| 103 ; IASM: .byte 0xe3 |
| 104 |
| 105 define internal i32 @rotate9ImmAA() { |
| 106 ; immediate = 0x002a8000 = b 0000 0000 0010 1010 1000 0000 0000 0000 |
| 107 ret i32 2785280 |
| 108 } |
| 109 |
| 110 ; ASM-LABEL: rotate9ImmAA: |
| 111 ; ASM: mov r0, #2785280 |
| 112 |
| 113 ; IASM-LABEL: rotate9ImmAA: |
| 114 ; IASM: .byte 0xaa |
| 115 ; IASM: .byte 0x9 |
| 116 ; IASM: .byte 0xa0 |
| 117 ; IASM: .byte 0xe3 |
| 118 |
| 119 define internal i32 @rotate8ImmAA() { |
| 120 ; immediate = 0x00aa0000 = b 0000 0000 1010 1010 0000 0000 0000 0000 |
| 121 ret i32 11141120 |
| 122 } |
| 123 |
| 124 ; ASM-LABEL: rotate8ImmAA: |
| 125 ; ASM: mov r0, #11141120 |
| 126 |
| 127 ; IASM-LABEL: rotate8ImmAA: |
| 128 ; IASM: .byte 0xaa |
| 129 ; IASM: .byte 0x8 |
| 130 ; IASM: .byte 0xa0 |
| 131 ; IASM: .byte 0xe3 |
| 132 |
| 133 define internal i32 @rotate7ImmAA() { |
| 134 ; immediate = 0x02a80000 = b 0000 0010 1010 1000 0000 0000 0000 0000 |
| 135 ret i32 44564480 |
| 136 } |
| 137 |
| 138 ; ASM-LABEL: rotate7ImmAA: |
| 139 ; ASM: mov r0, #44564480 |
| 140 |
| 141 ; IASM-LABEL: rotate7ImmAA: |
| 142 ; IASM: .byte 0xaa |
| 143 ; IASM: .byte 0x7 |
| 144 ; IASM: .byte 0xa0 |
| 145 ; IASM: .byte 0xe3 |
| 146 |
| 147 define internal i32 @rotate6ImmAA() { |
| 148 ; immediate = 0x0aa00000 = b 0000 1010 1010 0000 0000 0000 0000 0000 |
| 149 ret i32 178257920 |
| 150 } |
| 151 |
| 152 ; ASM-LABEL: rotate6ImmAA: |
| 153 ; ASM: mov r0, #178257920 |
| 154 |
| 155 ; IASM-LABEL: rotate6ImmAA: |
| 156 ; IASM: .byte 0xaa |
| 157 ; IASM: .byte 0x6 |
| 158 ; IASM: .byte 0xa0 |
| 159 ; IASM: .byte 0xe3 |
| 160 |
| 161 define internal i32 @rotate5ImmAA() { |
| 162 ; immediate = 0x2a800000 = b 0010 1010 1000 0000 0000 0000 0000 0000 |
| 163 ret i32 713031680 |
| 164 } |
| 165 |
| 166 ; ASM-LABEL: rotate5ImmAA: |
| 167 ; ASM: mov r0, #713031680 |
| 168 |
| 169 ; IASM-LABEL: rotate5ImmAA: |
| 170 ; IASM: .byte 0xaa |
| 171 ; IASM: .byte 0x5 |
| 172 ; IASM: .byte 0xa0 |
| 173 ; IASM: .byte 0xe3 |
| 174 |
| 175 define internal i32 @rotate4ImmAA() { |
| 176 ; immediate = 0xaa000000 = b 1010 1010 0000 0000 0000 0000 0000 0000 |
| 177 ret i32 2852126720 |
| 178 } |
| 179 |
| 180 ; ASM-LABEL: rotate4ImmAA: |
| 181 ; ASM: mov r0, #2852126720 |
| 182 |
| 183 ; IASM-LABEL: rotate4ImmAA: |
| 184 ; IASM: .byte 0xaa |
| 185 ; IASM: .byte 0x4 |
| 186 ; IASM: .byte 0xa0 |
| 187 ; IASM: .byte 0xe3 |
| 188 |
| 189 define internal i32 @rotate3ImmAA() { |
| 190 ; immediate = 0xa8000002 = b 1010 1000 0000 0000 0000 0000 0000 0010 |
| 191 ret i32 2818572290 |
| 192 } |
| 193 |
| 194 ; ASM-LABEL: rotate3ImmAA: |
| 195 ; ASM: mov r0, #2818572290 |
| 196 |
| 197 ; IASM-LABEL: rotate3ImmAA: |
| 198 ; IASM: .byte 0xaa |
| 199 ; IASM: .byte 0x3 |
| 200 ; IASM: .byte 0xa0 |
| 201 ; IASM: .byte 0xe3 |
| 202 |
| 203 define internal i32 @rotate2ImmAA() { |
| 204 ; immediate = 0xa000000a = b 1010 0000 0000 0000 0000 0000 0000 1010 |
| 205 ret i32 2684354570 |
| 206 } |
| 207 |
| 208 ; ASM-LABEL: rotate2ImmAA: |
| 209 ; ASM: mov r0, #2684354570 |
| 210 |
| 211 ; IASM-LABEL: rotate2ImmAA: |
| 212 ; IASM: .byte 0xaa |
| 213 ; IASM: .byte 0x2 |
| 214 ; IASM: .byte 0xa0 |
| 215 ; IASM: .byte 0xe3 |
| 216 |
| 217 define internal i32 @rotate1ImmAA() { |
| 218 ; immediate = 0x8000002a = b 1000 1000 0000 0000 0000 0000 0010 1010 |
| 219 ret i32 2147483690 |
| 220 } |
| 221 |
| 222 ; ASM-LABEL: rotate1ImmAA: |
| 223 ; ASM: mov r0, #2147483690 |
| 224 |
| 225 ; IASM-LABEL: rotate1ImmAA: |
| 226 ; IASM: .byte 0xaa |
| 227 ; IASM: .byte 0x1 |
| 228 ; IASM: .byte 0xa0 |
| 229 ; IASM: .byte 0xe3 |
| 230 |
| 231 define internal i32 @rotate0ImmAA() { |
| 232 ; immediate = 0x000000aa = b 0000 0000 0000 0000 0000 0000 1010 1010 |
| 233 ret i32 170 |
| 234 } |
| 235 |
| 236 ; ASM-LABEL: rotate0ImmAA: |
| 237 ; ASM: mov r0, #170 |
| 238 |
| 239 ; IASM-LABEL: rotate0ImmAA: |
| 240 ; IASM: .byte 0xaa |
| 241 ; IASM: .byte 0x0 |
| 242 ; IASM: .byte 0xa0 |
| 243 ; IASM: .byte 0xe3 |
OLD | NEW |