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