126a475afSSam Parker #include "ARMBaseInstrInfo.h" 226a475afSSam Parker #include "ARMSubtarget.h" 326a475afSSam Parker #include "ARMTargetMachine.h" 489b57061SReid Kleckner #include "llvm/MC/TargetRegistry.h" 526a475afSSam Parker #include "llvm/Support/TargetSelect.h" 626a475afSSam Parker #include "llvm/Target/TargetMachine.h" 726a475afSSam Parker #include "llvm/Target/TargetOptions.h" 826a475afSSam Parker 926a475afSSam Parker #include "gtest/gtest.h" 1026a475afSSam Parker 1126a475afSSam Parker using namespace llvm; 1226a475afSSam Parker 130e6aa083SSam Parker TEST(MachineInstructionDoubleWidthResult, IsCorrect) { 140e6aa083SSam Parker using namespace ARM; 150e6aa083SSam Parker 160e6aa083SSam Parker auto DoubleWidthResult = [](unsigned Opcode) { 170e6aa083SSam Parker switch (Opcode) { 180e6aa083SSam Parker default: 190e6aa083SSam Parker break; 200e6aa083SSam Parker case MVE_VMULLBp16: 210e6aa083SSam Parker case MVE_VMULLBp8: 220e6aa083SSam Parker case MVE_VMULLBs16: 230e6aa083SSam Parker case MVE_VMULLBs32: 240e6aa083SSam Parker case MVE_VMULLBs8: 250e6aa083SSam Parker case MVE_VMULLBu16: 260e6aa083SSam Parker case MVE_VMULLBu32: 270e6aa083SSam Parker case MVE_VMULLBu8: 280e6aa083SSam Parker case MVE_VMULLTp16: 290e6aa083SSam Parker case MVE_VMULLTp8: 300e6aa083SSam Parker case MVE_VMULLTs16: 310e6aa083SSam Parker case MVE_VMULLTs32: 320e6aa083SSam Parker case MVE_VMULLTs8: 330e6aa083SSam Parker case MVE_VMULLTu16: 340e6aa083SSam Parker case MVE_VMULLTu32: 350e6aa083SSam Parker case MVE_VMULLTu8: 360e6aa083SSam Parker case MVE_VQDMULL_qr_s16bh: 370e6aa083SSam Parker case MVE_VQDMULL_qr_s16th: 380e6aa083SSam Parker case MVE_VQDMULL_qr_s32bh: 390e6aa083SSam Parker case MVE_VQDMULL_qr_s32th: 400e6aa083SSam Parker case MVE_VQDMULLs16bh: 410e6aa083SSam Parker case MVE_VQDMULLs16th: 420e6aa083SSam Parker case MVE_VQDMULLs32bh: 430e6aa083SSam Parker case MVE_VQDMULLs32th: 440e6aa083SSam Parker case MVE_VMOVLs16bh: 450e6aa083SSam Parker case MVE_VMOVLs16th: 460e6aa083SSam Parker case MVE_VMOVLs8bh: 470e6aa083SSam Parker case MVE_VMOVLs8th: 480e6aa083SSam Parker case MVE_VMOVLu16bh: 490e6aa083SSam Parker case MVE_VMOVLu16th: 500e6aa083SSam Parker case MVE_VMOVLu8bh: 510e6aa083SSam Parker case MVE_VMOVLu8th: 520e6aa083SSam Parker case MVE_VSHLL_imms16bh: 530e6aa083SSam Parker case MVE_VSHLL_imms16th: 540e6aa083SSam Parker case MVE_VSHLL_imms8bh: 550e6aa083SSam Parker case MVE_VSHLL_imms8th: 560e6aa083SSam Parker case MVE_VSHLL_immu16bh: 570e6aa083SSam Parker case MVE_VSHLL_immu16th: 580e6aa083SSam Parker case MVE_VSHLL_immu8bh: 590e6aa083SSam Parker case MVE_VSHLL_immu8th: 600e6aa083SSam Parker case MVE_VSHLL_lws16bh: 610e6aa083SSam Parker case MVE_VSHLL_lws16th: 620e6aa083SSam Parker case MVE_VSHLL_lws8bh: 630e6aa083SSam Parker case MVE_VSHLL_lws8th: 640e6aa083SSam Parker case MVE_VSHLL_lwu16bh: 650e6aa083SSam Parker case MVE_VSHLL_lwu16th: 660e6aa083SSam Parker case MVE_VSHLL_lwu8bh: 670e6aa083SSam Parker case MVE_VSHLL_lwu8th: 680e6aa083SSam Parker return true; 690e6aa083SSam Parker } 700e6aa083SSam Parker return false; 710e6aa083SSam Parker }; 720e6aa083SSam Parker 730e6aa083SSam Parker LLVMInitializeARMTargetInfo(); 740e6aa083SSam Parker LLVMInitializeARMTarget(); 750e6aa083SSam Parker LLVMInitializeARMTargetMC(); 760e6aa083SSam Parker 77eecba950SDavid Green auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi")); 780e6aa083SSam Parker std::string Error; 790e6aa083SSam Parker const Target *T = TargetRegistry::lookupTarget(TT, Error); 800e6aa083SSam Parker if (!T) { 810e6aa083SSam Parker dbgs() << Error; 827fc87159SPaul Robinson GTEST_SKIP(); 830e6aa083SSam Parker } 840e6aa083SSam Parker 850e6aa083SSam Parker TargetOptions Options; 86*bb3f5e1fSMatin Raayai auto TM = std::unique_ptr<TargetMachine>( 87b6a01caaSKazu Hirata T->createTargetMachine(TT, "generic", "", Options, std::nullopt, 88*bb3f5e1fSMatin Raayai std::nullopt, CodeGenOptLevel::Default)); 890e6aa083SSam Parker ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()), 900e6aa083SSam Parker std::string(TM->getTargetFeatureString()), 910e6aa083SSam Parker *static_cast<const ARMBaseTargetMachine *>(TM.get()), false); 920e6aa083SSam Parker const ARMBaseInstrInfo *TII = ST.getInstrInfo(); 930e6aa083SSam Parker auto MII = TM->getMCInstrInfo(); 940e6aa083SSam Parker 950e6aa083SSam Parker for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) { 960e6aa083SSam Parker const MCInstrDesc &Desc = TII->get(i); 970e6aa083SSam Parker 980e6aa083SSam Parker uint64_t Flags = Desc.TSFlags; 990e6aa083SSam Parker if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE) 1000e6aa083SSam Parker continue; 1010e6aa083SSam Parker 1020e6aa083SSam Parker bool Valid = (Flags & ARMII::DoubleWidthResult) != 0; 1030e6aa083SSam Parker ASSERT_EQ(DoubleWidthResult(i), Valid) 1040e6aa083SSam Parker << MII->getName(i) 1050e6aa083SSam Parker << ": mismatched expectation for tail-predicated safety\n"; 1060e6aa083SSam Parker } 1070e6aa083SSam Parker } 1080e6aa083SSam Parker 109e8725020SSam Parker TEST(MachineInstructionHorizontalReduction, IsCorrect) { 110e8725020SSam Parker using namespace ARM; 111e8725020SSam Parker 112e8725020SSam Parker auto HorizontalReduction = [](unsigned Opcode) { 113e8725020SSam Parker switch (Opcode) { 114e8725020SSam Parker default: 115e8725020SSam Parker break; 116e8725020SSam Parker case MVE_VABAVs16: 117e8725020SSam Parker case MVE_VABAVs32: 118e8725020SSam Parker case MVE_VABAVs8: 119e8725020SSam Parker case MVE_VABAVu16: 120e8725020SSam Parker case MVE_VABAVu32: 121e8725020SSam Parker case MVE_VABAVu8: 122e8725020SSam Parker case MVE_VADDLVs32acc: 123e8725020SSam Parker case MVE_VADDLVs32no_acc: 124e8725020SSam Parker case MVE_VADDLVu32acc: 125e8725020SSam Parker case MVE_VADDLVu32no_acc: 126e8725020SSam Parker case MVE_VADDVs16acc: 127e8725020SSam Parker case MVE_VADDVs16no_acc: 128e8725020SSam Parker case MVE_VADDVs32acc: 129e8725020SSam Parker case MVE_VADDVs32no_acc: 130e8725020SSam Parker case MVE_VADDVs8acc: 131e8725020SSam Parker case MVE_VADDVs8no_acc: 132e8725020SSam Parker case MVE_VADDVu16acc: 133e8725020SSam Parker case MVE_VADDVu16no_acc: 134e8725020SSam Parker case MVE_VADDVu32acc: 135e8725020SSam Parker case MVE_VADDVu32no_acc: 136e8725020SSam Parker case MVE_VADDVu8acc: 137e8725020SSam Parker case MVE_VADDVu8no_acc: 138e8725020SSam Parker case MVE_VMAXAVs16: 139e8725020SSam Parker case MVE_VMAXAVs32: 140e8725020SSam Parker case MVE_VMAXAVs8: 141e8725020SSam Parker case MVE_VMAXNMAVf16: 142e8725020SSam Parker case MVE_VMAXNMAVf32: 143e8725020SSam Parker case MVE_VMAXNMVf16: 144e8725020SSam Parker case MVE_VMAXNMVf32: 145e8725020SSam Parker case MVE_VMAXVs16: 146e8725020SSam Parker case MVE_VMAXVs32: 147e8725020SSam Parker case MVE_VMAXVs8: 148e8725020SSam Parker case MVE_VMAXVu16: 149e8725020SSam Parker case MVE_VMAXVu32: 150e8725020SSam Parker case MVE_VMAXVu8: 151e8725020SSam Parker case MVE_VMINAVs16: 152e8725020SSam Parker case MVE_VMINAVs32: 153e8725020SSam Parker case MVE_VMINAVs8: 154e8725020SSam Parker case MVE_VMINNMAVf16: 155e8725020SSam Parker case MVE_VMINNMAVf32: 156e8725020SSam Parker case MVE_VMINNMVf16: 157e8725020SSam Parker case MVE_VMINNMVf32: 158e8725020SSam Parker case MVE_VMINVs16: 159e8725020SSam Parker case MVE_VMINVs32: 160e8725020SSam Parker case MVE_VMINVs8: 161e8725020SSam Parker case MVE_VMINVu16: 162e8725020SSam Parker case MVE_VMINVu32: 163e8725020SSam Parker case MVE_VMINVu8: 164e8725020SSam Parker case MVE_VMLADAVas16: 165e8725020SSam Parker case MVE_VMLADAVas32: 166e8725020SSam Parker case MVE_VMLADAVas8: 167e8725020SSam Parker case MVE_VMLADAVau16: 168e8725020SSam Parker case MVE_VMLADAVau32: 169e8725020SSam Parker case MVE_VMLADAVau8: 170e8725020SSam Parker case MVE_VMLADAVaxs16: 171e8725020SSam Parker case MVE_VMLADAVaxs32: 172e8725020SSam Parker case MVE_VMLADAVaxs8: 173e8725020SSam Parker case MVE_VMLADAVs16: 174e8725020SSam Parker case MVE_VMLADAVs32: 175e8725020SSam Parker case MVE_VMLADAVs8: 176e8725020SSam Parker case MVE_VMLADAVu16: 177e8725020SSam Parker case MVE_VMLADAVu32: 178e8725020SSam Parker case MVE_VMLADAVu8: 179e8725020SSam Parker case MVE_VMLADAVxs16: 180e8725020SSam Parker case MVE_VMLADAVxs32: 181e8725020SSam Parker case MVE_VMLADAVxs8: 182e8725020SSam Parker case MVE_VMLALDAVas16: 183e8725020SSam Parker case MVE_VMLALDAVas32: 184e8725020SSam Parker case MVE_VMLALDAVau16: 185e8725020SSam Parker case MVE_VMLALDAVau32: 186e8725020SSam Parker case MVE_VMLALDAVaxs16: 187e8725020SSam Parker case MVE_VMLALDAVaxs32: 188e8725020SSam Parker case MVE_VMLALDAVs16: 189e8725020SSam Parker case MVE_VMLALDAVs32: 190e8725020SSam Parker case MVE_VMLALDAVu16: 191e8725020SSam Parker case MVE_VMLALDAVu32: 192e8725020SSam Parker case MVE_VMLALDAVxs16: 193e8725020SSam Parker case MVE_VMLALDAVxs32: 194e8725020SSam Parker case MVE_VMLSDAVas16: 195e8725020SSam Parker case MVE_VMLSDAVas32: 196e8725020SSam Parker case MVE_VMLSDAVas8: 197e8725020SSam Parker case MVE_VMLSDAVaxs16: 198e8725020SSam Parker case MVE_VMLSDAVaxs32: 199e8725020SSam Parker case MVE_VMLSDAVaxs8: 200e8725020SSam Parker case MVE_VMLSDAVs16: 201e8725020SSam Parker case MVE_VMLSDAVs32: 202e8725020SSam Parker case MVE_VMLSDAVs8: 203e8725020SSam Parker case MVE_VMLSDAVxs16: 204e8725020SSam Parker case MVE_VMLSDAVxs32: 205e8725020SSam Parker case MVE_VMLSDAVxs8: 206e8725020SSam Parker case MVE_VMLSLDAVas16: 207e8725020SSam Parker case MVE_VMLSLDAVas32: 208e8725020SSam Parker case MVE_VMLSLDAVaxs16: 209e8725020SSam Parker case MVE_VMLSLDAVaxs32: 210e8725020SSam Parker case MVE_VMLSLDAVs16: 211e8725020SSam Parker case MVE_VMLSLDAVs32: 212e8725020SSam Parker case MVE_VMLSLDAVxs16: 213e8725020SSam Parker case MVE_VMLSLDAVxs32: 214e8725020SSam Parker case MVE_VRMLALDAVHas32: 215e8725020SSam Parker case MVE_VRMLALDAVHau32: 216e8725020SSam Parker case MVE_VRMLALDAVHaxs32: 217e8725020SSam Parker case MVE_VRMLALDAVHs32: 218e8725020SSam Parker case MVE_VRMLALDAVHu32: 219e8725020SSam Parker case MVE_VRMLALDAVHxs32: 220e8725020SSam Parker case MVE_VRMLSLDAVHas32: 221e8725020SSam Parker case MVE_VRMLSLDAVHaxs32: 222e8725020SSam Parker case MVE_VRMLSLDAVHs32: 223e8725020SSam Parker case MVE_VRMLSLDAVHxs32: 224e8725020SSam Parker return true; 225e8725020SSam Parker } 226e8725020SSam Parker return false; 227e8725020SSam Parker }; 228e8725020SSam Parker 229e8725020SSam Parker LLVMInitializeARMTargetInfo(); 230e8725020SSam Parker LLVMInitializeARMTarget(); 231e8725020SSam Parker LLVMInitializeARMTargetMC(); 232e8725020SSam Parker 233eecba950SDavid Green auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi")); 234e8725020SSam Parker std::string Error; 235e8725020SSam Parker const Target *T = TargetRegistry::lookupTarget(TT, Error); 236e8725020SSam Parker if (!T) { 237e8725020SSam Parker dbgs() << Error; 2387fc87159SPaul Robinson GTEST_SKIP(); 239e8725020SSam Parker } 240e8725020SSam Parker 241e8725020SSam Parker TargetOptions Options; 242*bb3f5e1fSMatin Raayai auto TM = std::unique_ptr<TargetMachine>( 243b6a01caaSKazu Hirata T->createTargetMachine(TT, "generic", "", Options, std::nullopt, 244*bb3f5e1fSMatin Raayai std::nullopt, CodeGenOptLevel::Default)); 245e8725020SSam Parker ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()), 246e8725020SSam Parker std::string(TM->getTargetFeatureString()), 247e8725020SSam Parker *static_cast<const ARMBaseTargetMachine *>(TM.get()), false); 248e8725020SSam Parker const ARMBaseInstrInfo *TII = ST.getInstrInfo(); 249e8725020SSam Parker auto MII = TM->getMCInstrInfo(); 250e8725020SSam Parker 251e8725020SSam Parker for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) { 252e8725020SSam Parker const MCInstrDesc &Desc = TII->get(i); 253e8725020SSam Parker 254e8725020SSam Parker uint64_t Flags = Desc.TSFlags; 255e8725020SSam Parker if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE) 256e8725020SSam Parker continue; 257e8725020SSam Parker bool Valid = (Flags & ARMII::HorizontalReduction) != 0; 258e8725020SSam Parker ASSERT_EQ(HorizontalReduction(i), Valid) 259e8725020SSam Parker << MII->getName(i) 260e8725020SSam Parker << ": mismatched expectation for tail-predicated safety\n"; 261e8725020SSam Parker } 262e8725020SSam Parker } 263e8725020SSam Parker 2646f86e6bfSSam Parker TEST(MachineInstructionRetainsPreviousHalfElement, IsCorrect) { 2656f86e6bfSSam Parker using namespace ARM; 2666f86e6bfSSam Parker 2676f86e6bfSSam Parker auto RetainsPreviousHalfElement = [](unsigned Opcode) { 2686f86e6bfSSam Parker switch (Opcode) { 2696f86e6bfSSam Parker default: 2706f86e6bfSSam Parker break; 2716f86e6bfSSam Parker case MVE_VMOVNi16bh: 2726f86e6bfSSam Parker case MVE_VMOVNi16th: 2736f86e6bfSSam Parker case MVE_VMOVNi32bh: 2746f86e6bfSSam Parker case MVE_VMOVNi32th: 2756f86e6bfSSam Parker case MVE_VQMOVNs16bh: 2766f86e6bfSSam Parker case MVE_VQMOVNs16th: 2776f86e6bfSSam Parker case MVE_VQMOVNs32bh: 2786f86e6bfSSam Parker case MVE_VQMOVNs32th: 2796f86e6bfSSam Parker case MVE_VQMOVNu16bh: 2806f86e6bfSSam Parker case MVE_VQMOVNu16th: 2816f86e6bfSSam Parker case MVE_VQMOVNu32bh: 2826f86e6bfSSam Parker case MVE_VQMOVNu32th: 2836f86e6bfSSam Parker case MVE_VQMOVUNs16bh: 2846f86e6bfSSam Parker case MVE_VQMOVUNs16th: 2856f86e6bfSSam Parker case MVE_VQMOVUNs32bh: 2866f86e6bfSSam Parker case MVE_VQMOVUNs32th: 2876f86e6bfSSam Parker case MVE_VQRSHRNbhs16: 2886f86e6bfSSam Parker case MVE_VQRSHRNbhs32: 2896f86e6bfSSam Parker case MVE_VQRSHRNbhu16: 2906f86e6bfSSam Parker case MVE_VQRSHRNbhu32: 2916f86e6bfSSam Parker case MVE_VQRSHRNths16: 2926f86e6bfSSam Parker case MVE_VQRSHRNths32: 2936f86e6bfSSam Parker case MVE_VQRSHRNthu16: 2946f86e6bfSSam Parker case MVE_VQRSHRNthu32: 2956f86e6bfSSam Parker case MVE_VQRSHRUNs16bh: 2966f86e6bfSSam Parker case MVE_VQRSHRUNs16th: 2976f86e6bfSSam Parker case MVE_VQRSHRUNs32bh: 2986f86e6bfSSam Parker case MVE_VQRSHRUNs32th: 2996f86e6bfSSam Parker case MVE_VQSHRNbhs16: 3006f86e6bfSSam Parker case MVE_VQSHRNbhs32: 3016f86e6bfSSam Parker case MVE_VQSHRNbhu16: 3026f86e6bfSSam Parker case MVE_VQSHRNbhu32: 3036f86e6bfSSam Parker case MVE_VQSHRNths16: 3046f86e6bfSSam Parker case MVE_VQSHRNths32: 3056f86e6bfSSam Parker case MVE_VQSHRNthu16: 3066f86e6bfSSam Parker case MVE_VQSHRNthu32: 3076f86e6bfSSam Parker case MVE_VQSHRUNs16bh: 3086f86e6bfSSam Parker case MVE_VQSHRUNs16th: 3096f86e6bfSSam Parker case MVE_VQSHRUNs32bh: 3106f86e6bfSSam Parker case MVE_VQSHRUNs32th: 3116f86e6bfSSam Parker case MVE_VRSHRNi16bh: 3126f86e6bfSSam Parker case MVE_VRSHRNi16th: 3136f86e6bfSSam Parker case MVE_VRSHRNi32bh: 3146f86e6bfSSam Parker case MVE_VRSHRNi32th: 3156f86e6bfSSam Parker case MVE_VSHRNi16bh: 3166f86e6bfSSam Parker case MVE_VSHRNi16th: 3176f86e6bfSSam Parker case MVE_VSHRNi32bh: 3186f86e6bfSSam Parker case MVE_VSHRNi32th: 3196f86e6bfSSam Parker case MVE_VCVTf16f32bh: 3206f86e6bfSSam Parker case MVE_VCVTf16f32th: 3216f86e6bfSSam Parker case MVE_VCVTf32f16bh: 3226f86e6bfSSam Parker case MVE_VCVTf32f16th: 3236f86e6bfSSam Parker return true; 3246f86e6bfSSam Parker } 3256f86e6bfSSam Parker return false; 3266f86e6bfSSam Parker }; 3276f86e6bfSSam Parker 3286f86e6bfSSam Parker LLVMInitializeARMTargetInfo(); 3296f86e6bfSSam Parker LLVMInitializeARMTarget(); 3306f86e6bfSSam Parker LLVMInitializeARMTargetMC(); 3316f86e6bfSSam Parker 332eecba950SDavid Green auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi")); 3336f86e6bfSSam Parker std::string Error; 3346f86e6bfSSam Parker const Target *T = TargetRegistry::lookupTarget(TT, Error); 3356f86e6bfSSam Parker if (!T) { 3366f86e6bfSSam Parker dbgs() << Error; 3377fc87159SPaul Robinson GTEST_SKIP(); 3386f86e6bfSSam Parker } 3396f86e6bfSSam Parker 3406f86e6bfSSam Parker TargetOptions Options; 341*bb3f5e1fSMatin Raayai auto TM = std::unique_ptr<TargetMachine>( 342b6a01caaSKazu Hirata T->createTargetMachine(TT, "generic", "", Options, std::nullopt, 343*bb3f5e1fSMatin Raayai std::nullopt, CodeGenOptLevel::Default)); 3446f86e6bfSSam Parker ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()), 3456f86e6bfSSam Parker std::string(TM->getTargetFeatureString()), 3466f86e6bfSSam Parker *static_cast<const ARMBaseTargetMachine *>(TM.get()), false); 3476f86e6bfSSam Parker const ARMBaseInstrInfo *TII = ST.getInstrInfo(); 3486f86e6bfSSam Parker auto MII = TM->getMCInstrInfo(); 3496f86e6bfSSam Parker 3506f86e6bfSSam Parker for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) { 3516f86e6bfSSam Parker const MCInstrDesc &Desc = TII->get(i); 3526f86e6bfSSam Parker 3536f86e6bfSSam Parker uint64_t Flags = Desc.TSFlags; 3546f86e6bfSSam Parker if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE) 3556f86e6bfSSam Parker continue; 3566f86e6bfSSam Parker 3576f86e6bfSSam Parker bool Valid = (Flags & ARMII::RetainsPreviousHalfElement) != 0; 3586f86e6bfSSam Parker ASSERT_EQ(RetainsPreviousHalfElement(i), Valid) 3596f86e6bfSSam Parker << MII->getName(i) 3606f86e6bfSSam Parker << ": mismatched expectation for tail-predicated safety\n"; 3616f86e6bfSSam Parker } 3626f86e6bfSSam Parker } 36326a475afSSam Parker // Test for instructions that aren't immediately obviously valid within a 36426a475afSSam Parker // tail-predicated loop. This should be marked up in their tablegen 365ce39278fSSam Parker // descriptions. Currently we, conservatively, disallow: 366ce39278fSSam Parker // - cross beat carries. 367ce39278fSSam Parker // - complex operations. 368dd8153b7SSam Parker // - horizontal operations with exchange. 369ce39278fSSam Parker // - byte swapping. 370ce39278fSSam Parker // - interleaved memory instructions. 371ce39278fSSam Parker // TODO: Add to this list once we can handle them safely. 372ce39278fSSam Parker TEST(MachineInstrValidTailPredication, IsCorrect) { 373ce39278fSSam Parker 374ce39278fSSam Parker using namespace ARM; 375ce39278fSSam Parker 376ce39278fSSam Parker auto IsValidTPOpcode = [](unsigned Opcode) { 377ce39278fSSam Parker switch (Opcode) { 378ce39278fSSam Parker default: 379ce39278fSSam Parker return false; 380ce39278fSSam Parker case MVE_ASRLi: 381ce39278fSSam Parker case MVE_ASRLr: 382ce39278fSSam Parker case MVE_LSRL: 38386172ce3SSam Parker case MVE_LSLLi: 38486172ce3SSam Parker case MVE_LSLLr: 385ce39278fSSam Parker case MVE_SQRSHR: 38686172ce3SSam Parker case MVE_SQRSHRL: 387ce39278fSSam Parker case MVE_SQSHL: 38886172ce3SSam Parker case MVE_SQSHLL: 389ce39278fSSam Parker case MVE_SRSHR: 39086172ce3SSam Parker case MVE_SRSHRL: 391ce39278fSSam Parker case MVE_UQRSHL: 39286172ce3SSam Parker case MVE_UQRSHLL: 393ce39278fSSam Parker case MVE_UQSHL: 39486172ce3SSam Parker case MVE_UQSHLL: 395ce39278fSSam Parker case MVE_URSHR: 39686172ce3SSam Parker case MVE_URSHRL: 397ce39278fSSam Parker case MVE_VABDf16: 398ce39278fSSam Parker case MVE_VABDf32: 399ce39278fSSam Parker case MVE_VABDs16: 400ce39278fSSam Parker case MVE_VABDs32: 401ce39278fSSam Parker case MVE_VABDs8: 402ce39278fSSam Parker case MVE_VABDu16: 403ce39278fSSam Parker case MVE_VABDu32: 404ce39278fSSam Parker case MVE_VABDu8: 405ce39278fSSam Parker case MVE_VABSf16: 406ce39278fSSam Parker case MVE_VABSf32: 407ce39278fSSam Parker case MVE_VABSs16: 408ce39278fSSam Parker case MVE_VABSs32: 409ce39278fSSam Parker case MVE_VABSs8: 410ce39278fSSam Parker case MVE_VADD_qr_f16: 411ce39278fSSam Parker case MVE_VADD_qr_f32: 412ce39278fSSam Parker case MVE_VADD_qr_i16: 413ce39278fSSam Parker case MVE_VADD_qr_i32: 414ce39278fSSam Parker case MVE_VADD_qr_i8: 41594b195ffSSam Parker case MVE_VADDVs16acc: 41694b195ffSSam Parker case MVE_VADDVs16no_acc: 41794b195ffSSam Parker case MVE_VADDVs32acc: 41894b195ffSSam Parker case MVE_VADDVs32no_acc: 41994b195ffSSam Parker case MVE_VADDVs8acc: 42094b195ffSSam Parker case MVE_VADDVs8no_acc: 42194b195ffSSam Parker case MVE_VADDVu16acc: 42294b195ffSSam Parker case MVE_VADDVu16no_acc: 42394b195ffSSam Parker case MVE_VADDVu32acc: 42494b195ffSSam Parker case MVE_VADDVu32no_acc: 42594b195ffSSam Parker case MVE_VADDVu8acc: 42694b195ffSSam Parker case MVE_VADDVu8no_acc: 427ce39278fSSam Parker case MVE_VADDf16: 428ce39278fSSam Parker case MVE_VADDf32: 429ce39278fSSam Parker case MVE_VADDi16: 430ce39278fSSam Parker case MVE_VADDi32: 431ce39278fSSam Parker case MVE_VADDi8: 432ce39278fSSam Parker case MVE_VAND: 433ce39278fSSam Parker case MVE_VBIC: 434772e4931SSimon Tatham case MVE_VBICimmi16: 435772e4931SSimon Tatham case MVE_VBICimmi32: 436ce39278fSSam Parker case MVE_VBRSR16: 437ce39278fSSam Parker case MVE_VBRSR32: 438ce39278fSSam Parker case MVE_VBRSR8: 439ce39278fSSam Parker case MVE_VCLSs16: 440ce39278fSSam Parker case MVE_VCLSs32: 441ce39278fSSam Parker case MVE_VCLSs8: 442ce39278fSSam Parker case MVE_VCLZs16: 443ce39278fSSam Parker case MVE_VCLZs32: 444ce39278fSSam Parker case MVE_VCLZs8: 445ce39278fSSam Parker case MVE_VCMPf16: 446ce39278fSSam Parker case MVE_VCMPf16r: 447ce39278fSSam Parker case MVE_VCMPf32: 448ce39278fSSam Parker case MVE_VCMPf32r: 449ce39278fSSam Parker case MVE_VCMPi16: 450ce39278fSSam Parker case MVE_VCMPi16r: 451ce39278fSSam Parker case MVE_VCMPi32: 452ce39278fSSam Parker case MVE_VCMPi32r: 453ce39278fSSam Parker case MVE_VCMPi8: 454ce39278fSSam Parker case MVE_VCMPi8r: 455ce39278fSSam Parker case MVE_VCMPs16: 456ce39278fSSam Parker case MVE_VCMPs16r: 457ce39278fSSam Parker case MVE_VCMPs32: 458ce39278fSSam Parker case MVE_VCMPs32r: 459ce39278fSSam Parker case MVE_VCMPs8: 460ce39278fSSam Parker case MVE_VCMPs8r: 461ce39278fSSam Parker case MVE_VCMPu16: 462ce39278fSSam Parker case MVE_VCMPu16r: 463ce39278fSSam Parker case MVE_VCMPu32: 464ce39278fSSam Parker case MVE_VCMPu32r: 465ce39278fSSam Parker case MVE_VCMPu8: 466ce39278fSSam Parker case MVE_VCMPu8r: 467ce39278fSSam Parker case MVE_VCTP16: 468ce39278fSSam Parker case MVE_VCTP32: 469ce39278fSSam Parker case MVE_VCTP64: 470ce39278fSSam Parker case MVE_VCTP8: 471ce39278fSSam Parker case MVE_VCVTf16s16_fix: 472ce39278fSSam Parker case MVE_VCVTf16s16n: 473ce39278fSSam Parker case MVE_VCVTf16u16_fix: 474ce39278fSSam Parker case MVE_VCVTf16u16n: 475ce39278fSSam Parker case MVE_VCVTf32s32_fix: 476ce39278fSSam Parker case MVE_VCVTf32s32n: 477ce39278fSSam Parker case MVE_VCVTf32u32_fix: 478ce39278fSSam Parker case MVE_VCVTf32u32n: 479ce39278fSSam Parker case MVE_VCVTs16f16_fix: 480ce39278fSSam Parker case MVE_VCVTs16f16a: 481ce39278fSSam Parker case MVE_VCVTs16f16m: 482ce39278fSSam Parker case MVE_VCVTs16f16n: 483ce39278fSSam Parker case MVE_VCVTs16f16p: 484ce39278fSSam Parker case MVE_VCVTs16f16z: 485ce39278fSSam Parker case MVE_VCVTs32f32_fix: 486ce39278fSSam Parker case MVE_VCVTs32f32a: 487ce39278fSSam Parker case MVE_VCVTs32f32m: 488ce39278fSSam Parker case MVE_VCVTs32f32n: 489ce39278fSSam Parker case MVE_VCVTs32f32p: 490ce39278fSSam Parker case MVE_VCVTs32f32z: 491ce39278fSSam Parker case MVE_VCVTu16f16_fix: 492ce39278fSSam Parker case MVE_VCVTu16f16a: 493ce39278fSSam Parker case MVE_VCVTu16f16m: 494ce39278fSSam Parker case MVE_VCVTu16f16n: 495ce39278fSSam Parker case MVE_VCVTu16f16p: 496ce39278fSSam Parker case MVE_VCVTu16f16z: 497ce39278fSSam Parker case MVE_VCVTu32f32_fix: 498ce39278fSSam Parker case MVE_VCVTu32f32a: 499ce39278fSSam Parker case MVE_VCVTu32f32m: 500ce39278fSSam Parker case MVE_VCVTu32f32n: 501ce39278fSSam Parker case MVE_VCVTu32f32p: 502ce39278fSSam Parker case MVE_VCVTu32f32z: 503ce39278fSSam Parker case MVE_VDDUPu16: 504ce39278fSSam Parker case MVE_VDDUPu32: 505ce39278fSSam Parker case MVE_VDDUPu8: 506ce39278fSSam Parker case MVE_VDUP16: 507ce39278fSSam Parker case MVE_VDUP32: 508ce39278fSSam Parker case MVE_VDUP8: 509ce39278fSSam Parker case MVE_VDWDUPu16: 510ce39278fSSam Parker case MVE_VDWDUPu32: 511ce39278fSSam Parker case MVE_VDWDUPu8: 512ce39278fSSam Parker case MVE_VEOR: 513ce39278fSSam Parker case MVE_VFMA_qr_Sf16: 514ce39278fSSam Parker case MVE_VFMA_qr_Sf32: 515ce39278fSSam Parker case MVE_VFMA_qr_f16: 516ce39278fSSam Parker case MVE_VFMA_qr_f32: 517a3140500SSam Parker case MVE_VFMAf16: 518a3140500SSam Parker case MVE_VFMAf32: 519a3140500SSam Parker case MVE_VFMSf16: 520a3140500SSam Parker case MVE_VFMSf32: 5213772ea9dSSam Parker case MVE_VMAXAs16: 5223772ea9dSSam Parker case MVE_VMAXAs32: 5233772ea9dSSam Parker case MVE_VMAXAs8: 5243772ea9dSSam Parker case MVE_VMAXs16: 5253772ea9dSSam Parker case MVE_VMAXs32: 5263772ea9dSSam Parker case MVE_VMAXs8: 5273772ea9dSSam Parker case MVE_VMAXu16: 5283772ea9dSSam Parker case MVE_VMAXu32: 5293772ea9dSSam Parker case MVE_VMAXu8: 53022c38412SDavid Green case MVE_VMAXNMf16: 53122c38412SDavid Green case MVE_VMAXNMf32: 53222c38412SDavid Green case MVE_VMAXNMAf16: 53322c38412SDavid Green case MVE_VMAXNMAf32: 5343772ea9dSSam Parker case MVE_VMINAs16: 5353772ea9dSSam Parker case MVE_VMINAs32: 5363772ea9dSSam Parker case MVE_VMINAs8: 5373772ea9dSSam Parker case MVE_VMINs16: 5383772ea9dSSam Parker case MVE_VMINs32: 5393772ea9dSSam Parker case MVE_VMINs8: 5403772ea9dSSam Parker case MVE_VMINu16: 5413772ea9dSSam Parker case MVE_VMINu32: 5423772ea9dSSam Parker case MVE_VMINu8: 54322c38412SDavid Green case MVE_VMINNMf16: 54422c38412SDavid Green case MVE_VMINNMf32: 54522c38412SDavid Green case MVE_VMINNMAf16: 54622c38412SDavid Green case MVE_VMINNMAf32: 547dd8153b7SSam Parker case MVE_VMLADAVas16: 548dd8153b7SSam Parker case MVE_VMLADAVas32: 549dd8153b7SSam Parker case MVE_VMLADAVas8: 550dd8153b7SSam Parker case MVE_VMLADAVau16: 551dd8153b7SSam Parker case MVE_VMLADAVau32: 552dd8153b7SSam Parker case MVE_VMLADAVau8: 553dd8153b7SSam Parker case MVE_VMLADAVs16: 554dd8153b7SSam Parker case MVE_VMLADAVs32: 555dd8153b7SSam Parker case MVE_VMLADAVs8: 556dd8153b7SSam Parker case MVE_VMLADAVu16: 557dd8153b7SSam Parker case MVE_VMLADAVu32: 558dd8153b7SSam Parker case MVE_VMLADAVu8: 559dd8153b7SSam Parker case MVE_VMLALDAVs16: 560dd8153b7SSam Parker case MVE_VMLALDAVs32: 561dd8153b7SSam Parker case MVE_VMLALDAVu16: 562dd8153b7SSam Parker case MVE_VMLALDAVu32: 563dd8153b7SSam Parker case MVE_VMLALDAVas16: 564dd8153b7SSam Parker case MVE_VMLALDAVas32: 565dd8153b7SSam Parker case MVE_VMLALDAVau16: 566dd8153b7SSam Parker case MVE_VMLALDAVau32: 567dd8153b7SSam Parker case MVE_VMLSDAVas16: 568dd8153b7SSam Parker case MVE_VMLSDAVas32: 569dd8153b7SSam Parker case MVE_VMLSDAVas8: 570dd8153b7SSam Parker case MVE_VMLSDAVs16: 571dd8153b7SSam Parker case MVE_VMLSDAVs32: 572dd8153b7SSam Parker case MVE_VMLSDAVs8: 573dd8153b7SSam Parker case MVE_VMLSLDAVas16: 574dd8153b7SSam Parker case MVE_VMLSLDAVas32: 575dd8153b7SSam Parker case MVE_VMLSLDAVs16: 576dd8153b7SSam Parker case MVE_VMLSLDAVs32: 577dd8153b7SSam Parker case MVE_VRMLALDAVHas32: 578dd8153b7SSam Parker case MVE_VRMLALDAVHau32: 579dd8153b7SSam Parker case MVE_VRMLALDAVHs32: 580dd8153b7SSam Parker case MVE_VRMLALDAVHu32: 581dd8153b7SSam Parker case MVE_VRMLSLDAVHas32: 582dd8153b7SSam Parker case MVE_VRMLSLDAVHs32: 583e45cbf99SSimon Tatham case MVE_VMLAS_qr_i16: 584e45cbf99SSimon Tatham case MVE_VMLAS_qr_i32: 585e45cbf99SSimon Tatham case MVE_VMLAS_qr_i8: 586e45cbf99SSimon Tatham case MVE_VMLA_qr_i16: 587e45cbf99SSimon Tatham case MVE_VMLA_qr_i32: 588e45cbf99SSimon Tatham case MVE_VMLA_qr_i8: 589ce39278fSSam Parker case MVE_VHADD_qr_s16: 590ce39278fSSam Parker case MVE_VHADD_qr_s32: 591ce39278fSSam Parker case MVE_VHADD_qr_s8: 592ce39278fSSam Parker case MVE_VHADD_qr_u16: 593ce39278fSSam Parker case MVE_VHADD_qr_u32: 594ce39278fSSam Parker case MVE_VHADD_qr_u8: 595ce39278fSSam Parker case MVE_VHADDs16: 596ce39278fSSam Parker case MVE_VHADDs32: 597ce39278fSSam Parker case MVE_VHADDs8: 598ce39278fSSam Parker case MVE_VHADDu16: 599ce39278fSSam Parker case MVE_VHADDu32: 600ce39278fSSam Parker case MVE_VHADDu8: 601ce39278fSSam Parker case MVE_VHSUB_qr_s16: 602ce39278fSSam Parker case MVE_VHSUB_qr_s32: 603ce39278fSSam Parker case MVE_VHSUB_qr_s8: 604ce39278fSSam Parker case MVE_VHSUB_qr_u16: 605ce39278fSSam Parker case MVE_VHSUB_qr_u32: 606ce39278fSSam Parker case MVE_VHSUB_qr_u8: 607ce39278fSSam Parker case MVE_VHSUBs16: 608ce39278fSSam Parker case MVE_VHSUBs32: 609ce39278fSSam Parker case MVE_VHSUBs8: 610ce39278fSSam Parker case MVE_VHSUBu16: 611ce39278fSSam Parker case MVE_VHSUBu32: 612ce39278fSSam Parker case MVE_VHSUBu8: 613ce39278fSSam Parker case MVE_VIDUPu16: 614ce39278fSSam Parker case MVE_VIDUPu32: 615ce39278fSSam Parker case MVE_VIDUPu8: 616ce39278fSSam Parker case MVE_VIWDUPu16: 617ce39278fSSam Parker case MVE_VIWDUPu32: 618ce39278fSSam Parker case MVE_VIWDUPu8: 6193471520bSDavid Green case MVE_VLD20_8: 6203471520bSDavid Green case MVE_VLD21_8: 6213471520bSDavid Green case MVE_VLD20_16: 6223471520bSDavid Green case MVE_VLD21_16: 6233471520bSDavid Green case MVE_VLD20_32: 6243471520bSDavid Green case MVE_VLD21_32: 6253471520bSDavid Green case MVE_VLD20_8_wb: 6263471520bSDavid Green case MVE_VLD21_8_wb: 6273471520bSDavid Green case MVE_VLD20_16_wb: 6283471520bSDavid Green case MVE_VLD21_16_wb: 6293471520bSDavid Green case MVE_VLD20_32_wb: 6303471520bSDavid Green case MVE_VLD21_32_wb: 6313471520bSDavid Green case MVE_VLD40_8: 6323471520bSDavid Green case MVE_VLD41_8: 6333471520bSDavid Green case MVE_VLD42_8: 6343471520bSDavid Green case MVE_VLD43_8: 6353471520bSDavid Green case MVE_VLD40_16: 6363471520bSDavid Green case MVE_VLD41_16: 6373471520bSDavid Green case MVE_VLD42_16: 6383471520bSDavid Green case MVE_VLD43_16: 6393471520bSDavid Green case MVE_VLD40_32: 6403471520bSDavid Green case MVE_VLD41_32: 6413471520bSDavid Green case MVE_VLD42_32: 6423471520bSDavid Green case MVE_VLD43_32: 6433471520bSDavid Green case MVE_VLD40_8_wb: 6443471520bSDavid Green case MVE_VLD41_8_wb: 6453471520bSDavid Green case MVE_VLD42_8_wb: 6463471520bSDavid Green case MVE_VLD43_8_wb: 6473471520bSDavid Green case MVE_VLD40_16_wb: 6483471520bSDavid Green case MVE_VLD41_16_wb: 6493471520bSDavid Green case MVE_VLD42_16_wb: 6503471520bSDavid Green case MVE_VLD43_16_wb: 6513471520bSDavid Green case MVE_VLD40_32_wb: 6523471520bSDavid Green case MVE_VLD41_32_wb: 6533471520bSDavid Green case MVE_VLD42_32_wb: 6543471520bSDavid Green case MVE_VLD43_32_wb: 655ce39278fSSam Parker case MVE_VLDRBS16: 656ce39278fSSam Parker case MVE_VLDRBS16_post: 657ce39278fSSam Parker case MVE_VLDRBS16_pre: 658ce39278fSSam Parker case MVE_VLDRBS16_rq: 659ce39278fSSam Parker case MVE_VLDRBS32: 660ce39278fSSam Parker case MVE_VLDRBS32_post: 661ce39278fSSam Parker case MVE_VLDRBS32_pre: 662ce39278fSSam Parker case MVE_VLDRBS32_rq: 663ce39278fSSam Parker case MVE_VLDRBU16: 664ce39278fSSam Parker case MVE_VLDRBU16_post: 665ce39278fSSam Parker case MVE_VLDRBU16_pre: 666ce39278fSSam Parker case MVE_VLDRBU16_rq: 667ce39278fSSam Parker case MVE_VLDRBU32: 668ce39278fSSam Parker case MVE_VLDRBU32_post: 669ce39278fSSam Parker case MVE_VLDRBU32_pre: 670ce39278fSSam Parker case MVE_VLDRBU32_rq: 671ce39278fSSam Parker case MVE_VLDRBU8: 672ce39278fSSam Parker case MVE_VLDRBU8_post: 673ce39278fSSam Parker case MVE_VLDRBU8_pre: 674ce39278fSSam Parker case MVE_VLDRBU8_rq: 675ce39278fSSam Parker case MVE_VLDRDU64_qi: 676ce39278fSSam Parker case MVE_VLDRDU64_qi_pre: 677ce39278fSSam Parker case MVE_VLDRDU64_rq: 678ce39278fSSam Parker case MVE_VLDRDU64_rq_u: 679ce39278fSSam Parker case MVE_VLDRHS32: 680ce39278fSSam Parker case MVE_VLDRHS32_post: 681ce39278fSSam Parker case MVE_VLDRHS32_pre: 682ce39278fSSam Parker case MVE_VLDRHS32_rq: 683ce39278fSSam Parker case MVE_VLDRHS32_rq_u: 684ce39278fSSam Parker case MVE_VLDRHU16: 685ce39278fSSam Parker case MVE_VLDRHU16_post: 686ce39278fSSam Parker case MVE_VLDRHU16_pre: 687ce39278fSSam Parker case MVE_VLDRHU16_rq: 688ce39278fSSam Parker case MVE_VLDRHU16_rq_u: 689ce39278fSSam Parker case MVE_VLDRHU32: 690ce39278fSSam Parker case MVE_VLDRHU32_post: 691ce39278fSSam Parker case MVE_VLDRHU32_pre: 692ce39278fSSam Parker case MVE_VLDRHU32_rq: 693ce39278fSSam Parker case MVE_VLDRHU32_rq_u: 694ce39278fSSam Parker case MVE_VLDRWU32: 695ce39278fSSam Parker case MVE_VLDRWU32_post: 696ce39278fSSam Parker case MVE_VLDRWU32_pre: 697ce39278fSSam Parker case MVE_VLDRWU32_qi: 698ce39278fSSam Parker case MVE_VLDRWU32_qi_pre: 699ce39278fSSam Parker case MVE_VLDRWU32_rq: 700ce39278fSSam Parker case MVE_VLDRWU32_rq_u: 701ce39278fSSam Parker case MVE_VMOVimmf32: 702ce39278fSSam Parker case MVE_VMOVimmi16: 703ce39278fSSam Parker case MVE_VMOVimmi32: 704ce39278fSSam Parker case MVE_VMOVimmi64: 705ce39278fSSam Parker case MVE_VMOVimmi8: 7064cf0dddcSSam Parker case MVE_VMOVNi16bh: 7074cf0dddcSSam Parker case MVE_VMOVNi16th: 7084cf0dddcSSam Parker case MVE_VMOVNi32bh: 7094cf0dddcSSam Parker case MVE_VMOVNi32th: 7104f0fe6b9SSam Parker case MVE_VMULLBp16: 7114f0fe6b9SSam Parker case MVE_VMULLBp8: 7124f0fe6b9SSam Parker case MVE_VMULLBs16: 7134f0fe6b9SSam Parker case MVE_VMULLBs32: 7144f0fe6b9SSam Parker case MVE_VMULLBs8: 7154f0fe6b9SSam Parker case MVE_VMULLBu16: 7164f0fe6b9SSam Parker case MVE_VMULLBu32: 7174f0fe6b9SSam Parker case MVE_VMULLBu8: 7184f0fe6b9SSam Parker case MVE_VMULLTp16: 7194f0fe6b9SSam Parker case MVE_VMULLTp8: 7204f0fe6b9SSam Parker case MVE_VMULLTs16: 7214f0fe6b9SSam Parker case MVE_VMULLTs32: 7224f0fe6b9SSam Parker case MVE_VMULLTs8: 7234f0fe6b9SSam Parker case MVE_VMULLTu16: 7244f0fe6b9SSam Parker case MVE_VMULLTu32: 7254f0fe6b9SSam Parker case MVE_VMULLTu8: 726ce39278fSSam Parker case MVE_VMUL_qr_f16: 727ce39278fSSam Parker case MVE_VMUL_qr_f32: 728ce39278fSSam Parker case MVE_VMUL_qr_i16: 729ce39278fSSam Parker case MVE_VMUL_qr_i32: 730ce39278fSSam Parker case MVE_VMUL_qr_i8: 731ce39278fSSam Parker case MVE_VMULf16: 732ce39278fSSam Parker case MVE_VMULf32: 733e8a8dbe9SMark Murray case MVE_VMULi16: 734e8a8dbe9SMark Murray case MVE_VMULi8: 735e8a8dbe9SMark Murray case MVE_VMULi32: 7362cf0e52bSDavid Green case MVE_VMULHs32: 7372cf0e52bSDavid Green case MVE_VMULHs16: 7382cf0e52bSDavid Green case MVE_VMULHs8: 7392cf0e52bSDavid Green case MVE_VMULHu32: 7402cf0e52bSDavid Green case MVE_VMULHu16: 7412cf0e52bSDavid Green case MVE_VMULHu8: 742ce39278fSSam Parker case MVE_VMVN: 743ce39278fSSam Parker case MVE_VMVNimmi16: 744ce39278fSSam Parker case MVE_VMVNimmi32: 745ce39278fSSam Parker case MVE_VNEGf16: 746ce39278fSSam Parker case MVE_VNEGf32: 747ce39278fSSam Parker case MVE_VNEGs16: 748ce39278fSSam Parker case MVE_VNEGs32: 749ce39278fSSam Parker case MVE_VNEGs8: 750ce39278fSSam Parker case MVE_VORN: 751ce39278fSSam Parker case MVE_VORR: 752772e4931SSimon Tatham case MVE_VORRimmi16: 753772e4931SSimon Tatham case MVE_VORRimmi32: 754ce39278fSSam Parker case MVE_VPST: 755e461921dSSam Parker case MVE_VPTv16i8: 756e461921dSSam Parker case MVE_VPTv8i16: 757e461921dSSam Parker case MVE_VPTv4i32: 758e461921dSSam Parker case MVE_VPTv16i8r: 759e461921dSSam Parker case MVE_VPTv8i16r: 760e461921dSSam Parker case MVE_VPTv4i32r: 761e461921dSSam Parker case MVE_VPTv16s8: 762e461921dSSam Parker case MVE_VPTv8s16: 763e461921dSSam Parker case MVE_VPTv4s32: 764e461921dSSam Parker case MVE_VPTv16s8r: 765e461921dSSam Parker case MVE_VPTv8s16r: 766e461921dSSam Parker case MVE_VPTv4s32r: 767e461921dSSam Parker case MVE_VPTv16u8: 768e461921dSSam Parker case MVE_VPTv8u16: 769e461921dSSam Parker case MVE_VPTv4u32: 770e461921dSSam Parker case MVE_VPTv16u8r: 771e461921dSSam Parker case MVE_VPTv8u16r: 772e461921dSSam Parker case MVE_VPTv4u32r: 773e461921dSSam Parker case MVE_VPTv8f16: 774e461921dSSam Parker case MVE_VPTv4f32: 775e461921dSSam Parker case MVE_VPTv8f16r: 776e461921dSSam Parker case MVE_VPTv4f32r: 777ce39278fSSam Parker case MVE_VQABSs16: 778ce39278fSSam Parker case MVE_VQABSs32: 779ce39278fSSam Parker case MVE_VQABSs8: 780ce39278fSSam Parker case MVE_VQADD_qr_s16: 781ce39278fSSam Parker case MVE_VQADD_qr_s32: 782ce39278fSSam Parker case MVE_VQADD_qr_s8: 783ce39278fSSam Parker case MVE_VQADD_qr_u16: 784ce39278fSSam Parker case MVE_VQADD_qr_u32: 785ce39278fSSam Parker case MVE_VQADD_qr_u8: 786ce39278fSSam Parker case MVE_VQADDs16: 787ce39278fSSam Parker case MVE_VQADDs32: 788ce39278fSSam Parker case MVE_VQADDs8: 789ce39278fSSam Parker case MVE_VQADDu16: 790ce39278fSSam Parker case MVE_VQADDu32: 791ce39278fSSam Parker case MVE_VQADDu8: 7921919b650SSam Parker case MVE_VQDMULH_qr_s16: 7931919b650SSam Parker case MVE_VQDMULH_qr_s32: 7941919b650SSam Parker case MVE_VQDMULH_qr_s8: 7951919b650SSam Parker case MVE_VQDMULHi16: 7961919b650SSam Parker case MVE_VQDMULHi32: 7971919b650SSam Parker case MVE_VQDMULHi8: 7984f0fe6b9SSam Parker case MVE_VQDMULL_qr_s16bh: 7994f0fe6b9SSam Parker case MVE_VQDMULL_qr_s16th: 8004f0fe6b9SSam Parker case MVE_VQDMULL_qr_s32bh: 8014f0fe6b9SSam Parker case MVE_VQDMULL_qr_s32th: 8024f0fe6b9SSam Parker case MVE_VQDMULLs16bh: 8034f0fe6b9SSam Parker case MVE_VQDMULLs16th: 8044f0fe6b9SSam Parker case MVE_VQDMULLs32bh: 8054f0fe6b9SSam Parker case MVE_VQDMULLs32th: 8061919b650SSam Parker case MVE_VQRDMULH_qr_s16: 8071919b650SSam Parker case MVE_VQRDMULH_qr_s32: 8081919b650SSam Parker case MVE_VQRDMULH_qr_s8: 8091919b650SSam Parker case MVE_VQRDMULHi16: 8101919b650SSam Parker case MVE_VQRDMULHi32: 8111919b650SSam Parker case MVE_VQRDMULHi8: 812ce39278fSSam Parker case MVE_VQNEGs16: 813ce39278fSSam Parker case MVE_VQNEGs32: 814ce39278fSSam Parker case MVE_VQNEGs8: 8154cf0dddcSSam Parker case MVE_VQMOVNs16bh: 8164cf0dddcSSam Parker case MVE_VQMOVNs16th: 8174cf0dddcSSam Parker case MVE_VQMOVNs32bh: 8184cf0dddcSSam Parker case MVE_VQMOVNs32th: 8194cf0dddcSSam Parker case MVE_VQMOVNu16bh: 8204cf0dddcSSam Parker case MVE_VQMOVNu16th: 8214cf0dddcSSam Parker case MVE_VQMOVNu32bh: 8224cf0dddcSSam Parker case MVE_VQMOVNu32th: 8234cf0dddcSSam Parker case MVE_VQMOVUNs16bh: 8244cf0dddcSSam Parker case MVE_VQMOVUNs16th: 8254cf0dddcSSam Parker case MVE_VQMOVUNs32bh: 8264cf0dddcSSam Parker case MVE_VQMOVUNs32th: 827ce39278fSSam Parker case MVE_VQRSHL_by_vecs16: 828ce39278fSSam Parker case MVE_VQRSHL_by_vecs32: 829ce39278fSSam Parker case MVE_VQRSHL_by_vecs8: 830ce39278fSSam Parker case MVE_VQRSHL_by_vecu16: 831ce39278fSSam Parker case MVE_VQRSHL_by_vecu32: 832ce39278fSSam Parker case MVE_VQRSHL_by_vecu8: 833ce39278fSSam Parker case MVE_VQRSHL_qrs16: 834ce39278fSSam Parker case MVE_VQRSHL_qrs32: 835ce39278fSSam Parker case MVE_VQRSHL_qrs8: 836ce39278fSSam Parker case MVE_VQRSHL_qru16: 837ce39278fSSam Parker case MVE_VQRSHL_qru8: 838ce39278fSSam Parker case MVE_VQRSHL_qru32: 839ce39278fSSam Parker case MVE_VQSHLU_imms16: 840ce39278fSSam Parker case MVE_VQSHLU_imms32: 841ce39278fSSam Parker case MVE_VQSHLU_imms8: 8423fab4276SSimon Tatham case MVE_VQSHLimms16: 8433fab4276SSimon Tatham case MVE_VQSHLimms32: 8443fab4276SSimon Tatham case MVE_VQSHLimms8: 8453fab4276SSimon Tatham case MVE_VQSHLimmu16: 8463fab4276SSimon Tatham case MVE_VQSHLimmu32: 8473fab4276SSimon Tatham case MVE_VQSHLimmu8: 848ce39278fSSam Parker case MVE_VQSHL_by_vecs16: 849ce39278fSSam Parker case MVE_VQSHL_by_vecs32: 850ce39278fSSam Parker case MVE_VQSHL_by_vecs8: 851ce39278fSSam Parker case MVE_VQSHL_by_vecu16: 852ce39278fSSam Parker case MVE_VQSHL_by_vecu32: 853ce39278fSSam Parker case MVE_VQSHL_by_vecu8: 854ce39278fSSam Parker case MVE_VQSHL_qrs16: 855ce39278fSSam Parker case MVE_VQSHL_qrs32: 856ce39278fSSam Parker case MVE_VQSHL_qrs8: 857ce39278fSSam Parker case MVE_VQSHL_qru16: 858ce39278fSSam Parker case MVE_VQSHL_qru32: 859ce39278fSSam Parker case MVE_VQSHL_qru8: 86077e30758SSam Parker case MVE_VQRSHRNbhs16: 86177e30758SSam Parker case MVE_VQRSHRNbhs32: 86277e30758SSam Parker case MVE_VQRSHRNbhu16: 86377e30758SSam Parker case MVE_VQRSHRNbhu32: 86477e30758SSam Parker case MVE_VQRSHRNths16: 86577e30758SSam Parker case MVE_VQRSHRNths32: 86677e30758SSam Parker case MVE_VQRSHRNthu16: 86777e30758SSam Parker case MVE_VQRSHRNthu32: 86877e30758SSam Parker case MVE_VQRSHRUNs16bh: 86977e30758SSam Parker case MVE_VQRSHRUNs16th: 87077e30758SSam Parker case MVE_VQRSHRUNs32bh: 87177e30758SSam Parker case MVE_VQRSHRUNs32th: 87277e30758SSam Parker case MVE_VQSHRNbhs16: 87377e30758SSam Parker case MVE_VQSHRNbhs32: 87477e30758SSam Parker case MVE_VQSHRNbhu16: 87577e30758SSam Parker case MVE_VQSHRNbhu32: 87677e30758SSam Parker case MVE_VQSHRNths16: 87777e30758SSam Parker case MVE_VQSHRNths32: 87877e30758SSam Parker case MVE_VQSHRNthu16: 87977e30758SSam Parker case MVE_VQSHRNthu32: 88077e30758SSam Parker case MVE_VQSHRUNs16bh: 88177e30758SSam Parker case MVE_VQSHRUNs16th: 88277e30758SSam Parker case MVE_VQSHRUNs32bh: 88377e30758SSam Parker case MVE_VQSHRUNs32th: 884ce39278fSSam Parker case MVE_VQSUB_qr_s16: 885ce39278fSSam Parker case MVE_VQSUB_qr_s32: 886ce39278fSSam Parker case MVE_VQSUB_qr_s8: 887ce39278fSSam Parker case MVE_VQSUB_qr_u16: 888ce39278fSSam Parker case MVE_VQSUB_qr_u32: 889ce39278fSSam Parker case MVE_VQSUB_qr_u8: 890ce39278fSSam Parker case MVE_VQSUBs16: 891ce39278fSSam Parker case MVE_VQSUBs32: 892ce39278fSSam Parker case MVE_VQSUBs8: 893ce39278fSSam Parker case MVE_VQSUBu16: 894ce39278fSSam Parker case MVE_VQSUBu32: 895ce39278fSSam Parker case MVE_VQSUBu8: 896ce39278fSSam Parker case MVE_VRHADDs16: 897ce39278fSSam Parker case MVE_VRHADDs32: 898ce39278fSSam Parker case MVE_VRHADDs8: 899ce39278fSSam Parker case MVE_VRHADDu16: 900ce39278fSSam Parker case MVE_VRHADDu32: 901ce39278fSSam Parker case MVE_VRHADDu8: 902ce39278fSSam Parker case MVE_VRINTf16A: 903ce39278fSSam Parker case MVE_VRINTf16M: 904ce39278fSSam Parker case MVE_VRINTf16N: 905ce39278fSSam Parker case MVE_VRINTf16P: 906ce39278fSSam Parker case MVE_VRINTf16X: 907ce39278fSSam Parker case MVE_VRINTf16Z: 908ce39278fSSam Parker case MVE_VRINTf32A: 909ce39278fSSam Parker case MVE_VRINTf32M: 910ce39278fSSam Parker case MVE_VRINTf32N: 911ce39278fSSam Parker case MVE_VRINTf32P: 912ce39278fSSam Parker case MVE_VRINTf32X: 913ce39278fSSam Parker case MVE_VRINTf32Z: 9142cf0e52bSDavid Green case MVE_VRMULHs32: 9152cf0e52bSDavid Green case MVE_VRMULHs16: 9162cf0e52bSDavid Green case MVE_VRMULHs8: 9172cf0e52bSDavid Green case MVE_VRMULHu32: 9182cf0e52bSDavid Green case MVE_VRMULHu16: 9192cf0e52bSDavid Green case MVE_VRMULHu8: 920ce39278fSSam Parker case MVE_VRSHL_by_vecs16: 921ce39278fSSam Parker case MVE_VRSHL_by_vecs32: 922ce39278fSSam Parker case MVE_VRSHL_by_vecs8: 923ce39278fSSam Parker case MVE_VRSHL_by_vecu16: 924ce39278fSSam Parker case MVE_VRSHL_by_vecu32: 925ce39278fSSam Parker case MVE_VRSHL_by_vecu8: 926ce39278fSSam Parker case MVE_VRSHL_qrs16: 927ce39278fSSam Parker case MVE_VRSHL_qrs32: 928ce39278fSSam Parker case MVE_VRSHL_qrs8: 929ce39278fSSam Parker case MVE_VRSHL_qru16: 930ce39278fSSam Parker case MVE_VRSHL_qru32: 931ce39278fSSam Parker case MVE_VRSHL_qru8: 932ce39278fSSam Parker case MVE_VRSHR_imms16: 933ce39278fSSam Parker case MVE_VRSHR_imms32: 934ce39278fSSam Parker case MVE_VRSHR_imms8: 935ce39278fSSam Parker case MVE_VRSHR_immu16: 936ce39278fSSam Parker case MVE_VRSHR_immu32: 937ce39278fSSam Parker case MVE_VRSHR_immu8: 93877e30758SSam Parker case MVE_VRSHRNi16bh: 93977e30758SSam Parker case MVE_VRSHRNi16th: 94077e30758SSam Parker case MVE_VRSHRNi32bh: 94177e30758SSam Parker case MVE_VRSHRNi32th: 942ce39278fSSam Parker case MVE_VSHL_by_vecs16: 943ce39278fSSam Parker case MVE_VSHL_by_vecs32: 944ce39278fSSam Parker case MVE_VSHL_by_vecs8: 945ce39278fSSam Parker case MVE_VSHL_by_vecu16: 946ce39278fSSam Parker case MVE_VSHL_by_vecu32: 947ce39278fSSam Parker case MVE_VSHL_by_vecu8: 948ce39278fSSam Parker case MVE_VSHL_immi16: 949ce39278fSSam Parker case MVE_VSHL_immi32: 950ce39278fSSam Parker case MVE_VSHL_immi8: 951ce39278fSSam Parker case MVE_VSHL_qrs16: 952ce39278fSSam Parker case MVE_VSHL_qrs32: 953ce39278fSSam Parker case MVE_VSHL_qrs8: 954ce39278fSSam Parker case MVE_VSHL_qru16: 955ce39278fSSam Parker case MVE_VSHL_qru32: 956ce39278fSSam Parker case MVE_VSHL_qru8: 957ce39278fSSam Parker case MVE_VSHR_imms16: 958ce39278fSSam Parker case MVE_VSHR_imms32: 959ce39278fSSam Parker case MVE_VSHR_imms8: 960ce39278fSSam Parker case MVE_VSHR_immu16: 961ce39278fSSam Parker case MVE_VSHR_immu32: 962ce39278fSSam Parker case MVE_VSHR_immu8: 96377e30758SSam Parker case MVE_VSHRNi16bh: 96477e30758SSam Parker case MVE_VSHRNi16th: 96577e30758SSam Parker case MVE_VSHRNi32bh: 96677e30758SSam Parker case MVE_VSHRNi32th: 967ce39278fSSam Parker case MVE_VSLIimm16: 968ce39278fSSam Parker case MVE_VSLIimm32: 969ce39278fSSam Parker case MVE_VSLIimm8: 970ce39278fSSam Parker case MVE_VSRIimm16: 971ce39278fSSam Parker case MVE_VSRIimm32: 972ce39278fSSam Parker case MVE_VSRIimm8: 973ce39278fSSam Parker case MVE_VSTRB16: 974ce39278fSSam Parker case MVE_VSTRB16_post: 975ce39278fSSam Parker case MVE_VSTRB16_pre: 976ce39278fSSam Parker case MVE_VSTRB16_rq: 977ce39278fSSam Parker case MVE_VSTRB32: 978ce39278fSSam Parker case MVE_VSTRB32_post: 979ce39278fSSam Parker case MVE_VSTRB32_pre: 980ce39278fSSam Parker case MVE_VSTRB32_rq: 981ce39278fSSam Parker case MVE_VSTRB8_rq: 982ce39278fSSam Parker case MVE_VSTRBU8: 983ce39278fSSam Parker case MVE_VSTRBU8_post: 984ce39278fSSam Parker case MVE_VSTRBU8_pre: 985ce39278fSSam Parker case MVE_VSTRD64_qi: 986ce39278fSSam Parker case MVE_VSTRD64_qi_pre: 987ce39278fSSam Parker case MVE_VSTRD64_rq: 988ce39278fSSam Parker case MVE_VSTRD64_rq_u: 989ce39278fSSam Parker case MVE_VSTRH16_rq: 990ce39278fSSam Parker case MVE_VSTRH16_rq_u: 991ce39278fSSam Parker case MVE_VSTRH32: 992ce39278fSSam Parker case MVE_VSTRH32_post: 993ce39278fSSam Parker case MVE_VSTRH32_pre: 994ce39278fSSam Parker case MVE_VSTRH32_rq: 995ce39278fSSam Parker case MVE_VSTRH32_rq_u: 996ce39278fSSam Parker case MVE_VSTRHU16: 997ce39278fSSam Parker case MVE_VSTRHU16_post: 998ce39278fSSam Parker case MVE_VSTRHU16_pre: 999ce39278fSSam Parker case MVE_VSTRW32_qi: 1000ce39278fSSam Parker case MVE_VSTRW32_qi_pre: 1001ce39278fSSam Parker case MVE_VSTRW32_rq: 1002ce39278fSSam Parker case MVE_VSTRW32_rq_u: 1003ce39278fSSam Parker case MVE_VSTRWU32: 1004ce39278fSSam Parker case MVE_VSTRWU32_post: 1005ce39278fSSam Parker case MVE_VSTRWU32_pre: 1006ce39278fSSam Parker case MVE_VSUB_qr_f16: 1007ce39278fSSam Parker case MVE_VSUB_qr_f32: 1008ce39278fSSam Parker case MVE_VSUB_qr_i16: 1009ce39278fSSam Parker case MVE_VSUB_qr_i32: 1010ce39278fSSam Parker case MVE_VSUB_qr_i8: 1011ce39278fSSam Parker case MVE_VSUBf16: 1012ce39278fSSam Parker case MVE_VSUBf32: 1013ce39278fSSam Parker case MVE_VSUBi16: 1014ce39278fSSam Parker case MVE_VSUBi32: 1015ce39278fSSam Parker case MVE_VSUBi8: 101686172ce3SSam Parker case VLDR_P0_off: 101786172ce3SSam Parker case VLDR_P0_post: 101886172ce3SSam Parker case VLDR_P0_pre: 101986172ce3SSam Parker case VLDR_VPR_off: 102086172ce3SSam Parker case VLDR_VPR_post: 102186172ce3SSam Parker case VLDR_VPR_pre: 102286172ce3SSam Parker case VSTR_P0_off: 102386172ce3SSam Parker case VSTR_P0_post: 102486172ce3SSam Parker case VSTR_P0_pre: 102586172ce3SSam Parker case VSTR_VPR_off: 102686172ce3SSam Parker case VSTR_VPR_post: 102786172ce3SSam Parker case VSTR_VPR_pre: 102886172ce3SSam Parker case VMRS_P0: 102986172ce3SSam Parker case VMRS_VPR: 1030ce39278fSSam Parker return true; 1031ce39278fSSam Parker } 1032ce39278fSSam Parker }; 1033ce39278fSSam Parker 103426a475afSSam Parker LLVMInitializeARMTargetInfo(); 103526a475afSSam Parker LLVMInitializeARMTarget(); 103626a475afSSam Parker LLVMInitializeARMTargetMC(); 103726a475afSSam Parker 1038eecba950SDavid Green auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi")); 103926a475afSSam Parker std::string Error; 104026a475afSSam Parker const Target *T = TargetRegistry::lookupTarget(TT, Error); 104126a475afSSam Parker if (!T) { 104226a475afSSam Parker dbgs() << Error; 10437fc87159SPaul Robinson GTEST_SKIP(); 104426a475afSSam Parker } 104526a475afSSam Parker 104626a475afSSam Parker TargetOptions Options; 1047*bb3f5e1fSMatin Raayai auto TM = std::unique_ptr<TargetMachine>( 1048b6a01caaSKazu Hirata T->createTargetMachine(TT, "generic", "", Options, std::nullopt, 1049*bb3f5e1fSMatin Raayai std::nullopt, CodeGenOptLevel::Default)); 1050adcd0268SBenjamin Kramer ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()), 1051adcd0268SBenjamin Kramer std::string(TM->getTargetFeatureString()), 1052ce39278fSSam Parker *static_cast<const ARMBaseTargetMachine *>(TM.get()), false); 105386172ce3SSam Parker 105426a475afSSam Parker auto MII = TM->getMCInstrInfo(); 105526a475afSSam Parker for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) { 105626a475afSSam Parker uint64_t Flags = MII->get(i).TSFlags; 105786172ce3SSam Parker if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE) 105886172ce3SSam Parker continue; 1059ce39278fSSam Parker bool Valid = (Flags & ARMII::ValidForTailPredication) != 0; 1060ce39278fSSam Parker ASSERT_EQ(IsValidTPOpcode(i), Valid) 106126a475afSSam Parker << MII->getName(i) 106226a475afSSam Parker << ": mismatched expectation for tail-predicated safety\n"; 106326a475afSSam Parker } 106426a475afSSam Parker } 106558991ba7SDavid Green 106658991ba7SDavid Green TEST(MachineInstr, HasSideEffects) { 106758991ba7SDavid Green using namespace ARM; 1068c697dd9fSDavid Green std::set<unsigned> UnpredictableOpcodes = { 106974ca67c1SDavid Green // MVE Instructions 107074ca67c1SDavid Green MVE_VCTP8, 107174ca67c1SDavid Green MVE_VCTP16, 107274ca67c1SDavid Green MVE_VCTP32, 107374ca67c1SDavid Green MVE_VCTP64, 107474ca67c1SDavid Green MVE_VPST, 107574ca67c1SDavid Green MVE_VPTv16i8, 107674ca67c1SDavid Green MVE_VPTv8i16, 107774ca67c1SDavid Green MVE_VPTv4i32, 107874ca67c1SDavid Green MVE_VPTv16i8r, 107974ca67c1SDavid Green MVE_VPTv8i16r, 108074ca67c1SDavid Green MVE_VPTv4i32r, 108174ca67c1SDavid Green MVE_VPTv16s8, 108274ca67c1SDavid Green MVE_VPTv8s16, 108374ca67c1SDavid Green MVE_VPTv4s32, 108474ca67c1SDavid Green MVE_VPTv16s8r, 108574ca67c1SDavid Green MVE_VPTv8s16r, 108674ca67c1SDavid Green MVE_VPTv4s32r, 108774ca67c1SDavid Green MVE_VPTv16u8, 108874ca67c1SDavid Green MVE_VPTv8u16, 108974ca67c1SDavid Green MVE_VPTv4u32, 109074ca67c1SDavid Green MVE_VPTv16u8r, 109174ca67c1SDavid Green MVE_VPTv8u16r, 109274ca67c1SDavid Green MVE_VPTv4u32r, 109374ca67c1SDavid Green MVE_VPTv8f16, 109474ca67c1SDavid Green MVE_VPTv4f32, 109574ca67c1SDavid Green MVE_VPTv8f16r, 109674ca67c1SDavid Green MVE_VPTv4f32r, 109774ca67c1SDavid Green MVE_VADC, 109874ca67c1SDavid Green MVE_VADCI, 109974ca67c1SDavid Green MVE_VSBC, 110074ca67c1SDavid Green MVE_VSBCI, 110174ca67c1SDavid Green MVE_VSHLC, 110274ca67c1SDavid Green // FP Instructions 110374ca67c1SDavid Green FLDMXIA, 110474ca67c1SDavid Green FLDMXDB_UPD, 110574ca67c1SDavid Green FLDMXIA_UPD, 110674ca67c1SDavid Green FSTMXDB_UPD, 110774ca67c1SDavid Green FSTMXIA, 110874ca67c1SDavid Green FSTMXIA_UPD, 110974ca67c1SDavid Green VLDR_FPCXTNS_off, 111074ca67c1SDavid Green VLDR_FPCXTNS_off, 111174ca67c1SDavid Green VLDR_FPCXTNS_post, 111274ca67c1SDavid Green VLDR_FPCXTNS_pre, 111374ca67c1SDavid Green VLDR_FPCXTS_off, 111474ca67c1SDavid Green VLDR_FPCXTS_post, 111574ca67c1SDavid Green VLDR_FPCXTS_pre, 111674ca67c1SDavid Green VLDR_FPSCR_NZCVQC_off, 111774ca67c1SDavid Green VLDR_FPSCR_NZCVQC_post, 111874ca67c1SDavid Green VLDR_FPSCR_NZCVQC_pre, 111974ca67c1SDavid Green VLDR_FPSCR_off, 112074ca67c1SDavid Green VLDR_FPSCR_post, 112174ca67c1SDavid Green VLDR_FPSCR_pre, 112274ca67c1SDavid Green VLDR_P0_off, 112374ca67c1SDavid Green VLDR_P0_post, 112474ca67c1SDavid Green VLDR_P0_pre, 112574ca67c1SDavid Green VLDR_VPR_off, 112674ca67c1SDavid Green VLDR_VPR_post, 112774ca67c1SDavid Green VLDR_VPR_pre, 112874ca67c1SDavid Green VLLDM, 11295e688f0dSSivan Shani VLLDM_T2, 113074ca67c1SDavid Green VLSTM, 11315e688f0dSSivan Shani VLSTM_T2, 113274ca67c1SDavid Green VMRS, 113374ca67c1SDavid Green VMRS_FPCXTNS, 113474ca67c1SDavid Green VMRS_FPCXTS, 113574ca67c1SDavid Green VMRS_FPEXC, 113674ca67c1SDavid Green VMRS_FPINST, 113774ca67c1SDavid Green VMRS_FPINST2, 113874ca67c1SDavid Green VMRS_FPSCR_NZCVQC, 113974ca67c1SDavid Green VMRS_FPSID, 114074ca67c1SDavid Green VMRS_MVFR0, 114174ca67c1SDavid Green VMRS_MVFR1, 114274ca67c1SDavid Green VMRS_MVFR2, 114374ca67c1SDavid Green VMRS_P0, 114474ca67c1SDavid Green VMRS_VPR, 114574ca67c1SDavid Green VMSR, 114674ca67c1SDavid Green VMSR_FPCXTNS, 114774ca67c1SDavid Green VMSR_FPCXTS, 114874ca67c1SDavid Green VMSR_FPEXC, 114974ca67c1SDavid Green VMSR_FPINST, 115074ca67c1SDavid Green VMSR_FPINST2, 115174ca67c1SDavid Green VMSR_FPSCR_NZCVQC, 115274ca67c1SDavid Green VMSR_FPSID, 115374ca67c1SDavid Green VMSR_P0, 115474ca67c1SDavid Green VMSR_VPR, 115574ca67c1SDavid Green VSCCLRMD, 115674ca67c1SDavid Green VSCCLRMS, 115774ca67c1SDavid Green VSTR_FPCXTNS_off, 115874ca67c1SDavid Green VSTR_FPCXTNS_post, 115974ca67c1SDavid Green VSTR_FPCXTNS_pre, 116074ca67c1SDavid Green VSTR_FPCXTS_off, 116174ca67c1SDavid Green VSTR_FPCXTS_post, 116274ca67c1SDavid Green VSTR_FPCXTS_pre, 116374ca67c1SDavid Green VSTR_FPSCR_NZCVQC_off, 116474ca67c1SDavid Green VSTR_FPSCR_NZCVQC_post, 116574ca67c1SDavid Green VSTR_FPSCR_NZCVQC_pre, 116674ca67c1SDavid Green VSTR_FPSCR_off, 116774ca67c1SDavid Green VSTR_FPSCR_post, 116874ca67c1SDavid Green VSTR_FPSCR_pre, 116974ca67c1SDavid Green VSTR_P0_off, 117074ca67c1SDavid Green VSTR_P0_post, 117174ca67c1SDavid Green VSTR_P0_pre, 117274ca67c1SDavid Green VSTR_VPR_off, 117374ca67c1SDavid Green VSTR_VPR_post, 117474ca67c1SDavid Green VSTR_VPR_pre, 117558991ba7SDavid Green }; 117658991ba7SDavid Green 117758991ba7SDavid Green LLVMInitializeARMTargetInfo(); 117858991ba7SDavid Green LLVMInitializeARMTarget(); 117958991ba7SDavid Green LLVMInitializeARMTargetMC(); 118058991ba7SDavid Green 1181eecba950SDavid Green auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi")); 118258991ba7SDavid Green std::string Error; 118358991ba7SDavid Green const Target *T = TargetRegistry::lookupTarget(TT, Error); 118458991ba7SDavid Green if (!T) { 118558991ba7SDavid Green dbgs() << Error; 11867fc87159SPaul Robinson GTEST_SKIP(); 118758991ba7SDavid Green } 118858991ba7SDavid Green 118958991ba7SDavid Green TargetOptions Options; 1190*bb3f5e1fSMatin Raayai auto TM = std::unique_ptr<TargetMachine>( 1191b6a01caaSKazu Hirata T->createTargetMachine(TT, "generic", "", Options, std::nullopt, 1192*bb3f5e1fSMatin Raayai std::nullopt, CodeGenOptLevel::Default)); 1193adcd0268SBenjamin Kramer ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()), 1194adcd0268SBenjamin Kramer std::string(TM->getTargetFeatureString()), 119558991ba7SDavid Green *static_cast<const ARMBaseTargetMachine *>(TM.get()), false); 119658991ba7SDavid Green const ARMBaseInstrInfo *TII = ST.getInstrInfo(); 119758991ba7SDavid Green auto MII = TM->getMCInstrInfo(); 119858991ba7SDavid Green 1199c697dd9fSDavid Green for (unsigned Op = 0; Op < ARM::INSTRUCTION_LIST_END; ++Op) { 120058991ba7SDavid Green const MCInstrDesc &Desc = TII->get(Op); 120130371df8SDavid Green if ((Desc.TSFlags & 120230371df8SDavid Green (ARMII::DomainMVE | ARMII::DomainVFP | ARMII::DomainNEONA8)) == 0) 1203c697dd9fSDavid Green continue; 1204c697dd9fSDavid Green if (UnpredictableOpcodes.count(Op)) 1205c697dd9fSDavid Green continue; 1206c697dd9fSDavid Green 120758991ba7SDavid Green ASSERT_FALSE(Desc.hasUnmodeledSideEffects()) 120858991ba7SDavid Green << MII->getName(Op) << " has unexpected side effects"; 120958991ba7SDavid Green } 121058991ba7SDavid Green } 121102cd8a6bSDavid Green 121202cd8a6bSDavid Green TEST(MachineInstr, MVEVecSize) { 121302cd8a6bSDavid Green using namespace ARM; 121402cd8a6bSDavid Green auto MVEVecSize = [](unsigned Opcode) { 121502cd8a6bSDavid Green switch (Opcode) { 121602cd8a6bSDavid Green default: 121702cd8a6bSDavid Green dbgs() << Opcode << "\n"; 121802cd8a6bSDavid Green llvm_unreachable("Unexpected MVE instruction!"); 121902cd8a6bSDavid Green case MVE_ASRLi: 122002cd8a6bSDavid Green case MVE_ASRLr: 122102cd8a6bSDavid Green case MVE_LSLLi: 122202cd8a6bSDavid Green case MVE_LSLLr: 122302cd8a6bSDavid Green case MVE_LSRL: 122402cd8a6bSDavid Green case MVE_SQRSHR: 122502cd8a6bSDavid Green case MVE_SQRSHRL: 122602cd8a6bSDavid Green case MVE_SQSHL: 122702cd8a6bSDavid Green case MVE_SQSHLL: 122802cd8a6bSDavid Green case MVE_SRSHR: 122902cd8a6bSDavid Green case MVE_SRSHRL: 123002cd8a6bSDavid Green case MVE_UQRSHL: 123102cd8a6bSDavid Green case MVE_UQRSHLL: 123202cd8a6bSDavid Green case MVE_UQSHL: 123302cd8a6bSDavid Green case MVE_UQSHLL: 123402cd8a6bSDavid Green case MVE_URSHR: 123502cd8a6bSDavid Green case MVE_URSHRL: 123602cd8a6bSDavid Green case MVE_VABAVs8: 123702cd8a6bSDavid Green case MVE_VABAVu8: 123802cd8a6bSDavid Green case MVE_VABDs8: 123902cd8a6bSDavid Green case MVE_VABDu8: 124002cd8a6bSDavid Green case MVE_VABSs8: 124102cd8a6bSDavid Green case MVE_VADDVs8acc: 124202cd8a6bSDavid Green case MVE_VADDVs8no_acc: 124302cd8a6bSDavid Green case MVE_VADDVu8acc: 124402cd8a6bSDavid Green case MVE_VADDVu8no_acc: 124502cd8a6bSDavid Green case MVE_VADD_qr_i8: 124602cd8a6bSDavid Green case MVE_VADDi8: 124702cd8a6bSDavid Green case MVE_VBRSR8: 124802cd8a6bSDavid Green case MVE_VCADDi8: 124902cd8a6bSDavid Green case MVE_VCLSs8: 125002cd8a6bSDavid Green case MVE_VCLZs8: 125102cd8a6bSDavid Green case MVE_VCMPi8: 125202cd8a6bSDavid Green case MVE_VCMPi8r: 125302cd8a6bSDavid Green case MVE_VCMPs8: 125402cd8a6bSDavid Green case MVE_VCMPs8r: 125502cd8a6bSDavid Green case MVE_VCMPu8: 125602cd8a6bSDavid Green case MVE_VCMPu8r: 125702cd8a6bSDavid Green case MVE_VCTP8: 125802cd8a6bSDavid Green case MVE_VDDUPu8: 125902cd8a6bSDavid Green case MVE_VDUP8: 126002cd8a6bSDavid Green case MVE_VDWDUPu8: 126102cd8a6bSDavid Green case MVE_VHADD_qr_s8: 126202cd8a6bSDavid Green case MVE_VHADD_qr_u8: 126302cd8a6bSDavid Green case MVE_VHADDs8: 126402cd8a6bSDavid Green case MVE_VHADDu8: 126502cd8a6bSDavid Green case MVE_VHCADDs8: 126602cd8a6bSDavid Green case MVE_VHSUB_qr_s8: 126702cd8a6bSDavid Green case MVE_VHSUB_qr_u8: 126802cd8a6bSDavid Green case MVE_VHSUBs8: 126902cd8a6bSDavid Green case MVE_VHSUBu8: 127002cd8a6bSDavid Green case MVE_VIDUPu8: 127102cd8a6bSDavid Green case MVE_VIWDUPu8: 127202cd8a6bSDavid Green case MVE_VLD20_8: 127302cd8a6bSDavid Green case MVE_VLD20_8_wb: 127402cd8a6bSDavid Green case MVE_VLD21_8: 127502cd8a6bSDavid Green case MVE_VLD21_8_wb: 127602cd8a6bSDavid Green case MVE_VLD40_8: 127702cd8a6bSDavid Green case MVE_VLD40_8_wb: 127802cd8a6bSDavid Green case MVE_VLD41_8: 127902cd8a6bSDavid Green case MVE_VLD41_8_wb: 128002cd8a6bSDavid Green case MVE_VLD42_8: 128102cd8a6bSDavid Green case MVE_VLD42_8_wb: 128202cd8a6bSDavid Green case MVE_VLD43_8: 128302cd8a6bSDavid Green case MVE_VLD43_8_wb: 128402cd8a6bSDavid Green case MVE_VLDRBU8: 128502cd8a6bSDavid Green case MVE_VLDRBU8_post: 128602cd8a6bSDavid Green case MVE_VLDRBU8_pre: 128702cd8a6bSDavid Green case MVE_VLDRBU8_rq: 128802cd8a6bSDavid Green case MVE_VMAXAVs8: 128902cd8a6bSDavid Green case MVE_VMAXAs8: 129002cd8a6bSDavid Green case MVE_VMAXVs8: 129102cd8a6bSDavid Green case MVE_VMAXVu8: 129202cd8a6bSDavid Green case MVE_VMAXs8: 129302cd8a6bSDavid Green case MVE_VMAXu8: 129402cd8a6bSDavid Green case MVE_VMINAVs8: 129502cd8a6bSDavid Green case MVE_VMINAs8: 129602cd8a6bSDavid Green case MVE_VMINVs8: 129702cd8a6bSDavid Green case MVE_VMINVu8: 129802cd8a6bSDavid Green case MVE_VMINs8: 129902cd8a6bSDavid Green case MVE_VMINu8: 130002cd8a6bSDavid Green case MVE_VMLADAVas8: 130102cd8a6bSDavid Green case MVE_VMLADAVau8: 130202cd8a6bSDavid Green case MVE_VMLADAVaxs8: 130302cd8a6bSDavid Green case MVE_VMLADAVs8: 130402cd8a6bSDavid Green case MVE_VMLADAVu8: 130502cd8a6bSDavid Green case MVE_VMLADAVxs8: 1306e45cbf99SSimon Tatham case MVE_VMLAS_qr_i8: 1307e45cbf99SSimon Tatham case MVE_VMLA_qr_i8: 130802cd8a6bSDavid Green case MVE_VMLSDAVas8: 130902cd8a6bSDavid Green case MVE_VMLSDAVaxs8: 131002cd8a6bSDavid Green case MVE_VMLSDAVs8: 131102cd8a6bSDavid Green case MVE_VMLSDAVxs8: 131202cd8a6bSDavid Green case MVE_VMOV_from_lane_s8: 131302cd8a6bSDavid Green case MVE_VMOV_from_lane_u8: 131402cd8a6bSDavid Green case MVE_VMOV_to_lane_8: 131502cd8a6bSDavid Green case MVE_VMOVimmi8: 131602cd8a6bSDavid Green case MVE_VMULHs8: 131702cd8a6bSDavid Green case MVE_VMULHu8: 131802cd8a6bSDavid Green case MVE_VMUL_qr_i8: 131902cd8a6bSDavid Green case MVE_VMULi8: 132002cd8a6bSDavid Green case MVE_VNEGs8: 132102cd8a6bSDavid Green case MVE_VPTv16i8: 132202cd8a6bSDavid Green case MVE_VPTv16i8r: 132302cd8a6bSDavid Green case MVE_VPTv16s8: 132402cd8a6bSDavid Green case MVE_VPTv16s8r: 132502cd8a6bSDavid Green case MVE_VPTv16u8: 132602cd8a6bSDavid Green case MVE_VPTv16u8r: 132702cd8a6bSDavid Green case MVE_VQABSs8: 132802cd8a6bSDavid Green case MVE_VQADD_qr_s8: 132902cd8a6bSDavid Green case MVE_VQADD_qr_u8: 133002cd8a6bSDavid Green case MVE_VQADDs8: 133102cd8a6bSDavid Green case MVE_VQADDu8: 133202cd8a6bSDavid Green case MVE_VQDMLADHXs8: 133302cd8a6bSDavid Green case MVE_VQDMLADHs8: 133402cd8a6bSDavid Green case MVE_VQDMLAH_qrs8: 133502cd8a6bSDavid Green case MVE_VQDMLASH_qrs8: 133602cd8a6bSDavid Green case MVE_VQDMLSDHXs8: 133702cd8a6bSDavid Green case MVE_VQDMLSDHs8: 133802cd8a6bSDavid Green case MVE_VQDMULH_qr_s8: 133902cd8a6bSDavid Green case MVE_VQDMULHi8: 134002cd8a6bSDavid Green case MVE_VQNEGs8: 134102cd8a6bSDavid Green case MVE_VQRDMLADHXs8: 134202cd8a6bSDavid Green case MVE_VQRDMLADHs8: 134302cd8a6bSDavid Green case MVE_VQRDMLAH_qrs8: 134402cd8a6bSDavid Green case MVE_VQRDMLASH_qrs8: 134502cd8a6bSDavid Green case MVE_VQRDMLSDHXs8: 134602cd8a6bSDavid Green case MVE_VQRDMLSDHs8: 134702cd8a6bSDavid Green case MVE_VQRDMULH_qr_s8: 134802cd8a6bSDavid Green case MVE_VQRDMULHi8: 134902cd8a6bSDavid Green case MVE_VQRSHL_by_vecs8: 135002cd8a6bSDavid Green case MVE_VQRSHL_by_vecu8: 135102cd8a6bSDavid Green case MVE_VQRSHL_qrs8: 135202cd8a6bSDavid Green case MVE_VQRSHL_qru8: 135302cd8a6bSDavid Green case MVE_VQSHLU_imms8: 135402cd8a6bSDavid Green case MVE_VQSHL_by_vecs8: 135502cd8a6bSDavid Green case MVE_VQSHL_by_vecu8: 135602cd8a6bSDavid Green case MVE_VQSHL_qrs8: 135702cd8a6bSDavid Green case MVE_VQSHL_qru8: 135802cd8a6bSDavid Green case MVE_VQSHLimms8: 135902cd8a6bSDavid Green case MVE_VQSHLimmu8: 136002cd8a6bSDavid Green case MVE_VQSUB_qr_s8: 136102cd8a6bSDavid Green case MVE_VQSUB_qr_u8: 136202cd8a6bSDavid Green case MVE_VQSUBs8: 136302cd8a6bSDavid Green case MVE_VQSUBu8: 136402cd8a6bSDavid Green case MVE_VRHADDs8: 136502cd8a6bSDavid Green case MVE_VRHADDu8: 136602cd8a6bSDavid Green case MVE_VRMULHs8: 136702cd8a6bSDavid Green case MVE_VRMULHu8: 136802cd8a6bSDavid Green case MVE_VRSHL_by_vecs8: 136902cd8a6bSDavid Green case MVE_VRSHL_by_vecu8: 137002cd8a6bSDavid Green case MVE_VRSHL_qrs8: 137102cd8a6bSDavid Green case MVE_VRSHL_qru8: 137202cd8a6bSDavid Green case MVE_VRSHR_imms8: 137302cd8a6bSDavid Green case MVE_VRSHR_immu8: 137402cd8a6bSDavid Green case MVE_VSHL_by_vecs8: 137502cd8a6bSDavid Green case MVE_VSHL_by_vecu8: 137602cd8a6bSDavid Green case MVE_VSHL_immi8: 137702cd8a6bSDavid Green case MVE_VSHL_qru8: 137802cd8a6bSDavid Green case MVE_VSHL_qrs8: 137902cd8a6bSDavid Green case MVE_VSHR_imms8: 138002cd8a6bSDavid Green case MVE_VSHR_immu8: 138102cd8a6bSDavid Green case MVE_VSLIimm8: 138202cd8a6bSDavid Green case MVE_VSRIimm8: 138302cd8a6bSDavid Green case MVE_VST20_8: 138402cd8a6bSDavid Green case MVE_VST20_8_wb: 138502cd8a6bSDavid Green case MVE_VST21_8: 138602cd8a6bSDavid Green case MVE_VST21_8_wb: 138702cd8a6bSDavid Green case MVE_VST40_8: 138802cd8a6bSDavid Green case MVE_VST40_8_wb: 138902cd8a6bSDavid Green case MVE_VST41_8: 139002cd8a6bSDavid Green case MVE_VST41_8_wb: 139102cd8a6bSDavid Green case MVE_VST42_8: 139202cd8a6bSDavid Green case MVE_VST42_8_wb: 139302cd8a6bSDavid Green case MVE_VST43_8: 139402cd8a6bSDavid Green case MVE_VST43_8_wb: 139502cd8a6bSDavid Green case MVE_VSTRB8_rq: 139602cd8a6bSDavid Green case MVE_VSTRBU8: 139702cd8a6bSDavid Green case MVE_VSTRBU8_post: 139802cd8a6bSDavid Green case MVE_VSTRBU8_pre: 139902cd8a6bSDavid Green case MVE_VSUB_qr_i8: 140002cd8a6bSDavid Green case MVE_VSUBi8: 140102cd8a6bSDavid Green case MVE_VAND: 140202cd8a6bSDavid Green case MVE_VBIC: 140302cd8a6bSDavid Green case MVE_VEOR: 140402cd8a6bSDavid Green case MVE_VMVN: 140502cd8a6bSDavid Green case MVE_VORN: 140602cd8a6bSDavid Green case MVE_VORR: 140702cd8a6bSDavid Green case MVE_VPNOT: 140802cd8a6bSDavid Green case MVE_VPSEL: 140902cd8a6bSDavid Green case MVE_VPST: 141073346f58SDavid Green case MQPRCopy: 141102cd8a6bSDavid Green return 0; 141202cd8a6bSDavid Green case MVE_VABAVs16: 141302cd8a6bSDavid Green case MVE_VABAVu16: 141402cd8a6bSDavid Green case MVE_VABDf16: 141502cd8a6bSDavid Green case MVE_VABDs16: 141602cd8a6bSDavid Green case MVE_VABDu16: 141702cd8a6bSDavid Green case MVE_VABSf16: 141802cd8a6bSDavid Green case MVE_VABSs16: 141902cd8a6bSDavid Green case MVE_VADDVs16acc: 142002cd8a6bSDavid Green case MVE_VADDVs16no_acc: 142102cd8a6bSDavid Green case MVE_VADDVu16acc: 142202cd8a6bSDavid Green case MVE_VADDVu16no_acc: 142302cd8a6bSDavid Green case MVE_VADD_qr_f16: 142402cd8a6bSDavid Green case MVE_VADD_qr_i16: 142502cd8a6bSDavid Green case MVE_VADDf16: 142602cd8a6bSDavid Green case MVE_VADDi16: 142702cd8a6bSDavid Green case MVE_VBICimmi16: 142802cd8a6bSDavid Green case MVE_VBRSR16: 142902cd8a6bSDavid Green case MVE_VCADDf16: 143002cd8a6bSDavid Green case MVE_VCADDi16: 143102cd8a6bSDavid Green case MVE_VCLSs16: 143202cd8a6bSDavid Green case MVE_VCLZs16: 143302cd8a6bSDavid Green case MVE_VCMLAf16: 143402cd8a6bSDavid Green case MVE_VCMPf16: 143502cd8a6bSDavid Green case MVE_VCMPf16r: 143602cd8a6bSDavid Green case MVE_VCMPi16: 143702cd8a6bSDavid Green case MVE_VCMPi16r: 143802cd8a6bSDavid Green case MVE_VCMPs16: 143902cd8a6bSDavid Green case MVE_VCMPs16r: 144002cd8a6bSDavid Green case MVE_VCMPu16: 144102cd8a6bSDavid Green case MVE_VCMPu16r: 144202cd8a6bSDavid Green case MVE_VCMULf16: 144302cd8a6bSDavid Green case MVE_VCTP16: 144402cd8a6bSDavid Green case MVE_VCVTf16s16_fix: 144502cd8a6bSDavid Green case MVE_VCVTf16s16n: 144602cd8a6bSDavid Green case MVE_VCVTf16u16_fix: 144702cd8a6bSDavid Green case MVE_VCVTf16u16n: 144802cd8a6bSDavid Green case MVE_VCVTs16f16_fix: 144902cd8a6bSDavid Green case MVE_VCVTs16f16a: 145002cd8a6bSDavid Green case MVE_VCVTs16f16m: 145102cd8a6bSDavid Green case MVE_VCVTs16f16n: 145202cd8a6bSDavid Green case MVE_VCVTs16f16p: 145302cd8a6bSDavid Green case MVE_VCVTs16f16z: 145402cd8a6bSDavid Green case MVE_VCVTu16f16_fix: 145502cd8a6bSDavid Green case MVE_VCVTu16f16a: 145602cd8a6bSDavid Green case MVE_VCVTu16f16m: 145702cd8a6bSDavid Green case MVE_VCVTu16f16n: 145802cd8a6bSDavid Green case MVE_VCVTu16f16p: 145902cd8a6bSDavid Green case MVE_VCVTu16f16z: 146002cd8a6bSDavid Green case MVE_VDDUPu16: 146102cd8a6bSDavid Green case MVE_VDUP16: 146202cd8a6bSDavid Green case MVE_VDWDUPu16: 146302cd8a6bSDavid Green case MVE_VFMA_qr_Sf16: 146402cd8a6bSDavid Green case MVE_VFMA_qr_f16: 146502cd8a6bSDavid Green case MVE_VFMAf16: 146602cd8a6bSDavid Green case MVE_VFMSf16: 146702cd8a6bSDavid Green case MVE_VHADD_qr_s16: 146802cd8a6bSDavid Green case MVE_VHADD_qr_u16: 146902cd8a6bSDavid Green case MVE_VHADDs16: 147002cd8a6bSDavid Green case MVE_VHADDu16: 147102cd8a6bSDavid Green case MVE_VHCADDs16: 147202cd8a6bSDavid Green case MVE_VHSUB_qr_s16: 147302cd8a6bSDavid Green case MVE_VHSUB_qr_u16: 147402cd8a6bSDavid Green case MVE_VHSUBs16: 147502cd8a6bSDavid Green case MVE_VHSUBu16: 147602cd8a6bSDavid Green case MVE_VIDUPu16: 147702cd8a6bSDavid Green case MVE_VIWDUPu16: 147802cd8a6bSDavid Green case MVE_VLD20_16: 147902cd8a6bSDavid Green case MVE_VLD20_16_wb: 148002cd8a6bSDavid Green case MVE_VLD21_16: 148102cd8a6bSDavid Green case MVE_VLD21_16_wb: 148202cd8a6bSDavid Green case MVE_VLD40_16: 148302cd8a6bSDavid Green case MVE_VLD40_16_wb: 148402cd8a6bSDavid Green case MVE_VLD41_16: 148502cd8a6bSDavid Green case MVE_VLD41_16_wb: 148602cd8a6bSDavid Green case MVE_VLD42_16: 148702cd8a6bSDavid Green case MVE_VLD42_16_wb: 148802cd8a6bSDavid Green case MVE_VLD43_16: 148902cd8a6bSDavid Green case MVE_VLD43_16_wb: 149002cd8a6bSDavid Green case MVE_VLDRBS16: 149102cd8a6bSDavid Green case MVE_VLDRBS16_post: 149202cd8a6bSDavid Green case MVE_VLDRBS16_pre: 149302cd8a6bSDavid Green case MVE_VLDRBS16_rq: 149402cd8a6bSDavid Green case MVE_VLDRBU16: 149502cd8a6bSDavid Green case MVE_VLDRBU16_post: 149602cd8a6bSDavid Green case MVE_VLDRBU16_pre: 149702cd8a6bSDavid Green case MVE_VLDRBU16_rq: 149802cd8a6bSDavid Green case MVE_VLDRHU16: 149902cd8a6bSDavid Green case MVE_VLDRHU16_post: 150002cd8a6bSDavid Green case MVE_VLDRHU16_pre: 150102cd8a6bSDavid Green case MVE_VLDRHU16_rq: 150202cd8a6bSDavid Green case MVE_VLDRHU16_rq_u: 150302cd8a6bSDavid Green case MVE_VMAXAVs16: 150402cd8a6bSDavid Green case MVE_VMAXAs16: 150502cd8a6bSDavid Green case MVE_VMAXNMAVf16: 150602cd8a6bSDavid Green case MVE_VMAXNMAf16: 150702cd8a6bSDavid Green case MVE_VMAXNMVf16: 150802cd8a6bSDavid Green case MVE_VMAXNMf16: 150902cd8a6bSDavid Green case MVE_VMAXVs16: 151002cd8a6bSDavid Green case MVE_VMAXVu16: 151102cd8a6bSDavid Green case MVE_VMAXs16: 151202cd8a6bSDavid Green case MVE_VMAXu16: 151302cd8a6bSDavid Green case MVE_VMINAVs16: 151402cd8a6bSDavid Green case MVE_VMINAs16: 151502cd8a6bSDavid Green case MVE_VMINNMAVf16: 151602cd8a6bSDavid Green case MVE_VMINNMAf16: 151702cd8a6bSDavid Green case MVE_VMINNMVf16: 151802cd8a6bSDavid Green case MVE_VMINNMf16: 151902cd8a6bSDavid Green case MVE_VMINVs16: 152002cd8a6bSDavid Green case MVE_VMINVu16: 152102cd8a6bSDavid Green case MVE_VMINs16: 152202cd8a6bSDavid Green case MVE_VMINu16: 152302cd8a6bSDavid Green case MVE_VMLADAVas16: 152402cd8a6bSDavid Green case MVE_VMLADAVau16: 152502cd8a6bSDavid Green case MVE_VMLADAVaxs16: 152602cd8a6bSDavid Green case MVE_VMLADAVs16: 152702cd8a6bSDavid Green case MVE_VMLADAVu16: 152802cd8a6bSDavid Green case MVE_VMLADAVxs16: 152902cd8a6bSDavid Green case MVE_VMLALDAVas16: 153002cd8a6bSDavid Green case MVE_VMLALDAVau16: 153102cd8a6bSDavid Green case MVE_VMLALDAVaxs16: 153202cd8a6bSDavid Green case MVE_VMLALDAVs16: 153302cd8a6bSDavid Green case MVE_VMLALDAVu16: 153402cd8a6bSDavid Green case MVE_VMLALDAVxs16: 1535e45cbf99SSimon Tatham case MVE_VMLAS_qr_i16: 1536e45cbf99SSimon Tatham case MVE_VMLA_qr_i16: 153702cd8a6bSDavid Green case MVE_VMLSDAVas16: 153802cd8a6bSDavid Green case MVE_VMLSDAVaxs16: 153902cd8a6bSDavid Green case MVE_VMLSDAVs16: 154002cd8a6bSDavid Green case MVE_VMLSDAVxs16: 154102cd8a6bSDavid Green case MVE_VMLSLDAVas16: 154202cd8a6bSDavid Green case MVE_VMLSLDAVaxs16: 154302cd8a6bSDavid Green case MVE_VMLSLDAVs16: 154402cd8a6bSDavid Green case MVE_VMLSLDAVxs16: 154502cd8a6bSDavid Green case MVE_VMOVNi16bh: 154602cd8a6bSDavid Green case MVE_VMOVNi16th: 154702cd8a6bSDavid Green case MVE_VMOV_from_lane_s16: 154802cd8a6bSDavid Green case MVE_VMOV_from_lane_u16: 154902cd8a6bSDavid Green case MVE_VMOV_to_lane_16: 155002cd8a6bSDavid Green case MVE_VMOVimmi16: 155102cd8a6bSDavid Green case MVE_VMOVLs8bh: 155202cd8a6bSDavid Green case MVE_VMOVLs8th: 155302cd8a6bSDavid Green case MVE_VMOVLu8bh: 155402cd8a6bSDavid Green case MVE_VMOVLu8th: 155502cd8a6bSDavid Green case MVE_VMULLBp8: 155602cd8a6bSDavid Green case MVE_VMULLBs8: 155702cd8a6bSDavid Green case MVE_VMULLBu8: 155802cd8a6bSDavid Green case MVE_VMULLTp8: 155902cd8a6bSDavid Green case MVE_VMULLTs8: 156002cd8a6bSDavid Green case MVE_VMULLTu8: 156102cd8a6bSDavid Green case MVE_VMULHs16: 156202cd8a6bSDavid Green case MVE_VMULHu16: 156302cd8a6bSDavid Green case MVE_VMUL_qr_f16: 156402cd8a6bSDavid Green case MVE_VMUL_qr_i16: 156502cd8a6bSDavid Green case MVE_VMULf16: 156602cd8a6bSDavid Green case MVE_VMULi16: 156702cd8a6bSDavid Green case MVE_VMVNimmi16: 156802cd8a6bSDavid Green case MVE_VNEGf16: 156902cd8a6bSDavid Green case MVE_VNEGs16: 157002cd8a6bSDavid Green case MVE_VORRimmi16: 157102cd8a6bSDavid Green case MVE_VPTv8f16: 157202cd8a6bSDavid Green case MVE_VPTv8f16r: 157302cd8a6bSDavid Green case MVE_VPTv8i16: 157402cd8a6bSDavid Green case MVE_VPTv8i16r: 157502cd8a6bSDavid Green case MVE_VPTv8s16: 157602cd8a6bSDavid Green case MVE_VPTv8s16r: 157702cd8a6bSDavid Green case MVE_VPTv8u16: 157802cd8a6bSDavid Green case MVE_VPTv8u16r: 157902cd8a6bSDavid Green case MVE_VQABSs16: 158002cd8a6bSDavid Green case MVE_VQADD_qr_s16: 158102cd8a6bSDavid Green case MVE_VQADD_qr_u16: 158202cd8a6bSDavid Green case MVE_VQADDs16: 158302cd8a6bSDavid Green case MVE_VQADDu16: 158402cd8a6bSDavid Green case MVE_VQDMLADHXs16: 158502cd8a6bSDavid Green case MVE_VQDMLADHs16: 158602cd8a6bSDavid Green case MVE_VQDMLAH_qrs16: 158702cd8a6bSDavid Green case MVE_VQDMLASH_qrs16: 158802cd8a6bSDavid Green case MVE_VQDMLSDHXs16: 158902cd8a6bSDavid Green case MVE_VQDMLSDHs16: 159002cd8a6bSDavid Green case MVE_VQDMULH_qr_s16: 159102cd8a6bSDavid Green case MVE_VQDMULHi16: 159202cd8a6bSDavid Green case MVE_VQDMULL_qr_s16bh: 159302cd8a6bSDavid Green case MVE_VQDMULL_qr_s16th: 159402cd8a6bSDavid Green case MVE_VQDMULLs16bh: 159502cd8a6bSDavid Green case MVE_VQDMULLs16th: 159602cd8a6bSDavid Green case MVE_VQMOVNs16bh: 159702cd8a6bSDavid Green case MVE_VQMOVNs16th: 159802cd8a6bSDavid Green case MVE_VQMOVNu16bh: 159902cd8a6bSDavid Green case MVE_VQMOVNu16th: 160002cd8a6bSDavid Green case MVE_VQMOVUNs16bh: 160102cd8a6bSDavid Green case MVE_VQMOVUNs16th: 160202cd8a6bSDavid Green case MVE_VQNEGs16: 160302cd8a6bSDavid Green case MVE_VQRDMLADHXs16: 160402cd8a6bSDavid Green case MVE_VQRDMLADHs16: 160502cd8a6bSDavid Green case MVE_VQRDMLAH_qrs16: 160602cd8a6bSDavid Green case MVE_VQRDMLASH_qrs16: 160702cd8a6bSDavid Green case MVE_VQRDMLSDHXs16: 160802cd8a6bSDavid Green case MVE_VQRDMLSDHs16: 160902cd8a6bSDavid Green case MVE_VQRDMULH_qr_s16: 161002cd8a6bSDavid Green case MVE_VQRDMULHi16: 161102cd8a6bSDavid Green case MVE_VQRSHL_by_vecs16: 161202cd8a6bSDavid Green case MVE_VQRSHL_by_vecu16: 161302cd8a6bSDavid Green case MVE_VQRSHL_qrs16: 161402cd8a6bSDavid Green case MVE_VQRSHL_qru16: 161502cd8a6bSDavid Green case MVE_VQRSHRNbhs16: 161602cd8a6bSDavid Green case MVE_VQRSHRNbhu16: 161702cd8a6bSDavid Green case MVE_VQRSHRNths16: 161802cd8a6bSDavid Green case MVE_VQRSHRNthu16: 161902cd8a6bSDavid Green case MVE_VQRSHRUNs16bh: 162002cd8a6bSDavid Green case MVE_VQRSHRUNs16th: 162102cd8a6bSDavid Green case MVE_VQSHLU_imms16: 162202cd8a6bSDavid Green case MVE_VQSHL_by_vecs16: 162302cd8a6bSDavid Green case MVE_VQSHL_by_vecu16: 162402cd8a6bSDavid Green case MVE_VQSHL_qrs16: 162502cd8a6bSDavid Green case MVE_VQSHL_qru16: 162602cd8a6bSDavid Green case MVE_VQSHLimms16: 162702cd8a6bSDavid Green case MVE_VQSHLimmu16: 162802cd8a6bSDavid Green case MVE_VQSHRNbhs16: 162902cd8a6bSDavid Green case MVE_VQSHRNbhu16: 163002cd8a6bSDavid Green case MVE_VQSHRNths16: 163102cd8a6bSDavid Green case MVE_VQSHRNthu16: 163202cd8a6bSDavid Green case MVE_VQSHRUNs16bh: 163302cd8a6bSDavid Green case MVE_VQSHRUNs16th: 163402cd8a6bSDavid Green case MVE_VQSUB_qr_s16: 163502cd8a6bSDavid Green case MVE_VQSUB_qr_u16: 163602cd8a6bSDavid Green case MVE_VQSUBs16: 163702cd8a6bSDavid Green case MVE_VQSUBu16: 163802cd8a6bSDavid Green case MVE_VREV16_8: 163902cd8a6bSDavid Green case MVE_VRHADDs16: 164002cd8a6bSDavid Green case MVE_VRHADDu16: 164102cd8a6bSDavid Green case MVE_VRINTf16A: 164202cd8a6bSDavid Green case MVE_VRINTf16M: 164302cd8a6bSDavid Green case MVE_VRINTf16N: 164402cd8a6bSDavid Green case MVE_VRINTf16P: 164502cd8a6bSDavid Green case MVE_VRINTf16X: 164602cd8a6bSDavid Green case MVE_VRINTf16Z: 164702cd8a6bSDavid Green case MVE_VRMULHs16: 164802cd8a6bSDavid Green case MVE_VRMULHu16: 164902cd8a6bSDavid Green case MVE_VRSHL_by_vecs16: 165002cd8a6bSDavid Green case MVE_VRSHL_by_vecu16: 165102cd8a6bSDavid Green case MVE_VRSHL_qrs16: 165202cd8a6bSDavid Green case MVE_VRSHL_qru16: 165302cd8a6bSDavid Green case MVE_VRSHRNi16bh: 165402cd8a6bSDavid Green case MVE_VRSHRNi16th: 165502cd8a6bSDavid Green case MVE_VRSHR_imms16: 165602cd8a6bSDavid Green case MVE_VRSHR_immu16: 165702cd8a6bSDavid Green case MVE_VSHLL_imms8bh: 165802cd8a6bSDavid Green case MVE_VSHLL_imms8th: 165902cd8a6bSDavid Green case MVE_VSHLL_immu8bh: 166002cd8a6bSDavid Green case MVE_VSHLL_immu8th: 166102cd8a6bSDavid Green case MVE_VSHLL_lws8bh: 166202cd8a6bSDavid Green case MVE_VSHLL_lws8th: 166302cd8a6bSDavid Green case MVE_VSHLL_lwu8bh: 166402cd8a6bSDavid Green case MVE_VSHLL_lwu8th: 166502cd8a6bSDavid Green case MVE_VSHL_by_vecs16: 166602cd8a6bSDavid Green case MVE_VSHL_by_vecu16: 166702cd8a6bSDavid Green case MVE_VSHL_immi16: 166802cd8a6bSDavid Green case MVE_VSHL_qrs16: 166902cd8a6bSDavid Green case MVE_VSHL_qru16: 167002cd8a6bSDavid Green case MVE_VSHRNi16bh: 167102cd8a6bSDavid Green case MVE_VSHRNi16th: 167202cd8a6bSDavid Green case MVE_VSHR_imms16: 167302cd8a6bSDavid Green case MVE_VSHR_immu16: 167402cd8a6bSDavid Green case MVE_VSLIimm16: 167502cd8a6bSDavid Green case MVE_VSRIimm16: 167602cd8a6bSDavid Green case MVE_VST20_16: 167702cd8a6bSDavid Green case MVE_VST20_16_wb: 167802cd8a6bSDavid Green case MVE_VST21_16: 167902cd8a6bSDavid Green case MVE_VST21_16_wb: 168002cd8a6bSDavid Green case MVE_VST40_16: 168102cd8a6bSDavid Green case MVE_VST40_16_wb: 168202cd8a6bSDavid Green case MVE_VST41_16: 168302cd8a6bSDavid Green case MVE_VST41_16_wb: 168402cd8a6bSDavid Green case MVE_VST42_16: 168502cd8a6bSDavid Green case MVE_VST42_16_wb: 168602cd8a6bSDavid Green case MVE_VST43_16: 168702cd8a6bSDavid Green case MVE_VST43_16_wb: 168802cd8a6bSDavid Green case MVE_VSTRB16: 168902cd8a6bSDavid Green case MVE_VSTRB16_post: 169002cd8a6bSDavid Green case MVE_VSTRB16_pre: 169102cd8a6bSDavid Green case MVE_VSTRB16_rq: 169202cd8a6bSDavid Green case MVE_VSTRH16_rq: 169302cd8a6bSDavid Green case MVE_VSTRH16_rq_u: 169402cd8a6bSDavid Green case MVE_VSTRHU16: 169502cd8a6bSDavid Green case MVE_VSTRHU16_post: 169602cd8a6bSDavid Green case MVE_VSTRHU16_pre: 169702cd8a6bSDavid Green case MVE_VSUB_qr_f16: 169802cd8a6bSDavid Green case MVE_VSUB_qr_i16: 169902cd8a6bSDavid Green case MVE_VSUBf16: 170002cd8a6bSDavid Green case MVE_VSUBi16: 170102cd8a6bSDavid Green return 1; 170202cd8a6bSDavid Green case MVE_VABAVs32: 170302cd8a6bSDavid Green case MVE_VABAVu32: 170402cd8a6bSDavid Green case MVE_VABDf32: 170502cd8a6bSDavid Green case MVE_VABDs32: 170602cd8a6bSDavid Green case MVE_VABDu32: 170702cd8a6bSDavid Green case MVE_VABSf32: 170802cd8a6bSDavid Green case MVE_VABSs32: 170902cd8a6bSDavid Green case MVE_VADC: 171002cd8a6bSDavid Green case MVE_VADCI: 171102cd8a6bSDavid Green case MVE_VADDLVs32acc: 171202cd8a6bSDavid Green case MVE_VADDLVs32no_acc: 171302cd8a6bSDavid Green case MVE_VADDLVu32acc: 171402cd8a6bSDavid Green case MVE_VADDLVu32no_acc: 171502cd8a6bSDavid Green case MVE_VADDVs32acc: 171602cd8a6bSDavid Green case MVE_VADDVs32no_acc: 171702cd8a6bSDavid Green case MVE_VADDVu32acc: 171802cd8a6bSDavid Green case MVE_VADDVu32no_acc: 171902cd8a6bSDavid Green case MVE_VADD_qr_f32: 172002cd8a6bSDavid Green case MVE_VADD_qr_i32: 172102cd8a6bSDavid Green case MVE_VADDf32: 172202cd8a6bSDavid Green case MVE_VADDi32: 172302cd8a6bSDavid Green case MVE_VBICimmi32: 172402cd8a6bSDavid Green case MVE_VBRSR32: 172502cd8a6bSDavid Green case MVE_VCADDf32: 172602cd8a6bSDavid Green case MVE_VCADDi32: 172702cd8a6bSDavid Green case MVE_VCLSs32: 172802cd8a6bSDavid Green case MVE_VCLZs32: 172902cd8a6bSDavid Green case MVE_VCMLAf32: 173002cd8a6bSDavid Green case MVE_VCMPf32: 173102cd8a6bSDavid Green case MVE_VCMPf32r: 173202cd8a6bSDavid Green case MVE_VCMPi32: 173302cd8a6bSDavid Green case MVE_VCMPi32r: 173402cd8a6bSDavid Green case MVE_VCMPs32: 173502cd8a6bSDavid Green case MVE_VCMPs32r: 173602cd8a6bSDavid Green case MVE_VCMPu32: 173702cd8a6bSDavid Green case MVE_VCMPu32r: 173802cd8a6bSDavid Green case MVE_VCMULf32: 173902cd8a6bSDavid Green case MVE_VCTP32: 174002cd8a6bSDavid Green case MVE_VCVTf16f32bh: 174102cd8a6bSDavid Green case MVE_VCVTf16f32th: 174202cd8a6bSDavid Green case MVE_VCVTf32f16bh: 174302cd8a6bSDavid Green case MVE_VCVTf32f16th: 174402cd8a6bSDavid Green case MVE_VCVTf32s32_fix: 174502cd8a6bSDavid Green case MVE_VCVTf32s32n: 174602cd8a6bSDavid Green case MVE_VCVTf32u32_fix: 174702cd8a6bSDavid Green case MVE_VCVTf32u32n: 174802cd8a6bSDavid Green case MVE_VCVTs32f32_fix: 174902cd8a6bSDavid Green case MVE_VCVTs32f32a: 175002cd8a6bSDavid Green case MVE_VCVTs32f32m: 175102cd8a6bSDavid Green case MVE_VCVTs32f32n: 175202cd8a6bSDavid Green case MVE_VCVTs32f32p: 175302cd8a6bSDavid Green case MVE_VCVTs32f32z: 175402cd8a6bSDavid Green case MVE_VCVTu32f32_fix: 175502cd8a6bSDavid Green case MVE_VCVTu32f32a: 175602cd8a6bSDavid Green case MVE_VCVTu32f32m: 175702cd8a6bSDavid Green case MVE_VCVTu32f32n: 175802cd8a6bSDavid Green case MVE_VCVTu32f32p: 175902cd8a6bSDavid Green case MVE_VCVTu32f32z: 176002cd8a6bSDavid Green case MVE_VDDUPu32: 176102cd8a6bSDavid Green case MVE_VDUP32: 176202cd8a6bSDavid Green case MVE_VDWDUPu32: 176302cd8a6bSDavid Green case MVE_VFMA_qr_Sf32: 176402cd8a6bSDavid Green case MVE_VFMA_qr_f32: 176502cd8a6bSDavid Green case MVE_VFMAf32: 176602cd8a6bSDavid Green case MVE_VFMSf32: 176702cd8a6bSDavid Green case MVE_VHADD_qr_s32: 176802cd8a6bSDavid Green case MVE_VHADD_qr_u32: 176902cd8a6bSDavid Green case MVE_VHADDs32: 177002cd8a6bSDavid Green case MVE_VHADDu32: 177102cd8a6bSDavid Green case MVE_VHCADDs32: 177202cd8a6bSDavid Green case MVE_VHSUB_qr_s32: 177302cd8a6bSDavid Green case MVE_VHSUB_qr_u32: 177402cd8a6bSDavid Green case MVE_VHSUBs32: 177502cd8a6bSDavid Green case MVE_VHSUBu32: 177602cd8a6bSDavid Green case MVE_VIDUPu32: 177702cd8a6bSDavid Green case MVE_VIWDUPu32: 177802cd8a6bSDavid Green case MVE_VLD20_32: 177902cd8a6bSDavid Green case MVE_VLD20_32_wb: 178002cd8a6bSDavid Green case MVE_VLD21_32: 178102cd8a6bSDavid Green case MVE_VLD21_32_wb: 178202cd8a6bSDavid Green case MVE_VLD40_32: 178302cd8a6bSDavid Green case MVE_VLD40_32_wb: 178402cd8a6bSDavid Green case MVE_VLD41_32: 178502cd8a6bSDavid Green case MVE_VLD41_32_wb: 178602cd8a6bSDavid Green case MVE_VLD42_32: 178702cd8a6bSDavid Green case MVE_VLD42_32_wb: 178802cd8a6bSDavid Green case MVE_VLD43_32: 178902cd8a6bSDavid Green case MVE_VLD43_32_wb: 179002cd8a6bSDavid Green case MVE_VLDRBS32: 179102cd8a6bSDavid Green case MVE_VLDRBS32_post: 179202cd8a6bSDavid Green case MVE_VLDRBS32_pre: 179302cd8a6bSDavid Green case MVE_VLDRBS32_rq: 179402cd8a6bSDavid Green case MVE_VLDRBU32: 179502cd8a6bSDavid Green case MVE_VLDRBU32_post: 179602cd8a6bSDavid Green case MVE_VLDRBU32_pre: 179702cd8a6bSDavid Green case MVE_VLDRBU32_rq: 179802cd8a6bSDavid Green case MVE_VLDRHS32: 179902cd8a6bSDavid Green case MVE_VLDRHS32_post: 180002cd8a6bSDavid Green case MVE_VLDRHS32_pre: 180102cd8a6bSDavid Green case MVE_VLDRHS32_rq: 180202cd8a6bSDavid Green case MVE_VLDRHS32_rq_u: 180302cd8a6bSDavid Green case MVE_VLDRHU32: 180402cd8a6bSDavid Green case MVE_VLDRHU32_post: 180502cd8a6bSDavid Green case MVE_VLDRHU32_pre: 180602cd8a6bSDavid Green case MVE_VLDRHU32_rq: 180702cd8a6bSDavid Green case MVE_VLDRHU32_rq_u: 180802cd8a6bSDavid Green case MVE_VLDRWU32: 180902cd8a6bSDavid Green case MVE_VLDRWU32_post: 181002cd8a6bSDavid Green case MVE_VLDRWU32_pre: 181102cd8a6bSDavid Green case MVE_VLDRWU32_qi: 181202cd8a6bSDavid Green case MVE_VLDRWU32_qi_pre: 181302cd8a6bSDavid Green case MVE_VLDRWU32_rq: 181402cd8a6bSDavid Green case MVE_VLDRWU32_rq_u: 181502cd8a6bSDavid Green case MVE_VMAXAVs32: 181602cd8a6bSDavid Green case MVE_VMAXAs32: 181702cd8a6bSDavid Green case MVE_VMAXNMAVf32: 181802cd8a6bSDavid Green case MVE_VMAXNMAf32: 181902cd8a6bSDavid Green case MVE_VMAXNMVf32: 182002cd8a6bSDavid Green case MVE_VMAXNMf32: 182102cd8a6bSDavid Green case MVE_VMAXVs32: 182202cd8a6bSDavid Green case MVE_VMAXVu32: 182302cd8a6bSDavid Green case MVE_VMAXs32: 182402cd8a6bSDavid Green case MVE_VMAXu32: 182502cd8a6bSDavid Green case MVE_VMINAVs32: 182602cd8a6bSDavid Green case MVE_VMINAs32: 182702cd8a6bSDavid Green case MVE_VMINNMAVf32: 182802cd8a6bSDavid Green case MVE_VMINNMAf32: 182902cd8a6bSDavid Green case MVE_VMINNMVf32: 183002cd8a6bSDavid Green case MVE_VMINNMf32: 183102cd8a6bSDavid Green case MVE_VMINVs32: 183202cd8a6bSDavid Green case MVE_VMINVu32: 183302cd8a6bSDavid Green case MVE_VMINs32: 183402cd8a6bSDavid Green case MVE_VMINu32: 183502cd8a6bSDavid Green case MVE_VMLADAVas32: 183602cd8a6bSDavid Green case MVE_VMLADAVau32: 183702cd8a6bSDavid Green case MVE_VMLADAVaxs32: 183802cd8a6bSDavid Green case MVE_VMLADAVs32: 183902cd8a6bSDavid Green case MVE_VMLADAVu32: 184002cd8a6bSDavid Green case MVE_VMLADAVxs32: 184102cd8a6bSDavid Green case MVE_VMLALDAVas32: 184202cd8a6bSDavid Green case MVE_VMLALDAVau32: 184302cd8a6bSDavid Green case MVE_VMLALDAVaxs32: 184402cd8a6bSDavid Green case MVE_VMLALDAVs32: 184502cd8a6bSDavid Green case MVE_VMLALDAVu32: 184602cd8a6bSDavid Green case MVE_VMLALDAVxs32: 1847e45cbf99SSimon Tatham case MVE_VMLAS_qr_i32: 1848e45cbf99SSimon Tatham case MVE_VMLA_qr_i32: 184902cd8a6bSDavid Green case MVE_VMLSDAVas32: 185002cd8a6bSDavid Green case MVE_VMLSDAVaxs32: 185102cd8a6bSDavid Green case MVE_VMLSDAVs32: 185202cd8a6bSDavid Green case MVE_VMLSDAVxs32: 185302cd8a6bSDavid Green case MVE_VMLSLDAVas32: 185402cd8a6bSDavid Green case MVE_VMLSLDAVaxs32: 185502cd8a6bSDavid Green case MVE_VMLSLDAVs32: 185602cd8a6bSDavid Green case MVE_VMLSLDAVxs32: 185702cd8a6bSDavid Green case MVE_VMOVNi32bh: 185802cd8a6bSDavid Green case MVE_VMOVNi32th: 185902cd8a6bSDavid Green case MVE_VMOV_from_lane_32: 186002cd8a6bSDavid Green case MVE_VMOV_q_rr: 186102cd8a6bSDavid Green case MVE_VMOV_rr_q: 186202cd8a6bSDavid Green case MVE_VMOV_to_lane_32: 186302cd8a6bSDavid Green case MVE_VMOVimmf32: 186402cd8a6bSDavid Green case MVE_VMOVimmi32: 186502cd8a6bSDavid Green case MVE_VMOVLs16bh: 186602cd8a6bSDavid Green case MVE_VMOVLs16th: 186702cd8a6bSDavid Green case MVE_VMOVLu16bh: 186802cd8a6bSDavid Green case MVE_VMOVLu16th: 186902cd8a6bSDavid Green case MVE_VMULHs32: 187002cd8a6bSDavid Green case MVE_VMULHu32: 187102cd8a6bSDavid Green case MVE_VMULLBp16: 187202cd8a6bSDavid Green case MVE_VMULLBs16: 187302cd8a6bSDavid Green case MVE_VMULLBu16: 187402cd8a6bSDavid Green case MVE_VMULLTp16: 187502cd8a6bSDavid Green case MVE_VMULLTs16: 187602cd8a6bSDavid Green case MVE_VMULLTu16: 187702cd8a6bSDavid Green case MVE_VMUL_qr_f32: 187802cd8a6bSDavid Green case MVE_VMUL_qr_i32: 187902cd8a6bSDavid Green case MVE_VMULf32: 188002cd8a6bSDavid Green case MVE_VMULi32: 188102cd8a6bSDavid Green case MVE_VMVNimmi32: 188202cd8a6bSDavid Green case MVE_VNEGf32: 188302cd8a6bSDavid Green case MVE_VNEGs32: 188402cd8a6bSDavid Green case MVE_VORRimmi32: 188502cd8a6bSDavid Green case MVE_VPTv4f32: 188602cd8a6bSDavid Green case MVE_VPTv4f32r: 188702cd8a6bSDavid Green case MVE_VPTv4i32: 188802cd8a6bSDavid Green case MVE_VPTv4i32r: 188902cd8a6bSDavid Green case MVE_VPTv4s32: 189002cd8a6bSDavid Green case MVE_VPTv4s32r: 189102cd8a6bSDavid Green case MVE_VPTv4u32: 189202cd8a6bSDavid Green case MVE_VPTv4u32r: 189302cd8a6bSDavid Green case MVE_VQABSs32: 189402cd8a6bSDavid Green case MVE_VQADD_qr_s32: 189502cd8a6bSDavid Green case MVE_VQADD_qr_u32: 189602cd8a6bSDavid Green case MVE_VQADDs32: 189702cd8a6bSDavid Green case MVE_VQADDu32: 189802cd8a6bSDavid Green case MVE_VQDMLADHXs32: 189902cd8a6bSDavid Green case MVE_VQDMLADHs32: 190002cd8a6bSDavid Green case MVE_VQDMLAH_qrs32: 190102cd8a6bSDavid Green case MVE_VQDMLASH_qrs32: 190202cd8a6bSDavid Green case MVE_VQDMLSDHXs32: 190302cd8a6bSDavid Green case MVE_VQDMLSDHs32: 190402cd8a6bSDavid Green case MVE_VQDMULH_qr_s32: 190502cd8a6bSDavid Green case MVE_VQDMULHi32: 190602cd8a6bSDavid Green case MVE_VQDMULL_qr_s32bh: 190702cd8a6bSDavid Green case MVE_VQDMULL_qr_s32th: 190802cd8a6bSDavid Green case MVE_VQDMULLs32bh: 190902cd8a6bSDavid Green case MVE_VQDMULLs32th: 191002cd8a6bSDavid Green case MVE_VQMOVNs32bh: 191102cd8a6bSDavid Green case MVE_VQMOVNs32th: 191202cd8a6bSDavid Green case MVE_VQMOVNu32bh: 191302cd8a6bSDavid Green case MVE_VQMOVNu32th: 191402cd8a6bSDavid Green case MVE_VQMOVUNs32bh: 191502cd8a6bSDavid Green case MVE_VQMOVUNs32th: 191602cd8a6bSDavid Green case MVE_VQNEGs32: 191702cd8a6bSDavid Green case MVE_VQRDMLADHXs32: 191802cd8a6bSDavid Green case MVE_VQRDMLADHs32: 191902cd8a6bSDavid Green case MVE_VQRDMLAH_qrs32: 192002cd8a6bSDavid Green case MVE_VQRDMLASH_qrs32: 192102cd8a6bSDavid Green case MVE_VQRDMLSDHXs32: 192202cd8a6bSDavid Green case MVE_VQRDMLSDHs32: 192302cd8a6bSDavid Green case MVE_VQRDMULH_qr_s32: 192402cd8a6bSDavid Green case MVE_VQRDMULHi32: 192502cd8a6bSDavid Green case MVE_VQRSHL_by_vecs32: 192602cd8a6bSDavid Green case MVE_VQRSHL_by_vecu32: 192702cd8a6bSDavid Green case MVE_VQRSHL_qrs32: 192802cd8a6bSDavid Green case MVE_VQRSHL_qru32: 192902cd8a6bSDavid Green case MVE_VQRSHRNbhs32: 193002cd8a6bSDavid Green case MVE_VQRSHRNbhu32: 193102cd8a6bSDavid Green case MVE_VQRSHRNths32: 193202cd8a6bSDavid Green case MVE_VQRSHRNthu32: 193302cd8a6bSDavid Green case MVE_VQRSHRUNs32bh: 193402cd8a6bSDavid Green case MVE_VQRSHRUNs32th: 193502cd8a6bSDavid Green case MVE_VQSHLU_imms32: 193602cd8a6bSDavid Green case MVE_VQSHL_by_vecs32: 193702cd8a6bSDavid Green case MVE_VQSHL_by_vecu32: 193802cd8a6bSDavid Green case MVE_VQSHL_qrs32: 193902cd8a6bSDavid Green case MVE_VQSHL_qru32: 194002cd8a6bSDavid Green case MVE_VQSHLimms32: 194102cd8a6bSDavid Green case MVE_VQSHLimmu32: 194202cd8a6bSDavid Green case MVE_VQSHRNbhs32: 194302cd8a6bSDavid Green case MVE_VQSHRNbhu32: 194402cd8a6bSDavid Green case MVE_VQSHRNths32: 194502cd8a6bSDavid Green case MVE_VQSHRNthu32: 194602cd8a6bSDavid Green case MVE_VQSHRUNs32bh: 194702cd8a6bSDavid Green case MVE_VQSHRUNs32th: 194802cd8a6bSDavid Green case MVE_VQSUB_qr_s32: 194902cd8a6bSDavid Green case MVE_VQSUB_qr_u32: 195002cd8a6bSDavid Green case MVE_VQSUBs32: 195102cd8a6bSDavid Green case MVE_VQSUBu32: 195202cd8a6bSDavid Green case MVE_VREV32_16: 195302cd8a6bSDavid Green case MVE_VREV32_8: 195402cd8a6bSDavid Green case MVE_VRHADDs32: 195502cd8a6bSDavid Green case MVE_VRHADDu32: 195602cd8a6bSDavid Green case MVE_VRINTf32A: 195702cd8a6bSDavid Green case MVE_VRINTf32M: 195802cd8a6bSDavid Green case MVE_VRINTf32N: 195902cd8a6bSDavid Green case MVE_VRINTf32P: 196002cd8a6bSDavid Green case MVE_VRINTf32X: 196102cd8a6bSDavid Green case MVE_VRINTf32Z: 196202cd8a6bSDavid Green case MVE_VRMLALDAVHas32: 196302cd8a6bSDavid Green case MVE_VRMLALDAVHau32: 196402cd8a6bSDavid Green case MVE_VRMLALDAVHaxs32: 196502cd8a6bSDavid Green case MVE_VRMLALDAVHs32: 196602cd8a6bSDavid Green case MVE_VRMLALDAVHu32: 196702cd8a6bSDavid Green case MVE_VRMLALDAVHxs32: 196802cd8a6bSDavid Green case MVE_VRMLSLDAVHas32: 196902cd8a6bSDavid Green case MVE_VRMLSLDAVHaxs32: 197002cd8a6bSDavid Green case MVE_VRMLSLDAVHs32: 197102cd8a6bSDavid Green case MVE_VRMLSLDAVHxs32: 197202cd8a6bSDavid Green case MVE_VRMULHs32: 197302cd8a6bSDavid Green case MVE_VRMULHu32: 197402cd8a6bSDavid Green case MVE_VRSHL_by_vecs32: 197502cd8a6bSDavid Green case MVE_VRSHL_by_vecu32: 197602cd8a6bSDavid Green case MVE_VRSHL_qrs32: 197702cd8a6bSDavid Green case MVE_VRSHL_qru32: 197802cd8a6bSDavid Green case MVE_VRSHRNi32bh: 197902cd8a6bSDavid Green case MVE_VRSHRNi32th: 198002cd8a6bSDavid Green case MVE_VRSHR_imms32: 198102cd8a6bSDavid Green case MVE_VRSHR_immu32: 198202cd8a6bSDavid Green case MVE_VSBC: 198302cd8a6bSDavid Green case MVE_VSBCI: 198402cd8a6bSDavid Green case MVE_VSHLC: 198502cd8a6bSDavid Green case MVE_VSHLL_imms16bh: 198602cd8a6bSDavid Green case MVE_VSHLL_imms16th: 198702cd8a6bSDavid Green case MVE_VSHLL_immu16bh: 198802cd8a6bSDavid Green case MVE_VSHLL_immu16th: 198902cd8a6bSDavid Green case MVE_VSHLL_lws16bh: 199002cd8a6bSDavid Green case MVE_VSHLL_lws16th: 199102cd8a6bSDavid Green case MVE_VSHLL_lwu16bh: 199202cd8a6bSDavid Green case MVE_VSHLL_lwu16th: 199302cd8a6bSDavid Green case MVE_VSHL_by_vecs32: 199402cd8a6bSDavid Green case MVE_VSHL_by_vecu32: 199502cd8a6bSDavid Green case MVE_VSHL_immi32: 199602cd8a6bSDavid Green case MVE_VSHL_qrs32: 199702cd8a6bSDavid Green case MVE_VSHL_qru32: 199802cd8a6bSDavid Green case MVE_VSHRNi32bh: 199902cd8a6bSDavid Green case MVE_VSHRNi32th: 200002cd8a6bSDavid Green case MVE_VSHR_imms32: 200102cd8a6bSDavid Green case MVE_VSHR_immu32: 200202cd8a6bSDavid Green case MVE_VSLIimm32: 200302cd8a6bSDavid Green case MVE_VSRIimm32: 200402cd8a6bSDavid Green case MVE_VST20_32: 200502cd8a6bSDavid Green case MVE_VST20_32_wb: 200602cd8a6bSDavid Green case MVE_VST21_32: 200702cd8a6bSDavid Green case MVE_VST21_32_wb: 200802cd8a6bSDavid Green case MVE_VST40_32: 200902cd8a6bSDavid Green case MVE_VST40_32_wb: 201002cd8a6bSDavid Green case MVE_VST41_32: 201102cd8a6bSDavid Green case MVE_VST41_32_wb: 201202cd8a6bSDavid Green case MVE_VST42_32: 201302cd8a6bSDavid Green case MVE_VST42_32_wb: 201402cd8a6bSDavid Green case MVE_VST43_32: 201502cd8a6bSDavid Green case MVE_VST43_32_wb: 201602cd8a6bSDavid Green case MVE_VSTRB32: 201702cd8a6bSDavid Green case MVE_VSTRB32_post: 201802cd8a6bSDavid Green case MVE_VSTRB32_pre: 201902cd8a6bSDavid Green case MVE_VSTRB32_rq: 202002cd8a6bSDavid Green case MVE_VSTRH32: 202102cd8a6bSDavid Green case MVE_VSTRH32_post: 202202cd8a6bSDavid Green case MVE_VSTRH32_pre: 202302cd8a6bSDavid Green case MVE_VSTRH32_rq: 202402cd8a6bSDavid Green case MVE_VSTRH32_rq_u: 202502cd8a6bSDavid Green case MVE_VSTRW32_qi: 202602cd8a6bSDavid Green case MVE_VSTRW32_qi_pre: 202702cd8a6bSDavid Green case MVE_VSTRW32_rq: 202802cd8a6bSDavid Green case MVE_VSTRW32_rq_u: 202902cd8a6bSDavid Green case MVE_VSTRWU32: 203002cd8a6bSDavid Green case MVE_VSTRWU32_post: 203102cd8a6bSDavid Green case MVE_VSTRWU32_pre: 203202cd8a6bSDavid Green case MVE_VSUB_qr_f32: 203302cd8a6bSDavid Green case MVE_VSUB_qr_i32: 203402cd8a6bSDavid Green case MVE_VSUBf32: 203502cd8a6bSDavid Green case MVE_VSUBi32: 203602cd8a6bSDavid Green return 2; 203702cd8a6bSDavid Green case MVE_VCTP64: 203802cd8a6bSDavid Green case MVE_VLDRDU64_qi: 203902cd8a6bSDavid Green case MVE_VLDRDU64_qi_pre: 204002cd8a6bSDavid Green case MVE_VLDRDU64_rq: 204102cd8a6bSDavid Green case MVE_VLDRDU64_rq_u: 204202cd8a6bSDavid Green case MVE_VMULLBs32: 204302cd8a6bSDavid Green case MVE_VMULLBu32: 204402cd8a6bSDavid Green case MVE_VMULLTs32: 204502cd8a6bSDavid Green case MVE_VMULLTu32: 204602cd8a6bSDavid Green case MVE_VMOVimmi64: 204702cd8a6bSDavid Green case MVE_VREV64_16: 204802cd8a6bSDavid Green case MVE_VREV64_32: 204902cd8a6bSDavid Green case MVE_VREV64_8: 205002cd8a6bSDavid Green case MVE_VSTRD64_qi: 205102cd8a6bSDavid Green case MVE_VSTRD64_qi_pre: 205202cd8a6bSDavid Green case MVE_VSTRD64_rq: 205302cd8a6bSDavid Green case MVE_VSTRD64_rq_u: 205402cd8a6bSDavid Green return 3; 205502cd8a6bSDavid Green } 205602cd8a6bSDavid Green }; 205702cd8a6bSDavid Green LLVMInitializeARMTargetInfo(); 205802cd8a6bSDavid Green LLVMInitializeARMTarget(); 205902cd8a6bSDavid Green LLVMInitializeARMTargetMC(); 206002cd8a6bSDavid Green 206102cd8a6bSDavid Green auto TT(Triple::normalize("thumbv8.1m.main-none-none-eabi")); 206202cd8a6bSDavid Green std::string Error; 206302cd8a6bSDavid Green const Target *T = TargetRegistry::lookupTarget(TT, Error); 206402cd8a6bSDavid Green if (!T) { 206502cd8a6bSDavid Green dbgs() << Error; 20667fc87159SPaul Robinson GTEST_SKIP(); 206702cd8a6bSDavid Green } 206802cd8a6bSDavid Green 206902cd8a6bSDavid Green TargetOptions Options; 2070*bb3f5e1fSMatin Raayai auto TM = std::unique_ptr<TargetMachine>( 2071b6a01caaSKazu Hirata T->createTargetMachine(TT, "generic", "", Options, std::nullopt, 2072*bb3f5e1fSMatin Raayai std::nullopt, CodeGenOptLevel::Default)); 207302cd8a6bSDavid Green ARMSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()), 207402cd8a6bSDavid Green std::string(TM->getTargetFeatureString()), 207502cd8a6bSDavid Green *static_cast<const ARMBaseTargetMachine *>(TM.get()), false); 207602cd8a6bSDavid Green 207702cd8a6bSDavid Green auto MII = TM->getMCInstrInfo(); 207802cd8a6bSDavid Green for (unsigned i = 0; i < ARM::INSTRUCTION_LIST_END; ++i) { 207902cd8a6bSDavid Green uint64_t Flags = MII->get(i).TSFlags; 208002cd8a6bSDavid Green if ((Flags & ARMII::DomainMask) != ARMII::DomainMVE) 208102cd8a6bSDavid Green continue; 208202cd8a6bSDavid Green int Size = (Flags & ARMII::VecSize) >> ARMII::VecSizeShift; 208302cd8a6bSDavid Green ASSERT_EQ(MVEVecSize(i), Size) 208402cd8a6bSDavid Green << MII->getName(i) 208502cd8a6bSDavid Green << ": mismatched expectation for MVE vec size\n"; 208602cd8a6bSDavid Green } 208702cd8a6bSDavid Green } 2088