simple-fp-encoding.s revision bfb3c5a50c0c01073658ec9d3504532c6eeb2115
1@ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s 2 3 vadd.f64 d16, d17, d16 4 vadd.f32 s0, s1, s0 5@ CHECK: vadd.f64 d16, d17, d16 @ encoding: [0xa0,0x0b,0x71,0xee] 6@ CHECK: vadd.f32 s0, s1, s0 @ encoding: [0x80,0x0a,0x30,0xee] 7 8 vsub.f64 d16, d17, d16 9 vsub.f32 s0, s1, s0 10@ CHECK: vsub.f64 d16, d17, d16 @ encoding: [0xe0,0x0b,0x71,0xee] 11@ CHECK: vsub.f32 s0, s1, s0 @ encoding: [0xc0,0x0a,0x30,0xee] 12 13 vdiv.f64 d16, d17, d16 14 vdiv.f32 s0, s1, s0 15 16@ CHECK: vdiv.f64 d16, d17, d16 @ encoding: [0xa0,0x0b,0xc1,0xee] 17@ CHECK: vdiv.f32 s0, s1, s0 @ encoding: [0x80,0x0a,0x80,0xee] 18 19 vmul.f64 d16, d17, d16 20 vmul.f64 d20, d17 21 vmul.f32 s0, s1, s0 22 vmul.f32 s11, s21 23 24 25@ CHECK: vmul.f64 d16, d17, d16 @ encoding: [0xa0,0x0b,0x61,0xee] 26@ CHECK: vmul.f64 d20, d20, d17 @ encoding: [0xa1,0x4b,0x64,0xee] 27@ CHECK: vmul.f32 s0, s1, s0 @ encoding: [0x80,0x0a,0x20,0xee] 28@ CHECK: vmul.f32 s11, s11, s21 @ encoding: [0xaa,0x5a,0x65,0xee] 29 30 vnmul.f64 d16, d17, d16 31 vnmul.f32 s0, s1, s0 32 33@ CHECK: vnmul.f64 d16, d17, d16 @ encoding: [0xe0,0x0b,0x61,0xee] 34@ CHECK: vnmul.f32 s0, s1, s0 @ encoding: [0xc0,0x0a,0x20,0xee] 35 36 vcmpe.f64 d17, d16 37 vcmpe.f32 s1, s0 38 39@ CHECK: vcmpe.f64 d17, d16 @ encoding: [0xe0,0x1b,0xf4,0xee] 40@ CHECK: vcmpe.f32 s1, s0 @ encoding: [0xc0,0x0a,0xf4,0xee] 41 42 vcmpe.f64 d16, #0 43 vcmpe.f32 s0, #0 44 45@ CHECK: vcmpe.f64 d16, #0 @ encoding: [0xc0,0x0b,0xf5,0xee] 46@ CHECK: vcmpe.f32 s0, #0 @ encoding: [0xc0,0x0a,0xb5,0xee] 47 48 vabs.f64 d16, d16 49 vabs.f32 s0, s0 50 51@ CHECK: vabs.f64 d16, d16 @ encoding: [0xe0,0x0b,0xf0,0xee] 52@ CHECK: vabs.f32 s0, s0 @ encoding: [0xc0,0x0a,0xb0,0xee] 53 54 vcvt.f32.f64 s0, d16 55 vcvt.f64.f32 d16, s0 56 57@ CHECK: vcvt.f32.f64 s0, d16 @ encoding: [0xe0,0x0b,0xb7,0xee] 58@ CHECK: vcvt.f64.f32 d16, s0 @ encoding: [0xc0,0x0a,0xf7,0xee] 59 60 vneg.f64 d16, d16 61 vneg.f32 s0, s0 62 63@ CHECK: vneg.f64 d16, d16 @ encoding: [0x60,0x0b,0xf1,0xee] 64@ CHECK: vneg.f32 s0, s0 @ encoding: [0x40,0x0a,0xb1,0xee] 65 66 vsqrt.f64 d16, d16 67 vsqrt.f32 s0, s0 68 69@ CHECK: vsqrt.f64 d16, d16 @ encoding: [0xe0,0x0b,0xf1,0xee] 70@ CHECK: vsqrt.f32 s0, s0 @ encoding: [0xc0,0x0a,0xb1,0xee] 71 72 vcvt.f64.s32 d16, s0 73 vcvt.f32.s32 s0, s0 74 vcvt.f64.u32 d16, s0 75 vcvt.f32.u32 s0, s0 76 vcvt.s32.f64 s0, d16 77 vcvt.s32.f32 s0, s0 78 vcvt.u32.f64 s0, d16 79 vcvt.u32.f32 s0, s0 80 81@ CHECK: vcvt.f64.s32 d16, s0 @ encoding: [0xc0,0x0b,0xf8,0xee] 82@ CHECK: vcvt.f32.s32 s0, s0 @ encoding: [0xc0,0x0a,0xb8,0xee] 83@ CHECK: vcvt.f64.u32 d16, s0 @ encoding: [0x40,0x0b,0xf8,0xee] 84@ CHECK: vcvt.f32.u32 s0, s0 @ encoding: [0x40,0x0a,0xb8,0xee] 85@ CHECK: vcvt.s32.f64 s0, d16 @ encoding: [0xe0,0x0b,0xbd,0xee] 86@ CHECK: vcvt.s32.f32 s0, s0 @ encoding: [0xc0,0x0a,0xbd,0xee] 87@ CHECK: vcvt.u32.f64 s0, d16 @ encoding: [0xe0,0x0b,0xbc,0xee] 88@ CHECK: vcvt.u32.f32 s0, s0 @ encoding: [0xc0,0x0a,0xbc,0xee] 89 90 91 vmla.f64 d16, d18, d17 92 vmla.f32 s1, s2, s0 93 94@ CHECK: vmla.f64 d16, d18, d17 @ encoding: [0xa1,0x0b,0x42,0xee] 95@ CHECK: vmla.f32 s1, s2, s0 @ encoding: [0x00,0x0a,0x41,0xee] 96 97 vmls.f64 d16, d18, d17 98 vmls.f32 s1, s2, s0 99 100@ CHECK: vmls.f64 d16, d18, d17 @ encoding: [0xe1,0x0b,0x42,0xee] 101@ CHECK: vmls.f32 s1, s2, s0 @ encoding: [0x40,0x0a,0x41,0xee] 102 103 vnmla.f64 d16, d18, d17 104 vnmla.f32 s1, s2, s0 105 106@ CHECK: vnmla.f64 d16, d18, d17 @ encoding: [0xe1,0x0b,0x52,0xee] 107@ CHECK: vnmla.f32 s1, s2, s0 @ encoding: [0x40,0x0a,0x51,0xee] 108 109 vnmls.f64 d16, d18, d17 110 vnmls.f32 s1, s2, s0 111 112@ CHECK: vnmls.f64 d16, d18, d17 @ encoding: [0xa1,0x0b,0x52,0xee] 113@ CHECK: vnmls.f32 s1, s2, s0 @ encoding: [0x00,0x0a,0x51,0xee] 114 115 vmrs APSR_nzcv, fpscr 116 vmrs apsr_nzcv, fpscr 117 fmstat 118 vmrs r2, fpsid 119 vmrs r3, FPSID 120 vmrs r4, mvfr0 121 vmrs r5, MVFR1 122 123@ CHECK: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee] 124@ CHECK: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee] 125@ CHECK: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee] 126@ CHECK: vmrs r2, fpsid @ encoding: [0x10,0x2a,0xf0,0xee] 127@ CHECK: vmrs r3, fpsid @ encoding: [0x10,0x3a,0xf0,0xee] 128@ CHECK: vmrs r4, mvfr0 @ encoding: [0x10,0x4a,0xf7,0xee] 129@ CHECK: vmrs r5, mvfr1 @ encoding: [0x10,0x5a,0xf6,0xee] 130 131@ CHECK: vnegne.f64 d16, d16 @ encoding: [0x60,0x0b,0xf1,0x1e] 132 vnegne.f64 d16, d16 133 134@ CHECK: vmovne s0, r0 @ encoding: [0x10,0x0a,0x00,0x1e] 135@ CHECK: vmoveq s0, r1 @ encoding: [0x10,0x1a,0x00,0x0e] 136 vmovne s0, r0 137 vmoveq s0, r1 138 139 vmov.f32 r1, s2 140 vmov.f32 s4, r3 141 vmov.f64 r1, r5, d2 142 vmov.f64 d4, r3, r9 143 144@ CHECK: vmov r1, s2 @ encoding: [0x10,0x1a,0x11,0xee] 145@ CHECK: vmov s4, r3 @ encoding: [0x10,0x3a,0x02,0xee] 146@ CHECK: vmov r1, r5, d2 @ encoding: [0x12,0x1b,0x55,0xec] 147@ CHECK: vmov d4, r3, r9 @ encoding: [0x14,0x3b,0x49,0xec] 148 149@ CHECK: vmrs r0, fpscr @ encoding: [0x10,0x0a,0xf1,0xee] 150 vmrs r0, fpscr 151@ CHECK: vmrs r0, fpexc @ encoding: [0x10,0x0a,0xf8,0xee] 152 vmrs r0, fpexc 153@ CHECK: vmrs r0, fpsid @ encoding: [0x10,0x0a,0xf0,0xee] 154 vmrs r0, fpsid 155 156@ CHECK: vmsr fpscr, r0 @ encoding: [0x10,0x0a,0xe1,0xee] 157 vmsr fpscr, r0 158@ CHECK: vmsr fpexc, r0 @ encoding: [0x10,0x0a,0xe8,0xee] 159 vmsr fpexc, r0 160@ CHECK: vmsr fpsid, r0 @ encoding: [0x10,0x0a,0xe0,0xee] 161 vmsr fpsid, r0 162 163 vmov.f64 d16, #3.000000e+00 164 vmov.f32 s0, #3.000000e+00 165 vmov.f64 d16, #-3.000000e+00 166 vmov.f32 s0, #-3.000000e+00 167 168@ CHECK: vmov.f64 d16, #3.000000e+00 @ encoding: [0x08,0x0b,0xf0,0xee] 169@ CHECK: vmov.f32 s0, #3.000000e+00 @ encoding: [0x08,0x0a,0xb0,0xee] 170@ CHECK: vmov.f64 d16, #-3.000000e+00 @ encoding: [0x08,0x0b,0xf8,0xee] 171@ CHECK: vmov.f32 s0, #-3.000000e+00 @ encoding: [0x08,0x0a,0xb8,0xee] 172 173@ CHECK: vmov s0, r0 @ encoding: [0x10,0x0a,0x00,0xee] 174@ CHECK: vmov s1, r1 @ encoding: [0x90,0x1a,0x00,0xee] 175@ CHECK: vmov s2, r2 @ encoding: [0x10,0x2a,0x01,0xee] 176@ CHECK: vmov s3, r3 @ encoding: [0x90,0x3a,0x01,0xee] 177 vmov s0, r0 178 vmov s1, r1 179 vmov s2, r2 180 vmov s3, r3 181 182@ CHECK: vmov r0, s0 @ encoding: [0x10,0x0a,0x10,0xee] 183@ CHECK: vmov r1, s1 @ encoding: [0x90,0x1a,0x10,0xee] 184@ CHECK: vmov r2, s2 @ encoding: [0x10,0x2a,0x11,0xee] 185@ CHECK: vmov r3, s3 @ encoding: [0x90,0x3a,0x11,0xee] 186 vmov r0, s0 187 vmov r1, s1 188 vmov r2, s2 189 vmov r3, s3 190 191@ CHECK: vmov r0, r1, d16 @ encoding: [0x30,0x0b,0x51,0xec] 192 vmov r0, r1, d16 193 194@ CHECK: vldr d17, [r0] @ encoding: [0x00,0x1b,0xd0,0xed] 195@ CHECK: vldr s0, [lr] @ encoding: [0x00,0x0a,0x9e,0xed] 196@ CHECK: vldr d0, [lr] @ encoding: [0x00,0x0b,0x9e,0xed] 197 198 vldr.64 d17, [r0] 199 vldr.i32 s0, [lr] 200 vldr.d d0, [lr] 201 202@ CHECK: vldr d1, [r2, #32] @ encoding: [0x08,0x1b,0x92,0xed] 203@ CHECK: vldr d1, [r2, #-32] @ encoding: [0x08,0x1b,0x12,0xed] 204 vldr.64 d1, [r2, #32] 205 vldr.f64 d1, [r2, #-32] 206 207@ CHECK: vldr d2, [r3] @ encoding: [0x00,0x2b,0x93,0xed] 208 vldr.64 d2, [r3] 209 210@ CHECK: vldr d3, [pc] @ encoding: [0x00,0x3b,0x9f,0xed] 211@ CHECK: vldr d3, [pc] @ encoding: [0x00,0x3b,0x9f,0xed] 212@ CHECK: vldr d3, [pc, #-0] @ encoding: [0x00,0x3b,0x1f,0xed] 213 vldr.64 d3, [pc] 214 vldr.64 d3, [pc,#0] 215 vldr.64 d3, [pc,#-0] 216 217@ CHECK: vldr s13, [r0] @ encoding: [0x00,0x6a,0xd0,0xed] 218 vldr.32 s13, [r0] 219 220@ CHECK: vldr s1, [r2, #32] @ encoding: [0x08,0x0a,0xd2,0xed] 221@ CHECK: vldr s1, [r2, #-32] @ encoding: [0x08,0x0a,0x52,0xed] 222 vldr.32 s1, [r2, #32] 223 vldr.32 s1, [r2, #-32] 224 225@ CHECK: vldr s2, [r3] @ encoding: [0x00,0x1a,0x93,0xed] 226 vldr.32 s2, [r3] 227 228@ CHECK: vldr s5, [pc] @ encoding: [0x00,0x2a,0xdf,0xed] 229@ CHECK: vldr s5, [pc] @ encoding: [0x00,0x2a,0xdf,0xed] 230@ CHECK: vldr s5, [pc, #-0] @ encoding: [0x00,0x2a,0x5f,0xed] 231 vldr.32 s5, [pc] 232 vldr.32 s5, [pc,#0] 233 vldr.32 s5, [pc,#-0] 234 235@ CHECK: vstr d4, [r1] @ encoding: [0x00,0x4b,0x81,0xed] 236@ CHECK: vstr d4, [r1, #24] @ encoding: [0x06,0x4b,0x81,0xed] 237@ CHECK: vstr d4, [r1, #-24] @ encoding: [0x06,0x4b,0x01,0xed] 238@ CHECK: vstr s0, [lr] @ encoding: [0x00,0x0a,0x8e,0xed] 239@ CHECK: vstr d0, [lr] @ encoding: [0x00,0x0b,0x8e,0xed] 240 241 vstr.64 d4, [r1] 242 vstr.64 d4, [r1, #24] 243 vstr.64 d4, [r1, #-24] 244 vstr s0, [lr] 245 vstr d0, [lr] 246 247@ CHECK: vstr s4, [r1] @ encoding: [0x00,0x2a,0x81,0xed] 248@ CHECK: vstr s4, [r1, #24] @ encoding: [0x06,0x2a,0x81,0xed] 249@ CHECK: vstr s4, [r1, #-24] @ encoding: [0x06,0x2a,0x01,0xed] 250 vstr.32 s4, [r1] 251 vstr.32 s4, [r1, #24] 252 vstr.32 s4, [r1, #-24] 253 254@ CHECK: vldmia r1, {d2, d3, d4, d5, d6, d7} @ encoding: [0x0c,0x2b,0x91,0xec] 255@ CHECK: vldmia r1, {s2, s3, s4, s5, s6, s7} @ encoding: [0x06,0x1a,0x91,0xec] 256 vldmia r1, {d2,d3-d6,d7} 257 vldmia r1, {s2,s3-s6,s7} 258 259@ CHECK: vstmia r1, {d2, d3, d4, d5, d6, d7} @ encoding: [0x0c,0x2b,0x81,0xec] 260@ CHECK: vstmia r1, {s2, s3, s4, s5, s6, s7} @ encoding: [0x06,0x1a,0x81,0xec] 261@ CHECK: vpush {d8, d9, d10, d11, d12, d13, d14, d15} @ encoding: [0x10,0x8b,0x2d,0xed] 262 vstmia r1, {d2,d3-d6,d7} 263 vstmia r1, {s2,s3-s6,s7} 264 vstmdb sp!, {q4-q7} 265 266@ CHECK: vcvtr.s32.f64 s0, d0 @ encoding: [0x40,0x0b,0xbd,0xee] 267@ CHECK: vcvtr.s32.f32 s0, s1 @ encoding: [0x60,0x0a,0xbd,0xee] 268@ CHECK: vcvtr.u32.f64 s0, d0 @ encoding: [0x40,0x0b,0xbc,0xee] 269@ CHECK: vcvtr.u32.f32 s0, s1 @ encoding: [0x60,0x0a,0xbc,0xee] 270 vcvtr.s32.f64 s0, d0 271 vcvtr.s32.f32 s0, s1 272 vcvtr.u32.f64 s0, d0 273 vcvtr.u32.f32 s0, s1 274 275@ CHECK: vmovne s25, s26, r2, r5 276 vmovne s25, s26, r2, r5 @ encoding: [0x39,0x2a,0x45,0x1c] 277 278@ VMOV w/ optional data type suffix. 279 vmov.32 s1, r8 280 vmov.s16 s2, r4 281 vmov.16 s3, r6 282 vmov.u32 s4, r1 283 vmov.p8 s5, r2 284 vmov.8 s6, r3 285 286 vmov.32 r1, s8 287 vmov.s16 r2, s4 288 vmov.16 r3, s6 289 vmov.u32 r4, s1 290 vmov.p8 r5, s2 291 vmov.8 r6, s3 292 293@ CHECK: vmov s1, r8 @ encoding: [0x90,0x8a,0x00,0xee] 294@ CHECK: vmov s2, r4 @ encoding: [0x10,0x4a,0x01,0xee] 295@ CHECK: vmov s3, r6 @ encoding: [0x90,0x6a,0x01,0xee] 296@ CHECK: vmov s4, r1 @ encoding: [0x10,0x1a,0x02,0xee] 297@ CHECK: vmov s5, r2 @ encoding: [0x90,0x2a,0x02,0xee] 298@ CHECK: vmov s6, r3 @ encoding: [0x10,0x3a,0x03,0xee] 299@ CHECK: vmov r1, s8 @ encoding: [0x10,0x1a,0x14,0xee] 300@ CHECK: vmov r2, s4 @ encoding: [0x10,0x2a,0x12,0xee] 301@ CHECK: vmov r3, s6 @ encoding: [0x10,0x3a,0x13,0xee] 302@ CHECK: vmov r4, s1 @ encoding: [0x90,0x4a,0x10,0xee] 303@ CHECK: vmov r5, s2 @ encoding: [0x10,0x5a,0x11,0xee] 304@ CHECK: vmov r6, s3 @ encoding: [0x90,0x6a,0x11,0xee] 305 306 307@ VCVT (between floating-point and fixed-point) 308 vcvt.f32.u32 s0, s0, #20 309 vcvt.f64.s32 d0, d0, #32 310 vcvt.f32.u16 s0, s0, #1 311 vcvt.f64.s16 d0, d0, #16 312 vcvt.f32.s32 s1, s1, #20 313 vcvt.f64.u32 d20, d20, #32 314 vcvt.f32.s16 s17, s17, #1 315 vcvt.f64.u16 d23, d23, #16 316 vcvt.u32.f32 s12, s12, #20 317 vcvt.s32.f64 d2, d2, #32 318 vcvt.u16.f32 s28, s28, #1 319 vcvt.s16.f64 d15, d15, #16 320 vcvt.s32.f32 s1, s1, #20 321 vcvt.u32.f64 d20, d20, #32 322 vcvt.s16.f32 s17, s17, #1 323 vcvt.u16.f64 d23, d23, #16 324 325@ CHECK: vcvt.f32.u32 s0, s0, #20 @ encoding: [0xc6,0x0a,0xbb,0xee] 326@ CHECK: vcvt.f64.s32 d0, d0, #32 @ encoding: [0xc0,0x0b,0xba,0xee] 327@ CHECK: vcvt.f32.u16 s0, s0, #1 @ encoding: [0x67,0x0a,0xbb,0xee] 328@ CHECK: vcvt.f64.s16 d0, d0, #16 @ encoding: [0x40,0x0b,0xba,0xee] 329@ CHECK: vcvt.f32.s32 s1, s1, #20 @ encoding: [0xc6,0x0a,0xfa,0xee] 330@ CHECK: vcvt.f64.u32 d20, d20, #32 @ encoding: [0xc0,0x4b,0xfb,0xee] 331@ CHECK: vcvt.f32.s16 s17, s17, #1 @ encoding: [0x67,0x8a,0xfa,0xee] 332@ CHECK: vcvt.f64.u16 d23, d23, #16 @ encoding: [0x40,0x7b,0xfb,0xee] 333 334@ CHECK: vcvt.u32.f32 s12, s12, #20 @ encoding: [0xc6,0x6a,0xbf,0xee] 335@ CHECK: vcvt.s32.f64 d2, d2, #32 @ encoding: [0xc0,0x2b,0xbe,0xee] 336@ CHECK: vcvt.u16.f32 s28, s28, #1 @ encoding: [0x67,0xea,0xbf,0xee] 337@ CHECK: vcvt.s16.f64 d15, d15, #16 @ encoding: [0x40,0xfb,0xbe,0xee] 338@ CHECK: vcvt.s32.f32 s1, s1, #20 @ encoding: [0xc6,0x0a,0xfe,0xee] 339@ CHECK: vcvt.u32.f64 d20, d20, #32 @ encoding: [0xc0,0x4b,0xff,0xee] 340@ CHECK: vcvt.s16.f32 s17, s17, #1 @ encoding: [0x67,0x8a,0xfe,0xee] 341@ CHECK: vcvt.u16.f64 d23, d23, #16 @ encoding: [0x40,0x7b,0xff,0xee] 342 343 344@ Use NEON to load some f32 immediates that don't fit the f8 representation. 345 vmov.f32 d4, #0.0 346 vmov.f32 d4, #32.0 347 348@ CHECK: vmov.i32 d4, #0x0 @ encoding: [0x10,0x40,0x80,0xf2] 349@ CHECK: vmov.i32 d4, #0x42000000 @ encoding: [0x12,0x46,0x84,0xf2] 350