10b57cec5SDimitry Andric//===-- ARMSchedule.td - ARM Scheduling Definitions --------*- tablegen -*-===// 20b57cec5SDimitry Andric// 30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric// 70b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 90b57cec5SDimitry Andric// Instruction scheduling annotations for in-order and out-of-order CPUs. 100b57cec5SDimitry Andric// These annotations are independent of the itinerary class defined below. 110b57cec5SDimitry Andric// Here we define the subtarget independent read/write per-operand resources. 120b57cec5SDimitry Andric// The subtarget schedule definitions will then map these to the subtarget's 130b57cec5SDimitry Andric// resource usages. 140b57cec5SDimitry Andric// For example: 150b57cec5SDimitry Andric// The instruction cycle timings table might contain an entry for an operation 160b57cec5SDimitry Andric// like the following: 170b57cec5SDimitry Andric// Rd <- ADD Rn, Rm, <shift> Rs 180b57cec5SDimitry Andric// Uops | Latency from register | Uops - resource requirements - latency 190b57cec5SDimitry Andric// 2 | Rn: 1 Rm: 4 Rs: 4 | uop T0, Rm, Rs - P01 - 3 200b57cec5SDimitry Andric// | | uopc Rd, Rn, T0 - P01 - 1 210b57cec5SDimitry Andric// This is telling us that the result will be available in destination register 220b57cec5SDimitry Andric// Rd after a minimum of three cycles after the result in Rm and Rs is available 230b57cec5SDimitry Andric// and one cycle after the result in Rn is available. The micro-ops can execute 240b57cec5SDimitry Andric// on resource P01. 250b57cec5SDimitry Andric// To model this, we need to express that we need to dispatch two micro-ops, 260b57cec5SDimitry Andric// that the resource P01 is needed and that the latency to Rn is different than 270b57cec5SDimitry Andric// the latency to Rm and Rs. The scheduler can decrease Rn's producer latency by 280b57cec5SDimitry Andric// two. 290b57cec5SDimitry Andric// We will do this by assigning (abstract) resources to register defs/uses. 300b57cec5SDimitry Andric// ARMSchedule.td: 310b57cec5SDimitry Andric// def WriteALUsr : SchedWrite; 320b57cec5SDimitry Andric// def ReadAdvanceALUsr : ScheRead; 330b57cec5SDimitry Andric// 340b57cec5SDimitry Andric// ARMInstrInfo.td: 350b57cec5SDimitry Andric// def ADDrs : I<>, Sched<[WriteALUsr, ReadAdvanceALUsr, ReadDefault, 360b57cec5SDimitry Andric// ReadDefault]> { ...} 370b57cec5SDimitry Andric// ReadAdvance read resources allow us to define "pipeline by-passes" or 380b57cec5SDimitry Andric// shorter latencies to certain registers as needed in the example above. 390b57cec5SDimitry Andric// The "ReadDefault" can be omitted. 400b57cec5SDimitry Andric// Next, the subtarget td file assigns resources to the abstract resources 410b57cec5SDimitry Andric// defined here. 420b57cec5SDimitry Andric// ARMScheduleSubtarget.td: 430b57cec5SDimitry Andric// // Resources. 440b57cec5SDimitry Andric// def P01 : ProcResource<3>; // ALU unit (3 of it). 450b57cec5SDimitry Andric// ... 460b57cec5SDimitry Andric// // Resource usages. 470b57cec5SDimitry Andric// def : WriteRes<WriteALUsr, [P01, P01]> { 480b57cec5SDimitry Andric// Latency = 4; // Latency of 4. 490b57cec5SDimitry Andric// NumMicroOps = 2; // Dispatch 2 micro-ops. 500b57cec5SDimitry Andric// // The two instances of resource P01 are occupied for one cycle. It is one 510b57cec5SDimitry Andric// // cycle because these resources happen to be pipelined. 52*5f757f3fSDimitry Andric// ReleaseAtCycles = [1, 1]; 530b57cec5SDimitry Andric// } 540b57cec5SDimitry Andric// def : ReadAdvance<ReadAdvanceALUsr, 3>; 550b57cec5SDimitry Andric 560b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 570b57cec5SDimitry Andric// Sched definitions for integer pipeline instructions 580b57cec5SDimitry Andric// 590b57cec5SDimitry Andric// Basic ALU operation. 600b57cec5SDimitry Andricdef WriteALU : SchedWrite; 610b57cec5SDimitry Andricdef ReadALU : SchedRead; 620b57cec5SDimitry Andric 630b57cec5SDimitry Andric// Basic ALU with shifts. 640b57cec5SDimitry Andricdef WriteALUsi : SchedWrite; // Shift by immediate. 650b57cec5SDimitry Andricdef WriteALUsr : SchedWrite; // Shift by register. 660b57cec5SDimitry Andricdef WriteALUSsr : SchedWrite; // Shift by register (flag setting). 670b57cec5SDimitry Andricdef ReadALUsr : SchedRead; // Some operands are read later. 680b57cec5SDimitry Andric 690b57cec5SDimitry Andric// Compares. 700b57cec5SDimitry Andricdef WriteCMP : SchedWrite; 710b57cec5SDimitry Andricdef WriteCMPsi : SchedWrite; 720b57cec5SDimitry Andricdef WriteCMPsr : SchedWrite; 730b57cec5SDimitry Andric 740b57cec5SDimitry Andric// Multiplys. 750b57cec5SDimitry Andricdef WriteMUL16 : SchedWrite; // 16-bit multiply. 760b57cec5SDimitry Andricdef WriteMUL32 : SchedWrite; // 32-bit multiply. 770b57cec5SDimitry Andricdef WriteMUL64Lo : SchedWrite; // 64-bit result. Low reg. 780b57cec5SDimitry Andricdef WriteMUL64Hi : SchedWrite; // 64-bit result. High reg. 790b57cec5SDimitry Andricdef ReadMUL : SchedRead; 800b57cec5SDimitry Andric 810b57cec5SDimitry Andric// Multiply-accumulates. 820b57cec5SDimitry Andricdef WriteMAC16 : SchedWrite; // 16-bit mac. 830b57cec5SDimitry Andricdef WriteMAC32 : SchedWrite; // 32-bit mac. 840b57cec5SDimitry Andricdef WriteMAC64Lo : SchedWrite; // 64-bit mac. Low reg. 850b57cec5SDimitry Andricdef WriteMAC64Hi : SchedWrite; // 64-bit mac. High reg. 860b57cec5SDimitry Andricdef ReadMAC : SchedRead; 870b57cec5SDimitry Andric 880b57cec5SDimitry Andric// Divisions. 890b57cec5SDimitry Andricdef WriteDIV : SchedWrite; 900b57cec5SDimitry Andric 910b57cec5SDimitry Andric// Loads/Stores. 920b57cec5SDimitry Andricdef WriteLd : SchedWrite; 930b57cec5SDimitry Andricdef WritePreLd : SchedWrite; 940b57cec5SDimitry Andricdef WriteST : SchedWrite; 950b57cec5SDimitry Andric 960b57cec5SDimitry Andric// Branches. 970b57cec5SDimitry Andricdef WriteBr : SchedWrite; 980b57cec5SDimitry Andricdef WriteBrL : SchedWrite; 990b57cec5SDimitry Andricdef WriteBrTbl : SchedWrite; 1000b57cec5SDimitry Andric 1010b57cec5SDimitry Andric// Noop. 1020b57cec5SDimitry Andricdef WriteNoop : SchedWrite; 1030b57cec5SDimitry Andric 1040b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 1050b57cec5SDimitry Andric// Sched definitions for floating-point and neon instructions 1060b57cec5SDimitry Andric// 1070b57cec5SDimitry Andric// Floating point conversions 1080b57cec5SDimitry Andricdef WriteFPCVT : SchedWrite; 1090b57cec5SDimitry Andricdef WriteFPMOV : SchedWrite; // FP -> GPR and vice-versa 1100b57cec5SDimitry Andric 1110b57cec5SDimitry Andric// ALU operations (32/64-bit) 1120b57cec5SDimitry Andricdef WriteFPALU32 : SchedWrite; 1130b57cec5SDimitry Andricdef WriteFPALU64 : SchedWrite; 1140b57cec5SDimitry Andric 1150b57cec5SDimitry Andric// Multiplication 1160b57cec5SDimitry Andricdef WriteFPMUL32 : SchedWrite; 1170b57cec5SDimitry Andricdef WriteFPMUL64 : SchedWrite; 1180b57cec5SDimitry Andricdef ReadFPMUL : SchedRead; // multiplier read 1190b57cec5SDimitry Andricdef ReadFPMAC : SchedRead; // accumulator read 1200b57cec5SDimitry Andric 1210b57cec5SDimitry Andric// Multiply-accumulate 1220b57cec5SDimitry Andricdef WriteFPMAC32 : SchedWrite; 1230b57cec5SDimitry Andricdef WriteFPMAC64 : SchedWrite; 1240b57cec5SDimitry Andric 1250b57cec5SDimitry Andric// Division 1260b57cec5SDimitry Andricdef WriteFPDIV32 : SchedWrite; 1270b57cec5SDimitry Andricdef WriteFPDIV64 : SchedWrite; 1280b57cec5SDimitry Andric 1290b57cec5SDimitry Andric// Square-root 1300b57cec5SDimitry Andricdef WriteFPSQRT32 : SchedWrite; 1310b57cec5SDimitry Andricdef WriteFPSQRT64 : SchedWrite; 1320b57cec5SDimitry Andric 1330b57cec5SDimitry Andric// Vector load and stores 1340b57cec5SDimitry Andricdef WriteVLD1 : SchedWrite; 1350b57cec5SDimitry Andricdef WriteVLD2 : SchedWrite; 1360b57cec5SDimitry Andricdef WriteVLD3 : SchedWrite; 1370b57cec5SDimitry Andricdef WriteVLD4 : SchedWrite; 1380b57cec5SDimitry Andricdef WriteVST1 : SchedWrite; 1390b57cec5SDimitry Andricdef WriteVST2 : SchedWrite; 1400b57cec5SDimitry Andricdef WriteVST3 : SchedWrite; 1410b57cec5SDimitry Andricdef WriteVST4 : SchedWrite; 1420b57cec5SDimitry Andric 1430b57cec5SDimitry Andric 1440b57cec5SDimitry Andric// Define TII for use in SchedVariant Predicates. 1450b57cec5SDimitry Andricdef : PredicateProlog<[{ 1460b57cec5SDimitry Andric const ARMBaseInstrInfo *TII = 1470b57cec5SDimitry Andric static_cast<const ARMBaseInstrInfo*>(SchedModel->getInstrInfo()); 1480b57cec5SDimitry Andric (void)TII; 1490b57cec5SDimitry Andric const ARMSubtarget *STI = 1500b57cec5SDimitry Andric static_cast<const ARMSubtarget*>(SchedModel->getSubtargetInfo()); 1510b57cec5SDimitry Andric (void)STI; 1520b57cec5SDimitry Andric}]>; 1530b57cec5SDimitry Andric 154e8d8bef9SDimitry Andricdef IsPredicated : CheckFunctionPredicateWithTII< 155e8d8bef9SDimitry Andric "ARM_MC::isPredicated", 156e8d8bef9SDimitry Andric "isPredicated" 157e8d8bef9SDimitry Andric>; 158e8d8bef9SDimitry Andricdef IsPredicatedPred : MCSchedPredicate<IsPredicated>; 159e8d8bef9SDimitry Andric 160e8d8bef9SDimitry Andricdef IsCPSRDefined : CheckFunctionPredicateWithTII< 161e8d8bef9SDimitry Andric "ARM_MC::isCPSRDefined", 162e8d8bef9SDimitry Andric "ARMBaseInstrInfo::isCPSRDefined" 163e8d8bef9SDimitry Andric>; 164e8d8bef9SDimitry Andric 165e8d8bef9SDimitry Andricdef IsCPSRDefinedPred : MCSchedPredicate<IsCPSRDefined>; 166e8d8bef9SDimitry Andric 167e8d8bef9SDimitry Andriclet FunctionMapper = "ARM_AM::getAM2ShiftOpc" in { 168e8d8bef9SDimitry Andric class CheckAM2NoShift<int n> : CheckImmOperand_s<n, "ARM_AM::no_shift">; 169e8d8bef9SDimitry Andric class CheckAM2ShiftLSL<int n> : CheckImmOperand_s<n, "ARM_AM::lsl">; 170e8d8bef9SDimitry Andric} 171e8d8bef9SDimitry Andric 172e8d8bef9SDimitry Andriclet FunctionMapper = "ARM_AM::getAM2Op" in { 173e8d8bef9SDimitry Andric class CheckAM2OpAdd<int n> : CheckImmOperand_s<n, "ARM_AM::add"> {} 174e8d8bef9SDimitry Andric class CheckAM2OpSub<int n> : CheckImmOperand_s<n, "ARM_AM::sub"> {} 175e8d8bef9SDimitry Andric} 176e8d8bef9SDimitry Andric 177e8d8bef9SDimitry Andriclet FunctionMapper = "ARM_AM::getAM2Offset" in { 178e8d8bef9SDimitry Andric class CheckAM2Offset<int n, int of> : CheckImmOperand<n, of> {} 179e8d8bef9SDimitry Andric} 180e8d8bef9SDimitry Andric 181e8d8bef9SDimitry Andricdef IsLDMBaseRegInList : CheckFunctionPredicate< 182e8d8bef9SDimitry Andric "ARM_MC::isLDMBaseRegInList", "ARM_MC::isLDMBaseRegInList" 183e8d8bef9SDimitry Andric>; 184e8d8bef9SDimitry Andric 185e8d8bef9SDimitry Andriclet FunctionMapper = "ARM_AM::getAM3Op" in { 186e8d8bef9SDimitry Andric class CheckAM3OpSub<int n> : CheckImmOperand_s<n, "ARM_AM::sub"> {} 187e8d8bef9SDimitry Andric} 188e8d8bef9SDimitry Andric 189e8d8bef9SDimitry Andric// LDM, base reg in list 190e8d8bef9SDimitry Andricdef IsLDMBaseRegInListPred : MCSchedPredicate<IsLDMBaseRegInList>; 191e8d8bef9SDimitry Andric 192e8d8bef9SDimitry Andricclass IsRegPCPred<int n> : MCSchedPredicate<CheckRegOperand<n, PC>>; 193e8d8bef9SDimitry Andric 194e8d8bef9SDimitry Andricclass BranchWriteRes<int lat, int uops, list<ProcResourceKind> resl, 195e8d8bef9SDimitry Andric list<int> rcl, SchedWriteRes wr> : 196e8d8bef9SDimitry Andric SchedWriteRes<!listconcat(wr.ProcResources, resl)> { 197e8d8bef9SDimitry Andric let Latency = !add(wr.Latency, lat); 198*5f757f3fSDimitry Andric let ReleaseAtCycles = !listconcat(wr.ReleaseAtCycles, rcl); 199e8d8bef9SDimitry Andric let NumMicroOps = !add(wr.NumMicroOps, uops); 200e8d8bef9SDimitry Andric SchedWriteRes BaseWr = wr; 201e8d8bef9SDimitry Andric} 202e8d8bef9SDimitry Andric 203e8d8bef9SDimitry Andricclass CheckBranchForm<int n, BranchWriteRes br> : 204e8d8bef9SDimitry Andric SchedWriteVariant<[ 205e8d8bef9SDimitry Andric SchedVar<IsRegPCPred<n>, [br]>, 206e8d8bef9SDimitry Andric SchedVar<NoSchedPred, [br.BaseWr]> 207e8d8bef9SDimitry Andric ]>; 2080b57cec5SDimitry Andric 2090b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 2100b57cec5SDimitry Andric// Instruction Itinerary classes used for ARM 2110b57cec5SDimitry Andric// 2120b57cec5SDimitry Andricdef IIC_iALUx : InstrItinClass; 2130b57cec5SDimitry Andricdef IIC_iALUi : InstrItinClass; 2140b57cec5SDimitry Andricdef IIC_iALUr : InstrItinClass; 2150b57cec5SDimitry Andricdef IIC_iALUsi : InstrItinClass; 2160b57cec5SDimitry Andricdef IIC_iALUsir : InstrItinClass; 2170b57cec5SDimitry Andricdef IIC_iALUsr : InstrItinClass; 2180b57cec5SDimitry Andricdef IIC_iBITi : InstrItinClass; 2190b57cec5SDimitry Andricdef IIC_iBITr : InstrItinClass; 2200b57cec5SDimitry Andricdef IIC_iBITsi : InstrItinClass; 2210b57cec5SDimitry Andricdef IIC_iBITsr : InstrItinClass; 2220b57cec5SDimitry Andricdef IIC_iUNAr : InstrItinClass; 2230b57cec5SDimitry Andricdef IIC_iUNAsi : InstrItinClass; 2240b57cec5SDimitry Andricdef IIC_iEXTr : InstrItinClass; 2250b57cec5SDimitry Andricdef IIC_iEXTAr : InstrItinClass; 2260b57cec5SDimitry Andricdef IIC_iEXTAsr : InstrItinClass; 2270b57cec5SDimitry Andricdef IIC_iCMPi : InstrItinClass; 2280b57cec5SDimitry Andricdef IIC_iCMPr : InstrItinClass; 2290b57cec5SDimitry Andricdef IIC_iCMPsi : InstrItinClass; 2300b57cec5SDimitry Andricdef IIC_iCMPsr : InstrItinClass; 2310b57cec5SDimitry Andricdef IIC_iTSTi : InstrItinClass; 2320b57cec5SDimitry Andricdef IIC_iTSTr : InstrItinClass; 2330b57cec5SDimitry Andricdef IIC_iTSTsi : InstrItinClass; 2340b57cec5SDimitry Andricdef IIC_iTSTsr : InstrItinClass; 2350b57cec5SDimitry Andricdef IIC_iMOVi : InstrItinClass; 2360b57cec5SDimitry Andricdef IIC_iMOVr : InstrItinClass; 2370b57cec5SDimitry Andricdef IIC_iMOVsi : InstrItinClass; 2380b57cec5SDimitry Andricdef IIC_iMOVsr : InstrItinClass; 2390b57cec5SDimitry Andricdef IIC_iMOVix2 : InstrItinClass; 2400b57cec5SDimitry Andricdef IIC_iMOVix2addpc : InstrItinClass; 2410b57cec5SDimitry Andricdef IIC_iMOVix2ld : InstrItinClass; 2420b57cec5SDimitry Andricdef IIC_iMVNi : InstrItinClass; 2430b57cec5SDimitry Andricdef IIC_iMVNr : InstrItinClass; 2440b57cec5SDimitry Andricdef IIC_iMVNsi : InstrItinClass; 2450b57cec5SDimitry Andricdef IIC_iMVNsr : InstrItinClass; 2460b57cec5SDimitry Andricdef IIC_iCMOVi : InstrItinClass; 2470b57cec5SDimitry Andricdef IIC_iCMOVr : InstrItinClass; 2480b57cec5SDimitry Andricdef IIC_iCMOVsi : InstrItinClass; 2490b57cec5SDimitry Andricdef IIC_iCMOVsr : InstrItinClass; 2500b57cec5SDimitry Andricdef IIC_iCMOVix2 : InstrItinClass; 2510b57cec5SDimitry Andricdef IIC_iMUL16 : InstrItinClass; 2520b57cec5SDimitry Andricdef IIC_iMAC16 : InstrItinClass; 2530b57cec5SDimitry Andricdef IIC_iMUL32 : InstrItinClass; 2540b57cec5SDimitry Andricdef IIC_iMAC32 : InstrItinClass; 2550b57cec5SDimitry Andricdef IIC_iMUL64 : InstrItinClass; 2560b57cec5SDimitry Andricdef IIC_iMAC64 : InstrItinClass; 2570b57cec5SDimitry Andricdef IIC_iDIV : InstrItinClass; 2580b57cec5SDimitry Andricdef IIC_iLoad_i : InstrItinClass; 2590b57cec5SDimitry Andricdef IIC_iLoad_r : InstrItinClass; 2600b57cec5SDimitry Andricdef IIC_iLoad_si : InstrItinClass; 2610b57cec5SDimitry Andricdef IIC_iLoad_iu : InstrItinClass; 2620b57cec5SDimitry Andricdef IIC_iLoad_ru : InstrItinClass; 2630b57cec5SDimitry Andricdef IIC_iLoad_siu : InstrItinClass; 2640b57cec5SDimitry Andricdef IIC_iLoad_bh_i : InstrItinClass; 2650b57cec5SDimitry Andricdef IIC_iLoad_bh_r : InstrItinClass; 2660b57cec5SDimitry Andricdef IIC_iLoad_bh_si : InstrItinClass; 2670b57cec5SDimitry Andricdef IIC_iLoad_bh_iu : InstrItinClass; 2680b57cec5SDimitry Andricdef IIC_iLoad_bh_ru : InstrItinClass; 2690b57cec5SDimitry Andricdef IIC_iLoad_bh_siu : InstrItinClass; 2700b57cec5SDimitry Andricdef IIC_iLoad_d_i : InstrItinClass; 2710b57cec5SDimitry Andricdef IIC_iLoad_d_r : InstrItinClass; 2720b57cec5SDimitry Andricdef IIC_iLoad_d_ru : InstrItinClass; 2730b57cec5SDimitry Andricdef IIC_iLoad_m : InstrItinClass; 2740b57cec5SDimitry Andricdef IIC_iLoad_mu : InstrItinClass; 2750b57cec5SDimitry Andricdef IIC_iLoad_mBr : InstrItinClass; 2760b57cec5SDimitry Andricdef IIC_iPop : InstrItinClass; 2770b57cec5SDimitry Andricdef IIC_iPop_Br : InstrItinClass; 2780b57cec5SDimitry Andricdef IIC_iLoadiALU : InstrItinClass; 2790b57cec5SDimitry Andricdef IIC_iStore_i : InstrItinClass; 2800b57cec5SDimitry Andricdef IIC_iStore_r : InstrItinClass; 2810b57cec5SDimitry Andricdef IIC_iStore_si : InstrItinClass; 2820b57cec5SDimitry Andricdef IIC_iStore_iu : InstrItinClass; 2830b57cec5SDimitry Andricdef IIC_iStore_ru : InstrItinClass; 2840b57cec5SDimitry Andricdef IIC_iStore_siu : InstrItinClass; 2850b57cec5SDimitry Andricdef IIC_iStore_bh_i : InstrItinClass; 2860b57cec5SDimitry Andricdef IIC_iStore_bh_r : InstrItinClass; 2870b57cec5SDimitry Andricdef IIC_iStore_bh_si : InstrItinClass; 2880b57cec5SDimitry Andricdef IIC_iStore_bh_iu : InstrItinClass; 2890b57cec5SDimitry Andricdef IIC_iStore_bh_ru : InstrItinClass; 2900b57cec5SDimitry Andricdef IIC_iStore_bh_siu : InstrItinClass; 2910b57cec5SDimitry Andricdef IIC_iStore_d_i : InstrItinClass; 2920b57cec5SDimitry Andricdef IIC_iStore_d_r : InstrItinClass; 2930b57cec5SDimitry Andricdef IIC_iStore_d_ru : InstrItinClass; 2940b57cec5SDimitry Andricdef IIC_iStore_m : InstrItinClass; 2950b57cec5SDimitry Andricdef IIC_iStore_mu : InstrItinClass; 2960b57cec5SDimitry Andricdef IIC_Preload : InstrItinClass; 2970b57cec5SDimitry Andricdef IIC_Br : InstrItinClass; 2980b57cec5SDimitry Andricdef IIC_fpSTAT : InstrItinClass; 2990b57cec5SDimitry Andricdef IIC_fpUNA16 : InstrItinClass; 3000b57cec5SDimitry Andricdef IIC_fpUNA32 : InstrItinClass; 3010b57cec5SDimitry Andricdef IIC_fpUNA64 : InstrItinClass; 3020b57cec5SDimitry Andricdef IIC_fpCMP16 : InstrItinClass; 3030b57cec5SDimitry Andricdef IIC_fpCMP32 : InstrItinClass; 3040b57cec5SDimitry Andricdef IIC_fpCMP64 : InstrItinClass; 3050b57cec5SDimitry Andricdef IIC_fpCVTSD : InstrItinClass; 3060b57cec5SDimitry Andricdef IIC_fpCVTDS : InstrItinClass; 3070b57cec5SDimitry Andricdef IIC_fpCVTSH : InstrItinClass; 3080b57cec5SDimitry Andricdef IIC_fpCVTHS : InstrItinClass; 3090b57cec5SDimitry Andricdef IIC_fpCVTIH : InstrItinClass; 3100b57cec5SDimitry Andricdef IIC_fpCVTIS : InstrItinClass; 3110b57cec5SDimitry Andricdef IIC_fpCVTID : InstrItinClass; 3120b57cec5SDimitry Andricdef IIC_fpCVTHI : InstrItinClass; 3130b57cec5SDimitry Andricdef IIC_fpCVTSI : InstrItinClass; 3140b57cec5SDimitry Andricdef IIC_fpCVTDI : InstrItinClass; 3150b57cec5SDimitry Andricdef IIC_fpMOVIS : InstrItinClass; 3160b57cec5SDimitry Andricdef IIC_fpMOVID : InstrItinClass; 3170b57cec5SDimitry Andricdef IIC_fpMOVSI : InstrItinClass; 3180b57cec5SDimitry Andricdef IIC_fpMOVDI : InstrItinClass; 3190b57cec5SDimitry Andricdef IIC_fpALU16 : InstrItinClass; 3200b57cec5SDimitry Andricdef IIC_fpALU32 : InstrItinClass; 3210b57cec5SDimitry Andricdef IIC_fpALU64 : InstrItinClass; 3220b57cec5SDimitry Andricdef IIC_fpMUL16 : InstrItinClass; 3230b57cec5SDimitry Andricdef IIC_fpMUL32 : InstrItinClass; 3240b57cec5SDimitry Andricdef IIC_fpMUL64 : InstrItinClass; 3250b57cec5SDimitry Andricdef IIC_fpMAC16 : InstrItinClass; 3260b57cec5SDimitry Andricdef IIC_fpMAC32 : InstrItinClass; 3270b57cec5SDimitry Andricdef IIC_fpMAC64 : InstrItinClass; 3280b57cec5SDimitry Andricdef IIC_fpFMAC16 : InstrItinClass; 3290b57cec5SDimitry Andricdef IIC_fpFMAC32 : InstrItinClass; 3300b57cec5SDimitry Andricdef IIC_fpFMAC64 : InstrItinClass; 3310b57cec5SDimitry Andricdef IIC_fpDIV16 : InstrItinClass; 3320b57cec5SDimitry Andricdef IIC_fpDIV32 : InstrItinClass; 3330b57cec5SDimitry Andricdef IIC_fpDIV64 : InstrItinClass; 3340b57cec5SDimitry Andricdef IIC_fpSQRT16 : InstrItinClass; 3350b57cec5SDimitry Andricdef IIC_fpSQRT32 : InstrItinClass; 3360b57cec5SDimitry Andricdef IIC_fpSQRT64 : InstrItinClass; 3370b57cec5SDimitry Andricdef IIC_fpLoad16 : InstrItinClass; 3380b57cec5SDimitry Andricdef IIC_fpLoad32 : InstrItinClass; 3390b57cec5SDimitry Andricdef IIC_fpLoad64 : InstrItinClass; 3400b57cec5SDimitry Andricdef IIC_fpLoad_m : InstrItinClass; 3410b57cec5SDimitry Andricdef IIC_fpLoad_mu : InstrItinClass; 3420b57cec5SDimitry Andricdef IIC_fpStore16 : InstrItinClass; 3430b57cec5SDimitry Andricdef IIC_fpStore32 : InstrItinClass; 3440b57cec5SDimitry Andricdef IIC_fpStore64 : InstrItinClass; 3450b57cec5SDimitry Andricdef IIC_fpStore_m : InstrItinClass; 3460b57cec5SDimitry Andricdef IIC_fpStore_mu : InstrItinClass; 3470b57cec5SDimitry Andricdef IIC_VLD1 : InstrItinClass; 3480b57cec5SDimitry Andricdef IIC_VLD1x2 : InstrItinClass; 3490b57cec5SDimitry Andricdef IIC_VLD1x3 : InstrItinClass; 3500b57cec5SDimitry Andricdef IIC_VLD1x4 : InstrItinClass; 3510b57cec5SDimitry Andricdef IIC_VLD1u : InstrItinClass; 3520b57cec5SDimitry Andricdef IIC_VLD1x2u : InstrItinClass; 3530b57cec5SDimitry Andricdef IIC_VLD1x3u : InstrItinClass; 3540b57cec5SDimitry Andricdef IIC_VLD1x4u : InstrItinClass; 3550b57cec5SDimitry Andricdef IIC_VLD1ln : InstrItinClass; 3560b57cec5SDimitry Andricdef IIC_VLD1lnu : InstrItinClass; 3570b57cec5SDimitry Andricdef IIC_VLD1dup : InstrItinClass; 3580b57cec5SDimitry Andricdef IIC_VLD1dupu : InstrItinClass; 3590b57cec5SDimitry Andricdef IIC_VLD2 : InstrItinClass; 3600b57cec5SDimitry Andricdef IIC_VLD2x2 : InstrItinClass; 3610b57cec5SDimitry Andricdef IIC_VLD2u : InstrItinClass; 3620b57cec5SDimitry Andricdef IIC_VLD2x2u : InstrItinClass; 3630b57cec5SDimitry Andricdef IIC_VLD2ln : InstrItinClass; 3640b57cec5SDimitry Andricdef IIC_VLD2lnu : InstrItinClass; 3650b57cec5SDimitry Andricdef IIC_VLD2dup : InstrItinClass; 3660b57cec5SDimitry Andricdef IIC_VLD2dupu : InstrItinClass; 3670b57cec5SDimitry Andricdef IIC_VLD3 : InstrItinClass; 3680b57cec5SDimitry Andricdef IIC_VLD3ln : InstrItinClass; 3690b57cec5SDimitry Andricdef IIC_VLD3u : InstrItinClass; 3700b57cec5SDimitry Andricdef IIC_VLD3lnu : InstrItinClass; 3710b57cec5SDimitry Andricdef IIC_VLD3dup : InstrItinClass; 3720b57cec5SDimitry Andricdef IIC_VLD3dupu : InstrItinClass; 3730b57cec5SDimitry Andricdef IIC_VLD4 : InstrItinClass; 3740b57cec5SDimitry Andricdef IIC_VLD4ln : InstrItinClass; 3750b57cec5SDimitry Andricdef IIC_VLD4u : InstrItinClass; 3760b57cec5SDimitry Andricdef IIC_VLD4lnu : InstrItinClass; 3770b57cec5SDimitry Andricdef IIC_VLD4dup : InstrItinClass; 3780b57cec5SDimitry Andricdef IIC_VLD4dupu : InstrItinClass; 3790b57cec5SDimitry Andricdef IIC_VST1 : InstrItinClass; 3800b57cec5SDimitry Andricdef IIC_VST1x2 : InstrItinClass; 3810b57cec5SDimitry Andricdef IIC_VST1x3 : InstrItinClass; 3820b57cec5SDimitry Andricdef IIC_VST1x4 : InstrItinClass; 3830b57cec5SDimitry Andricdef IIC_VST1u : InstrItinClass; 3840b57cec5SDimitry Andricdef IIC_VST1x2u : InstrItinClass; 3850b57cec5SDimitry Andricdef IIC_VST1x3u : InstrItinClass; 3860b57cec5SDimitry Andricdef IIC_VST1x4u : InstrItinClass; 3870b57cec5SDimitry Andricdef IIC_VST1ln : InstrItinClass; 3880b57cec5SDimitry Andricdef IIC_VST1lnu : InstrItinClass; 3890b57cec5SDimitry Andricdef IIC_VST2 : InstrItinClass; 3900b57cec5SDimitry Andricdef IIC_VST2x2 : InstrItinClass; 3910b57cec5SDimitry Andricdef IIC_VST2u : InstrItinClass; 3920b57cec5SDimitry Andricdef IIC_VST2x2u : InstrItinClass; 3930b57cec5SDimitry Andricdef IIC_VST2ln : InstrItinClass; 3940b57cec5SDimitry Andricdef IIC_VST2lnu : InstrItinClass; 3950b57cec5SDimitry Andricdef IIC_VST3 : InstrItinClass; 3960b57cec5SDimitry Andricdef IIC_VST3u : InstrItinClass; 3970b57cec5SDimitry Andricdef IIC_VST3ln : InstrItinClass; 3980b57cec5SDimitry Andricdef IIC_VST3lnu : InstrItinClass; 3990b57cec5SDimitry Andricdef IIC_VST4 : InstrItinClass; 4000b57cec5SDimitry Andricdef IIC_VST4u : InstrItinClass; 4010b57cec5SDimitry Andricdef IIC_VST4ln : InstrItinClass; 4020b57cec5SDimitry Andricdef IIC_VST4lnu : InstrItinClass; 4030b57cec5SDimitry Andricdef IIC_VUNAD : InstrItinClass; 4040b57cec5SDimitry Andricdef IIC_VUNAQ : InstrItinClass; 4050b57cec5SDimitry Andricdef IIC_VBIND : InstrItinClass; 4060b57cec5SDimitry Andricdef IIC_VBINQ : InstrItinClass; 4070b57cec5SDimitry Andricdef IIC_VPBIND : InstrItinClass; 4080b57cec5SDimitry Andricdef IIC_VFMULD : InstrItinClass; 4090b57cec5SDimitry Andricdef IIC_VFMULQ : InstrItinClass; 4100b57cec5SDimitry Andricdef IIC_VMOV : InstrItinClass; 4110b57cec5SDimitry Andricdef IIC_VMOVImm : InstrItinClass; 4120b57cec5SDimitry Andricdef IIC_VMOVD : InstrItinClass; 4130b57cec5SDimitry Andricdef IIC_VMOVQ : InstrItinClass; 4140b57cec5SDimitry Andricdef IIC_VMOVIS : InstrItinClass; 4150b57cec5SDimitry Andricdef IIC_VMOVID : InstrItinClass; 4160b57cec5SDimitry Andricdef IIC_VMOVISL : InstrItinClass; 4170b57cec5SDimitry Andricdef IIC_VMOVSI : InstrItinClass; 4180b57cec5SDimitry Andricdef IIC_VMOVDI : InstrItinClass; 4190b57cec5SDimitry Andricdef IIC_VMOVN : InstrItinClass; 4200b57cec5SDimitry Andricdef IIC_VPERMD : InstrItinClass; 4210b57cec5SDimitry Andricdef IIC_VPERMQ : InstrItinClass; 4220b57cec5SDimitry Andricdef IIC_VPERMQ3 : InstrItinClass; 4230b57cec5SDimitry Andricdef IIC_VMACD : InstrItinClass; 4240b57cec5SDimitry Andricdef IIC_VMACQ : InstrItinClass; 4250b57cec5SDimitry Andricdef IIC_VFMACD : InstrItinClass; 4260b57cec5SDimitry Andricdef IIC_VFMACQ : InstrItinClass; 4270b57cec5SDimitry Andricdef IIC_VRECSD : InstrItinClass; 4280b57cec5SDimitry Andricdef IIC_VRECSQ : InstrItinClass; 4290b57cec5SDimitry Andricdef IIC_VCNTiD : InstrItinClass; 4300b57cec5SDimitry Andricdef IIC_VCNTiQ : InstrItinClass; 4310b57cec5SDimitry Andricdef IIC_VUNAiD : InstrItinClass; 4320b57cec5SDimitry Andricdef IIC_VUNAiQ : InstrItinClass; 4330b57cec5SDimitry Andricdef IIC_VQUNAiD : InstrItinClass; 4340b57cec5SDimitry Andricdef IIC_VQUNAiQ : InstrItinClass; 4350b57cec5SDimitry Andricdef IIC_VBINiD : InstrItinClass; 4360b57cec5SDimitry Andricdef IIC_VBINiQ : InstrItinClass; 4370b57cec5SDimitry Andricdef IIC_VSUBiD : InstrItinClass; 4380b57cec5SDimitry Andricdef IIC_VSUBiQ : InstrItinClass; 4390b57cec5SDimitry Andricdef IIC_VBINi4D : InstrItinClass; 4400b57cec5SDimitry Andricdef IIC_VBINi4Q : InstrItinClass; 4410b57cec5SDimitry Andricdef IIC_VSUBi4D : InstrItinClass; 4420b57cec5SDimitry Andricdef IIC_VSUBi4Q : InstrItinClass; 4430b57cec5SDimitry Andricdef IIC_VABAD : InstrItinClass; 4440b57cec5SDimitry Andricdef IIC_VABAQ : InstrItinClass; 4450b57cec5SDimitry Andricdef IIC_VSHLiD : InstrItinClass; 4460b57cec5SDimitry Andricdef IIC_VSHLiQ : InstrItinClass; 4470b57cec5SDimitry Andricdef IIC_VSHLi4D : InstrItinClass; 4480b57cec5SDimitry Andricdef IIC_VSHLi4Q : InstrItinClass; 4490b57cec5SDimitry Andricdef IIC_VPALiD : InstrItinClass; 4500b57cec5SDimitry Andricdef IIC_VPALiQ : InstrItinClass; 4510b57cec5SDimitry Andricdef IIC_VMULi16D : InstrItinClass; 4520b57cec5SDimitry Andricdef IIC_VMULi32D : InstrItinClass; 4530b57cec5SDimitry Andricdef IIC_VMULi16Q : InstrItinClass; 4540b57cec5SDimitry Andricdef IIC_VMULi32Q : InstrItinClass; 4550b57cec5SDimitry Andricdef IIC_VMACi16D : InstrItinClass; 4560b57cec5SDimitry Andricdef IIC_VMACi32D : InstrItinClass; 4570b57cec5SDimitry Andricdef IIC_VMACi16Q : InstrItinClass; 4580b57cec5SDimitry Andricdef IIC_VMACi32Q : InstrItinClass; 4590b57cec5SDimitry Andricdef IIC_VEXTD : InstrItinClass; 4600b57cec5SDimitry Andricdef IIC_VEXTQ : InstrItinClass; 4610b57cec5SDimitry Andricdef IIC_VTB1 : InstrItinClass; 4620b57cec5SDimitry Andricdef IIC_VTB2 : InstrItinClass; 4630b57cec5SDimitry Andricdef IIC_VTB3 : InstrItinClass; 4640b57cec5SDimitry Andricdef IIC_VTB4 : InstrItinClass; 4650b57cec5SDimitry Andricdef IIC_VTBX1 : InstrItinClass; 4660b57cec5SDimitry Andricdef IIC_VTBX2 : InstrItinClass; 4670b57cec5SDimitry Andricdef IIC_VTBX3 : InstrItinClass; 4680b57cec5SDimitry Andricdef IIC_VTBX4 : InstrItinClass; 4690b57cec5SDimitry Andricdef IIC_VDOTPROD : InstrItinClass; 470