brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.8 KiB · 6054a08 Raw
199 lines · plain
1// RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8.3a,+neon,+fullfp16 -show-encoding < %s 2>%t | FileCheck %s --check-prefix=THUMB --check-prefix=FP16-THUMB2// RUN: FileCheck --check-prefix=STDERR --check-prefix=NEON-STDERR <%t %s3// RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8.3a,+neon,+fullfp16 -show-encoding < %s 2>%t | FileCheck %s --check-prefix=ARM --check-prefix=FP16-ARM4// RUN: FileCheck --check-prefix=STDERR --check-prefix=NEON-STDERR <%t %s5 6// RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8.3a,+neon,-fullfp16 -show-encoding < %s 2>%t | FileCheck %s --check-prefix=THUMB7// RUN: FileCheck --check-prefix=STDERR --check-prefix=NO-FP16-STDERR --check-prefix=NEON-STDERR <%t %s8// RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8.3a,+neon,-fullfp16 -show-encoding < %s 2>%t | FileCheck %s --check-prefix=ARM9// RUN: FileCheck --check-prefix=STDERR --check-prefix=NO-FP16-STDERR --check-prefix=NEON-STDERR <%t %s10 11// RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8.3a,-neon,+fullfp16 -show-encoding < %s 2>%t12// RUN: FileCheck --check-prefix=STDERR --check-prefix=NO-NEON-STDERR <%t %s13// RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8.3a,-neon,+fullfp16 -show-encoding < %s 2>%t14// RUN: FileCheck --check-prefix=STDERR --check-prefix=NO-NEON-STDERR <%t %s15 16// RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8.2a,+neon,+fullfp16 -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=V82A17// RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8.2a,+neon,+fullfp16 -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=V82A18 19/* ==== VCMLA vector ==== */20 21// Valid types22  vcmla.f16 d0, d1, d2, #023// FP16-ARM: vcmla.f16       d0, d1, d2, #0  @ encoding: [0x02,0x08,0x21,0xfc]24// FP16-THUMB: vcmla.f16       d0, d1, d2, #0  @ encoding: [0x21,0xfc,0x02,0x08]25// NO-FP16-STDERR: :[[@LINE-3]]:{{[0-9]*}}: note: instruction requires: full half-float26// V82A: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: armv8.3a27// NO-NEON_STDERR: :[[@LINE-5]]:{{[0-9]*}}: error: instruction requires: NEON28  vcmla.f16 q0, q1, q2, #029// FP16-ARM: vcmla.f16       q0, q1, q2, #0  @ encoding: [0x44,0x08,0x22,0xfc]30// FP16-THUMB: vcmla.f16       q0, q1, q2, #0  @ encoding: [0x22,0xfc,0x44,0x08]31// NO-FP16-STDERR: :[[@LINE-3]]:{{[0-9]*}}: note: instruction requires: full half-float32// V82A: :[[@LINE-4]]:{{[0-9]*}}: error: invalid instruction, any one of the following would fix this:33// V82A: :[[@LINE-5]]:{{[0-9]*}}: note: instruction requires: mve.fp34// V82A: :[[@LINE-6]]:{{[0-9]*}}: note: instruction requires: armv8.3a35// NO-NEON_STDERR: :[[@LINE-7]]:{{[0-9]*}}: error: instruction requires: NEON36  vcmla.f32 d0, d1, d2, #037// ARM: vcmla.f32       d0, d1, d2, #0  @ encoding: [0x02,0x08,0x31,0xfc]38// THUMB: vcmla.f32       d0, d1, d2, #0  @ encoding: [0x31,0xfc,0x02,0x08]39// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a40// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON41  vcmla.f32 q0, q1, q2, #042// ARM: vcmla.f32       q0, q1, q2, #0  @ encoding: [0x44,0x08,0x32,0xfc]43// THUMB: vcmla.f32       q0, q1, q2, #0  @ encoding: [0x32,0xfc,0x44,0x08]44// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: invalid instruction, any one of the following would fix this:45// V82A: :[[@LINE-4]]:{{[0-9]*}}: note: instruction requires: mve.fp46// V82A: :[[@LINE-5]]:{{[0-9]*}}: note: instruction requires: armv8.3a47// NO-NEON_STDERR: :[[@LINE-6]]:{{[0-9]*}}: error: instruction requires: NEON48 49// Valid rotations50  vcmla.f32 d0, d1, d2, #9051// ARM: vcmla.f32       d0, d1, d2, #90 @ encoding: [0x02,0x08,0xb1,0xfc]52// THUMB: vcmla.f32       d0, d1, d2, #90 @ encoding: [0xb1,0xfc,0x02,0x08]53// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a54// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON55  vcmla.f32 d0, d1, d2, #18056// ARM: vcmla.f32       d0, d1, d2, #180 @ encoding: [0x02,0x08,0x31,0xfd]57// THUMB: vcmla.f32       d0, d1, d2, #180 @ encoding: [0x31,0xfd,0x02,0x08]58// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a59// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON60  vcmla.f32 d0, d1, d2, #27061// ARM: vcmla.f32       d0, d1, d2, #270 @ encoding: [0x02,0x08,0xb1,0xfd]62// THUMB: vcmla.f32       d0, d1, d2, #270 @ encoding: [0xb1,0xfd,0x02,0x08]63// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a64// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON65 66// Invalid rotations67  vcmla.f32 d0, d1, d2, #-9068// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 0, 90, 180 or 27069// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction70  vcmla.f32 d0, d1, d2, #171// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 0, 90, 180 or 27072// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction73  vcmla.f32 d0, d1, d2, #36074// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 0, 90, 180 or 27075// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction76 77/* ==== VCADD vector ==== */78 79// Valid types80  vcadd.f16 d0, d1, d2, #9081// FP16-ARM: vcadd.f16       d0, d1, d2, #90 @ encoding: [0x02,0x08,0x81,0xfc]82// FP16-THUMB: vcadd.f16       d0, d1, d2, #90 @ encoding: [0x81,0xfc,0x02,0x08]83// NO-FP16-STDERR: :[[@LINE-3]]:{{[0-9]*}}: note: instruction requires: full half-float84// V82A: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: armv8.3a85// NO-NEON_STDERR: :[[@LINE-5]]:{{[0-9]*}}: error: instruction requires: NEON86  vcadd.f16 q0, q1, q2, #9087// FP16-ARM: vcadd.f16       q0, q1, q2, #90 @ encoding: [0x44,0x08,0x82,0xfc]88// FP16-THUMB: vcadd.f16       q0, q1, q2, #90 @ encoding: [0x82,0xfc,0x44,0x08]89// NO-FP16-STDERR: :[[@LINE-3]]:{{[0-9]*}}: note: instruction requires: full half-float90// V82A: :[[@LINE-4]]:{{[0-9]*}}: error: invalid instruction, any one of the following would fix this:91// V82A: :[[@LINE-5]]:{{[0-9]*}}: note: instruction requires: mve.fp92// V82A: :[[@LINE-6]]:{{[0-9]*}}: note: instruction requires: armv8.3a93// NO-NEON_STDERR: :[[@LINE-7]]:{{[0-9]*}}: error: instruction requires: NEON94  vcadd.f32 d0, d1, d2, #9095// ARM: vcadd.f32       d0, d1, d2, #90 @ encoding: [0x02,0x08,0x91,0xfc]96// THUMB: vcadd.f32       d0, d1, d2, #90 @ encoding: [0x91,0xfc,0x02,0x08]97// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a98// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON99  vcadd.f32 q0, q1, q2, #90100// ARM: vcadd.f32       q0, q1, q2, #90 @ encoding: [0x44,0x08,0x92,0xfc]101// THUMB: vcadd.f32       q0, q1, q2, #90 @ encoding: [0x92,0xfc,0x44,0x08]102// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: invalid instruction, any one of the following would fix this:103// V82A: :[[@LINE-4]]:{{[0-9]*}}: note: instruction requires: mve.fp104// V82A: :[[@LINE-5]]:{{[0-9]*}}: note: instruction requires: armv8.3a105// NO-NEON_STDERR: :[[@LINE-6]]:{{[0-9]*}}: error: instruction requires: NEON106 107// Valid rotations108  vcadd.f32 d0, d1, d2, #270109// ARM: vcadd.f32       d0, d1, d2, #270 @ encoding: [0x02,0x08,0x91,0xfd]110// THUMB: vcadd.f32       d0, d1, d2, #270 @ encoding: [0x91,0xfd,0x02,0x08]111// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a112// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON113 114// Invalid rotations115  vcadd.f32 d0, d1, d2, #0116// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 90 or 270117// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction118  vcadd.f32 d0, d1, d2, #180119// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 90 or 270120// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction121  vcadd.f32 d0, d1, d2, #-90122// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 90 or 270123// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction124  vcadd.f32 d0, d1, d2, #1125// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 90 or 270126// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction127  vcadd.f32 d0, d1, d2, #360128// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 90 or 270129// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction130 131 132/* ==== VCMLA indexed ==== */133 134// Valid types135  vcmla.f16 d0, d1, d2[0], #0136// FP16-ARM: vcmla.f16       d0, d1, d2[0], #0 @ encoding: [0x02,0x08,0x01,0xfe]137// FP16-THUMB: vcmla.f16       d0, d1, d2[0], #0 @ encoding: [0x01,0xfe,0x02,0x08]138// NO-FP16-STDERR: :[[@LINE-3]]:{{[0-9]*}}: note: instruction requires: full half-float139// V82A: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: armv8.3a140// NO-NEON_STDERR: :[[@LINE-5]]:{{[0-9]*}}: error: instruction requires: NEON141  vcmla.f16 q0, q1, d2[0], #0142// FP16-ARM: vcmla.f16       q0, q1, d2[0], #0 @ encoding: [0x42,0x08,0x02,0xfe]143// FP16-THUMB: vcmla.f16       q0, q1, d2[0], #0 @ encoding: [0x02,0xfe,0x42,0x08]144// NO-FP16-STDERR: :[[@LINE-3]]:{{[0-9]*}}: note: instruction requires: full half-float145// V82A: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: armv8.3a146// NO-NEON_STDERR: :[[@LINE-5]]:{{[0-9]*}}: error: instruction requires: NEON147  vcmla.f32 d0, d1, d2[0], #0148// ARM: vcmla.f32       d0, d1, d2[0], #0 @ encoding: [0x02,0x08,0x81,0xfe]149// THUMB: vcmla.f32       d0, d1, d2[0], #0 @ encoding: [0x81,0xfe,0x02,0x08]150// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a151// NO-NEON_STDERR: :[[@LINE-5]]:{{[0-9]*}}: error: instruction requires: NEON152  vcmla.f32 q0, q1, d2[0], #0153// ARM: vcmla.f32       q0, q1, d2[0], #0 @ encoding: [0x42,0x08,0x82,0xfe]154// THUMB: vcmla.f32       q0, q1, d2[0], #0 @ encoding: [0x82,0xfe,0x42,0x08]155// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a156// NO-NEON_STDERR: :[[@LINE-5]]:{{[0-9]*}}: error: instruction requires: NEON157 158// Valid rotations159  vcmla.f32 d0, d1, d2[0], #90160// ARM: vcmla.f32       d0, d1, d2[0], #90 @ encoding: [0x02,0x08,0x91,0xfe]161// THUMB: vcmla.f32       d0, d1, d2[0], #90 @ encoding: [0x91,0xfe,0x02,0x08]162// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a163// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON164  vcmla.f32 d0, d1, d2[0], #180165// ARM: vcmla.f32       d0, d1, d2[0], #180 @ encoding: [0x02,0x08,0xa1,0xfe]166// THUMB: vcmla.f32       d0, d1, d2[0], #180 @ encoding: [0xa1,0xfe,0x02,0x08]167// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a168// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON169  vcmla.f32 d0, d1, d2[0], #270170// ARM: vcmla.f32       d0, d1, d2[0], #270 @ encoding: [0x02,0x08,0xb1,0xfe]171// THUMB: vcmla.f32       d0, d1, d2[0], #270 @ encoding: [0xb1,0xfe,0x02,0x08]172// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a173// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON174 175// Invalid rotations176  vcmla.f32 d0, d1, d2[0], #-90177// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 0, 90, 180 or 270178// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction179  vcmla.f32 d0, d1, d2[0], #1180// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 0, 90, 180 or 270181// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction182  vcmla.f32 d0, d1, d2[0], #360183// NEON-STDERR: :[[@LINE-1]]:{{[0-9]*}}: error: complex rotation must be 0, 90, 180 or 270184// NO-NEON-STDERR: :[[@LINE-2]]:{{[0-9]*}}: error: invalid instruction185 186// Valid indices187  vcmla.f16 d0, d1, d2[1], #0188// FP16-ARM: vcmla.f16       d0, d1, d2[1], #0 @ encoding: [0x22,0x08,0x01,0xfe]189// FP16-THUMB: vcmla.f16       d0, d1, d2[1], #0 @ encoding: [0x01,0xfe,0x22,0x08]190// V82A: :[[@LINE-3]]:{{[0-9]*}}: error: instruction requires: armv8.3a191// NO-NEON_STDERR: :[[@LINE-4]]:{{[0-9]*}}: error: instruction requires: NEON192 193// Invalid indices194// The text of these errors vary depending on whether fullfp16 is present.195  vcmla.f16 d0, d1, d2[2], #0196// STDERR: :[[@LINE-1]]:{{[0-9]*}}: error:197  vcmla.f32 d0, d1, d2[1], #0198// STDERR: :[[@LINE-1]]:{{[0-9]*}}: error:199