Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 1 | # RUN: llvm-mc --disassemble %s -triple=arm-apple-darwin9 | FileCheck %s |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 2 | |
Jim Grosbach | 581da64 | 2011-07-11 16:48:36 +0000 | [diff] [blame] | 3 | # CHECK: addpl r4, pc, #318767104 |
Johnny Chen | 8bbc128 | 2011-03-24 20:42:48 +0000 | [diff] [blame] | 4 | 0x4c 0x45 0x8f 0x52 |
| 5 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 6 | # CHECK: b #0 |
Johnny Chen | a4c3154 | 2011-03-15 22:27:33 +0000 | [diff] [blame] | 7 | 0x00 0x00 0x00 0xea |
| 8 | |
| 9 | # CHECK: bl #7732 |
| 10 | 0x8d 0x07 0x00 0xeb |
| 11 | |
| 12 | # CHECK: bleq #-4 |
| 13 | 0xff 0xff 0xff 0x0b |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 14 | |
| 15 | # CHECK: bfc r8, #0, #16 |
| 16 | 0x1f 0x80 0xcf 0xe7 |
| 17 | |
| 18 | # CHECK: bfi r8, r0, #16, #1 |
| 19 | 0x10 0x88 0xd0 0xe7 |
| 20 | |
Bob Wilson | 775eec22 | 2011-01-28 17:50:30 +0000 | [diff] [blame] | 21 | # CHECK: mov pc, lr |
| 22 | 0x0e 0xf0 0xa0 0xe1 |
| 23 | |
Jim Grosbach | 581da64 | 2011-07-11 16:48:36 +0000 | [diff] [blame] | 24 | # CHECK: mov pc, #3221225535 |
Johnny Chen | 74c74ba | 2011-04-08 17:29:58 +0000 | [diff] [blame] | 25 | 0xff 0xf1 0xa0 0xe3 |
| 26 | |
| 27 | # CHECK: movw r7, #4096 |
| 28 | 0x00 0x70 0x01 0xe3 |
| 29 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 30 | # CHECK: cmn r0, #1 |
| 31 | 0x01 0x00 0x70 0xe3 |
| 32 | |
Johnny Chen | d59c73f | 2010-08-11 23:35:12 +0000 | [diff] [blame] | 33 | # CHECK: dmb |
| 34 | 0x5f 0xf0 0x7f 0xf5 |
| 35 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 36 | # CHECK: dmb nshst |
| 37 | 0x56 0xf0 0x7f 0xf5 |
| 38 | |
Johnny Chen | d59c73f | 2010-08-11 23:35:12 +0000 | [diff] [blame] | 39 | # CHECK: dsb |
| 40 | 0x4f 0xf0 0x7f 0xf5 |
| 41 | |
Johnny Chen | 8e8f1c1 | 2010-08-12 20:46:17 +0000 | [diff] [blame] | 42 | # CHECK: dsb st |
| 43 | 0x4e 0xf0 0x7f 0xf5 |
| 44 | |
| 45 | # CHECK: isb |
| 46 | 0x6f 0xf0 0x7f 0xf5 |
| 47 | |
Jim Grosbach | d359571 | 2011-08-03 23:50:40 +0000 | [diff] [blame] | 48 | # FIXME: LDC encoding information is incorrect. Re-enable this along with more |
| 49 | # robust testing for other values when we get it fleshed out and working |
| 50 | # properly. |
| 51 | # CHECKx: ldclvc p5, cr15, [r8], #-0 |
| 52 | #0x00 0xf5 0x78 0x7c |
Johnny Chen | 807e174 | 2010-04-16 19:33:23 +0000 | [diff] [blame] | 53 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 54 | # CHECK: ldr r0, [r2], #15 |
| 55 | 0x0f 0x00 0x92 0xe4 |
| 56 | |
Johnny Chen | 3dfb80a | 2011-04-01 20:21:38 +0000 | [diff] [blame] | 57 | # CHECK: ldr r5, [r7, -r10, lsl #2] |
| 58 | 0x0a 0x51 0x17 0xe7 |
| 59 | |
Johnny Chen | 2b7aba1 | 2010-04-16 19:57:21 +0000 | [diff] [blame] | 60 | # CHECK: ldrh r0, [r2], #0 |
| 61 | 0xb0 0x00 0xd2 0xe0 |
| 62 | |
Owen Anderson | e0152a7 | 2011-08-09 20:55:18 +0000 | [diff] [blame] | 63 | # CHECK: ldrh r0, [r2] |
| 64 | 0xb0 0x00 0xd2 0xe1 |
| 65 | |
Johnny Chen | 1d3ee60 | 2010-04-15 23:23:40 +0000 | [diff] [blame] | 66 | # CHECK: ldrht r0, [r2], #15 |
| 67 | 0xbf 0x00 0xf2 0xe0 |
| 68 | |
Johnny Chen | acbc06c | 2010-04-15 23:12:47 +0000 | [diff] [blame] | 69 | # CHECK: ldrsbtvs lr, [r2], -r9 |
Owen Anderson | e0152a7 | 2011-08-09 20:55:18 +0000 | [diff] [blame] | 70 | 0xd9 0xe0 0x32 0x60 |
Johnny Chen | acbc06c | 2010-04-15 23:12:47 +0000 | [diff] [blame] | 71 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 72 | # CHECK: lsls r0, r2, #31 |
| 73 | 0x82 0x0f 0xb0 0xe1 |
| 74 | |
Owen Anderson | ec47597 | 2011-01-13 22:38:16 +0000 | [diff] [blame] | 75 | # CHECK: mcr2 p0, #0, r2, c1, c0, #7 |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 76 | 0xf0 0x20 0x01 0xfe |
| 77 | |
| 78 | # CHECK: movt r8, #65535 |
| 79 | 0xff 0x8f 0x4f 0xe3 |
| 80 | |
Jim Grosbach | 581da64 | 2011-07-11 16:48:36 +0000 | [diff] [blame] | 81 | # CHECK: mvnspl r7, #1073741885 |
Johnny Chen | fc93503 | 2010-04-12 18:46:53 +0000 | [diff] [blame] | 82 | 0xf5 0x71 0xf0 0x53 |
| 83 | |
Bob Wilson | 97886d5 | 2010-08-05 00:34:42 +0000 | [diff] [blame] | 84 | # CHECK-NOT: orr r7, r8, r7, rrx #0 |
| 85 | # CHECK: orr r7, r8, r7, rrx |
| 86 | 0x67 0x70 0x88 0xe1 |
| 87 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 88 | # CHECK: pkhbt r8, r9, r10, lsl #4 |
| 89 | 0x1a 0x82 0x89 0xe6 |
| 90 | |
Johnny Chen | f6e327c6 | 2011-04-05 23:28:00 +0000 | [diff] [blame] | 91 | # CHECK-NOT: pkhbtls r10, r11, r11, lsl #0 |
| 92 | # CHECK: pkhbtls r10, r11, r11 |
| 93 | 0x1b 0xa0 0x8b 0x96 |
| 94 | |
| 95 | # CHECK: pkhtbmi lr, r1, r6, asr #21 |
| 96 | 0xd6 0xea 0x81 0x46 |
Bob Wilson | 942b10f | 2010-08-17 17:23:19 +0000 | [diff] [blame] | 97 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 98 | # CHECK: pop {r0, r2, r4, r6, r8, r10} |
| 99 | 0x55 0x05 0xbd 0xe8 |
| 100 | |
| 101 | # CHECK: push {r0, r2, r4, r6, r8, r10} |
| 102 | 0x55 0x05 0x2d 0xe9 |
| 103 | |
| 104 | # CHECK: qsax r8, r9, r10 |
| 105 | 0x5a 0x8f 0x29 0xe6 |
| 106 | |
| 107 | # CHECK: rfedb r0! |
| 108 | 0x00 0x0a 0x30 0xf9 |
| 109 | |
Jim Grosbach | 51726e2 | 2011-07-29 20:26:09 +0000 | [diff] [blame] | 110 | # CHECK: srsdb sp!, #19 |
| 111 | 0x13 0x05 0x6d 0xf9 |
| 112 | |
| 113 | # CHECK: srsia sp, #9 |
| 114 | 0x09 0x05 0xcd 0xf8 |
| 115 | |
Bob Wilson | adb93e5 | 2010-08-05 18:23:43 +0000 | [diff] [blame] | 116 | # CHECK-NOT: rsbeq r0, r2, r0, lsl #0 |
| 117 | # CHECK: rsbeq r0, r2, r0 |
| 118 | 0x00 0x00 0x62 0x00 |
| 119 | |
Bob Wilson | 5935184 | 2010-10-15 03:23:44 +0000 | [diff] [blame] | 120 | # CHECK-NOT: rscseq r0, r0, r1, lsl #0 |
| 121 | # CHECK: rscseq r0, r0, r1 |
Bob Wilson | 72de307 | 2010-08-05 18:59:36 +0000 | [diff] [blame] | 122 | 0x01 0x00 0xf0 0x00 |
| 123 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 124 | # CHECK: sbcs r0, pc, #1 |
| 125 | 0x01 0x00 0xdf 0xe2 |
| 126 | |
| 127 | # CHECK: sbfx r0, r1, #0, #8 |
| 128 | 0x51 0x00 0xa7 0xe7 |
| 129 | |
| 130 | # CHECK: ssat r8, #1, r10, lsl #8 |
| 131 | 0x1a 0x84 0xa0 0xe6 |
| 132 | |
Bob Wilson | add51311 | 2010-08-11 23:10:46 +0000 | [diff] [blame] | 133 | # CHECK-NOT: ssatmi r0, #17, r12, lsl #0 |
| 134 | # CHECK: ssatmi r0, #17, r12 |
| 135 | 0x1c 0x00 0xb0 0x46 |
| 136 | |
Johnny Chen | 7b999ea | 2010-04-02 22:27:38 +0000 | [diff] [blame] | 137 | # CHECK: stmdb r10!, {r4, r5, r6, r7, lr} |
| 138 | 0xf0 0x40 0x2a 0xe9 |
| 139 | |
| 140 | # CHECK: teq r0, #31 |
| 141 | 0x1f 0x00 0x30 0xe3 |
| 142 | |
| 143 | # CHECK: ubfx r0, r0, #16, #1 |
| 144 | 0x50 0x08 0xe0 0xe7 |
| 145 | |
Johnny Chen | 74491bb | 2010-08-12 01:40:54 +0000 | [diff] [blame] | 146 | # CHECK: usat r8, #0, r10, asr #32 |
| 147 | 0x5a 0x80 0xe0 0xe6 |
Jim Grosbach | 7e72ec6 | 2010-10-13 21:00:04 +0000 | [diff] [blame] | 148 | |
| 149 | # CHECK: setend be |
| 150 | 0x00 0x02 0x01 0xf1 |
| 151 | |
| 152 | # CHECK: setend le |
| 153 | 0x00 0x00 0x01 0xf1 |
Bruno Cardoso Lopes | 90d1dfe | 2011-02-14 13:09:44 +0000 | [diff] [blame] | 154 | |
| 155 | # CHECK: cpsie aif |
| 156 | 0xc0 0x01 0x08 0xf1 |
| 157 | |
| 158 | # CHECK: cps #15 |
| 159 | 0x0f 0x00 0x02 0xf1 |
| 160 | |
| 161 | # CHECK: cpsie if, #10 |
| 162 | 0xca 0x00 0x0a 0xf1 |
Bruno Cardoso Lopes | 9cd4397 | 2011-02-18 19:45:59 +0000 | [diff] [blame] | 163 | |
Jim Grosbach | d25c2cd | 2011-07-19 22:45:10 +0000 | [diff] [blame] | 164 | # CHECK: msr CPSR_fc, r0 |
Bruno Cardoso Lopes | 9cd4397 | 2011-02-18 19:45:59 +0000 | [diff] [blame] | 165 | 0x00 0xf0 0x29 0xe1 |
Kevin Enderby | b8b6041 | 2011-03-02 23:08:33 +0000 | [diff] [blame] | 166 | |
Jim Grosbach | d25c2cd | 2011-07-19 22:45:10 +0000 | [diff] [blame] | 167 | # CHECK: msrmi CPSR_c, #4043309056 |
Johnny Chen | a0f0b5d | 2011-03-29 21:52:02 +0000 | [diff] [blame] | 168 | 0xf1 0xf4 0x21 0x43 |
| 169 | |
Kevin Enderby | b8b6041 | 2011-03-02 23:08:33 +0000 | [diff] [blame] | 170 | # CHECK: rsbs r6, r7, r8 |
| 171 | 0x08 0x60 0x77 0xe0 |
Bob Wilson | ec84568 | 2011-03-03 01:41:01 +0000 | [diff] [blame] | 172 | |
| 173 | # CHECK: blxeq r5 |
| 174 | 0x35 0xff 0x2f 0x01 |
Bob Wilson | 6f6d739 | 2011-03-03 07:19:52 +0000 | [diff] [blame] | 175 | |
| 176 | # CHECK: bx r12 |
| 177 | 0x1c 0xff 0x2f 0xe1 |
Johnny Chen | 9363d41 | 2011-03-09 20:01:14 +0000 | [diff] [blame] | 178 | |
Johnny Chen | a0c9c75 | 2011-05-22 17:51:04 +0000 | [diff] [blame] | 179 | # CHECK: bxeq r5 |
| 180 | 0x15 0xff 0x2f 0x01 |
| 181 | |
Johnny Chen | 9363d41 | 2011-03-09 20:01:14 +0000 | [diff] [blame] | 182 | # CHECK: uqadd16mi r6, r11, r8 |
Owen Anderson | e0152a7 | 2011-08-09 20:55:18 +0000 | [diff] [blame] | 183 | 0x18 0x6F 0x6b 0x46 |
Johnny Chen | 7a2873d | 2011-03-15 01:13:17 +0000 | [diff] [blame] | 184 | |
| 185 | # CHECK: str r0, [sp, #4] |
| 186 | 0x04 0x00 0x8d 0xe5 |
| 187 | |
| 188 | # CHECK: str r1, [sp] |
| 189 | 0x00 0x10 0x8d 0xe5 |
| 190 | |
| 191 | # CHECK: ldr r3, [pc, #144] |
| 192 | 0x90 0x30 0x9f 0xe5 |
| 193 | |
Johnny Chen | fe6fba3 | 2011-04-01 18:26:38 +0000 | [diff] [blame] | 194 | # CHECK: ldr r3, [r0, #-4] |
| 195 | 0x4 0x30 0x10 0xe5 |
| 196 | |
| 197 | # CHECK: ldr r5, [sp, r0, lsl #1]! |
| 198 | 0x80 0x50 0xbd 0xe7 |
| 199 | |
| 200 | # CHECK: ldr r5, [r7], -r0, lsr #2 |
| 201 | 0x20 0x51 0x17 0xe6 |
| 202 | |
Johnny Chen | 7a2873d | 2011-03-15 01:13:17 +0000 | [diff] [blame] | 203 | # CHECK: strdeq r2, r3, [r0], -r8 |
| 204 | 0xf8 0x24 0x00 0x00 |
Johnny Chen | 0c5f670 | 2011-03-19 01:16:20 +0000 | [diff] [blame] | 205 | |
Johnny Chen | 56c15c6 | 2011-04-05 18:53:14 +0000 | [diff] [blame] | 206 | # CHECK: ldrdeq r2, r3, [r0], -r12 |
Johnny Chen | 0c5f670 | 2011-03-19 01:16:20 +0000 | [diff] [blame] | 207 | 0xdc 0x24 0x00 0x00 |
Johnny Chen | 30350cd | 2011-03-22 22:28:49 +0000 | [diff] [blame] | 208 | |
| 209 | # CHECK: ldrbt r3, [r4], -r5, lsl #12 |
| 210 | 0x05 0x36 0x74 0xe6 |
Johnny Chen | 122a630 | 2011-03-22 23:08:56 +0000 | [diff] [blame] | 211 | |
| 212 | # CHECK: vcmpe.f64 d8, #0 |
| 213 | 0xc0 0x8b 0xb5 0xee |
Johnny Chen | f949d8e | 2011-03-24 00:28:38 +0000 | [diff] [blame] | 214 | |
Johnny Chen | ec6f76e | 2011-03-29 19:08:52 +0000 | [diff] [blame] | 215 | # CHECK: vldmdb r2!, {s7, s8, s9, s10, s11} |
| 216 | 0x05 0x3a 0x72 0xed |
| 217 | |
| 218 | # CHECK: vldr.32 s23, [r2, #660] |
| 219 | 0xa5 0xba 0xd2 0xed |
| 220 | |
Johnny Chen | 1de8cc6 | 2011-03-24 01:07:26 +0000 | [diff] [blame] | 221 | # CHECK: strtvc r5, [r3], r0, lsr #20 |
Johnny Chen | 0ec0e98 | 2011-04-06 01:18:32 +0000 | [diff] [blame] | 222 | 0x20 0x5a 0xa3 0x76 |
Johnny Chen | 0f5d52d | 2011-03-24 01:40:42 +0000 | [diff] [blame] | 223 | |
| 224 | # CHECK: stmiblo sp, {r0, r4, r8, r11, r12, pc} |
| 225 | 0x11 0x99 0x8d 0x39 |
| 226 | |
| 227 | # CHECK: ldmdb sp, {r0, r4, r8, r11, r12, pc} |
| 228 | 0x11 0x99 0x1d 0xe9 |
Johnny Chen | aa84d41 | 2011-03-25 17:31:16 +0000 | [diff] [blame] | 229 | |
| 230 | # CHECK: swpge r3, r2, [r6] |
| 231 | 0x92 0x30 0x06 0xa1 |
Johnny Chen | 1572bf4 | 2011-03-25 23:02:58 +0000 | [diff] [blame] | 232 | |
| 233 | # CHECK: umull r1, r2, r3, r4 |
| 234 | 0x93 0x14 0x82 0xe0 |
Johnny Chen | f9cd139 | 2011-03-28 18:41:58 +0000 | [diff] [blame] | 235 | |
Owen Anderson | e0152a7 | 2011-08-09 20:55:18 +0000 | [diff] [blame] | 236 | # CHECK: pldw [pc, #-0] |
Johnny Chen | f9cd139 | 2011-03-28 18:41:58 +0000 | [diff] [blame] | 237 | 0x00 0xf0 0x1f 0xf5 |
| 238 | |
| 239 | # CHECK: pli [pc, #-0] |
| 240 | 0x00 0xf0 0x5f 0xf4 |
| 241 | |
| 242 | # CHECK: pli [r3, r1, lsl #2] |
| 243 | 0x01 0xf1 0xd3 0xf6 |
Johnny Chen | 4bc2bae | 2011-03-29 19:49:38 +0000 | [diff] [blame] | 244 | |
| 245 | # CHECK: stc p2, cr4, [r9], {157} |
| 246 | 0x9d 0x42 0x89 0xec |
| 247 | |
| 248 | # CHECK: stc2 p2, cr4, [r9], {157} |
| 249 | 0x9d 0x42 0x89 0xfc |
Johnny Chen | 13baa0e | 2011-03-31 17:53:50 +0000 | [diff] [blame] | 250 | |
Benjamin Kramer | 406dc17 | 2011-08-09 22:02:50 +0000 | [diff] [blame] | 251 | # CHECK: bne #-24 |
| 252 | 0xfa 0xff 0xff 0x1a |
| 253 | |
Johnny Chen | 13baa0e | 2011-03-31 17:53:50 +0000 | [diff] [blame] | 254 | # CHECK: blx #60 |
| 255 | 0x0f 0x00 0x00 0xfa |
Johnny Chen | 1e1010f | 2011-04-01 22:32:51 +0000 | [diff] [blame] | 256 | |
| 257 | # CHECK-NOT: adcs r10, r8, r0, asr #6 |
| 258 | # CHECK: adcshi r10, r8, r0, asr #6 |
| 259 | 0x40 0xa3 0xb8 0x80 |
| 260 | |
| 261 | # CHECK: adcshi r10, r8, r0, asr r3 |
| 262 | 0x50 0xa3 0xb8 0x80 |
Johnny Chen | 8904cc4 | 2011-04-02 02:24:54 +0000 | [diff] [blame] | 263 | |
| 264 | # CHECK: streq r1, [sp], #-1567 |
| 265 | 0x1f 0x16 0xd 0x4 |
Johnny Chen | e9c644d | 2011-04-05 20:32:23 +0000 | [diff] [blame] | 266 | |
| 267 | # CHECK: mrchs p2, #3, r11, c13, c6, #6 |
| 268 | 0xd6 0xb2 0x7d 0x2e |
Johnny Chen | 0ec0e98 | 2011-04-06 01:18:32 +0000 | [diff] [blame] | 269 | |
| 270 | # CHECK: smlsldx r4, r12, r11, r4 |
| 271 | 0x7b 0x44 0x4c 0xe7 |
Johnny Chen | 194a226 | 2011-04-07 18:33:19 +0000 | [diff] [blame] | 272 | |
| 273 | # CHECK: lsl r3, r2, r1 |
| 274 | 0x12 0x31 0xa0 0xe1 |
Johnny Chen | 04efb8f | 2011-04-07 19:28:58 +0000 | [diff] [blame] | 275 | |
| 276 | # CHECK: sxtab r9, r8, r5 |
| 277 | 0x75 0x90 0xa8 0xe6 |
| 278 | |
| 279 | # CHECK: sxtb r9, r5, ror #8 |
| 280 | 0x75 0x94 0xaf 0xe6 |
Johnny Chen | 7e51b46 | 2011-04-08 00:29:09 +0000 | [diff] [blame] | 281 | |
| 282 | # CHECK: bfc r5, #0, #16 |
| 283 | 0x1f 0x50 0xcf 0xe7 |
| 284 | |
| 285 | # CHECK: bfi r5, r6, #0, #16 |
| 286 | 0x16 0x50 0xcf 0xe7 |
| 287 | |
| 288 | # CHECK: sbfx r5, r6, #8, #8 |
| 289 | 0x56 0x54 0xa7 0xe7 |
| 290 | |
| 291 | # CHECK: rsb pc, r5, r0 |
| 292 | 0x00 0xf0 0x65 0xe0 |
| 293 | |
| 294 | # CHECK: uqadd8 r5, r6, r7 |
| 295 | 0x97 0x5f 0x66 0xe6 |
| 296 | |
| 297 | # CHECK: uqsax r5, r6, r7 |
| 298 | 0x57 0x5f 0x66 0xe6 |
Johnny Chen | a9570f7 | 2011-04-08 19:41:22 +0000 | [diff] [blame] | 299 | |
| 300 | # CHECK: smmlareq r0, r0, r0, r0 |
| 301 | 0x30 0x00 0x50 0x07 |
Johnny Chen | c3c7001 | 2011-04-27 23:29:21 +0000 | [diff] [blame] | 302 | |
| 303 | # CHECK: nop |
| 304 | 0x00 0xf0 0x20 0xe3 |
Owen Anderson | e33c95d | 2011-08-11 18:41:59 +0000 | [diff] [blame] | 305 | |
| 306 | # CHECK: andeq r0, r0, r0, lsr #32 |
| 307 | 0x20 0x00 0x00 0x00 |
Owen Anderson | 3a850f2 | 2011-08-11 20:47:56 +0000 | [diff] [blame] | 308 | |
| 309 | # CHECK: strb r3, [r2], #1 |
| 310 | 0x01 0x30 0xc2 0xe4 |
Owen Anderson | f746b0e | 2011-08-15 20:12:03 +0000 | [diff] [blame^] | 311 | |
| 312 | # CHECK: strheq r0, [r0, -r0] |
| 313 | 0xb0 0x00 0x00 0x01 |