Lines Matching defs:instr
116 void CPUFeaturesAuditor::LoadStoreHelper(const Instruction* instr) {
118 switch (instr->Mask(LoadStoreMask)) {
139 void CPUFeaturesAuditor::LoadStorePairHelper(const Instruction* instr) {
141 switch (instr->Mask(LoadStorePairMask)) {
159 void CPUFeaturesAuditor::VisitAddSubExtended(const Instruction* instr) {
161 USE(instr);
164 void CPUFeaturesAuditor::VisitAddSubImmediate(const Instruction* instr) {
166 USE(instr);
169 void CPUFeaturesAuditor::VisitAddSubShifted(const Instruction* instr) {
171 USE(instr);
174 void CPUFeaturesAuditor::VisitAddSubWithCarry(const Instruction* instr) {
176 USE(instr);
179 void CPUFeaturesAuditor::VisitRotateRightIntoFlags(const Instruction* instr) {
181 switch (instr->Mask(RotateRightIntoFlagsMask)) {
188 void CPUFeaturesAuditor::VisitEvaluateIntoFlags(const Instruction* instr) {
190 switch (instr->Mask(EvaluateIntoFlagsMask)) {
198 void CPUFeaturesAuditor::VisitAtomicMemory(const Instruction* instr) {
200 switch (instr->Mask(AtomicMemoryMask)) {
214 void CPUFeaturesAuditor::VisitBitfield(const Instruction* instr) {
216 USE(instr);
219 void CPUFeaturesAuditor::VisitCompareBranch(const Instruction* instr) {
221 USE(instr);
224 void CPUFeaturesAuditor::VisitConditionalBranch(const Instruction* instr) {
226 USE(instr);
230 const Instruction* instr) {
232 USE(instr);
236 const Instruction* instr) {
238 USE(instr);
241 void CPUFeaturesAuditor::VisitConditionalSelect(const Instruction* instr) {
243 USE(instr);
246 void CPUFeaturesAuditor::VisitCrypto2RegSHA(const Instruction* instr) {
248 USE(instr);
251 void CPUFeaturesAuditor::VisitCrypto3RegSHA(const Instruction* instr) {
253 USE(instr);
256 void CPUFeaturesAuditor::VisitCryptoAES(const Instruction* instr) {
258 USE(instr);
261 void CPUFeaturesAuditor::VisitDataProcessing1Source(const Instruction* instr) {
263 switch (instr->Mask(DataProcessing1SourceMask)) {
290 void CPUFeaturesAuditor::VisitDataProcessing2Source(const Instruction* instr) {
292 switch (instr->Mask(DataProcessing2SourceMask)) {
313 const Instruction* instr) {
315 switch (instr->Mask(LoadStoreRCpcUnscaledOffsetMask)) {
337 void CPUFeaturesAuditor::VisitLoadStorePAC(const Instruction* instr) {
339 USE(instr);
343 void CPUFeaturesAuditor::VisitDataProcessing3Source(const Instruction* instr) {
345 USE(instr);
348 void CPUFeaturesAuditor::VisitException(const Instruction* instr) {
350 USE(instr);
353 void CPUFeaturesAuditor::VisitExtract(const Instruction* instr) {
355 USE(instr);
358 void CPUFeaturesAuditor::VisitFPCompare(const Instruction* instr) {
362 switch (instr->Mask(FPCompareMask)) {
375 void CPUFeaturesAuditor::VisitFPConditionalCompare(const Instruction* instr) {
379 switch (instr->Mask(FPConditionalCompareMask)) {
390 void CPUFeaturesAuditor::VisitFPConditionalSelect(const Instruction* instr) {
394 if (instr->Mask(FPConditionalSelectMask) == FCSEL_h) {
400 const Instruction* instr) {
404 switch (instr->Mask(FPDataProcessing1SourceMask)) {
437 const Instruction* instr) {
441 switch (instr->Mask(FPDataProcessing2SourceMask)) {
460 const Instruction* instr) {
464 switch (instr->Mask(FPDataProcessing3SourceMask)) {
477 void CPUFeaturesAuditor::VisitFPFixedPointConvert(const Instruction* instr) {
481 switch (instr->Mask(FPFixedPointConvertMask)) {
498 void CPUFeaturesAuditor::VisitFPImmediate(const Instruction* instr) {
502 if (instr->Mask(FPImmediateMask) == FMOV_h_imm) {
507 void CPUFeaturesAuditor::VisitFPIntegerConvert(const Instruction* instr) {
509 switch (instr->Mask(FPIntegerConvertMask)) {
559 void CPUFeaturesAuditor::VisitLoadLiteral(const Instruction* instr) {
561 switch (instr->Mask(LoadLiteralMask)) {
575 void CPUFeaturesAuditor::VisitLoadStoreExclusive(const Instruction* instr) {
577 switch (instr->Mask(LoadStoreExclusiveMask)) {
621 const Instruction* instr) {
622 LoadStorePairHelper(instr);
625 void CPUFeaturesAuditor::VisitLoadStorePairOffset(const Instruction* instr) {
626 LoadStorePairHelper(instr);
629 void CPUFeaturesAuditor::VisitLoadStorePairPostIndex(const Instruction* instr) {
630 LoadStorePairHelper(instr);
633 void CPUFeaturesAuditor::VisitLoadStorePairPreIndex(const Instruction* instr) {
634 LoadStorePairHelper(instr);
637 void CPUFeaturesAuditor::VisitLoadStorePostIndex(const Instruction* instr) {
638 LoadStoreHelper(instr);
641 void CPUFeaturesAuditor::VisitLoadStorePreIndex(const Instruction* instr) {
642 LoadStoreHelper(instr);
646 const Instruction* instr) {
647 LoadStoreHelper(instr);
651 const Instruction* instr) {
652 LoadStoreHelper(instr);
656 const Instruction* instr) {
657 LoadStoreHelper(instr);
660 void CPUFeaturesAuditor::VisitLogicalImmediate(const Instruction* instr) {
662 USE(instr);
665 void CPUFeaturesAuditor::VisitLogicalShifted(const Instruction* instr) {
667 USE(instr);
670 void CPUFeaturesAuditor::VisitMoveWideImmediate(const Instruction* instr) {
672 USE(instr);
675 void CPUFeaturesAuditor::VisitNEON2RegMisc(const Instruction* instr) {
679 switch (instr->Mask(NEON2RegMiscFPMask)) {
726 void CPUFeaturesAuditor::VisitNEON2RegMiscFP16(const Instruction* instr) {
730 USE(instr);
733 void CPUFeaturesAuditor::VisitNEON3Different(const Instruction* instr) {
737 USE(instr);
740 void CPUFeaturesAuditor::VisitNEON3Same(const Instruction* instr) {
744 if (instr->Mask(NEON3SameFPFMask) == NEON3SameFPFixed) {
747 switch (instr->Mask(NEON3SameFHMMask)) {
760 void CPUFeaturesAuditor::VisitNEON3SameExtra(const Instruction* instr) {
764 if ((instr->Mask(NEON3SameExtraFCMLAMask) == NEON_FCMLA) ||
765 (instr->Mask(NEON3SameExtraFCADDMask) == NEON_FCADD)) {
767 if (instr->GetNEONSize() == 1) scope.Record(CPUFeatures::kNEONHalf);
769 switch (instr->Mask(NEON3SameExtraMask)) {
785 void CPUFeaturesAuditor::VisitNEON3SameFP16(const Instruction* instr) {
789 USE(instr);
792 void CPUFeaturesAuditor::VisitNEONAcrossLanes(const Instruction* instr) {
796 if (instr->Mask(NEONAcrossLanesFP16FMask) == NEONAcrossLanesFP16Fixed) {
799 } else if (instr->Mask(NEONAcrossLanesFPFMask) == NEONAcrossLanesFPFixed) {
805 void CPUFeaturesAuditor::VisitNEONByIndexedElement(const Instruction* instr) {
809 switch (instr->Mask(NEONByIndexedElementMask)) {
822 switch (instr->Mask(NEONByIndexedElementFPLongMask)) {
833 switch (instr->Mask(NEONByIndexedElementFPMask)) {
847 switch (instr->Mask(NEONByIndexedElementFPComplexMask)) {
850 if (instr->GetNEONSize() == 1) scope.Record(CPUFeatures::kNEONHalf);
858 void CPUFeaturesAuditor::VisitNEONCopy(const Instruction* instr) {
862 USE(instr);
865 void CPUFeaturesAuditor::VisitNEONExtract(const Instruction* instr) {
869 USE(instr);
873 const Instruction* instr) {
877 USE(instr);
881 const Instruction* instr) {
885 USE(instr);
889 const Instruction* instr) {
893 USE(instr);
897 const Instruction* instr) {
901 USE(instr);
904 void CPUFeaturesAuditor::VisitNEONModifiedImmediate(const Instruction* instr) {
908 if (instr->GetNEONCmode() == 0xf) {
911 if (instr->ExtractBit(11)) scope.Record(CPUFeatures::kNEONHalf);
915 void CPUFeaturesAuditor::VisitNEONPerm(const Instruction* instr) {
919 USE(instr);
922 void CPUFeaturesAuditor::VisitNEONScalar2RegMisc(const Instruction* instr) {
926 switch (instr->Mask(NEONScalar2RegMiscFPMask)) {
956 void CPUFeaturesAuditor::VisitNEONScalar2RegMiscFP16(const Instruction* instr) {
960 USE(instr);
963 void CPUFeaturesAuditor::VisitNEONScalar3Diff(const Instruction* instr) {
967 USE(instr);
970 void CPUFeaturesAuditor::VisitNEONScalar3Same(const Instruction* instr) {
974 if (instr->Mask(NEONScalar3SameFPFMask) == NEONScalar3SameFPFixed) {
979 void CPUFeaturesAuditor::VisitNEONScalar3SameExtra(const Instruction* instr) {
983 USE(instr);
986 void CPUFeaturesAuditor::VisitNEONScalar3SameFP16(const Instruction* instr) {
990 USE(instr);
994 const Instruction* instr) {
998 switch (instr->Mask(NEONScalarByIndexedElementMask)) {
1004 switch (instr->Mask(NEONScalarByIndexedElementFPMask)) {
1023 void CPUFeaturesAuditor::VisitNEONScalarCopy(const Instruction* instr) {
1027 USE(instr);
1030 void CPUFeaturesAuditor::VisitNEONScalarPairwise(const Instruction* instr) {
1034 switch (instr->Mask(NEONScalarPairwiseMask)) {
1056 const Instruction* instr) {
1060 switch (instr->Mask(NEONScalarShiftImmediateMask)) {
1067 if ((instr->GetImmNEONImmh() & 0xe) == 0x2) {
1077 void CPUFeaturesAuditor::VisitNEONShiftImmediate(const Instruction* instr) {
1081 switch (instr->Mask(NEONShiftImmediateMask)) {
1088 if ((instr->GetImmNEONImmh() & 0xe) == 0x2) {
1098 void CPUFeaturesAuditor::VisitNEONTable(const Instruction* instr) {
1102 USE(instr);
1105 void CPUFeaturesAuditor::VisitPCRelAddressing(const Instruction* instr) {
1107 USE(instr);
1260 void CPUFeaturesAuditor::Visit##NAME(const Instruction* instr) { \
1263 USE(instr); \
1269 void CPUFeaturesAuditor::VisitSystem(const Instruction* instr) {
1271 if (instr->Mask(SystemHintFMask) == SystemHintFixed) {
1273 switch (instr->GetInstructionBits()) {
1290 switch (instr->GetImmHint()) {
1310 } else if (instr->Mask(SystemSysMask) == SYS) {
1311 switch (instr->GetSysOp()) {
1337 } else if (instr->Mask(SystemPStateFMask) == SystemPStateFixed) {
1338 switch (instr->Mask(SystemPStateMask)) {
1347 } else if (instr->Mask(SystemSysRegFMask) == SystemSysRegFixed) {
1348 if (instr->Mask(SystemSysRegMask) == MRS) {
1349 switch (instr->GetImmSystemRegister()) {
1359 void CPUFeaturesAuditor::VisitTestBranch(const Instruction* instr) {
1361 USE(instr);
1364 void CPUFeaturesAuditor::VisitUnallocated(const Instruction* instr) {
1366 USE(instr);
1369 void CPUFeaturesAuditor::VisitUnconditionalBranch(const Instruction* instr) {
1371 USE(instr);
1375 const Instruction* instr) {
1377 switch (instr->Mask(UnconditionalBranchToRegisterMask)) {
1396 void CPUFeaturesAuditor::VisitReserved(const Instruction* instr) {
1398 USE(instr);
1401 void CPUFeaturesAuditor::VisitUnimplemented(const Instruction* instr) {
1403 USE(instr);
1406 void CPUFeaturesAuditor::Visit(Metadata* metadata, const Instruction* instr) {
1834 (it->second)(this, instr);