1 @ RUN: llvm-mc < %s -triple armv7-unknown-unknown -show-encoding -mattr=+neon,+vfp4 | FileCheck %s --check-prefix=ARM 2 @ RUN: llvm-mc < %s -triple thumbv7-unknown-unknown -show-encoding -mattr=+neon,+vfp4 | FileCheck %s --check-prefix=THUMB 3 @ RUN: not llvm-mc < %s -triple thumbv7-unknown-unknown -show-encoding -mcpu=cortex-m4 > %t 2> %t2 4 @ RUN: FileCheck %s < %t --check-prefix=THUMB_V7EM 5 @ RUN: FileCheck %s < %t2 --check-prefix=THUMB_V7EM-ERRORS 6 7 @ ARM: vfma.f64 d16, d18, d17 @ encoding: [0xa1,0x0b,0xe2,0xee] 8 @ THUMB: vfma.f64 d16, d18, d17 @ encoding: [0xe2,0xee,0xa1,0x0b] 9 @ THUMB_V7EM-ERRORS: error: invalid operand for instruction 10 @ THUMB_V7EM-ERRORS-NEXT: vfma.f64 d16, d18, d17 11 vfma.f64 d16, d18, d17 12 13 @ ARM: vfma.f32 s2, s4, s0 @ encoding: [0x00,0x1a,0xa2,0xee] 14 @ THUMB: vfma.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x00,0x1a] 15 @ THUMB_V7EM: vfma.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x00,0x1a] 16 vfma.f32 s2, s4, s0 17 18 @ ARM: vfma.f32 d16, d18, d17 @ encoding: [0xb1,0x0c,0x42,0xf2] 19 @ THUMB: vfma.f32 d16, d18, d17 @ encoding: [0x42,0xef,0xb1,0x0c] 20 @ THUMB_V7EM-ERRORS: error: invalid operand for instruction 21 @ THUMB_V7EM-ERRORS-NEXT: vfma.f32 d16, d18, d17 22 vfma.f32 d16, d18, d17 23 24 @ ARM: vfma.f32 q2, q4, q0 @ encoding: [0x50,0x4c,0x08,0xf2] 25 @ THUMB: vfma.f32 q2, q4, q0 @ encoding: [0x08,0xef,0x50,0x4c] 26 @ THUMB_V7EM-ERRORS: error: instruction requires: NEON 27 @ THUMB_V7EM-ERRORS-NEXT: vfma.f32 q2, q4, q0 28 vfma.f32 q2, q4, q0 29 30 @ ARM: vfnma.f64 d16, d18, d17 @ encoding: [0xe1,0x0b,0xd2,0xee] 31 @ THUMB: vfnma.f64 d16, d18, d17 @ encoding: [0xd2,0xee,0xe1,0x0b] 32 @ THUMB_V7EM-ERRORS: error: invalid operand for instruction 33 @ THUMB_V7EM-ERRORS-NEXT: vfnma.f64 d16, d18, d17 34 vfnma.f64 d16, d18, d17 35 36 @ ARM: vfnma.f32 s2, s4, s0 @ encoding: [0x40,0x1a,0x92,0xee] 37 @ THUMB: vfnma.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x40,0x1a] 38 @ THUMB_V7EM: vfnma.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x40,0x1a] 39 vfnma.f32 s2, s4, s0 40 41 @ ARM: vfms.f64 d16, d18, d17 @ encoding: [0xe1,0x0b,0xe2,0xee] 42 @ THUMB: vfms.f64 d16, d18, d17 @ encoding: [0xe2,0xee,0xe1,0x0b] 43 @ THUMB_V7EM-ERRORS: error: invalid operand for instruction 44 @ THUMB_V7EM-ERRORS-NEXT: vfms.f64 d16, d18, d17 45 vfms.f64 d16, d18, d17 46 47 @ ARM: vfms.f32 s2, s4, s0 @ encoding: [0x40,0x1a,0xa2,0xee] 48 @ THUMB: vfms.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x40,0x1a] 49 @ THUMB_V7EM: vfms.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x40,0x1a] 50 vfms.f32 s2, s4, s0 51 52 @ ARM: vfms.f32 d16, d18, d17 @ encoding: [0xb1,0x0c,0x62,0xf2] 53 @ THUMB: vfms.f32 d16, d18, d17 @ encoding: [0x62,0xef,0xb1,0x0c] 54 @ THUMB_V7EM-ERRORS: error: invalid operand for instruction 55 @ THUMB_V7EM-ERRORS-NEXT: vfms.f32 d16, d18, d17 56 vfms.f32 d16, d18, d17 57 58 @ ARM: vfms.f32 q2, q4, q0 @ encoding: [0x50,0x4c,0x28,0xf2] 59 @ THUMB: vfms.f32 q2, q4, q0 @ encoding: [0x28,0xef,0x50,0x4c] 60 @ THUMB_V7EM-ERRORS: error: instruction requires: NEON 61 @ THUMB_V7EM-ERRORS-NEXT: vfms.f32 q2, q4, q0 62 vfms.f32 q2, q4, q0 63 64 @ ARM: vfnms.f64 d16, d18, d17 @ encoding: [0xa1,0x0b,0xd2,0xee] 65 @ THUMB: vfnms.f64 d16, d18, d17 @ encoding: [0xd2,0xee,0xa1,0x0b] 66 @ THUMB_V7EM-ERRORS: error: invalid operand for instruction 67 @ THUMB_V7EM-ERRORS-NEXT: vfnms.f64 d16, d18, d17 68 vfnms.f64 d16, d18, d17 69 70 @ ARM: vfnms.f32 s2, s4, s0 @ encoding: [0x00,0x1a,0x92,0xee] 71 @ THUMB: vfnms.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x00,0x1a] 72 @ THUMB_V7EM: vfnms.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x00,0x1a] 73 vfnms.f32 s2, s4, s0 74