1*700637cbSDimitry Andric//==- RISCVSchedAndes45.td - Andes45 Scheduling Definitions --*- tablegen -*-=// 2*700637cbSDimitry Andric// 3*700637cbSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*700637cbSDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 5*700637cbSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*700637cbSDimitry Andric// 7*700637cbSDimitry Andric//===----------------------------------------------------------------------===// 8*700637cbSDimitry Andric 9*700637cbSDimitry Andric//===----------------------------------------------------------------------===// 10*700637cbSDimitry Andric 11*700637cbSDimitry Andric// FIXME: Implement sheduling model for V and other extensions. 12*700637cbSDimitry Andricdef Andes45Model : SchedMachineModel { 13*700637cbSDimitry Andric let MicroOpBufferSize = 0; // Andes45 is in-order processor 14*700637cbSDimitry Andric let IssueWidth = 2; // 2 micro-ops dispatched per cycle 15*700637cbSDimitry Andric let LoadLatency = 2; 16*700637cbSDimitry Andric let MispredictPenalty = 5; 17*700637cbSDimitry Andric let CompleteModel = 0; 18*700637cbSDimitry Andric} 19*700637cbSDimitry Andric 20*700637cbSDimitry Andriclet SchedModel = Andes45Model in { 21*700637cbSDimitry Andric 22*700637cbSDimitry Andric//===----------------------------------------------------------------------===// 23*700637cbSDimitry Andric// Define each kind of processor resource and number available. 24*700637cbSDimitry Andric 25*700637cbSDimitry Andric//===----------------------------------------------------------------------===// 26*700637cbSDimitry Andric// Andes 45 series CPU 27*700637cbSDimitry Andric// - 2 Interger Arithmetic and Logical Units (ALU) 28*700637cbSDimitry Andric// - Multiply / Divide Unit (MDU) 29*700637cbSDimitry Andric// - Load Store Unit (LSU) 30*700637cbSDimitry Andric// - Control and Status Register Unit (CSR) 31*700637cbSDimitry Andric// - Floating Point Multiply-Accumulate Unit (FMAC) 32*700637cbSDimitry Andric// - Floating Point Divide / SQRT Unit (FDIV) 33*700637cbSDimitry Andric// - Floating Point Move Unit (FMV) 34*700637cbSDimitry Andric// - Floating Point Misc Unit (FMISC) 35*700637cbSDimitry Andric//===----------------------------------------------------------------------===// 36*700637cbSDimitry Andric 37*700637cbSDimitry Andriclet BufferSize = 0 in { 38*700637cbSDimitry Andricdef Andes45ALU : ProcResource<2>; 39*700637cbSDimitry Andricdef Andes45MDU : ProcResource<1>; 40*700637cbSDimitry Andricdef Andes45LSU : ProcResource<1>; 41*700637cbSDimitry Andricdef Andes45CSR : ProcResource<1>; 42*700637cbSDimitry Andric 43*700637cbSDimitry Andricdef Andes45FMAC : ProcResource<1>; 44*700637cbSDimitry Andricdef Andes45FDIV : ProcResource<1>; 45*700637cbSDimitry Andricdef Andes45FMV : ProcResource<1>; 46*700637cbSDimitry Andricdef Andes45FMISC : ProcResource<1>; 47*700637cbSDimitry Andric} 48*700637cbSDimitry Andric 49*700637cbSDimitry Andric// Integer arithmetic and logic 50*700637cbSDimitry Andricdef : WriteRes<WriteIALU, [Andes45ALU]>; 51*700637cbSDimitry Andricdef : WriteRes<WriteIALU32, [Andes45ALU]>; 52*700637cbSDimitry Andricdef : WriteRes<WriteShiftImm, [Andes45ALU]>; 53*700637cbSDimitry Andricdef : WriteRes<WriteShiftImm32, [Andes45ALU]>; 54*700637cbSDimitry Andricdef : WriteRes<WriteShiftReg, [Andes45ALU]>; 55*700637cbSDimitry Andricdef : WriteRes<WriteShiftReg32, [Andes45ALU]>; 56*700637cbSDimitry Andric 57*700637cbSDimitry Andric// Short forward branch 58*700637cbSDimitry Andricdef : WriteRes<WriteSFB, [Andes45ALU]> { 59*700637cbSDimitry Andric let Latency = 1; 60*700637cbSDimitry Andric let NumMicroOps = 2; 61*700637cbSDimitry Andric} 62*700637cbSDimitry Andric 63*700637cbSDimitry Andric// Branching 64*700637cbSDimitry Andricdef : WriteRes<WriteJmp, [Andes45ALU]>; 65*700637cbSDimitry Andricdef : WriteRes<WriteJal, [Andes45ALU]>; 66*700637cbSDimitry Andricdef : WriteRes<WriteJalr, [Andes45ALU]>; 67*700637cbSDimitry Andric 68*700637cbSDimitry Andric// Integer multiplication 69*700637cbSDimitry Andriclet Latency = 3 in { 70*700637cbSDimitry Andricdef : WriteRes<WriteIMul, [Andes45MDU]>; 71*700637cbSDimitry Andricdef : WriteRes<WriteIMul32, [Andes45MDU]>; 72*700637cbSDimitry Andric} 73*700637cbSDimitry Andric 74*700637cbSDimitry Andric// Integer division 75*700637cbSDimitry Andriclet Latency = 39, ReleaseAtCycles = [39] in { 76*700637cbSDimitry Andricdef : WriteRes<WriteIDiv, [Andes45MDU]>; 77*700637cbSDimitry Andricdef : WriteRes<WriteIDiv32, [Andes45MDU]>; 78*700637cbSDimitry Andric} 79*700637cbSDimitry Andric 80*700637cbSDimitry Andric// Integer remainder 81*700637cbSDimitry Andriclet Latency = 39, ReleaseAtCycles = [39] in { 82*700637cbSDimitry Andricdef : WriteRes<WriteIRem, [Andes45MDU]>; 83*700637cbSDimitry Andricdef : WriteRes<WriteIRem32, [Andes45MDU]>; 84*700637cbSDimitry Andric} 85*700637cbSDimitry Andric 86*700637cbSDimitry Andric// Memory 87*700637cbSDimitry Andriclet Latency = 5 in { 88*700637cbSDimitry Andricdef : WriteRes<WriteLDB, [Andes45LSU]>; 89*700637cbSDimitry Andricdef : WriteRes<WriteLDH, [Andes45LSU]>; 90*700637cbSDimitry Andricdef : WriteRes<WriteFLD16, [Andes45LSU]>; 91*700637cbSDimitry Andric} 92*700637cbSDimitry Andric 93*700637cbSDimitry Andriclet Latency = 3 in { 94*700637cbSDimitry Andricdef : WriteRes<WriteLDW, [Andes45LSU]>; 95*700637cbSDimitry Andricdef : WriteRes<WriteLDD, [Andes45LSU]>; 96*700637cbSDimitry Andricdef : WriteRes<WriteFLD32, [Andes45LSU]>; 97*700637cbSDimitry Andricdef : WriteRes<WriteFLD64, [Andes45LSU]>; 98*700637cbSDimitry Andric} 99*700637cbSDimitry Andric 100*700637cbSDimitry Andriclet Latency = 1 in { 101*700637cbSDimitry Andricdef : WriteRes<WriteSTB, [Andes45LSU]>; 102*700637cbSDimitry Andricdef : WriteRes<WriteSTH, [Andes45LSU]>; 103*700637cbSDimitry Andricdef : WriteRes<WriteSTW, [Andes45LSU]>; 104*700637cbSDimitry Andricdef : WriteRes<WriteSTD, [Andes45LSU]>; 105*700637cbSDimitry Andricdef : WriteRes<WriteFST16, [Andes45LSU]>; 106*700637cbSDimitry Andricdef : WriteRes<WriteFST32, [Andes45LSU]>; 107*700637cbSDimitry Andricdef : WriteRes<WriteFST64, [Andes45LSU]>; 108*700637cbSDimitry Andric} 109*700637cbSDimitry Andric 110*700637cbSDimitry Andric// Atomic Memory 111*700637cbSDimitry Andriclet Latency = 9 in { 112*700637cbSDimitry Andricdef : WriteRes<WriteAtomicW, [Andes45LSU]>; 113*700637cbSDimitry Andricdef : WriteRes<WriteAtomicD, [Andes45LSU]>; 114*700637cbSDimitry Andricdef : WriteRes<WriteAtomicLDW, [Andes45LSU]>; 115*700637cbSDimitry Andricdef : WriteRes<WriteAtomicLDD, [Andes45LSU]>; 116*700637cbSDimitry Andric} 117*700637cbSDimitry Andric 118*700637cbSDimitry Andriclet Latency = 3 in { 119*700637cbSDimitry Andricdef : WriteRes<WriteAtomicSTW, [Andes45LSU]>; 120*700637cbSDimitry Andricdef : WriteRes<WriteAtomicSTD, [Andes45LSU]>; 121*700637cbSDimitry Andric} 122*700637cbSDimitry Andric 123*700637cbSDimitry Andric// FMAC 124*700637cbSDimitry Andriclet Latency = 4 in { 125*700637cbSDimitry Andricdef : WriteRes<WriteFAdd16, [Andes45FMAC]>; 126*700637cbSDimitry Andricdef : WriteRes<WriteFAdd32, [Andes45FMAC]>; 127*700637cbSDimitry Andricdef : WriteRes<WriteFAdd64, [Andes45FMAC]>; 128*700637cbSDimitry Andricdef : WriteRes<WriteFMul16, [Andes45FMAC]>; 129*700637cbSDimitry Andricdef : WriteRes<WriteFMul32, [Andes45FMAC]>; 130*700637cbSDimitry Andricdef : WriteRes<WriteFMul64, [Andes45FMAC]>; 131*700637cbSDimitry Andricdef : WriteRes<WriteFMA16, [Andes45FMAC]>; 132*700637cbSDimitry Andricdef : WriteRes<WriteFMA32, [Andes45FMAC]>; 133*700637cbSDimitry Andricdef : WriteRes<WriteFMA64, [Andes45FMAC]>; 134*700637cbSDimitry Andric} 135*700637cbSDimitry Andric 136*700637cbSDimitry Andric// FDIV 137*700637cbSDimitry Andriclet Latency = 12, ReleaseAtCycles = [12] in 138*700637cbSDimitry Andricdef : WriteRes<WriteFDiv16, [Andes45FDIV]>; 139*700637cbSDimitry Andriclet Latency = 11, ReleaseAtCycles = [11] in 140*700637cbSDimitry Andricdef : WriteRes<WriteFSqrt16, [Andes45FDIV]>; 141*700637cbSDimitry Andric 142*700637cbSDimitry Andriclet Latency = 19, ReleaseAtCycles = [19] in 143*700637cbSDimitry Andricdef : WriteRes<WriteFDiv32, [Andes45FDIV]>; 144*700637cbSDimitry Andriclet Latency = 18, ReleaseAtCycles = [18] in 145*700637cbSDimitry Andricdef : WriteRes<WriteFSqrt32, [Andes45FDIV]>; 146*700637cbSDimitry Andric 147*700637cbSDimitry Andriclet Latency = 33, ReleaseAtCycles = [33] in 148*700637cbSDimitry Andricdef : WriteRes<WriteFDiv64, [Andes45FDIV]>; 149*700637cbSDimitry Andriclet Latency = 32, ReleaseAtCycles = [32] in 150*700637cbSDimitry Andricdef : WriteRes<WriteFSqrt64, [Andes45FDIV]>; 151*700637cbSDimitry Andric 152*700637cbSDimitry Andric// FMV 153*700637cbSDimitry Andricdef : WriteRes<WriteFSGNJ16, [Andes45FMV]>; 154*700637cbSDimitry Andricdef : WriteRes<WriteFSGNJ32, [Andes45FMV]>; 155*700637cbSDimitry Andricdef : WriteRes<WriteFSGNJ64, [Andes45FMV]>; 156*700637cbSDimitry Andricdef : WriteRes<WriteFMovF16ToI16, [Andes45FMV]>; 157*700637cbSDimitry Andricdef : WriteRes<WriteFMovI16ToF16, [Andes45FMV]>; 158*700637cbSDimitry Andricdef : WriteRes<WriteFMovF32ToI32, [Andes45FMV]>; 159*700637cbSDimitry Andricdef : WriteRes<WriteFMovI32ToF32, [Andes45FMV]>; 160*700637cbSDimitry Andricdef : WriteRes<WriteFMovF64ToI64, [Andes45FMV]>; 161*700637cbSDimitry Andricdef : WriteRes<WriteFMovI64ToF64, [Andes45FMV]>; 162*700637cbSDimitry Andric 163*700637cbSDimitry Andric// FMISC 164*700637cbSDimitry Andriclet Latency = 2 in { 165*700637cbSDimitry Andricdef : WriteRes<WriteFMinMax16, [Andes45FMISC]>; 166*700637cbSDimitry Andricdef : WriteRes<WriteFMinMax32, [Andes45FMISC]>; 167*700637cbSDimitry Andricdef : WriteRes<WriteFMinMax64, [Andes45FMISC]>; 168*700637cbSDimitry Andricdef : WriteRes<WriteFClass16, [Andes45FMISC]>; 169*700637cbSDimitry Andricdef : WriteRes<WriteFClass32, [Andes45FMISC]>; 170*700637cbSDimitry Andricdef : WriteRes<WriteFClass64, [Andes45FMISC]>; 171*700637cbSDimitry Andricdef : WriteRes<WriteFCmp16, [Andes45FMISC]>; 172*700637cbSDimitry Andricdef : WriteRes<WriteFCmp32, [Andes45FMISC]>; 173*700637cbSDimitry Andricdef : WriteRes<WriteFCmp64, [Andes45FMISC]>; 174*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF16ToI32, [Andes45FMISC]>; 175*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF16ToI64, [Andes45FMISC]>; 176*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF32ToI32, [Andes45FMISC]>; 177*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF32ToI64, [Andes45FMISC]>; 178*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF64ToI32, [Andes45FMISC]>; 179*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF64ToI64, [Andes45FMISC]>; 180*700637cbSDimitry Andricdef : WriteRes<WriteFCvtI32ToF16, [Andes45FMISC]>; 181*700637cbSDimitry Andricdef : WriteRes<WriteFCvtI32ToF32, [Andes45FMISC]>; 182*700637cbSDimitry Andricdef : WriteRes<WriteFCvtI32ToF64, [Andes45FMISC]>; 183*700637cbSDimitry Andricdef : WriteRes<WriteFCvtI64ToF16, [Andes45FMISC]>; 184*700637cbSDimitry Andricdef : WriteRes<WriteFCvtI64ToF32, [Andes45FMISC]>; 185*700637cbSDimitry Andricdef : WriteRes<WriteFCvtI64ToF64, [Andes45FMISC]>; 186*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF16ToF32, [Andes45FMISC]>; 187*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF16ToF64, [Andes45FMISC]>; 188*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF32ToF16, [Andes45FMISC]>; 189*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF32ToF64, [Andes45FMISC]>; 190*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF64ToF16, [Andes45FMISC]>; 191*700637cbSDimitry Andricdef : WriteRes<WriteFCvtF64ToF32, [Andes45FMISC]>; 192*700637cbSDimitry Andric} 193*700637cbSDimitry Andric 194*700637cbSDimitry Andric// Bitmanip 195*700637cbSDimitry Andric// Zba extension 196*700637cbSDimitry Andricdef : WriteRes<WriteSHXADD, [Andes45ALU]>; 197*700637cbSDimitry Andricdef : WriteRes<WriteSHXADD32, [Andes45ALU]>; 198*700637cbSDimitry Andric 199*700637cbSDimitry Andric// Zbb extension 200*700637cbSDimitry Andricdef : WriteRes<WriteRotateImm, [Andes45ALU]>; 201*700637cbSDimitry Andricdef : WriteRes<WriteRotateImm32, [Andes45ALU]>; 202*700637cbSDimitry Andricdef : WriteRes<WriteRotateReg, [Andes45ALU]>; 203*700637cbSDimitry Andricdef : WriteRes<WriteRotateReg32, [Andes45ALU]>; 204*700637cbSDimitry Andricdef : WriteRes<WriteREV8, [Andes45ALU]>; 205*700637cbSDimitry Andricdef : WriteRes<WriteORCB, [Andes45ALU]>; 206*700637cbSDimitry Andricdef : WriteRes<WriteIMinMax, [Andes45ALU]>; 207*700637cbSDimitry Andric 208*700637cbSDimitry Andriclet Latency = 3 in { 209*700637cbSDimitry Andricdef : WriteRes<WriteCLZ, [Andes45ALU]>; 210*700637cbSDimitry Andricdef : WriteRes<WriteCLZ32, [Andes45ALU]>; 211*700637cbSDimitry Andricdef : WriteRes<WriteCTZ, [Andes45ALU]>; 212*700637cbSDimitry Andricdef : WriteRes<WriteCTZ32, [Andes45ALU]>; 213*700637cbSDimitry Andricdef : WriteRes<WriteCPOP, [Andes45ALU]>; 214*700637cbSDimitry Andricdef : WriteRes<WriteCPOP32, [Andes45ALU]>; 215*700637cbSDimitry Andric} 216*700637cbSDimitry Andric 217*700637cbSDimitry Andric// Zbc extension 218*700637cbSDimitry Andriclet Latency = 3 in 219*700637cbSDimitry Andricdef : WriteRes<WriteCLMUL, [Andes45ALU]>; 220*700637cbSDimitry Andric 221*700637cbSDimitry Andric// Zbs extension 222*700637cbSDimitry Andricdef : WriteRes<WriteSingleBit, [Andes45ALU]>; 223*700637cbSDimitry Andricdef : WriteRes<WriteSingleBitImm, [Andes45ALU]>; 224*700637cbSDimitry Andricdef : WriteRes<WriteBEXT, [Andes45ALU]>; 225*700637cbSDimitry Andricdef : WriteRes<WriteBEXTI, [Andes45ALU]>; 226*700637cbSDimitry Andric 227*700637cbSDimitry Andric// Others 228*700637cbSDimitry Andricdef : WriteRes<WriteCSR, [Andes45CSR]>; 229*700637cbSDimitry Andricdef : WriteRes<WriteNop, []>; 230*700637cbSDimitry Andric 231*700637cbSDimitry Andric//===----------------------------------------------------------------------===// 232*700637cbSDimitry Andric 233*700637cbSDimitry Andric// Bypass and advance 234*700637cbSDimitry Andricdef : ReadAdvance<ReadIALU, 0>; 235*700637cbSDimitry Andricdef : ReadAdvance<ReadIALU32, 0>; 236*700637cbSDimitry Andricdef : ReadAdvance<ReadShiftImm, 0>; 237*700637cbSDimitry Andricdef : ReadAdvance<ReadShiftImm32, 0>; 238*700637cbSDimitry Andricdef : ReadAdvance<ReadShiftReg, 0>; 239*700637cbSDimitry Andricdef : ReadAdvance<ReadShiftReg32, 0>; 240*700637cbSDimitry Andricdef : ReadAdvance<ReadSFBJmp, 0>; 241*700637cbSDimitry Andricdef : ReadAdvance<ReadSFBALU, 0>; 242*700637cbSDimitry Andricdef : ReadAdvance<ReadJalr, 0>; 243*700637cbSDimitry Andricdef : ReadAdvance<ReadJmp, 0>; 244*700637cbSDimitry Andricdef : ReadAdvance<ReadIMul, 0>; 245*700637cbSDimitry Andricdef : ReadAdvance<ReadIMul32, 0>; 246*700637cbSDimitry Andricdef : ReadAdvance<ReadIDiv, 0>; 247*700637cbSDimitry Andricdef : ReadAdvance<ReadIDiv32, 0>; 248*700637cbSDimitry Andricdef : ReadAdvance<ReadIRem, 0>; 249*700637cbSDimitry Andricdef : ReadAdvance<ReadIRem32, 0>; 250*700637cbSDimitry Andricdef : ReadAdvance<ReadStoreData, 0>; 251*700637cbSDimitry Andricdef : ReadAdvance<ReadMemBase, 0>; 252*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicWA, 0>; 253*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicWD, 0>; 254*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicDA, 0>; 255*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicDD, 0>; 256*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicLDW, 0>; 257*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicLDD, 0>; 258*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicSTW, 0>; 259*700637cbSDimitry Andricdef : ReadAdvance<ReadAtomicSTD, 0>; 260*700637cbSDimitry Andricdef : ReadAdvance<ReadFStoreData, 0>; 261*700637cbSDimitry Andricdef : ReadAdvance<ReadFMemBase, 0>; 262*700637cbSDimitry Andricdef : ReadAdvance<ReadFAdd16, 0>; 263*700637cbSDimitry Andricdef : ReadAdvance<ReadFAdd32, 0>; 264*700637cbSDimitry Andricdef : ReadAdvance<ReadFAdd64, 0>; 265*700637cbSDimitry Andricdef : ReadAdvance<ReadFMul16, 0>; 266*700637cbSDimitry Andricdef : ReadAdvance<ReadFMul32, 0>; 267*700637cbSDimitry Andricdef : ReadAdvance<ReadFMul64, 0>; 268*700637cbSDimitry Andricdef : ReadAdvance<ReadFMA16, 0>; 269*700637cbSDimitry Andricdef : ReadAdvance<ReadFMA32, 0>; 270*700637cbSDimitry Andricdef : ReadAdvance<ReadFMA64, 0>; 271*700637cbSDimitry Andricdef : ReadAdvance<ReadFMA16Addend, 0>; 272*700637cbSDimitry Andricdef : ReadAdvance<ReadFMA32Addend, 0>; 273*700637cbSDimitry Andricdef : ReadAdvance<ReadFMA64Addend, 0>; 274*700637cbSDimitry Andricdef : ReadAdvance<ReadFDiv16, 0>; 275*700637cbSDimitry Andricdef : ReadAdvance<ReadFDiv32, 0>; 276*700637cbSDimitry Andricdef : ReadAdvance<ReadFDiv64, 0>; 277*700637cbSDimitry Andricdef : ReadAdvance<ReadFSqrt16, 0>; 278*700637cbSDimitry Andricdef : ReadAdvance<ReadFSqrt32, 0>; 279*700637cbSDimitry Andricdef : ReadAdvance<ReadFSqrt64, 0>; 280*700637cbSDimitry Andricdef : ReadAdvance<ReadFSGNJ16, 0>; 281*700637cbSDimitry Andricdef : ReadAdvance<ReadFSGNJ32, 0>; 282*700637cbSDimitry Andricdef : ReadAdvance<ReadFSGNJ64, 0>; 283*700637cbSDimitry Andricdef : ReadAdvance<ReadFMovF16ToI16, 0>; 284*700637cbSDimitry Andricdef : ReadAdvance<ReadFMovI16ToF16, 0>; 285*700637cbSDimitry Andricdef : ReadAdvance<ReadFMovF32ToI32, 0>; 286*700637cbSDimitry Andricdef : ReadAdvance<ReadFMovI32ToF32, 0>; 287*700637cbSDimitry Andricdef : ReadAdvance<ReadFMovF64ToI64, 0>; 288*700637cbSDimitry Andricdef : ReadAdvance<ReadFMovI64ToF64, 0>; 289*700637cbSDimitry Andricdef : ReadAdvance<ReadFMinMax16, 0>; 290*700637cbSDimitry Andricdef : ReadAdvance<ReadFMinMax32, 0>; 291*700637cbSDimitry Andricdef : ReadAdvance<ReadFMinMax64, 0>; 292*700637cbSDimitry Andricdef : ReadAdvance<ReadFClass16, 0>; 293*700637cbSDimitry Andricdef : ReadAdvance<ReadFClass32, 0>; 294*700637cbSDimitry Andricdef : ReadAdvance<ReadFClass64, 0>; 295*700637cbSDimitry Andricdef : ReadAdvance<ReadFCmp16, 0>; 296*700637cbSDimitry Andricdef : ReadAdvance<ReadFCmp32, 0>; 297*700637cbSDimitry Andricdef : ReadAdvance<ReadFCmp64, 0>; 298*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF16ToI32, 0>; 299*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF16ToI64, 0>; 300*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF32ToI32, 0>; 301*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF32ToI64, 0>; 302*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF64ToI32, 0>; 303*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF64ToI64, 0>; 304*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtI32ToF16, 0>; 305*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtI32ToF32, 0>; 306*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtI32ToF64, 0>; 307*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtI64ToF16, 0>; 308*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtI64ToF32, 0>; 309*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtI64ToF64, 0>; 310*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF16ToF32, 0>; 311*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF16ToF64, 0>; 312*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF32ToF16, 0>; 313*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF32ToF64, 0>; 314*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF64ToF16, 0>; 315*700637cbSDimitry Andricdef : ReadAdvance<ReadFCvtF64ToF32, 0>; 316*700637cbSDimitry Andricdef : ReadAdvance<ReadSHXADD, 0>; 317*700637cbSDimitry Andricdef : ReadAdvance<ReadSHXADD32, 0>; 318*700637cbSDimitry Andricdef : ReadAdvance<ReadRotateImm, 1>; 319*700637cbSDimitry Andricdef : ReadAdvance<ReadRotateImm32, 1>; 320*700637cbSDimitry Andricdef : ReadAdvance<ReadRotateReg, 1>; 321*700637cbSDimitry Andricdef : ReadAdvance<ReadRotateReg32, 1>; 322*700637cbSDimitry Andricdef : ReadAdvance<ReadCLZ, 0>; 323*700637cbSDimitry Andricdef : ReadAdvance<ReadCLZ32, 0>; 324*700637cbSDimitry Andricdef : ReadAdvance<ReadCTZ, 0>; 325*700637cbSDimitry Andricdef : ReadAdvance<ReadCTZ32, 0>; 326*700637cbSDimitry Andricdef : ReadAdvance<ReadCPOP, 0>; 327*700637cbSDimitry Andricdef : ReadAdvance<ReadCPOP32, 0>; 328*700637cbSDimitry Andricdef : ReadAdvance<ReadREV8, 0>; 329*700637cbSDimitry Andricdef : ReadAdvance<ReadORCB, 0>; 330*700637cbSDimitry Andricdef : ReadAdvance<ReadIMinMax, 0>; 331*700637cbSDimitry Andricdef : ReadAdvance<ReadCLMUL, 0>; 332*700637cbSDimitry Andricdef : ReadAdvance<ReadSingleBit, 0>; 333*700637cbSDimitry Andricdef : ReadAdvance<ReadSingleBitImm, 0>; 334*700637cbSDimitry Andricdef : ReadAdvance<ReadCSR, 0>; 335*700637cbSDimitry Andric 336*700637cbSDimitry Andric//===----------------------------------------------------------------------===// 337*700637cbSDimitry Andric// Unsupported extensions 338*700637cbSDimitry Andricdefm : UnsupportedSchedQ; 339*700637cbSDimitry Andricdefm : UnsupportedSchedV; 340*700637cbSDimitry Andricdefm : UnsupportedSchedZabha; 341*700637cbSDimitry Andricdefm : UnsupportedSchedZbkb; 342*700637cbSDimitry Andricdefm : UnsupportedSchedZbkx; 343*700637cbSDimitry Andricdefm : UnsupportedSchedZfa; 344*700637cbSDimitry Andricdefm : UnsupportedSchedZvk; 345*700637cbSDimitry Andricdefm : UnsupportedSchedXsf; 346*700637cbSDimitry Andric} 347