@ RUN: not llvm-mc -triple armv8a-none-eabi -mattr=-fullfp16,+neon -show-encoding < %s 2>&1 | FileCheck %s @ RUN: not llvm-mc -triple armv8a-none-eabi -mattr=+fullfp16,-neon -show-encoding < %s 2>&1 | FileCheck %s @ RUN: not llvm-mc -triple thumbv8a-none-eabi -mattr=-fullfp16,+neon -show-encoding < %s 2>&1 | FileCheck %s @ RUN: not llvm-mc -triple thumbv8a-none-eabi -mattr=+fullfp16,-neon -show-encoding < %s 2>&1 | FileCheck %s vadd.f16 d0, d1, d2 vadd.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vsub.f16 d0, d1, d2 vsub.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmul.f16 d0, d1, d2 vmul.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmul.f16 d1, d2, d3[2] vmul.f16 q4, q5, d6[3] @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmla.f16 d0, d1, d2 vmla.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmla.f16 d5, d6, d7[2] vmla.f16 q5, q6, d7[3] @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmls.f16 d0, d1, d2 vmls.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmls.f16 d5, d6, d7[2] vmls.f16 q5, q6, d7[3] @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vfma.f16 d0, d1, d2 vfma.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vfms.f16 d0, d1, d2 vfms.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vceq.f16 d2, d3, d4 vceq.f16 q2, q3, q4 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vceq.f16 d2, d3, #0 vceq.f16 q2, q3, #0 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcge.f16 d2, d3, d4 vcge.f16 q2, q3, q4 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcge.f16 d2, d3, #0 vcge.f16 q2, q3, #0 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcgt.f16 d2, d3, d4 vcgt.f16 q2, q3, q4 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcgt.f16 d2, d3, #0 vcgt.f16 q2, q3, #0 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcle.f16 d2, d3, d4 vcle.f16 q2, q3, q4 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcle.f16 d2, d3, #0 vcle.f16 q2, q3, #0 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vclt.f16 d2, d3, d4 vclt.f16 q2, q3, q4 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vclt.f16 d2, d3, #0 vclt.f16 q2, q3, #0 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vacge.f16 d0, d1, d2 vacge.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vacgt.f16 d0, d1, d2 vacgt.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vacle.f16 d0, d1, d2 vacle.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vaclt.f16 d0, d1, d2 vaclt.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vabd.f16 d0, d1, d2 vabd.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vabs.f16 d0, d1 vabs.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmax.f16 d0, d1, d2 vmax.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmin.f16 d0, d1, d2 vmin.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vmaxnm.f16 d0, d1, d2 vmaxnm.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vminnm.f16 d0, d1, d2 vminnm.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vpadd.f16 d0, d1, d2 @ CHECK: instruction requires: {{full half-float|NEON}} vpmax.f16 d0, d1, d2 @ CHECK: instruction requires: {{full half-float|NEON}} vpmin.f16 d0, d1, d2 @ CHECK: instruction requires: {{full half-float|NEON}} vrecpe.f16 d0, d1 vrecpe.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrecps.f16 d0, d1, d2 vrecps.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrsqrte.f16 d0, d1 vrsqrte.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrsqrts.f16 d0, d1, d2 vrsqrts.f16 q0, q1, q2 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vneg.f16 d0, d1 vneg.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcvt.s16.f16 d0, d1 vcvt.u16.f16 d0, d1 vcvt.f16.s16 d0, d1 vcvt.f16.u16 d0, d1 vcvt.s16.f16 q0, q1 vcvt.u16.f16 q0, q1 vcvt.f16.s16 q0, q1 vcvt.f16.u16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcvta.s16.f16 d0, d1 vcvta.s16.f16 q0, q1 vcvta.u16.f16 d0, d1 vcvta.u16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcvtm.s16.f16 d0, d1 vcvtm.s16.f16 q0, q1 vcvtm.u16.f16 d0, d1 vcvtm.u16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcvtn.s16.f16 d0, d1 vcvtn.s16.f16 q0, q1 vcvtn.u16.f16 d0, d1 vcvtn.u16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcvtp.s16.f16 d0, d1 vcvtp.s16.f16 q0, q1 vcvtp.u16.f16 d0, d1 vcvtp.u16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vcvt.s16.f16 d0, d1, #1 vcvt.u16.f16 d0, d1, #2 vcvt.f16.s16 d0, d1, #3 vcvt.f16.u16 d0, d1, #4 vcvt.s16.f16 q0, q1, #5 vcvt.u16.f16 q0, q1, #6 vcvt.f16.s16 q0, q1, #7 vcvt.f16.u16 q0, q1, #8 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrinta.f16.f16 d0, d1 vrinta.f16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrintm.f16.f16 d0, d1 vrintm.f16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrintn.f16.f16 d0, d1 vrintn.f16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrintp.f16.f16 d0, d1 vrintp.f16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrintx.f16.f16 d0, d1 vrintx.f16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}} vrintz.f16.f16 d0, d1 vrintz.f16.f16 q0, q1 @ CHECK: instruction requires: {{full half-float|NEON}} @ CHECK: instruction requires: {{full half-float|NEON}}