#include "ARMBaseInstrInfo.h"
#include "ARMSubtarget.h"
#include "ARMTargetMachine.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"

#include "gtest/gtest.h"

using namespace llvm;

TEST(MachineInstructionDoubleWidthResult, IsCorrect) {
  using namespace ARM;

  auto DoubleWidthResult = [](unsigned Opcode) {
    switch (Opcode) {
    default:
      break;
    case MVE_VMULLBp16:
    case MVE_VMULLBp8:
    case MVE_VMULLBs16:
    case MVE_VMULLBs32:
    case MVE_VMULLBs8:
    case MVE_VMULLBu16:
    case MVE_VMULLBu32:
    case MVE_VMULLBu8:
    case MVE_VMULLTp16:
    case MVE_VMULLTp8:
    case MVE_VMULLTs16:
    case MVE_VMULLTs32:
    case MVE_VMULLTs8:
    case MVE_VMULLTu16:
    case MVE_VMULLTu32:
    case MVE_VMULLTu8:
    case MVE_VQDMULL_qr_s16bh:
    case MVE_VQDMULL_qr_s16th:
    case MVE_VQDMULL_qr_s32bh:
    case MVE_VQDMULL_qr_s32th:
    case MVE_VQDMULLs16bh:
    case MVE_VQDMULLs16th:
    case MVE_VQDMULLs32bh:
    case MVE_VQDMULLs32th:
    case MVE_VMOVLs16bh:
    case MVE_VMOVLs16th:
    case MVE_VMOVLs8bh:
    case MVE_VMOVLs8th:
    case MVE_VMOVLu16bh:
    case MVE_VMOVLu16th:
    case MVE_VMOVLu8bh:
    case MVE_VMOVLu8th:
    case MVE_VSHLL_imms16bh:
    case MVE_VSHLL_imms16th:
    case MVE_VSHLL_imms8bh:
    case MVE_VSHLL_imms8th:
    case MVE_VSHLL_immu16bh:
    case MVE_VSHLL_immu16th:
    case MVE_VSHLL_immu8bh:
    case MVE_VSHLL_immu8th:
    case MVE_VSHLL_lws16bh:
    case MVE_VSHLL_lws16th:
    case MVE_VSHLL_lws8bh:
    case MVE_VSHLL_lws8th:
    case MVE_VSHLL_lwu16bh:
    case MVE_VSHLL_lwu16th:
    case MVE_VSHLL_lwu8bh:
    case MVE_VSHLL_lwu8th:
      return true;
    }
    return false;
  };

  LLVMInitializeARMTargetInfo();
  LLVMInitializeARMTarget();
  LLVMInitializeARMTargetMC();

  auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi"));
  std::string Error;
  const Target *T = TargetRegistry::lookupTarget(TT, Error);
  if (!T) {
    dbgs() << Error;
    return;
  }

  TargetOptions Options;
  auto TM = std::unique_ptr<LLVMTargetMachine>(
    static_cast<LLVMTargetMachine*>(
      T->createTargetMachine(TT, "generic", "", Options, None, None,
                             CodeGenOpt::Default)));
  ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()),
                  std::string(TM->getTargetFeatureString()),
                  *static_cast<const ARMBaseTargetMachine *>(TM.get()), false);
  const ARMBaseInstrInfo *TII = ST.getInstrInfo();
  auto MII = TM->getMCInstrInfo();

  for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) {
    const MCInstrDesc &Desc = TII->get(i);

    uint64_t Flags = Desc.TSFlags;
    if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE)
      continue;

    bool Valid = (Flags & ARMII::DoubleWidthResult) != 0;
    ASSERT_EQ(DoubleWidthResult(i), Valid)
              << MII->getName(i)
              << ": mismatched expectation for tail-predicated safety\n";
  }
}

TEST(MachineInstructionHorizontalReduction, IsCorrect) {
  using namespace ARM;

  auto HorizontalReduction = [](unsigned Opcode) {
    switch (Opcode) {
    default:
      break;
    case MVE_VABAVs16:
    case MVE_VABAVs32:
    case MVE_VABAVs8:
    case MVE_VABAVu16:
    case MVE_VABAVu32:
    case MVE_VABAVu8:
    case MVE_VADDLVs32acc:
    case MVE_VADDLVs32no_acc:
    case MVE_VADDLVu32acc:
    case MVE_VADDLVu32no_acc:
    case MVE_VADDVs16acc:
    case MVE_VADDVs16no_acc:
    case MVE_VADDVs32acc:
    case MVE_VADDVs32no_acc:
    case MVE_VADDVs8acc:
    case MVE_VADDVs8no_acc:
    case MVE_VADDVu16acc:
    case MVE_VADDVu16no_acc:
    case MVE_VADDVu32acc:
    case MVE_VADDVu32no_acc:
    case MVE_VADDVu8acc:
    case MVE_VADDVu8no_acc:
    case MVE_VMAXAVs16:
    case MVE_VMAXAVs32:
    case MVE_VMAXAVs8:
    case MVE_VMAXNMAVf16:
    case MVE_VMAXNMAVf32:
    case MVE_VMAXNMVf16:
    case MVE_VMAXNMVf32:
    case MVE_VMAXVs16:
    case MVE_VMAXVs32:
    case MVE_VMAXVs8:
    case MVE_VMAXVu16:
    case MVE_VMAXVu32:
    case MVE_VMAXVu8:
    case MVE_VMINAVs16:
    case MVE_VMINAVs32:
    case MVE_VMINAVs8:
    case MVE_VMINNMAVf16:
    case MVE_VMINNMAVf32:
    case MVE_VMINNMVf16:
    case MVE_VMINNMVf32:
    case MVE_VMINVs16:
    case MVE_VMINVs32:
    case MVE_VMINVs8:
    case MVE_VMINVu16:
    case MVE_VMINVu32:
    case MVE_VMINVu8:
    case MVE_VMLADAVas16:
    case MVE_VMLADAVas32:
    case MVE_VMLADAVas8:
    case MVE_VMLADAVau16:
    case MVE_VMLADAVau32:
    case MVE_VMLADAVau8:
    case MVE_VMLADAVaxs16:
    case MVE_VMLADAVaxs32:
    case MVE_VMLADAVaxs8:
    case MVE_VMLADAVs16:
    case MVE_VMLADAVs32:
    case MVE_VMLADAVs8:
    case MVE_VMLADAVu16:
    case MVE_VMLADAVu32:
    case MVE_VMLADAVu8:
    case MVE_VMLADAVxs16:
    case MVE_VMLADAVxs32:
    case MVE_VMLADAVxs8:
    case MVE_VMLALDAVas16:
    case MVE_VMLALDAVas32:
    case MVE_VMLALDAVau16:
    case MVE_VMLALDAVau32:
    case MVE_VMLALDAVaxs16:
    case MVE_VMLALDAVaxs32:
    case MVE_VMLALDAVs16:
    case MVE_VMLALDAVs32:
    case MVE_VMLALDAVu16:
    case MVE_VMLALDAVu32:
    case MVE_VMLALDAVxs16:
    case MVE_VMLALDAVxs32:
    case MVE_VMLSDAVas16:
    case MVE_VMLSDAVas32:
    case MVE_VMLSDAVas8:
    case MVE_VMLSDAVaxs16:
    case MVE_VMLSDAVaxs32:
    case MVE_VMLSDAVaxs8:
    case MVE_VMLSDAVs16:
    case MVE_VMLSDAVs32:
    case MVE_VMLSDAVs8:
    case MVE_VMLSDAVxs16:
    case MVE_VMLSDAVxs32:
    case MVE_VMLSDAVxs8:
    case MVE_VMLSLDAVas16:
    case MVE_VMLSLDAVas32:
    case MVE_VMLSLDAVaxs16:
    case MVE_VMLSLDAVaxs32:
    case MVE_VMLSLDAVs16:
    case MVE_VMLSLDAVs32:
    case MVE_VMLSLDAVxs16:
    case MVE_VMLSLDAVxs32:
    case MVE_VRMLALDAVHas32:
    case MVE_VRMLALDAVHau32:
    case MVE_VRMLALDAVHaxs32:
    case MVE_VRMLALDAVHs32:
    case MVE_VRMLALDAVHu32:
    case MVE_VRMLALDAVHxs32:
    case MVE_VRMLSLDAVHas32:
    case MVE_VRMLSLDAVHaxs32:
    case MVE_VRMLSLDAVHs32:
    case MVE_VRMLSLDAVHxs32:
      return true;
    }
    return false;
  };

  LLVMInitializeARMTargetInfo();
  LLVMInitializeARMTarget();
  LLVMInitializeARMTargetMC();

  auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi"));
  std::string Error;
  const Target *T = TargetRegistry::lookupTarget(TT, Error);
  if (!T) {
    dbgs() << Error;
    return;
  }

  TargetOptions Options;
  auto TM = std::unique_ptr<LLVMTargetMachine>(
    static_cast<LLVMTargetMachine*>(
      T->createTargetMachine(TT, "generic", "", Options, None, None,
                             CodeGenOpt::Default)));
  ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()),
                  std::string(TM->getTargetFeatureString()),
                  *static_cast<const ARMBaseTargetMachine *>(TM.get()), false);
  const ARMBaseInstrInfo *TII = ST.getInstrInfo();
  auto MII = TM->getMCInstrInfo();

  for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) {
    const MCInstrDesc &Desc = TII->get(i);

    uint64_t Flags = Desc.TSFlags;
    if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE)
      continue;
    bool Valid = (Flags & ARMII::HorizontalReduction) != 0;
    ASSERT_EQ(HorizontalReduction(i), Valid)
              << MII->getName(i)
              << ": mismatched expectation for tail-predicated safety\n";
  }
}

TEST(MachineInstructionRetainsPreviousHalfElement, IsCorrect) {
  using namespace ARM;

  auto RetainsPreviousHalfElement = [](unsigned Opcode) {
    switch (Opcode) {
    default:
      break;
    case MVE_VMOVNi16bh:
    case MVE_VMOVNi16th:
    case MVE_VMOVNi32bh:
    case MVE_VMOVNi32th:
    case MVE_VQMOVNs16bh:
    case MVE_VQMOVNs16th:
    case MVE_VQMOVNs32bh:
    case MVE_VQMOVNs32th:
    case MVE_VQMOVNu16bh:
    case MVE_VQMOVNu16th:
    case MVE_VQMOVNu32bh:
    case MVE_VQMOVNu32th:
    case MVE_VQMOVUNs16bh:
    case MVE_VQMOVUNs16th:
    case MVE_VQMOVUNs32bh:
    case MVE_VQMOVUNs32th:
    case MVE_VQRSHRNbhs16:
    case MVE_VQRSHRNbhs32:
    case MVE_VQRSHRNbhu16:
    case MVE_VQRSHRNbhu32:
    case MVE_VQRSHRNths16:
    case MVE_VQRSHRNths32:
    case MVE_VQRSHRNthu16:
    case MVE_VQRSHRNthu32:
    case MVE_VQRSHRUNs16bh:
    case MVE_VQRSHRUNs16th:
    case MVE_VQRSHRUNs32bh:
    case MVE_VQRSHRUNs32th:
    case MVE_VQSHRNbhs16:
    case MVE_VQSHRNbhs32:
    case MVE_VQSHRNbhu16:
    case MVE_VQSHRNbhu32:
    case MVE_VQSHRNths16:
    case MVE_VQSHRNths32:
    case MVE_VQSHRNthu16:
    case MVE_VQSHRNthu32:
    case MVE_VQSHRUNs16bh:
    case MVE_VQSHRUNs16th:
    case MVE_VQSHRUNs32bh:
    case MVE_VQSHRUNs32th:
    case MVE_VRSHRNi16bh:
    case MVE_VRSHRNi16th:
    case MVE_VRSHRNi32bh:
    case MVE_VRSHRNi32th:
    case MVE_VSHRNi16bh:
    case MVE_VSHRNi16th:
    case MVE_VSHRNi32bh:
    case MVE_VSHRNi32th:
    case MVE_VCVTf16f32bh:
    case MVE_VCVTf16f32th:
    case MVE_VCVTf32f16bh:
    case MVE_VCVTf32f16th:
      return true;
    }
    return false;
  };

  LLVMInitializeARMTargetInfo();
  LLVMInitializeARMTarget();
  LLVMInitializeARMTargetMC();

  auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi"));
  std::string Error;
  const Target *T = TargetRegistry::lookupTarget(TT, Error);
  if (!T) {
    dbgs() << Error;
    return;
  }

  TargetOptions Options;
  auto TM = std::unique_ptr<LLVMTargetMachine>(
    static_cast<LLVMTargetMachine*>(
      T->createTargetMachine(TT, "generic", "", Options, None, None,
                             CodeGenOpt::Default)));
  ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()),
                  std::string(TM->getTargetFeatureString()),
                  *static_cast<const ARMBaseTargetMachine *>(TM.get()), false);
  const ARMBaseInstrInfo *TII = ST.getInstrInfo();
  auto MII = TM->getMCInstrInfo();

  for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) {
    const MCInstrDesc &Desc = TII->get(i);

    uint64_t Flags = Desc.TSFlags;
    if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE)
      continue;

    bool Valid = (Flags & ARMII::RetainsPreviousHalfElement) != 0;
    ASSERT_EQ(RetainsPreviousHalfElement(i), Valid)
              << MII->getName(i)
              << ": mismatched expectation for tail-predicated safety\n";
  }
}
// Test for instructions that aren't immediately obviously valid within a
// tail-predicated loop. This should be marked up in their tablegen
// descriptions. Currently we, conservatively, disallow:
// - cross beat carries.
// - complex operations.
// - horizontal operations with exchange.
// - byte swapping.
// - interleaved memory instructions.
// TODO: Add to this list once we can handle them safely.
TEST(MachineInstrValidTailPredication, IsCorrect) {

  using namespace ARM;

  auto IsValidTPOpcode = [](unsigned Opcode) {
    switch (Opcode) {
    default:
      return false;
    case MVE_ASRLi:
    case MVE_ASRLr:
    case MVE_LSRL:
    case MVE_LSLLi:
    case MVE_LSLLr:
    case MVE_SQRSHR:
    case MVE_SQRSHRL:
    case MVE_SQSHL:
    case MVE_SQSHLL:
    case MVE_SRSHR:
    case MVE_SRSHRL:
    case MVE_UQRSHL:
    case MVE_UQRSHLL:
    case MVE_UQSHL:
    case MVE_UQSHLL:
    case MVE_URSHR:
    case MVE_URSHRL:
    case MVE_VABDf16:
    case MVE_VABDf32:
    case MVE_VABDs16:
    case MVE_VABDs32:
    case MVE_VABDs8:
    case MVE_VABDu16:
    case MVE_VABDu32:
    case MVE_VABDu8:
    case MVE_VABSf16:
    case MVE_VABSf32:
    case MVE_VABSs16:
    case MVE_VABSs32:
    case MVE_VABSs8:
    case MVE_VADD_qr_f16:
    case MVE_VADD_qr_f32:
    case MVE_VADD_qr_i16:
    case MVE_VADD_qr_i32:
    case MVE_VADD_qr_i8:
    case MVE_VADDVs16acc:
    case MVE_VADDVs16no_acc:
    case MVE_VADDVs32acc:
    case MVE_VADDVs32no_acc:
    case MVE_VADDVs8acc:
    case MVE_VADDVs8no_acc:
    case MVE_VADDVu16acc:
    case MVE_VADDVu16no_acc:
    case MVE_VADDVu32acc:
    case MVE_VADDVu32no_acc:
    case MVE_VADDVu8acc:
    case MVE_VADDVu8no_acc:
    case MVE_VADDf16:
    case MVE_VADDf32:
    case MVE_VADDi16:
    case MVE_VADDi32:
    case MVE_VADDi8:
    case MVE_VAND:
    case MVE_VBIC:
    case MVE_VBICimmi16:
    case MVE_VBICimmi32:
    case MVE_VBRSR16:
    case MVE_VBRSR32:
    case MVE_VBRSR8:
    case MVE_VCLSs16:
    case MVE_VCLSs32:
    case MVE_VCLSs8:
    case MVE_VCLZs16:
    case MVE_VCLZs32:
    case MVE_VCLZs8:
    case MVE_VCMPf16:
    case MVE_VCMPf16r:
    case MVE_VCMPf32:
    case MVE_VCMPf32r:
    case MVE_VCMPi16:
    case MVE_VCMPi16r:
    case MVE_VCMPi32:
    case MVE_VCMPi32r:
    case MVE_VCMPi8:
    case MVE_VCMPi8r:
    case MVE_VCMPs16:
    case MVE_VCMPs16r:
    case MVE_VCMPs32:
    case MVE_VCMPs32r:
    case MVE_VCMPs8:
    case MVE_VCMPs8r:
    case MVE_VCMPu16:
    case MVE_VCMPu16r:
    case MVE_VCMPu32:
    case MVE_VCMPu32r:
    case MVE_VCMPu8:
    case MVE_VCMPu8r:
    case MVE_VCTP16:
    case MVE_VCTP32:
    case MVE_VCTP64:
    case MVE_VCTP8:
    case MVE_VCVTf16s16_fix:
    case MVE_VCVTf16s16n:
    case MVE_VCVTf16u16_fix:
    case MVE_VCVTf16u16n:
    case MVE_VCVTf32s32_fix:
    case MVE_VCVTf32s32n:
    case MVE_VCVTf32u32_fix:
    case MVE_VCVTf32u32n:
    case MVE_VCVTs16f16_fix:
    case MVE_VCVTs16f16a:
    case MVE_VCVTs16f16m:
    case MVE_VCVTs16f16n:
    case MVE_VCVTs16f16p:
    case MVE_VCVTs16f16z:
    case MVE_VCVTs32f32_fix:
    case MVE_VCVTs32f32a:
    case MVE_VCVTs32f32m:
    case MVE_VCVTs32f32n:
    case MVE_VCVTs32f32p:
    case MVE_VCVTs32f32z:
    case MVE_VCVTu16f16_fix:
    case MVE_VCVTu16f16a:
    case MVE_VCVTu16f16m:
    case MVE_VCVTu16f16n:
    case MVE_VCVTu16f16p:
    case MVE_VCVTu16f16z:
    case MVE_VCVTu32f32_fix:
    case MVE_VCVTu32f32a:
    case MVE_VCVTu32f32m:
    case MVE_VCVTu32f32n:
    case MVE_VCVTu32f32p:
    case MVE_VCVTu32f32z:
    case MVE_VDDUPu16:
    case MVE_VDDUPu32:
    case MVE_VDDUPu8:
    case MVE_VDUP16:
    case MVE_VDUP32:
    case MVE_VDUP8:
    case MVE_VDWDUPu16:
    case MVE_VDWDUPu32:
    case MVE_VDWDUPu8:
    case MVE_VEOR:
    case MVE_VFMA_qr_Sf16:
    case MVE_VFMA_qr_Sf32:
    case MVE_VFMA_qr_f16:
    case MVE_VFMA_qr_f32:
    case MVE_VFMAf16:
    case MVE_VFMAf32:
    case MVE_VFMSf16:
    case MVE_VFMSf32:
    case MVE_VMAXAs16:
    case MVE_VMAXAs32:
    case MVE_VMAXAs8:
    case MVE_VMAXs16:
    case MVE_VMAXs32:
    case MVE_VMAXs8:
    case MVE_VMAXu16:
    case MVE_VMAXu32:
    case MVE_VMAXu8:
    case MVE_VMAXNMf16:
    case MVE_VMAXNMf32:
    case MVE_VMAXNMAf16:
    case MVE_VMAXNMAf32:
    case MVE_VMINAs16:
    case MVE_VMINAs32:
    case MVE_VMINAs8:
    case MVE_VMINs16:
    case MVE_VMINs32:
    case MVE_VMINs8:
    case MVE_VMINu16:
    case MVE_VMINu32:
    case MVE_VMINu8:
    case MVE_VMINNMf16:
    case MVE_VMINNMf32:
    case MVE_VMINNMAf16:
    case MVE_VMINNMAf32:
    case MVE_VMLADAVas16:
    case MVE_VMLADAVas32:
    case MVE_VMLADAVas8:
    case MVE_VMLADAVau16:
    case MVE_VMLADAVau32:
    case MVE_VMLADAVau8:
    case MVE_VMLADAVs16:
    case MVE_VMLADAVs32:
    case MVE_VMLADAVs8:
    case MVE_VMLADAVu16:
    case MVE_VMLADAVu32:
    case MVE_VMLADAVu8:
    case MVE_VMLALDAVs16:
    case MVE_VMLALDAVs32:
    case MVE_VMLALDAVu16:
    case MVE_VMLALDAVu32:
    case MVE_VMLALDAVas16:
    case MVE_VMLALDAVas32:
    case MVE_VMLALDAVau16:
    case MVE_VMLALDAVau32:
    case MVE_VMLSDAVas16:
    case MVE_VMLSDAVas32:
    case MVE_VMLSDAVas8:
    case MVE_VMLSDAVs16:
    case MVE_VMLSDAVs32:
    case MVE_VMLSDAVs8:
    case MVE_VMLSLDAVas16:
    case MVE_VMLSLDAVas32:
    case MVE_VMLSLDAVs16:
    case MVE_VMLSLDAVs32:
    case MVE_VRMLALDAVHas32:
    case MVE_VRMLALDAVHau32:
    case MVE_VRMLALDAVHs32:
    case MVE_VRMLALDAVHu32:
    case MVE_VRMLSLDAVHas32:
    case MVE_VRMLSLDAVHs32:
    case MVE_VMLAS_qr_s16:
    case MVE_VMLAS_qr_s32:
    case MVE_VMLAS_qr_s8:
    case MVE_VMLAS_qr_u16:
    case MVE_VMLAS_qr_u32:
    case MVE_VMLAS_qr_u8:
    case MVE_VMLA_qr_s16:
    case MVE_VMLA_qr_s32:
    case MVE_VMLA_qr_s8:
    case MVE_VMLA_qr_u16:
    case MVE_VMLA_qr_u32:
    case MVE_VMLA_qr_u8:
    case MVE_VHADD_qr_s16:
    case MVE_VHADD_qr_s32:
    case MVE_VHADD_qr_s8:
    case MVE_VHADD_qr_u16:
    case MVE_VHADD_qr_u32:
    case MVE_VHADD_qr_u8:
    case MVE_VHADDs16:
    case MVE_VHADDs32:
    case MVE_VHADDs8:
    case MVE_VHADDu16:
    case MVE_VHADDu32:
    case MVE_VHADDu8:
    case MVE_VHSUB_qr_s16:
    case MVE_VHSUB_qr_s32:
    case MVE_VHSUB_qr_s8:
    case MVE_VHSUB_qr_u16:
    case MVE_VHSUB_qr_u32:
    case MVE_VHSUB_qr_u8:
    case MVE_VHSUBs16:
    case MVE_VHSUBs32:
    case MVE_VHSUBs8:
    case MVE_VHSUBu16:
    case MVE_VHSUBu32:
    case MVE_VHSUBu8:
    case MVE_VIDUPu16:
    case MVE_VIDUPu32:
    case MVE_VIDUPu8:
    case MVE_VIWDUPu16:
    case MVE_VIWDUPu32:
    case MVE_VIWDUPu8:
    case MVE_VLD20_8:
    case MVE_VLD21_8:
    case MVE_VLD20_16:
    case MVE_VLD21_16:
    case MVE_VLD20_32:
    case MVE_VLD21_32:
    case MVE_VLD20_8_wb:
    case MVE_VLD21_8_wb:
    case MVE_VLD20_16_wb:
    case MVE_VLD21_16_wb:
    case MVE_VLD20_32_wb:
    case MVE_VLD21_32_wb:
    case MVE_VLD40_8:
    case MVE_VLD41_8:
    case MVE_VLD42_8:
    case MVE_VLD43_8:
    case MVE_VLD40_16:
    case MVE_VLD41_16:
    case MVE_VLD42_16:
    case MVE_VLD43_16:
    case MVE_VLD40_32:
    case MVE_VLD41_32:
    case MVE_VLD42_32:
    case MVE_VLD43_32:
    case MVE_VLD40_8_wb:
    case MVE_VLD41_8_wb:
    case MVE_VLD42_8_wb:
    case MVE_VLD43_8_wb:
    case MVE_VLD40_16_wb:
    case MVE_VLD41_16_wb:
    case MVE_VLD42_16_wb:
    case MVE_VLD43_16_wb:
    case MVE_VLD40_32_wb:
    case MVE_VLD41_32_wb:
    case MVE_VLD42_32_wb:
    case MVE_VLD43_32_wb:
    case MVE_VLDRBS16:
    case MVE_VLDRBS16_post:
    case MVE_VLDRBS16_pre:
    case MVE_VLDRBS16_rq:
    case MVE_VLDRBS32:
    case MVE_VLDRBS32_post:
    case MVE_VLDRBS32_pre:
    case MVE_VLDRBS32_rq:
    case MVE_VLDRBU16:
    case MVE_VLDRBU16_post:
    case MVE_VLDRBU16_pre:
    case MVE_VLDRBU16_rq:
    case MVE_VLDRBU32:
    case MVE_VLDRBU32_post:
    case MVE_VLDRBU32_pre:
    case MVE_VLDRBU32_rq:
    case MVE_VLDRBU8:
    case MVE_VLDRBU8_post:
    case MVE_VLDRBU8_pre:
    case MVE_VLDRBU8_rq:
    case MVE_VLDRDU64_qi:
    case MVE_VLDRDU64_qi_pre:
    case MVE_VLDRDU64_rq:
    case MVE_VLDRDU64_rq_u:
    case MVE_VLDRHS32:
    case MVE_VLDRHS32_post:
    case MVE_VLDRHS32_pre:
    case MVE_VLDRHS32_rq:
    case MVE_VLDRHS32_rq_u:
    case MVE_VLDRHU16:
    case MVE_VLDRHU16_post:
    case MVE_VLDRHU16_pre:
    case MVE_VLDRHU16_rq:
    case MVE_VLDRHU16_rq_u:
    case MVE_VLDRHU32:
    case MVE_VLDRHU32_post:
    case MVE_VLDRHU32_pre:
    case MVE_VLDRHU32_rq:
    case MVE_VLDRHU32_rq_u:
    case MVE_VLDRWU32:
    case MVE_VLDRWU32_post:
    case MVE_VLDRWU32_pre:
    case MVE_VLDRWU32_qi:
    case MVE_VLDRWU32_qi_pre:
    case MVE_VLDRWU32_rq:
    case MVE_VLDRWU32_rq_u:
    case MVE_VMOVimmf32:
    case MVE_VMOVimmi16:
    case MVE_VMOVimmi32:
    case MVE_VMOVimmi64:
    case MVE_VMOVimmi8:
    case MVE_VMOVNi16bh:
    case MVE_VMOVNi16th:
    case MVE_VMOVNi32bh:
    case MVE_VMOVNi32th:
    case MVE_VMULLBp16:
    case MVE_VMULLBp8:
    case MVE_VMULLBs16:
    case MVE_VMULLBs32:
    case MVE_VMULLBs8:
    case MVE_VMULLBu16:
    case MVE_VMULLBu32:
    case MVE_VMULLBu8:
    case MVE_VMULLTp16:
    case MVE_VMULLTp8:
    case MVE_VMULLTs16:
    case MVE_VMULLTs32:
    case MVE_VMULLTs8:
    case MVE_VMULLTu16:
    case MVE_VMULLTu32:
    case MVE_VMULLTu8:
    case MVE_VMUL_qr_f16:
    case MVE_VMUL_qr_f32:
    case MVE_VMUL_qr_i16:
    case MVE_VMUL_qr_i32:
    case MVE_VMUL_qr_i8:
    case MVE_VMULf16:
    case MVE_VMULf32:
    case MVE_VMULi16:
    case MVE_VMULi8:
    case MVE_VMULi32:
    case MVE_VMULHs32:
    case MVE_VMULHs16:
    case MVE_VMULHs8:
    case MVE_VMULHu32:
    case MVE_VMULHu16:
    case MVE_VMULHu8:
    case MVE_VMVN:
    case MVE_VMVNimmi16:
    case MVE_VMVNimmi32:
    case MVE_VNEGf16:
    case MVE_VNEGf32:
    case MVE_VNEGs16:
    case MVE_VNEGs32:
    case MVE_VNEGs8:
    case MVE_VORN:
    case MVE_VORR:
    case MVE_VORRimmi16:
    case MVE_VORRimmi32:
    case MVE_VPST:
    case MVE_VPTv16i8:
    case MVE_VPTv8i16:
    case MVE_VPTv4i32:
    case MVE_VPTv16i8r:
    case MVE_VPTv8i16r:
    case MVE_VPTv4i32r:
    case MVE_VPTv16s8:
    case MVE_VPTv8s16:
    case MVE_VPTv4s32:
    case MVE_VPTv16s8r:
    case MVE_VPTv8s16r:
    case MVE_VPTv4s32r:
    case MVE_VPTv16u8:
    case MVE_VPTv8u16:
    case MVE_VPTv4u32:
    case MVE_VPTv16u8r:
    case MVE_VPTv8u16r:
    case MVE_VPTv4u32r:
    case MVE_VPTv8f16:
    case MVE_VPTv4f32:
    case MVE_VPTv8f16r:
    case MVE_VPTv4f32r:
    case MVE_VQABSs16:
    case MVE_VQABSs32:
    case MVE_VQABSs8:
    case MVE_VQADD_qr_s16:
    case MVE_VQADD_qr_s32:
    case MVE_VQADD_qr_s8:
    case MVE_VQADD_qr_u16:
    case MVE_VQADD_qr_u32:
    case MVE_VQADD_qr_u8:
    case MVE_VQADDs16:
    case MVE_VQADDs32:
    case MVE_VQADDs8:
    case MVE_VQADDu16:
    case MVE_VQADDu32:
    case MVE_VQADDu8:
    case MVE_VQDMULH_qr_s16:
    case MVE_VQDMULH_qr_s32:
    case MVE_VQDMULH_qr_s8:
    case MVE_VQDMULHi16:
    case MVE_VQDMULHi32:
    case MVE_VQDMULHi8:
    case MVE_VQDMULL_qr_s16bh:
    case MVE_VQDMULL_qr_s16th:
    case MVE_VQDMULL_qr_s32bh:
    case MVE_VQDMULL_qr_s32th:
    case MVE_VQDMULLs16bh:
    case MVE_VQDMULLs16th:
    case MVE_VQDMULLs32bh:
    case MVE_VQDMULLs32th:
    case MVE_VQRDMULH_qr_s16:
    case MVE_VQRDMULH_qr_s32:
    case MVE_VQRDMULH_qr_s8:
    case MVE_VQRDMULHi16:
    case MVE_VQRDMULHi32:
    case MVE_VQRDMULHi8:
    case MVE_VQNEGs16:
    case MVE_VQNEGs32:
    case MVE_VQNEGs8:
    case MVE_VQMOVNs16bh:
    case MVE_VQMOVNs16th:
    case MVE_VQMOVNs32bh:
    case MVE_VQMOVNs32th:
    case MVE_VQMOVNu16bh:
    case MVE_VQMOVNu16th:
    case MVE_VQMOVNu32bh:
    case MVE_VQMOVNu32th:
    case MVE_VQMOVUNs16bh:
    case MVE_VQMOVUNs16th:
    case MVE_VQMOVUNs32bh:
    case MVE_VQMOVUNs32th:
    case MVE_VQRSHL_by_vecs16:
    case MVE_VQRSHL_by_vecs32:
    case MVE_VQRSHL_by_vecs8:
    case MVE_VQRSHL_by_vecu16:
    case MVE_VQRSHL_by_vecu32:
    case MVE_VQRSHL_by_vecu8:
    case MVE_VQRSHL_qrs16:
    case MVE_VQRSHL_qrs32:
    case MVE_VQRSHL_qrs8:
    case MVE_VQRSHL_qru16:
    case MVE_VQRSHL_qru8:
    case MVE_VQRSHL_qru32:
    case MVE_VQSHLU_imms16:
    case MVE_VQSHLU_imms32:
    case MVE_VQSHLU_imms8:
    case MVE_VQSHLimms16:
    case MVE_VQSHLimms32:
    case MVE_VQSHLimms8:
    case MVE_VQSHLimmu16:
    case MVE_VQSHLimmu32:
    case MVE_VQSHLimmu8:
    case MVE_VQSHL_by_vecs16:
    case MVE_VQSHL_by_vecs32:
    case MVE_VQSHL_by_vecs8:
    case MVE_VQSHL_by_vecu16:
    case MVE_VQSHL_by_vecu32:
    case MVE_VQSHL_by_vecu8:
    case MVE_VQSHL_qrs16:
    case MVE_VQSHL_qrs32:
    case MVE_VQSHL_qrs8:
    case MVE_VQSHL_qru16:
    case MVE_VQSHL_qru32:
    case MVE_VQSHL_qru8:
    case MVE_VQRSHRNbhs16:
    case MVE_VQRSHRNbhs32:
    case MVE_VQRSHRNbhu16:
    case MVE_VQRSHRNbhu32:
    case MVE_VQRSHRNths16:
    case MVE_VQRSHRNths32:
    case MVE_VQRSHRNthu16:
    case MVE_VQRSHRNthu32:
    case MVE_VQRSHRUNs16bh:
    case MVE_VQRSHRUNs16th:
    case MVE_VQRSHRUNs32bh:
    case MVE_VQRSHRUNs32th:
    case MVE_VQSHRNbhs16:
    case MVE_VQSHRNbhs32:
    case MVE_VQSHRNbhu16:
    case MVE_VQSHRNbhu32:
    case MVE_VQSHRNths16:
    case MVE_VQSHRNths32:
    case MVE_VQSHRNthu16:
    case MVE_VQSHRNthu32:
    case MVE_VQSHRUNs16bh:
    case MVE_VQSHRUNs16th:
    case MVE_VQSHRUNs32bh:
    case MVE_VQSHRUNs32th:
    case MVE_VQSUB_qr_s16:
    case MVE_VQSUB_qr_s32:
    case MVE_VQSUB_qr_s8:
    case MVE_VQSUB_qr_u16:
    case MVE_VQSUB_qr_u32:
    case MVE_VQSUB_qr_u8:
    case MVE_VQSUBs16:
    case MVE_VQSUBs32:
    case MVE_VQSUBs8:
    case MVE_VQSUBu16:
    case MVE_VQSUBu32:
    case MVE_VQSUBu8:
    case MVE_VRHADDs16:
    case MVE_VRHADDs32:
    case MVE_VRHADDs8:
    case MVE_VRHADDu16:
    case MVE_VRHADDu32:
    case MVE_VRHADDu8:
    case MVE_VRINTf16A:
    case MVE_VRINTf16M:
    case MVE_VRINTf16N:
    case MVE_VRINTf16P:
    case MVE_VRINTf16X:
    case MVE_VRINTf16Z:
    case MVE_VRINTf32A:
    case MVE_VRINTf32M:
    case MVE_VRINTf32N:
    case MVE_VRINTf32P:
    case MVE_VRINTf32X:
    case MVE_VRINTf32Z:
    case MVE_VRMULHs32:
    case MVE_VRMULHs16:
    case MVE_VRMULHs8:
    case MVE_VRMULHu32:
    case MVE_VRMULHu16:
    case MVE_VRMULHu8:
    case MVE_VRSHL_by_vecs16:
    case MVE_VRSHL_by_vecs32:
    case MVE_VRSHL_by_vecs8:
    case MVE_VRSHL_by_vecu16:
    case MVE_VRSHL_by_vecu32:
    case MVE_VRSHL_by_vecu8:
    case MVE_VRSHL_qrs16:
    case MVE_VRSHL_qrs32:
    case MVE_VRSHL_qrs8:
    case MVE_VRSHL_qru16:
    case MVE_VRSHL_qru32:
    case MVE_VRSHL_qru8:
    case MVE_VRSHR_imms16:
    case MVE_VRSHR_imms32:
    case MVE_VRSHR_imms8:
    case MVE_VRSHR_immu16:
    case MVE_VRSHR_immu32:
    case MVE_VRSHR_immu8:
    case MVE_VRSHRNi16bh:
    case MVE_VRSHRNi16th:
    case MVE_VRSHRNi32bh:
    case MVE_VRSHRNi32th:
    case MVE_VSHL_by_vecs16:
    case MVE_VSHL_by_vecs32:
    case MVE_VSHL_by_vecs8:
    case MVE_VSHL_by_vecu16:
    case MVE_VSHL_by_vecu32:
    case MVE_VSHL_by_vecu8:
    case MVE_VSHL_immi16:
    case MVE_VSHL_immi32:
    case MVE_VSHL_immi8:
    case MVE_VSHL_qrs16:
    case MVE_VSHL_qrs32:
    case MVE_VSHL_qrs8:
    case MVE_VSHL_qru16:
    case MVE_VSHL_qru32:
    case MVE_VSHL_qru8:
    case MVE_VSHR_imms16:
    case MVE_VSHR_imms32:
    case MVE_VSHR_imms8:
    case MVE_VSHR_immu16:
    case MVE_VSHR_immu32:
    case MVE_VSHR_immu8:
    case MVE_VSHRNi16bh:
    case MVE_VSHRNi16th:
    case MVE_VSHRNi32bh:
    case MVE_VSHRNi32th:
    case MVE_VSLIimm16:
    case MVE_VSLIimm32:
    case MVE_VSLIimm8:
    case MVE_VSRIimm16:
    case MVE_VSRIimm32:
    case MVE_VSRIimm8:
    case MVE_VSTRB16:
    case MVE_VSTRB16_post:
    case MVE_VSTRB16_pre:
    case MVE_VSTRB16_rq:
    case MVE_VSTRB32:
    case MVE_VSTRB32_post:
    case MVE_VSTRB32_pre:
    case MVE_VSTRB32_rq:
    case MVE_VSTRB8_rq:
    case MVE_VSTRBU8:
    case MVE_VSTRBU8_post:
    case MVE_VSTRBU8_pre:
    case MVE_VSTRD64_qi:
    case MVE_VSTRD64_qi_pre:
    case MVE_VSTRD64_rq:
    case MVE_VSTRD64_rq_u:
    case MVE_VSTRH16_rq:
    case MVE_VSTRH16_rq_u:
    case MVE_VSTRH32:
    case MVE_VSTRH32_post:
    case MVE_VSTRH32_pre:
    case MVE_VSTRH32_rq:
    case MVE_VSTRH32_rq_u:
    case MVE_VSTRHU16:
    case MVE_VSTRHU16_post:
    case MVE_VSTRHU16_pre:
    case MVE_VSTRW32_qi:
    case MVE_VSTRW32_qi_pre:
    case MVE_VSTRW32_rq:
    case MVE_VSTRW32_rq_u:
    case MVE_VSTRWU32:
    case MVE_VSTRWU32_post:
    case MVE_VSTRWU32_pre:
    case MVE_VSUB_qr_f16:
    case MVE_VSUB_qr_f32:
    case MVE_VSUB_qr_i16:
    case MVE_VSUB_qr_i32:
    case MVE_VSUB_qr_i8:
    case MVE_VSUBf16:
    case MVE_VSUBf32:
    case MVE_VSUBi16:
    case MVE_VSUBi32:
    case MVE_VSUBi8:
    case VLDR_P0_off:
    case VLDR_P0_post:
    case VLDR_P0_pre:
    case VLDR_VPR_off:
    case VLDR_VPR_post:
    case VLDR_VPR_pre:
    case VSTR_P0_off:
    case VSTR_P0_post:
    case VSTR_P0_pre:
    case VSTR_VPR_off:
    case VSTR_VPR_post:
    case VSTR_VPR_pre:
    case VMRS_P0:
    case VMRS_VPR:
      return true;
    }
  };

  LLVMInitializeARMTargetInfo();
  LLVMInitializeARMTarget();
  LLVMInitializeARMTargetMC();

  auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi"));
  std::string Error;
  const Target *T = TargetRegistry::lookupTarget(TT, Error);
  if (!T) {
    dbgs() << Error;
    return;
  }

  TargetOptions Options;
  auto TM = std::unique_ptr<LLVMTargetMachine>(
    static_cast<LLVMTargetMachine*>(
      T->createTargetMachine(TT, "generic", "", Options, None, None,
                             CodeGenOpt::Default)));
  ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()),
                  std::string(TM->getTargetFeatureString()),
                  *static_cast<const ARMBaseTargetMachine *>(TM.get()), false);

  auto MII = TM->getMCInstrInfo();
  for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) {
    uint64_t Flags = MII->get(i).TSFlags;
    if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE)
      continue;
    bool Valid = (Flags & ARMII::ValidForTailPredication) != 0;
    ASSERT_EQ(IsValidTPOpcode(i), Valid)
              << MII->getName(i)
              << ": mismatched expectation for tail-predicated safety\n";
  }
}

TEST(MachineInstr, HasSideEffects) {
  using namespace ARM;
  std::set<unsigned> UnpredictableOpcodes = {
      // MVE Instructions
      MVE_VCTP8,
      MVE_VCTP16,
      MVE_VCTP32,
      MVE_VCTP64,
      MVE_VPST,
      MVE_VPTv16i8,
      MVE_VPTv8i16,
      MVE_VPTv4i32,
      MVE_VPTv16i8r,
      MVE_VPTv8i16r,
      MVE_VPTv4i32r,
      MVE_VPTv16s8,
      MVE_VPTv8s16,
      MVE_VPTv4s32,
      MVE_VPTv16s8r,
      MVE_VPTv8s16r,
      MVE_VPTv4s32r,
      MVE_VPTv16u8,
      MVE_VPTv8u16,
      MVE_VPTv4u32,
      MVE_VPTv16u8r,
      MVE_VPTv8u16r,
      MVE_VPTv4u32r,
      MVE_VPTv8f16,
      MVE_VPTv4f32,
      MVE_VPTv8f16r,
      MVE_VPTv4f32r,
      MVE_VADC,
      MVE_VADCI,
      MVE_VSBC,
      MVE_VSBCI,
      MVE_VSHLC,
      // FP Instructions
      FLDMXIA,
      FLDMXDB_UPD,
      FLDMXIA_UPD,
      FSTMXDB_UPD,
      FSTMXIA,
      FSTMXIA_UPD,
      VLDR_FPCXTNS_off,
      VLDR_FPCXTNS_off,
      VLDR_FPCXTNS_post,
      VLDR_FPCXTNS_pre,
      VLDR_FPCXTS_off,
      VLDR_FPCXTS_post,
      VLDR_FPCXTS_pre,
      VLDR_FPSCR_NZCVQC_off,
      VLDR_FPSCR_NZCVQC_post,
      VLDR_FPSCR_NZCVQC_pre,
      VLDR_FPSCR_off,
      VLDR_FPSCR_post,
      VLDR_FPSCR_pre,
      VLDR_P0_off,
      VLDR_P0_post,
      VLDR_P0_pre,
      VLDR_VPR_off,
      VLDR_VPR_post,
      VLDR_VPR_pre,
      VLLDM,
      VLSTM,
      VMRS,
      VMRS_FPCXTNS,
      VMRS_FPCXTS,
      VMRS_FPEXC,
      VMRS_FPINST,
      VMRS_FPINST2,
      VMRS_FPSCR_NZCVQC,
      VMRS_FPSID,
      VMRS_MVFR0,
      VMRS_MVFR1,
      VMRS_MVFR2,
      VMRS_P0,
      VMRS_VPR,
      VMSR,
      VMSR_FPCXTNS,
      VMSR_FPCXTS,
      VMSR_FPEXC,
      VMSR_FPINST,
      VMSR_FPINST2,
      VMSR_FPSCR_NZCVQC,
      VMSR_FPSID,
      VMSR_P0,
      VMSR_VPR,
      VSCCLRMD,
      VSCCLRMS,
      VSTR_FPCXTNS_off,
      VSTR_FPCXTNS_post,
      VSTR_FPCXTNS_pre,
      VSTR_FPCXTS_off,
      VSTR_FPCXTS_post,
      VSTR_FPCXTS_pre,
      VSTR_FPSCR_NZCVQC_off,
      VSTR_FPSCR_NZCVQC_post,
      VSTR_FPSCR_NZCVQC_pre,
      VSTR_FPSCR_off,
      VSTR_FPSCR_post,
      VSTR_FPSCR_pre,
      VSTR_P0_off,
      VSTR_P0_post,
      VSTR_P0_pre,
      VSTR_VPR_off,
      VSTR_VPR_post,
      VSTR_VPR_pre,
  };

  LLVMInitializeARMTargetInfo();
  LLVMInitializeARMTarget();
  LLVMInitializeARMTargetMC();

  auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi"));
  std::string Error;
  const Target *T = TargetRegistry::lookupTarget(TT, Error);
  if (!T) {
    dbgs() << Error;
    return;
  }

  TargetOptions Options;
  auto TM = std::unique_ptr<LLVMTargetMachine>(
      static_cast<LLVMTargetMachine *>(T->createTargetMachine(
          TT, "generic", "", Options, None, None, CodeGenOpt::Default)));
  ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()),
                  std::string(TM->getTargetFeatureString()),
                  *static_cast<const ARMBaseTargetMachine *>(TM.get()), false);
  const ARMBaseInstrInfo *TII = ST.getInstrInfo();
  auto MII = TM->getMCInstrInfo();

  for (unsigned Op = 0; Op < ARM::INSTRUCTION_LIST_END; ++Op) {
    const MCInstrDesc &Desc = TII->get(Op);
    if ((Desc.TSFlags &
         (ARMII::DomainMVE | ARMII::DomainVFP | ARMII::DomainNEONA8)) == 0)
      continue;
    if (UnpredictableOpcodes.count(Op))
      continue;

    ASSERT_FALSE(Desc.hasUnmodeledSideEffects())
        << MII->getName(Op) << " has unexpected side effects";
  }
}

TEST(MachineInstr, MVEVecSize) {
  using namespace ARM;
  auto MVEVecSize = [](unsigned Opcode) {
    switch (Opcode) {
    default:
    dbgs() << Opcode << "\n";
      llvm_unreachable("Unexpected MVE instruction!");
    case MVE_ASRLi:
    case MVE_ASRLr:
    case MVE_LSLLi:
    case MVE_LSLLr:
    case MVE_LSRL:
    case MVE_SQRSHR:
    case MVE_SQRSHRL:
    case MVE_SQSHL:
    case MVE_SQSHLL:
    case MVE_SRSHR:
    case MVE_SRSHRL:
    case MVE_UQRSHL:
    case MVE_UQRSHLL:
    case MVE_UQSHL:
    case MVE_UQSHLL:
    case MVE_URSHR:
    case MVE_URSHRL:
    case MVE_VABAVs8:
    case MVE_VABAVu8:
    case MVE_VABDs8:
    case MVE_VABDu8:
    case MVE_VABSs8:
    case MVE_VADDVs8acc:
    case MVE_VADDVs8no_acc:
    case MVE_VADDVu8acc:
    case MVE_VADDVu8no_acc:
    case MVE_VADD_qr_i8:
    case MVE_VADDi8:
    case MVE_VBRSR8:
    case MVE_VCADDi8:
    case MVE_VCLSs8:
    case MVE_VCLZs8:
    case MVE_VCMPi8:
    case MVE_VCMPi8r:
    case MVE_VCMPs8:
    case MVE_VCMPs8r:
    case MVE_VCMPu8:
    case MVE_VCMPu8r:
    case MVE_VCTP8:
    case MVE_VDDUPu8:
    case MVE_VDUP8:
    case MVE_VDWDUPu8:
    case MVE_VHADD_qr_s8:
    case MVE_VHADD_qr_u8:
    case MVE_VHADDs8:
    case MVE_VHADDu8:
    case MVE_VHCADDs8:
    case MVE_VHSUB_qr_s8:
    case MVE_VHSUB_qr_u8:
    case MVE_VHSUBs8:
    case MVE_VHSUBu8:
    case MVE_VIDUPu8:
    case MVE_VIWDUPu8:
    case MVE_VLD20_8:
    case MVE_VLD20_8_wb:
    case MVE_VLD21_8:
    case MVE_VLD21_8_wb:
    case MVE_VLD40_8:
    case MVE_VLD40_8_wb:
    case MVE_VLD41_8:
    case MVE_VLD41_8_wb:
    case MVE_VLD42_8:
    case MVE_VLD42_8_wb:
    case MVE_VLD43_8:
    case MVE_VLD43_8_wb:
    case MVE_VLDRBU8:
    case MVE_VLDRBU8_post:
    case MVE_VLDRBU8_pre:
    case MVE_VLDRBU8_rq:
    case MVE_VMAXAVs8:
    case MVE_VMAXAs8:
    case MVE_VMAXVs8:
    case MVE_VMAXVu8:
    case MVE_VMAXs8:
    case MVE_VMAXu8:
    case MVE_VMINAVs8:
    case MVE_VMINAs8:
    case MVE_VMINVs8:
    case MVE_VMINVu8:
    case MVE_VMINs8:
    case MVE_VMINu8:
    case MVE_VMLADAVas8:
    case MVE_VMLADAVau8:
    case MVE_VMLADAVaxs8:
    case MVE_VMLADAVs8:
    case MVE_VMLADAVu8:
    case MVE_VMLADAVxs8:
    case MVE_VMLAS_qr_s8:
    case MVE_VMLAS_qr_u8:
    case MVE_VMLA_qr_s8:
    case MVE_VMLA_qr_u8:
    case MVE_VMLSDAVas8:
    case MVE_VMLSDAVaxs8:
    case MVE_VMLSDAVs8:
    case MVE_VMLSDAVxs8:
    case MVE_VMOV_from_lane_s8:
    case MVE_VMOV_from_lane_u8:
    case MVE_VMOV_to_lane_8:
    case MVE_VMOVimmi8:
    case MVE_VMULHs8:
    case MVE_VMULHu8:
    case MVE_VMUL_qr_i8:
    case MVE_VMULi8:
    case MVE_VNEGs8:
    case MVE_VPTv16i8:
    case MVE_VPTv16i8r:
    case MVE_VPTv16s8:
    case MVE_VPTv16s8r:
    case MVE_VPTv16u8:
    case MVE_VPTv16u8r:
    case MVE_VQABSs8:
    case MVE_VQADD_qr_s8:
    case MVE_VQADD_qr_u8:
    case MVE_VQADDs8:
    case MVE_VQADDu8:
    case MVE_VQDMLADHXs8:
    case MVE_VQDMLADHs8:
    case MVE_VQDMLAH_qrs8:
    case MVE_VQDMLASH_qrs8:
    case MVE_VQDMLSDHXs8:
    case MVE_VQDMLSDHs8:
    case MVE_VQDMULH_qr_s8:
    case MVE_VQDMULHi8:
    case MVE_VQNEGs8:
    case MVE_VQRDMLADHXs8:
    case MVE_VQRDMLADHs8:
    case MVE_VQRDMLAH_qrs8:
    case MVE_VQRDMLASH_qrs8:
    case MVE_VQRDMLSDHXs8:
    case MVE_VQRDMLSDHs8:
    case MVE_VQRDMULH_qr_s8:
    case MVE_VQRDMULHi8:
    case MVE_VQRSHL_by_vecs8:
    case MVE_VQRSHL_by_vecu8:
    case MVE_VQRSHL_qrs8:
    case MVE_VQRSHL_qru8:
    case MVE_VQSHLU_imms8:
    case MVE_VQSHL_by_vecs8:
    case MVE_VQSHL_by_vecu8:
    case MVE_VQSHL_qrs8:
    case MVE_VQSHL_qru8:
    case MVE_VQSHLimms8:
    case MVE_VQSHLimmu8:
    case MVE_VQSUB_qr_s8:
    case MVE_VQSUB_qr_u8:
    case MVE_VQSUBs8:
    case MVE_VQSUBu8:
    case MVE_VRHADDs8:
    case MVE_VRHADDu8:
    case MVE_VRMULHs8:
    case MVE_VRMULHu8:
    case MVE_VRSHL_by_vecs8:
    case MVE_VRSHL_by_vecu8:
    case MVE_VRSHL_qrs8:
    case MVE_VRSHL_qru8:
    case MVE_VRSHR_imms8:
    case MVE_VRSHR_immu8:
    case MVE_VSHL_by_vecs8:
    case MVE_VSHL_by_vecu8:
    case MVE_VSHL_immi8:
    case MVE_VSHL_qru8:
    case MVE_VSHL_qrs8:
    case MVE_VSHR_imms8:
    case MVE_VSHR_immu8:
    case MVE_VSLIimm8:
    case MVE_VSRIimm8:
    case MVE_VST20_8:
    case MVE_VST20_8_wb:
    case MVE_VST21_8:
    case MVE_VST21_8_wb:
    case MVE_VST40_8:
    case MVE_VST40_8_wb:
    case MVE_VST41_8:
    case MVE_VST41_8_wb:
    case MVE_VST42_8:
    case MVE_VST42_8_wb:
    case MVE_VST43_8:
    case MVE_VST43_8_wb:
    case MVE_VSTRB8_rq:
    case MVE_VSTRBU8:
    case MVE_VSTRBU8_post:
    case MVE_VSTRBU8_pre:
    case MVE_VSUB_qr_i8:
    case MVE_VSUBi8:
    case MVE_VAND:
    case MVE_VBIC:
    case MVE_VEOR:
    case MVE_VMVN:
    case MVE_VORN:
    case MVE_VORR:
    case MVE_VPNOT:
    case MVE_VPSEL:
    case MVE_VPST:
    case MQPRCopy:
      return 0;
    case MVE_VABAVs16:
    case MVE_VABAVu16:
    case MVE_VABDf16:
    case MVE_VABDs16:
    case MVE_VABDu16:
    case MVE_VABSf16:
    case MVE_VABSs16:
    case MVE_VADDVs16acc:
    case MVE_VADDVs16no_acc:
    case MVE_VADDVu16acc:
    case MVE_VADDVu16no_acc:
    case MVE_VADD_qr_f16:
    case MVE_VADD_qr_i16:
    case MVE_VADDf16:
    case MVE_VADDi16:
    case MVE_VBICimmi16:
    case MVE_VBRSR16:
    case MVE_VCADDf16:
    case MVE_VCADDi16:
    case MVE_VCLSs16:
    case MVE_VCLZs16:
    case MVE_VCMLAf16:
    case MVE_VCMPf16:
    case MVE_VCMPf16r:
    case MVE_VCMPi16:
    case MVE_VCMPi16r:
    case MVE_VCMPs16:
    case MVE_VCMPs16r:
    case MVE_VCMPu16:
    case MVE_VCMPu16r:
    case MVE_VCMULf16:
    case MVE_VCTP16:
    case MVE_VCVTf16s16_fix:
    case MVE_VCVTf16s16n:
    case MVE_VCVTf16u16_fix:
    case MVE_VCVTf16u16n:
    case MVE_VCVTs16f16_fix:
    case MVE_VCVTs16f16a:
    case MVE_VCVTs16f16m:
    case MVE_VCVTs16f16n:
    case MVE_VCVTs16f16p:
    case MVE_VCVTs16f16z:
    case MVE_VCVTu16f16_fix:
    case MVE_VCVTu16f16a:
    case MVE_VCVTu16f16m:
    case MVE_VCVTu16f16n:
    case MVE_VCVTu16f16p:
    case MVE_VCVTu16f16z:
    case MVE_VDDUPu16:
    case MVE_VDUP16:
    case MVE_VDWDUPu16:
    case MVE_VFMA_qr_Sf16:
    case MVE_VFMA_qr_f16:
    case MVE_VFMAf16:
    case MVE_VFMSf16:
    case MVE_VHADD_qr_s16:
    case MVE_VHADD_qr_u16:
    case MVE_VHADDs16:
    case MVE_VHADDu16:
    case MVE_VHCADDs16:
    case MVE_VHSUB_qr_s16:
    case MVE_VHSUB_qr_u16:
    case MVE_VHSUBs16:
    case MVE_VHSUBu16:
    case MVE_VIDUPu16:
    case MVE_VIWDUPu16:
    case MVE_VLD20_16:
    case MVE_VLD20_16_wb:
    case MVE_VLD21_16:
    case MVE_VLD21_16_wb:
    case MVE_VLD40_16:
    case MVE_VLD40_16_wb:
    case MVE_VLD41_16:
    case MVE_VLD41_16_wb:
    case MVE_VLD42_16:
    case MVE_VLD42_16_wb:
    case MVE_VLD43_16:
    case MVE_VLD43_16_wb:
    case MVE_VLDRBS16:
    case MVE_VLDRBS16_post:
    case MVE_VLDRBS16_pre:
    case MVE_VLDRBS16_rq:
    case MVE_VLDRBU16:
    case MVE_VLDRBU16_post:
    case MVE_VLDRBU16_pre:
    case MVE_VLDRBU16_rq:
    case MVE_VLDRHU16:
    case MVE_VLDRHU16_post:
    case MVE_VLDRHU16_pre:
    case MVE_VLDRHU16_rq:
    case MVE_VLDRHU16_rq_u:
    case MVE_VMAXAVs16:
    case MVE_VMAXAs16:
    case MVE_VMAXNMAVf16:
    case MVE_VMAXNMAf16:
    case MVE_VMAXNMVf16:
    case MVE_VMAXNMf16:
    case MVE_VMAXVs16:
    case MVE_VMAXVu16:
    case MVE_VMAXs16:
    case MVE_VMAXu16:
    case MVE_VMINAVs16:
    case MVE_VMINAs16:
    case MVE_VMINNMAVf16:
    case MVE_VMINNMAf16:
    case MVE_VMINNMVf16:
    case MVE_VMINNMf16:
    case MVE_VMINVs16:
    case MVE_VMINVu16:
    case MVE_VMINs16:
    case MVE_VMINu16:
    case MVE_VMLADAVas16:
    case MVE_VMLADAVau16:
    case MVE_VMLADAVaxs16:
    case MVE_VMLADAVs16:
    case MVE_VMLADAVu16:
    case MVE_VMLADAVxs16:
    case MVE_VMLALDAVas16:
    case MVE_VMLALDAVau16:
    case MVE_VMLALDAVaxs16:
    case MVE_VMLALDAVs16:
    case MVE_VMLALDAVu16:
    case MVE_VMLALDAVxs16:
    case MVE_VMLAS_qr_s16:
    case MVE_VMLAS_qr_u16:
    case MVE_VMLA_qr_s16:
    case MVE_VMLA_qr_u16:
    case MVE_VMLSDAVas16:
    case MVE_VMLSDAVaxs16:
    case MVE_VMLSDAVs16:
    case MVE_VMLSDAVxs16:
    case MVE_VMLSLDAVas16:
    case MVE_VMLSLDAVaxs16:
    case MVE_VMLSLDAVs16:
    case MVE_VMLSLDAVxs16:
    case MVE_VMOVNi16bh:
    case MVE_VMOVNi16th:
    case MVE_VMOV_from_lane_s16:
    case MVE_VMOV_from_lane_u16:
    case MVE_VMOV_to_lane_16:
    case MVE_VMOVimmi16:
    case MVE_VMOVLs8bh:
    case MVE_VMOVLs8th:
    case MVE_VMOVLu8bh:
    case MVE_VMOVLu8th:
    case MVE_VMULLBp8:
    case MVE_VMULLBs8:
    case MVE_VMULLBu8:
    case MVE_VMULLTp8:
    case MVE_VMULLTs8:
    case MVE_VMULLTu8:
    case MVE_VMULHs16:
    case MVE_VMULHu16:
    case MVE_VMUL_qr_f16:
    case MVE_VMUL_qr_i16:
    case MVE_VMULf16:
    case MVE_VMULi16:
    case MVE_VMVNimmi16:
    case MVE_VNEGf16:
    case MVE_VNEGs16:
    case MVE_VORRimmi16:
    case MVE_VPTv8f16:
    case MVE_VPTv8f16r:
    case MVE_VPTv8i16:
    case MVE_VPTv8i16r:
    case MVE_VPTv8s16:
    case MVE_VPTv8s16r:
    case MVE_VPTv8u16:
    case MVE_VPTv8u16r:
    case MVE_VQABSs16:
    case MVE_VQADD_qr_s16:
    case MVE_VQADD_qr_u16:
    case MVE_VQADDs16:
    case MVE_VQADDu16:
    case MVE_VQDMLADHXs16:
    case MVE_VQDMLADHs16:
    case MVE_VQDMLAH_qrs16:
    case MVE_VQDMLASH_qrs16:
    case MVE_VQDMLSDHXs16:
    case MVE_VQDMLSDHs16:
    case MVE_VQDMULH_qr_s16:
    case MVE_VQDMULHi16:
    case MVE_VQDMULL_qr_s16bh:
    case MVE_VQDMULL_qr_s16th:
    case MVE_VQDMULLs16bh:
    case MVE_VQDMULLs16th:
    case MVE_VQMOVNs16bh:
    case MVE_VQMOVNs16th:
    case MVE_VQMOVNu16bh:
    case MVE_VQMOVNu16th:
    case MVE_VQMOVUNs16bh:
    case MVE_VQMOVUNs16th:
    case MVE_VQNEGs16:
    case MVE_VQRDMLADHXs16:
    case MVE_VQRDMLADHs16:
    case MVE_VQRDMLAH_qrs16:
    case MVE_VQRDMLASH_qrs16:
    case MVE_VQRDMLSDHXs16:
    case MVE_VQRDMLSDHs16:
    case MVE_VQRDMULH_qr_s16:
    case MVE_VQRDMULHi16:
    case MVE_VQRSHL_by_vecs16:
    case MVE_VQRSHL_by_vecu16:
    case MVE_VQRSHL_qrs16:
    case MVE_VQRSHL_qru16:
    case MVE_VQRSHRNbhs16:
    case MVE_VQRSHRNbhu16:
    case MVE_VQRSHRNths16:
    case MVE_VQRSHRNthu16:
    case MVE_VQRSHRUNs16bh:
    case MVE_VQRSHRUNs16th:
    case MVE_VQSHLU_imms16:
    case MVE_VQSHL_by_vecs16:
    case MVE_VQSHL_by_vecu16:
    case MVE_VQSHL_qrs16:
    case MVE_VQSHL_qru16:
    case MVE_VQSHLimms16:
    case MVE_VQSHLimmu16:
    case MVE_VQSHRNbhs16:
    case MVE_VQSHRNbhu16:
    case MVE_VQSHRNths16:
    case MVE_VQSHRNthu16:
    case MVE_VQSHRUNs16bh:
    case MVE_VQSHRUNs16th:
    case MVE_VQSUB_qr_s16:
    case MVE_VQSUB_qr_u16:
    case MVE_VQSUBs16:
    case MVE_VQSUBu16:
    case MVE_VREV16_8:
    case MVE_VRHADDs16:
    case MVE_VRHADDu16:
    case MVE_VRINTf16A:
    case MVE_VRINTf16M:
    case MVE_VRINTf16N:
    case MVE_VRINTf16P:
    case MVE_VRINTf16X:
    case MVE_VRINTf16Z:
    case MVE_VRMULHs16:
    case MVE_VRMULHu16:
    case MVE_VRSHL_by_vecs16:
    case MVE_VRSHL_by_vecu16:
    case MVE_VRSHL_qrs16:
    case MVE_VRSHL_qru16:
    case MVE_VRSHRNi16bh:
    case MVE_VRSHRNi16th:
    case MVE_VRSHR_imms16:
    case MVE_VRSHR_immu16:
    case MVE_VSHLL_imms8bh:
    case MVE_VSHLL_imms8th:
    case MVE_VSHLL_immu8bh:
    case MVE_VSHLL_immu8th:
    case MVE_VSHLL_lws8bh:
    case MVE_VSHLL_lws8th:
    case MVE_VSHLL_lwu8bh:
    case MVE_VSHLL_lwu8th:
    case MVE_VSHL_by_vecs16:
    case MVE_VSHL_by_vecu16:
    case MVE_VSHL_immi16:
    case MVE_VSHL_qrs16:
    case MVE_VSHL_qru16:
    case MVE_VSHRNi16bh:
    case MVE_VSHRNi16th:
    case MVE_VSHR_imms16:
    case MVE_VSHR_immu16:
    case MVE_VSLIimm16:
    case MVE_VSRIimm16:
    case MVE_VST20_16:
    case MVE_VST20_16_wb:
    case MVE_VST21_16:
    case MVE_VST21_16_wb:
    case MVE_VST40_16:
    case MVE_VST40_16_wb:
    case MVE_VST41_16:
    case MVE_VST41_16_wb:
    case MVE_VST42_16:
    case MVE_VST42_16_wb:
    case MVE_VST43_16:
    case MVE_VST43_16_wb:
    case MVE_VSTRB16:
    case MVE_VSTRB16_post:
    case MVE_VSTRB16_pre:
    case MVE_VSTRB16_rq:
    case MVE_VSTRH16_rq:
    case MVE_VSTRH16_rq_u:
    case MVE_VSTRHU16:
    case MVE_VSTRHU16_post:
    case MVE_VSTRHU16_pre:
    case MVE_VSUB_qr_f16:
    case MVE_VSUB_qr_i16:
    case MVE_VSUBf16:
    case MVE_VSUBi16:
      return 1;
    case MVE_VABAVs32:
    case MVE_VABAVu32:
    case MVE_VABDf32:
    case MVE_VABDs32:
    case MVE_VABDu32:
    case MVE_VABSf32:
    case MVE_VABSs32:
    case MVE_VADC:
    case MVE_VADCI:
    case MVE_VADDLVs32acc:
    case MVE_VADDLVs32no_acc:
    case MVE_VADDLVu32acc:
    case MVE_VADDLVu32no_acc:
    case MVE_VADDVs32acc:
    case MVE_VADDVs32no_acc:
    case MVE_VADDVu32acc:
    case MVE_VADDVu32no_acc:
    case MVE_VADD_qr_f32:
    case MVE_VADD_qr_i32:
    case MVE_VADDf32:
    case MVE_VADDi32:
    case MVE_VBICimmi32:
    case MVE_VBRSR32:
    case MVE_VCADDf32:
    case MVE_VCADDi32:
    case MVE_VCLSs32:
    case MVE_VCLZs32:
    case MVE_VCMLAf32:
    case MVE_VCMPf32:
    case MVE_VCMPf32r:
    case MVE_VCMPi32:
    case MVE_VCMPi32r:
    case MVE_VCMPs32:
    case MVE_VCMPs32r:
    case MVE_VCMPu32:
    case MVE_VCMPu32r:
    case MVE_VCMULf32:
    case MVE_VCTP32:
    case MVE_VCVTf16f32bh:
    case MVE_VCVTf16f32th:
    case MVE_VCVTf32f16bh:
    case MVE_VCVTf32f16th:
    case MVE_VCVTf32s32_fix:
    case MVE_VCVTf32s32n:
    case MVE_VCVTf32u32_fix:
    case MVE_VCVTf32u32n:
    case MVE_VCVTs32f32_fix:
    case MVE_VCVTs32f32a:
    case MVE_VCVTs32f32m:
    case MVE_VCVTs32f32n:
    case MVE_VCVTs32f32p:
    case MVE_VCVTs32f32z:
    case MVE_VCVTu32f32_fix:
    case MVE_VCVTu32f32a:
    case MVE_VCVTu32f32m:
    case MVE_VCVTu32f32n:
    case MVE_VCVTu32f32p:
    case MVE_VCVTu32f32z:
    case MVE_VDDUPu32:
    case MVE_VDUP32:
    case MVE_VDWDUPu32:
    case MVE_VFMA_qr_Sf32:
    case MVE_VFMA_qr_f32:
    case MVE_VFMAf32:
    case MVE_VFMSf32:
    case MVE_VHADD_qr_s32:
    case MVE_VHADD_qr_u32:
    case MVE_VHADDs32:
    case MVE_VHADDu32:
    case MVE_VHCADDs32:
    case MVE_VHSUB_qr_s32:
    case MVE_VHSUB_qr_u32:
    case MVE_VHSUBs32:
    case MVE_VHSUBu32:
    case MVE_VIDUPu32:
    case MVE_VIWDUPu32:
    case MVE_VLD20_32:
    case MVE_VLD20_32_wb:
    case MVE_VLD21_32:
    case MVE_VLD21_32_wb:
    case MVE_VLD40_32:
    case MVE_VLD40_32_wb:
    case MVE_VLD41_32:
    case MVE_VLD41_32_wb:
    case MVE_VLD42_32:
    case MVE_VLD42_32_wb:
    case MVE_VLD43_32:
    case MVE_VLD43_32_wb:
    case MVE_VLDRBS32:
    case MVE_VLDRBS32_post:
    case MVE_VLDRBS32_pre:
    case MVE_VLDRBS32_rq:
    case MVE_VLDRBU32:
    case MVE_VLDRBU32_post:
    case MVE_VLDRBU32_pre:
    case MVE_VLDRBU32_rq:
    case MVE_VLDRHS32:
    case MVE_VLDRHS32_post:
    case MVE_VLDRHS32_pre:
    case MVE_VLDRHS32_rq:
    case MVE_VLDRHS32_rq_u:
    case MVE_VLDRHU32:
    case MVE_VLDRHU32_post:
    case MVE_VLDRHU32_pre:
    case MVE_VLDRHU32_rq:
    case MVE_VLDRHU32_rq_u:
    case MVE_VLDRWU32:
    case MVE_VLDRWU32_post:
    case MVE_VLDRWU32_pre:
    case MVE_VLDRWU32_qi:
    case MVE_VLDRWU32_qi_pre:
    case MVE_VLDRWU32_rq:
    case MVE_VLDRWU32_rq_u:
    case MVE_VMAXAVs32:
    case MVE_VMAXAs32:
    case MVE_VMAXNMAVf32:
    case MVE_VMAXNMAf32:
    case MVE_VMAXNMVf32:
    case MVE_VMAXNMf32:
    case MVE_VMAXVs32:
    case MVE_VMAXVu32:
    case MVE_VMAXs32:
    case MVE_VMAXu32:
    case MVE_VMINAVs32:
    case MVE_VMINAs32:
    case MVE_VMINNMAVf32:
    case MVE_VMINNMAf32:
    case MVE_VMINNMVf32:
    case MVE_VMINNMf32:
    case MVE_VMINVs32:
    case MVE_VMINVu32:
    case MVE_VMINs32:
    case MVE_VMINu32:
    case MVE_VMLADAVas32:
    case MVE_VMLADAVau32:
    case MVE_VMLADAVaxs32:
    case MVE_VMLADAVs32:
    case MVE_VMLADAVu32:
    case MVE_VMLADAVxs32:
    case MVE_VMLALDAVas32:
    case MVE_VMLALDAVau32:
    case MVE_VMLALDAVaxs32:
    case MVE_VMLALDAVs32:
    case MVE_VMLALDAVu32:
    case MVE_VMLALDAVxs32:
    case MVE_VMLAS_qr_s32:
    case MVE_VMLAS_qr_u32:
    case MVE_VMLA_qr_s32:
    case MVE_VMLA_qr_u32:
    case MVE_VMLSDAVas32:
    case MVE_VMLSDAVaxs32:
    case MVE_VMLSDAVs32:
    case MVE_VMLSDAVxs32:
    case MVE_VMLSLDAVas32:
    case MVE_VMLSLDAVaxs32:
    case MVE_VMLSLDAVs32:
    case MVE_VMLSLDAVxs32:
    case MVE_VMOVNi32bh:
    case MVE_VMOVNi32th:
    case MVE_VMOV_from_lane_32:
    case MVE_VMOV_q_rr:
    case MVE_VMOV_rr_q:
    case MVE_VMOV_to_lane_32:
    case MVE_VMOVimmf32:
    case MVE_VMOVimmi32:
    case MVE_VMOVLs16bh:
    case MVE_VMOVLs16th:
    case MVE_VMOVLu16bh:
    case MVE_VMOVLu16th:
    case MVE_VMULHs32:
    case MVE_VMULHu32:
    case MVE_VMULLBp16:
    case MVE_VMULLBs16:
    case MVE_VMULLBu16:
    case MVE_VMULLTp16:
    case MVE_VMULLTs16:
    case MVE_VMULLTu16:
    case MVE_VMUL_qr_f32:
    case MVE_VMUL_qr_i32:
    case MVE_VMULf32:
    case MVE_VMULi32:
    case MVE_VMVNimmi32:
    case MVE_VNEGf32:
    case MVE_VNEGs32:
    case MVE_VORRimmi32:
    case MVE_VPTv4f32:
    case MVE_VPTv4f32r:
    case MVE_VPTv4i32:
    case MVE_VPTv4i32r:
    case MVE_VPTv4s32:
    case MVE_VPTv4s32r:
    case MVE_VPTv4u32:
    case MVE_VPTv4u32r:
    case MVE_VQABSs32:
    case MVE_VQADD_qr_s32:
    case MVE_VQADD_qr_u32:
    case MVE_VQADDs32:
    case MVE_VQADDu32:
    case MVE_VQDMLADHXs32:
    case MVE_VQDMLADHs32:
    case MVE_VQDMLAH_qrs32:
    case MVE_VQDMLASH_qrs32:
    case MVE_VQDMLSDHXs32:
    case MVE_VQDMLSDHs32:
    case MVE_VQDMULH_qr_s32:
    case MVE_VQDMULHi32:
    case MVE_VQDMULL_qr_s32bh:
    case MVE_VQDMULL_qr_s32th:
    case MVE_VQDMULLs32bh:
    case MVE_VQDMULLs32th:
    case MVE_VQMOVNs32bh:
    case MVE_VQMOVNs32th:
    case MVE_VQMOVNu32bh:
    case MVE_VQMOVNu32th:
    case MVE_VQMOVUNs32bh:
    case MVE_VQMOVUNs32th:
    case MVE_VQNEGs32:
    case MVE_VQRDMLADHXs32:
    case MVE_VQRDMLADHs32:
    case MVE_VQRDMLAH_qrs32:
    case MVE_VQRDMLASH_qrs32:
    case MVE_VQRDMLSDHXs32:
    case MVE_VQRDMLSDHs32:
    case MVE_VQRDMULH_qr_s32:
    case MVE_VQRDMULHi32:
    case MVE_VQRSHL_by_vecs32:
    case MVE_VQRSHL_by_vecu32:
    case MVE_VQRSHL_qrs32:
    case MVE_VQRSHL_qru32:
    case MVE_VQRSHRNbhs32:
    case MVE_VQRSHRNbhu32:
    case MVE_VQRSHRNths32:
    case MVE_VQRSHRNthu32:
    case MVE_VQRSHRUNs32bh:
    case MVE_VQRSHRUNs32th:
    case MVE_VQSHLU_imms32:
    case MVE_VQSHL_by_vecs32:
    case MVE_VQSHL_by_vecu32:
    case MVE_VQSHL_qrs32:
    case MVE_VQSHL_qru32:
    case MVE_VQSHLimms32:
    case MVE_VQSHLimmu32:
    case MVE_VQSHRNbhs32:
    case MVE_VQSHRNbhu32:
    case MVE_VQSHRNths32:
    case MVE_VQSHRNthu32:
    case MVE_VQSHRUNs32bh:
    case MVE_VQSHRUNs32th:
    case MVE_VQSUB_qr_s32:
    case MVE_VQSUB_qr_u32:
    case MVE_VQSUBs32:
    case MVE_VQSUBu32:
    case MVE_VREV32_16:
    case MVE_VREV32_8:
    case MVE_VRHADDs32:
    case MVE_VRHADDu32:
    case MVE_VRINTf32A:
    case MVE_VRINTf32M:
    case MVE_VRINTf32N:
    case MVE_VRINTf32P:
    case MVE_VRINTf32X:
    case MVE_VRINTf32Z:
    case MVE_VRMLALDAVHas32:
    case MVE_VRMLALDAVHau32:
    case MVE_VRMLALDAVHaxs32:
    case MVE_VRMLALDAVHs32:
    case MVE_VRMLALDAVHu32:
    case MVE_VRMLALDAVHxs32:
    case MVE_VRMLSLDAVHas32:
    case MVE_VRMLSLDAVHaxs32:
    case MVE_VRMLSLDAVHs32:
    case MVE_VRMLSLDAVHxs32:
    case MVE_VRMULHs32:
    case MVE_VRMULHu32:
    case MVE_VRSHL_by_vecs32:
    case MVE_VRSHL_by_vecu32:
    case MVE_VRSHL_qrs32:
    case MVE_VRSHL_qru32:
    case MVE_VRSHRNi32bh:
    case MVE_VRSHRNi32th:
    case MVE_VRSHR_imms32:
    case MVE_VRSHR_immu32:
    case MVE_VSBC:
    case MVE_VSBCI:
    case MVE_VSHLC:
    case MVE_VSHLL_imms16bh:
    case MVE_VSHLL_imms16th:
    case MVE_VSHLL_immu16bh:
    case MVE_VSHLL_immu16th:
    case MVE_VSHLL_lws16bh:
    case MVE_VSHLL_lws16th:
    case MVE_VSHLL_lwu16bh:
    case MVE_VSHLL_lwu16th:
    case MVE_VSHL_by_vecs32:
    case MVE_VSHL_by_vecu32:
    case MVE_VSHL_immi32:
    case MVE_VSHL_qrs32:
    case MVE_VSHL_qru32:
    case MVE_VSHRNi32bh:
    case MVE_VSHRNi32th:
    case MVE_VSHR_imms32:
    case MVE_VSHR_immu32:
    case MVE_VSLIimm32:
    case MVE_VSRIimm32:
    case MVE_VST20_32:
    case MVE_VST20_32_wb:
    case MVE_VST21_32:
    case MVE_VST21_32_wb:
    case MVE_VST40_32:
    case MVE_VST40_32_wb:
    case MVE_VST41_32:
    case MVE_VST41_32_wb:
    case MVE_VST42_32:
    case MVE_VST42_32_wb:
    case MVE_VST43_32:
    case MVE_VST43_32_wb:
    case MVE_VSTRB32:
    case MVE_VSTRB32_post:
    case MVE_VSTRB32_pre:
    case MVE_VSTRB32_rq:
    case MVE_VSTRH32:
    case MVE_VSTRH32_post:
    case MVE_VSTRH32_pre:
    case MVE_VSTRH32_rq:
    case MVE_VSTRH32_rq_u:
    case MVE_VSTRW32_qi:
    case MVE_VSTRW32_qi_pre:
    case MVE_VSTRW32_rq:
    case MVE_VSTRW32_rq_u:
    case MVE_VSTRWU32:
    case MVE_VSTRWU32_post:
    case MVE_VSTRWU32_pre:
    case MVE_VSUB_qr_f32:
    case MVE_VSUB_qr_i32:
    case MVE_VSUBf32:
    case MVE_VSUBi32:
      return 2;
    case MVE_VCTP64:
    case MVE_VLDRDU64_qi:
    case MVE_VLDRDU64_qi_pre:
    case MVE_VLDRDU64_rq:
    case MVE_VLDRDU64_rq_u:
    case MVE_VMULLBs32:
    case MVE_VMULLBu32:
    case MVE_VMULLTs32:
    case MVE_VMULLTu32:
    case MVE_VMOVimmi64:
    case MVE_VREV64_16:
    case MVE_VREV64_32:
    case MVE_VREV64_8:
    case MVE_VSTRD64_qi:
    case MVE_VSTRD64_qi_pre:
    case MVE_VSTRD64_rq:
    case MVE_VSTRD64_rq_u:
      return 3;
    }
  };
  LLVMInitializeARMTargetInfo();
  LLVMInitializeARMTarget();
  LLVMInitializeARMTargetMC();

  auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi"));
  std::string Error;
  const Target *T = TargetRegistry::lookupTarget(TT, Error);
  if (!T) {
    dbgs() << Error;
    return;
  }

  TargetOptions Options;
  auto TM = std::unique_ptr<LLVMTargetMachine>(
    static_cast<LLVMTargetMachine*>(
      T->createTargetMachine(TT, "generic", "", Options, None, None,
                             CodeGenOpt::Default)));
  ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()),
                  std::string(TM->getTargetFeatureString()),
                  *static_cast<const ARMBaseTargetMachine *>(TM.get()), false);

  auto MII = TM->getMCInstrInfo();
  for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) {
    uint64_t Flags = MII->get(i).TSFlags;
    if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE)
      continue;
    int Size = (Flags & ARMII::VecSize) >> ARMII::VecSizeShift;
    ASSERT_EQ(MVEVecSize(i), Size)
              << MII->getName(i)
              << ": mismatched expectation for MVE vec size\n";
  }
}
