1*9880d681SAndroid Build Coastguard Worker//===- Mips16InstrFormats.td - Mips Instruction Formats ----*- tablegen -*-===// 2*9880d681SAndroid Build Coastguard Worker// 3*9880d681SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker// 5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker// 8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 11*9880d681SAndroid Build Coastguard Worker// Describe MIPS instructions format 12*9880d681SAndroid Build Coastguard Worker// 13*9880d681SAndroid Build Coastguard Worker// CPU INSTRUCTION FORMATS 14*9880d681SAndroid Build Coastguard Worker// 15*9880d681SAndroid Build Coastguard Worker// funct or f Function field 16*9880d681SAndroid Build Coastguard Worker// 17*9880d681SAndroid Build Coastguard Worker// immediate 4-,5-,8- or 11-bit immediate, branch displacement, or 18*9880d681SAndroid Build Coastguard Worker// or imm address displacement 19*9880d681SAndroid Build Coastguard Worker// 20*9880d681SAndroid Build Coastguard Worker// op 5-bit major operation code 21*9880d681SAndroid Build Coastguard Worker// 22*9880d681SAndroid Build Coastguard Worker// rx 3-bit source or destination register 23*9880d681SAndroid Build Coastguard Worker// 24*9880d681SAndroid Build Coastguard Worker// ry 3-bit source or destination register 25*9880d681SAndroid Build Coastguard Worker// 26*9880d681SAndroid Build Coastguard Worker// rz 3-bit source or destination register 27*9880d681SAndroid Build Coastguard Worker// 28*9880d681SAndroid Build Coastguard Worker// sa 3- or 5-bit shift amount 29*9880d681SAndroid Build Coastguard Worker// 30*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker// Base class for Mips 16 Format 34*9880d681SAndroid Build Coastguard Worker// This class does not depend on the instruction size 35*9880d681SAndroid Build Coastguard Worker// 36*9880d681SAndroid Build Coastguard Workerclass MipsInst16_Base<dag outs, dag ins, string asmstr, list<dag> pattern, 37*9880d681SAndroid Build Coastguard Worker InstrItinClass itin>: Instruction 38*9880d681SAndroid Build Coastguard Worker{ 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker let Namespace = "Mips"; 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker let OutOperandList = outs; 43*9880d681SAndroid Build Coastguard Worker let InOperandList = ins; 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker let AsmString = asmstr; 46*9880d681SAndroid Build Coastguard Worker let Pattern = pattern; 47*9880d681SAndroid Build Coastguard Worker let Itinerary = itin; 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker let Predicates = [InMips16Mode]; 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker// 53*9880d681SAndroid Build Coastguard Worker// Generic Mips 16 Format 54*9880d681SAndroid Build Coastguard Worker// 55*9880d681SAndroid Build Coastguard Workerclass MipsInst16<dag outs, dag ins, string asmstr, list<dag> pattern, 56*9880d681SAndroid Build Coastguard Worker InstrItinClass itin>: 57*9880d681SAndroid Build Coastguard Worker MipsInst16_Base<outs, ins, asmstr, pattern, itin> 58*9880d681SAndroid Build Coastguard Worker{ 59*9880d681SAndroid Build Coastguard Worker field bits<16> Inst; 60*9880d681SAndroid Build Coastguard Worker bits<5> Opcode = 0; 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker // Top 5 bits are the 'opcode' field 63*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = Opcode; 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker let Size=2; 66*9880d681SAndroid Build Coastguard Worker field bits<16> SoftFail = 0; 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker// 70*9880d681SAndroid Build Coastguard Worker// For 32 bit extended instruction forms. 71*9880d681SAndroid Build Coastguard Worker// 72*9880d681SAndroid Build Coastguard Workerclass MipsInst16_32<dag outs, dag ins, string asmstr, list<dag> pattern, 73*9880d681SAndroid Build Coastguard Worker InstrItinClass itin>: 74*9880d681SAndroid Build Coastguard Worker MipsInst16_Base<outs, ins, asmstr, pattern, itin> 75*9880d681SAndroid Build Coastguard Worker{ 76*9880d681SAndroid Build Coastguard Worker field bits<32> Inst; 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker let Size=4; 79*9880d681SAndroid Build Coastguard Worker field bits<32> SoftFail = 0; 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Workerclass MipsInst16_EXTEND<dag outs, dag ins, string asmstr, list<dag> pattern, 83*9880d681SAndroid Build Coastguard Worker InstrItinClass itin>: 84*9880d681SAndroid Build Coastguard Worker MipsInst16_32<outs, ins, asmstr, pattern, itin> 85*9880d681SAndroid Build Coastguard Worker{ 86*9880d681SAndroid Build Coastguard Worker let Inst{31-27} = 0b11110; 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker// Mips Pseudo Instructions Format 92*9880d681SAndroid Build Coastguard Workerclass MipsPseudo16<dag outs, dag ins, string asmstr, list<dag> pattern>: 93*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, IIPseudo> { 94*9880d681SAndroid Build Coastguard Worker let isCodeGenOnly = 1; 95*9880d681SAndroid Build Coastguard Worker let isPseudo = 1; 96*9880d681SAndroid Build Coastguard Worker} 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 100*9880d681SAndroid Build Coastguard Worker// Format I instruction class in Mips : <|opcode|imm11|> 101*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Workerclass FI16<bits<5> op, dag outs, dag ins, string asmstr, list<dag> pattern, 104*9880d681SAndroid Build Coastguard Worker InstrItinClass itin>: 105*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 106*9880d681SAndroid Build Coastguard Worker{ 107*9880d681SAndroid Build Coastguard Worker bits<11> imm11; 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker let Opcode = op; 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Worker let Inst{10-0} = imm11; 112*9880d681SAndroid Build Coastguard Worker} 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 115*9880d681SAndroid Build Coastguard Worker// Format RI instruction class in Mips : <|opcode|rx|imm8|> 116*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerclass FRI16<bits<5> op, dag outs, dag ins, string asmstr, 119*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 120*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 121*9880d681SAndroid Build Coastguard Worker{ 122*9880d681SAndroid Build Coastguard Worker bits<3> rx; 123*9880d681SAndroid Build Coastguard Worker bits<8> imm8; 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker let Opcode = op; 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 128*9880d681SAndroid Build Coastguard Worker let Inst{7-0} = imm8; 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 132*9880d681SAndroid Build Coastguard Worker// Format RR instruction class in Mips : <|opcode|rx|ry|funct|> 133*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Workerclass FRR16<bits<5> _funct, dag outs, dag ins, string asmstr, 136*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 137*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 138*9880d681SAndroid Build Coastguard Worker{ 139*9880d681SAndroid Build Coastguard Worker bits<3> rx; 140*9880d681SAndroid Build Coastguard Worker bits<3> ry; 141*9880d681SAndroid Build Coastguard Worker bits<5> funct; 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker let Opcode = 0b11101; 144*9880d681SAndroid Build Coastguard Worker let funct = _funct; 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 147*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 148*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = funct; 149*9880d681SAndroid Build Coastguard Worker} 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerclass FRRBreak16<dag outs, dag ins, string asmstr, 152*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 153*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 154*9880d681SAndroid Build Coastguard Worker{ 155*9880d681SAndroid Build Coastguard Worker bits<6> Code; 156*9880d681SAndroid Build Coastguard Worker bits<5> funct; 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker let Opcode = 0b11101; 159*9880d681SAndroid Build Coastguard Worker let funct = 0b00101; 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker let Inst{10-5} = Code; 162*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = funct; 163*9880d681SAndroid Build Coastguard Worker} 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Worker// 166*9880d681SAndroid Build Coastguard Worker// For conversion functions. 167*9880d681SAndroid Build Coastguard Worker// 168*9880d681SAndroid Build Coastguard Workerclass FRR_SF16<bits<5> _funct, bits<3> _subfunct, dag outs, dag ins, 169*9880d681SAndroid Build Coastguard Worker string asmstr, list<dag> pattern, InstrItinClass itin>: 170*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 171*9880d681SAndroid Build Coastguard Worker{ 172*9880d681SAndroid Build Coastguard Worker bits<3> rx; 173*9880d681SAndroid Build Coastguard Worker bits<3> subfunct; 174*9880d681SAndroid Build Coastguard Worker bits<5> funct; 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Worker let Opcode = 0b11101; // RR 177*9880d681SAndroid Build Coastguard Worker let funct = _funct; 178*9880d681SAndroid Build Coastguard Worker let subfunct = _subfunct; 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 181*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = subfunct; 182*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = funct; 183*9880d681SAndroid Build Coastguard Worker} 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Worker// 186*9880d681SAndroid Build Coastguard Worker// just used for breakpoint (hardware and software) instructions. 187*9880d681SAndroid Build Coastguard Worker// 188*9880d681SAndroid Build Coastguard Workerclass FC16<bits<5> _funct, dag outs, dag ins, string asmstr, 189*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 190*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 191*9880d681SAndroid Build Coastguard Worker{ 192*9880d681SAndroid Build Coastguard Worker bits<6> _code; // code is a keyword in tablegen 193*9880d681SAndroid Build Coastguard Worker bits<5> funct; 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker let Opcode = 0b11101; // RR 196*9880d681SAndroid Build Coastguard Worker let funct = _funct; 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Worker let Inst{10-5} = _code; 199*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = funct; 200*9880d681SAndroid Build Coastguard Worker} 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Worker// 203*9880d681SAndroid Build Coastguard Worker// J(AL)R(C) subformat 204*9880d681SAndroid Build Coastguard Worker// 205*9880d681SAndroid Build Coastguard Workerclass FRR16_JALRC<bits<1> _nd, bits<1> _l, bits<1> r_a, 206*9880d681SAndroid Build Coastguard Worker dag outs, dag ins, string asmstr, 207*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 208*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 209*9880d681SAndroid Build Coastguard Worker{ 210*9880d681SAndroid Build Coastguard Worker bits<3> rx; 211*9880d681SAndroid Build Coastguard Worker bits<1> nd; 212*9880d681SAndroid Build Coastguard Worker bits<1> l; 213*9880d681SAndroid Build Coastguard Worker bits<1> ra; 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker let nd = _nd; 216*9880d681SAndroid Build Coastguard Worker let l = _l; 217*9880d681SAndroid Build Coastguard Worker let ra = r_a; 218*9880d681SAndroid Build Coastguard Worker 219*9880d681SAndroid Build Coastguard Worker let Opcode = 0b11101; 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 222*9880d681SAndroid Build Coastguard Worker let Inst{7} = nd; 223*9880d681SAndroid Build Coastguard Worker let Inst{6} = l; 224*9880d681SAndroid Build Coastguard Worker let Inst{5} = ra; 225*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = 0; 226*9880d681SAndroid Build Coastguard Worker} 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 229*9880d681SAndroid Build Coastguard Worker// Format RRI instruction class in Mips : <|opcode|rx|ry|imm5|> 230*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Workerclass FRRI16<bits<5> op, dag outs, dag ins, string asmstr, 233*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 234*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 235*9880d681SAndroid Build Coastguard Worker{ 236*9880d681SAndroid Build Coastguard Worker bits<3> rx; 237*9880d681SAndroid Build Coastguard Worker bits<3> ry; 238*9880d681SAndroid Build Coastguard Worker bits<5> imm5; 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Worker let Opcode = op; 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 244*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 245*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = imm5; 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 249*9880d681SAndroid Build Coastguard Worker// Format RRR instruction class in Mips : <|opcode|rx|ry|rz|f|> 250*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Workerclass FRRR16<bits<2> _f, dag outs, dag ins, string asmstr, 253*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 254*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 255*9880d681SAndroid Build Coastguard Worker{ 256*9880d681SAndroid Build Coastguard Worker bits<3> rx; 257*9880d681SAndroid Build Coastguard Worker bits<3> ry; 258*9880d681SAndroid Build Coastguard Worker bits<3> rz; 259*9880d681SAndroid Build Coastguard Worker bits<2> f; 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Worker let Opcode = 0b11100; 262*9880d681SAndroid Build Coastguard Worker let f = _f; 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 265*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 266*9880d681SAndroid Build Coastguard Worker let Inst{4-2} = rz; 267*9880d681SAndroid Build Coastguard Worker let Inst{1-0} = f; 268*9880d681SAndroid Build Coastguard Worker} 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 271*9880d681SAndroid Build Coastguard Worker// Format RRI-A instruction class in Mips : <|opcode|rx|ry|f|imm4|> 272*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerclass FRRI_A16<bits<1> _f, dag outs, dag ins, string asmstr, 275*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 276*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 277*9880d681SAndroid Build Coastguard Worker{ 278*9880d681SAndroid Build Coastguard Worker bits<3> rx; 279*9880d681SAndroid Build Coastguard Worker bits<3> ry; 280*9880d681SAndroid Build Coastguard Worker bits<1> f; 281*9880d681SAndroid Build Coastguard Worker bits<4> imm4; 282*9880d681SAndroid Build Coastguard Worker 283*9880d681SAndroid Build Coastguard Worker let Opcode = 0b01000; 284*9880d681SAndroid Build Coastguard Worker let f = _f; 285*9880d681SAndroid Build Coastguard Worker 286*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 287*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 288*9880d681SAndroid Build Coastguard Worker let Inst{4} = f; 289*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = imm4; 290*9880d681SAndroid Build Coastguard Worker} 291*9880d681SAndroid Build Coastguard Worker 292*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 293*9880d681SAndroid Build Coastguard Worker// Format Shift instruction class in Mips : <|opcode|rx|ry|sa|f|> 294*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Workerclass FSHIFT16<bits<2> _f, dag outs, dag ins, string asmstr, 297*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 298*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 299*9880d681SAndroid Build Coastguard Worker{ 300*9880d681SAndroid Build Coastguard Worker bits<3> rx; 301*9880d681SAndroid Build Coastguard Worker bits<3> ry; 302*9880d681SAndroid Build Coastguard Worker bits<3> sa; 303*9880d681SAndroid Build Coastguard Worker bits<2> f; 304*9880d681SAndroid Build Coastguard Worker 305*9880d681SAndroid Build Coastguard Worker let Opcode = 0b00110; 306*9880d681SAndroid Build Coastguard Worker let f = _f; 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 309*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 310*9880d681SAndroid Build Coastguard Worker let Inst{4-2} = sa; 311*9880d681SAndroid Build Coastguard Worker let Inst{1-0} = f; 312*9880d681SAndroid Build Coastguard Worker} 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 315*9880d681SAndroid Build Coastguard Worker// Format i8 instruction class in Mips : <|opcode|funct|imm8> 316*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 317*9880d681SAndroid Build Coastguard Worker 318*9880d681SAndroid Build Coastguard Workerclass FI816<bits<3> _func, dag outs, dag ins, string asmstr, 319*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 320*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 321*9880d681SAndroid Build Coastguard Worker{ 322*9880d681SAndroid Build Coastguard Worker bits<3> func; 323*9880d681SAndroid Build Coastguard Worker bits<8> imm8; 324*9880d681SAndroid Build Coastguard Worker 325*9880d681SAndroid Build Coastguard Worker let Opcode = 0b01100; 326*9880d681SAndroid Build Coastguard Worker let func = _func; 327*9880d681SAndroid Build Coastguard Worker 328*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = func; 329*9880d681SAndroid Build Coastguard Worker let Inst{7-0} = imm8; 330*9880d681SAndroid Build Coastguard Worker} 331*9880d681SAndroid Build Coastguard Worker 332*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 333*9880d681SAndroid Build Coastguard Worker// Format i8_MOVR32 instruction class in Mips : <|opcode|func|ry|r32> 334*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerclass FI8_MOVR3216<dag outs, dag ins, string asmstr, 337*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 338*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 339*9880d681SAndroid Build Coastguard Worker{ 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Worker bits<4> ry; 342*9880d681SAndroid Build Coastguard Worker bits<4> r32; 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Worker let Opcode = 0b01100; 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = 0b111; 347*9880d681SAndroid Build Coastguard Worker let Inst{7-4} = ry; 348*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = r32; 349*9880d681SAndroid Build Coastguard Worker 350*9880d681SAndroid Build Coastguard Worker} 351*9880d681SAndroid Build Coastguard Worker 352*9880d681SAndroid Build Coastguard Worker 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 355*9880d681SAndroid Build Coastguard Worker// Format i8_MOV32R instruction class in Mips : <|opcode|func|r32|rz> 356*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard Workerclass FI8_MOV32R16<dag outs, dag ins, string asmstr, 359*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 360*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 361*9880d681SAndroid Build Coastguard Worker{ 362*9880d681SAndroid Build Coastguard Worker 363*9880d681SAndroid Build Coastguard Worker bits<3> func; 364*9880d681SAndroid Build Coastguard Worker bits<5> r32; 365*9880d681SAndroid Build Coastguard Worker bits<3> rz; 366*9880d681SAndroid Build Coastguard Worker 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Worker let Opcode = 0b01100; 369*9880d681SAndroid Build Coastguard Worker 370*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = 0b101; 371*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = r32{2-0}; 372*9880d681SAndroid Build Coastguard Worker let Inst{4-3} = r32{4-3}; 373*9880d681SAndroid Build Coastguard Worker let Inst{2-0} = rz; 374*9880d681SAndroid Build Coastguard Worker 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 378*9880d681SAndroid Build Coastguard Worker// Format i8_SVRS instruction class in Mips : 379*9880d681SAndroid Build Coastguard Worker// <|opcode|svrs|s|ra|s0|s1|framesize> 380*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 381*9880d681SAndroid Build Coastguard Worker 382*9880d681SAndroid Build Coastguard Workerclass FI8_SVRS16<bits<1> _s, dag outs, dag ins, string asmstr, 383*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 384*9880d681SAndroid Build Coastguard Worker MipsInst16<outs, ins, asmstr, pattern, itin> 385*9880d681SAndroid Build Coastguard Worker{ 386*9880d681SAndroid Build Coastguard Worker bits<1> s; 387*9880d681SAndroid Build Coastguard Worker bits<1> ra = 0; 388*9880d681SAndroid Build Coastguard Worker bits<1> s0 = 0; 389*9880d681SAndroid Build Coastguard Worker bits<1> s1 = 0; 390*9880d681SAndroid Build Coastguard Worker bits<4> framesize = 0; 391*9880d681SAndroid Build Coastguard Worker 392*9880d681SAndroid Build Coastguard Worker let s =_s; 393*9880d681SAndroid Build Coastguard Worker let Opcode = 0b01100; 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = 0b100; 396*9880d681SAndroid Build Coastguard Worker let Inst{7} = s; 397*9880d681SAndroid Build Coastguard Worker let Inst{6} = ra; 398*9880d681SAndroid Build Coastguard Worker let Inst{5} = s0; 399*9880d681SAndroid Build Coastguard Worker let Inst{4} = s1; 400*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = framesize; 401*9880d681SAndroid Build Coastguard Worker 402*9880d681SAndroid Build Coastguard Worker} 403*9880d681SAndroid Build Coastguard Worker 404*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 405*9880d681SAndroid Build Coastguard Worker// Format JAL instruction class in Mips16 : 406*9880d681SAndroid Build Coastguard Worker// <|opcode|svrs|s|ra|s0|s1|framesize> 407*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 408*9880d681SAndroid Build Coastguard Worker 409*9880d681SAndroid Build Coastguard Workerclass FJAL16<bits<1> _X, dag outs, dag ins, string asmstr, 410*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 411*9880d681SAndroid Build Coastguard Worker MipsInst16_32<outs, ins, asmstr, pattern, itin> 412*9880d681SAndroid Build Coastguard Worker{ 413*9880d681SAndroid Build Coastguard Worker bits<1> X; 414*9880d681SAndroid Build Coastguard Worker bits<26> imm26; 415*9880d681SAndroid Build Coastguard Worker 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Worker let X = _X; 418*9880d681SAndroid Build Coastguard Worker 419*9880d681SAndroid Build Coastguard Worker let Inst{31-27} = 0b00011; 420*9880d681SAndroid Build Coastguard Worker let Inst{26} = X; 421*9880d681SAndroid Build Coastguard Worker let Inst{25-21} = imm26{20-16}; 422*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = imm26{25-21}; 423*9880d681SAndroid Build Coastguard Worker let Inst{15-0} = imm26{15-0}; 424*9880d681SAndroid Build Coastguard Worker 425*9880d681SAndroid Build Coastguard Worker} 426*9880d681SAndroid Build Coastguard Worker 427*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 428*9880d681SAndroid Build Coastguard Worker// Format EXT-I instruction class in Mips16 : 429*9880d681SAndroid Build Coastguard Worker// <|EXTEND|imm10:5|imm15:11|op|0|0|0|0|0|0|imm4:0> 430*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Workerclass FEXT_I16<bits<5> _eop, dag outs, dag ins, string asmstr, 433*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 434*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 435*9880d681SAndroid Build Coastguard Worker{ 436*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 437*9880d681SAndroid Build Coastguard Worker bits<5> eop; 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker let eop = _eop; 440*9880d681SAndroid Build Coastguard Worker 441*9880d681SAndroid Build Coastguard Worker let Inst{26-21} = imm16{10-5}; 442*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = imm16{15-11}; 443*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = eop; 444*9880d681SAndroid Build Coastguard Worker let Inst{10-5} = 0; 445*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = imm16{4-0}; 446*9880d681SAndroid Build Coastguard Worker 447*9880d681SAndroid Build Coastguard Worker} 448*9880d681SAndroid Build Coastguard Worker 449*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 450*9880d681SAndroid Build Coastguard Worker// Format ASMACRO instruction class in Mips16 : 451*9880d681SAndroid Build Coastguard Worker// <EXTEND|select|p4|p3|RRR|p2|p1|p0> 452*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 453*9880d681SAndroid Build Coastguard Worker 454*9880d681SAndroid Build Coastguard Workerclass FASMACRO16<dag outs, dag ins, string asmstr, 455*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 456*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 457*9880d681SAndroid Build Coastguard Worker{ 458*9880d681SAndroid Build Coastguard Worker bits<3> select; 459*9880d681SAndroid Build Coastguard Worker bits<3> p4; 460*9880d681SAndroid Build Coastguard Worker bits<5> p3; 461*9880d681SAndroid Build Coastguard Worker bits<5> RRR = 0b11100; 462*9880d681SAndroid Build Coastguard Worker bits<3> p2; 463*9880d681SAndroid Build Coastguard Worker bits<3> p1; 464*9880d681SAndroid Build Coastguard Worker bits<5> p0; 465*9880d681SAndroid Build Coastguard Worker 466*9880d681SAndroid Build Coastguard Worker 467*9880d681SAndroid Build Coastguard Worker let Inst{26-24} = select; 468*9880d681SAndroid Build Coastguard Worker let Inst{23-21} = p4; 469*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = p3; 470*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = RRR; 471*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = p2; 472*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = p1; 473*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = p0; 474*9880d681SAndroid Build Coastguard Worker 475*9880d681SAndroid Build Coastguard Worker} 476*9880d681SAndroid Build Coastguard Worker 477*9880d681SAndroid Build Coastguard Worker 478*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 479*9880d681SAndroid Build Coastguard Worker// Format EXT-RI instruction class in Mips16 : 480*9880d681SAndroid Build Coastguard Worker// <|EXTEND|imm10:5|imm15:11|op|rx|0|0|0|imm4:0> 481*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Workerclass FEXT_RI16<bits<5> _op, dag outs, dag ins, string asmstr, 484*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 485*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 486*9880d681SAndroid Build Coastguard Worker{ 487*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 488*9880d681SAndroid Build Coastguard Worker bits<5> op; 489*9880d681SAndroid Build Coastguard Worker bits<3> rx; 490*9880d681SAndroid Build Coastguard Worker 491*9880d681SAndroid Build Coastguard Worker let op = _op; 492*9880d681SAndroid Build Coastguard Worker 493*9880d681SAndroid Build Coastguard Worker let Inst{26-21} = imm16{10-5}; 494*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = imm16{15-11}; 495*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = op; 496*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 497*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = 0; 498*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = imm16{4-0}; 499*9880d681SAndroid Build Coastguard Worker 500*9880d681SAndroid Build Coastguard Worker} 501*9880d681SAndroid Build Coastguard Worker 502*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 503*9880d681SAndroid Build Coastguard Worker// Format EXT-RRI instruction class in Mips16 : 504*9880d681SAndroid Build Coastguard Worker// <|EXTEND|imm10:5|imm15:11|op|rx|ry|imm4:0> 505*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 506*9880d681SAndroid Build Coastguard Worker 507*9880d681SAndroid Build Coastguard Workerclass FEXT_RRI16<bits<5> _op, dag outs, dag ins, string asmstr, 508*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 509*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 510*9880d681SAndroid Build Coastguard Worker{ 511*9880d681SAndroid Build Coastguard Worker bits<5> op; 512*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 513*9880d681SAndroid Build Coastguard Worker bits<3> rx; 514*9880d681SAndroid Build Coastguard Worker bits<3> ry; 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Worker let op=_op; 517*9880d681SAndroid Build Coastguard Worker 518*9880d681SAndroid Build Coastguard Worker let Inst{26-21} = imm16{10-5}; 519*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = imm16{15-11}; 520*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = op; 521*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 522*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 523*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = imm16{4-0}; 524*9880d681SAndroid Build Coastguard Worker 525*9880d681SAndroid Build Coastguard Worker} 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 528*9880d681SAndroid Build Coastguard Worker// Format EXT-RRI-A instruction class in Mips16 : 529*9880d681SAndroid Build Coastguard Worker// <|EXTEND|imm10:4|imm14:11|RRI-A|rx|ry|f|imm3:0> 530*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 531*9880d681SAndroid Build Coastguard Worker 532*9880d681SAndroid Build Coastguard Workerclass FEXT_RRI_A16<bits<1> _f, dag outs, dag ins, string asmstr, 533*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 534*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 535*9880d681SAndroid Build Coastguard Worker{ 536*9880d681SAndroid Build Coastguard Worker bits<15> imm15; 537*9880d681SAndroid Build Coastguard Worker bits<3> rx; 538*9880d681SAndroid Build Coastguard Worker bits<3> ry; 539*9880d681SAndroid Build Coastguard Worker bits<1> f; 540*9880d681SAndroid Build Coastguard Worker 541*9880d681SAndroid Build Coastguard Worker let f = _f; 542*9880d681SAndroid Build Coastguard Worker 543*9880d681SAndroid Build Coastguard Worker let Inst{26-20} = imm15{10-4}; 544*9880d681SAndroid Build Coastguard Worker let Inst{19-16} = imm15{14-11}; 545*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = 0b01000; 546*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 547*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 548*9880d681SAndroid Build Coastguard Worker let Inst{4} = f; 549*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = imm15{3-0}; 550*9880d681SAndroid Build Coastguard Worker 551*9880d681SAndroid Build Coastguard Worker} 552*9880d681SAndroid Build Coastguard Worker 553*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 554*9880d681SAndroid Build Coastguard Worker// Format EXT-SHIFT instruction class in Mips16 : 555*9880d681SAndroid Build Coastguard Worker// <|EXTEND|sa 4:0|s5|0|SHIFT|rx|ry|0|f> 556*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 557*9880d681SAndroid Build Coastguard Worker 558*9880d681SAndroid Build Coastguard Workerclass FEXT_SHIFT16<bits<2> _f, dag outs, dag ins, string asmstr, 559*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 560*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 561*9880d681SAndroid Build Coastguard Worker{ 562*9880d681SAndroid Build Coastguard Worker bits<6> sa6; 563*9880d681SAndroid Build Coastguard Worker bits<3> rx; 564*9880d681SAndroid Build Coastguard Worker bits<3> ry; 565*9880d681SAndroid Build Coastguard Worker bits<2> f; 566*9880d681SAndroid Build Coastguard Worker 567*9880d681SAndroid Build Coastguard Worker let f = _f; 568*9880d681SAndroid Build Coastguard Worker 569*9880d681SAndroid Build Coastguard Worker let Inst{26-22} = sa6{4-0}; 570*9880d681SAndroid Build Coastguard Worker let Inst{21} = sa6{5}; 571*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = 0; 572*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = 0b00110; 573*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = rx; 574*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = ry; 575*9880d681SAndroid Build Coastguard Worker let Inst{4-2} = 0; 576*9880d681SAndroid Build Coastguard Worker let Inst{1-0} = f; 577*9880d681SAndroid Build Coastguard Worker 578*9880d681SAndroid Build Coastguard Worker} 579*9880d681SAndroid Build Coastguard Worker 580*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 581*9880d681SAndroid Build Coastguard Worker// Format EXT-I8 instruction class in Mips16 : 582*9880d681SAndroid Build Coastguard Worker// <|EXTEND|imm10:5|imm15:11|I8|funct|0|imm4:0> 583*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 584*9880d681SAndroid Build Coastguard Worker 585*9880d681SAndroid Build Coastguard Workerclass FEXT_I816<bits<3> _funct, dag outs, dag ins, string asmstr, 586*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 587*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 588*9880d681SAndroid Build Coastguard Worker{ 589*9880d681SAndroid Build Coastguard Worker bits<16> imm16; 590*9880d681SAndroid Build Coastguard Worker bits<5> I8; 591*9880d681SAndroid Build Coastguard Worker bits<3> funct; 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Worker let funct = _funct; 594*9880d681SAndroid Build Coastguard Worker let I8 = 0b00110; 595*9880d681SAndroid Build Coastguard Worker 596*9880d681SAndroid Build Coastguard Worker let Inst{26-21} = imm16{10-5}; 597*9880d681SAndroid Build Coastguard Worker let Inst{20-16} = imm16{15-11}; 598*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = I8; 599*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = funct; 600*9880d681SAndroid Build Coastguard Worker let Inst{7-5} = 0; 601*9880d681SAndroid Build Coastguard Worker let Inst{4-0} = imm16{4-0}; 602*9880d681SAndroid Build Coastguard Worker 603*9880d681SAndroid Build Coastguard Worker} 604*9880d681SAndroid Build Coastguard Worker 605*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 606*9880d681SAndroid Build Coastguard Worker// Format EXT-I8_SVRS instruction class in Mips16 : 607*9880d681SAndroid Build Coastguard Worker// <|EXTEND|xsregs|framesize7:4|aregs|I8|SVRS|s|ra|s0|s1|framesize3:0> 608*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 609*9880d681SAndroid Build Coastguard Worker 610*9880d681SAndroid Build Coastguard Workerclass FEXT_I8_SVRS16<bits<1> s_, dag outs, dag ins, string asmstr, 611*9880d681SAndroid Build Coastguard Worker list<dag> pattern, InstrItinClass itin>: 612*9880d681SAndroid Build Coastguard Worker MipsInst16_EXTEND<outs, ins, asmstr, pattern, itin> 613*9880d681SAndroid Build Coastguard Worker{ 614*9880d681SAndroid Build Coastguard Worker bits<3> xsregs =0; 615*9880d681SAndroid Build Coastguard Worker bits<8> framesize =0; 616*9880d681SAndroid Build Coastguard Worker bits<3> aregs =0; 617*9880d681SAndroid Build Coastguard Worker bits<5> I8 = 0b01100; 618*9880d681SAndroid Build Coastguard Worker bits<3> SVRS = 0b100; 619*9880d681SAndroid Build Coastguard Worker bits<1> s; 620*9880d681SAndroid Build Coastguard Worker bits<1> ra = 0; 621*9880d681SAndroid Build Coastguard Worker bits<1> s0 = 0; 622*9880d681SAndroid Build Coastguard Worker bits<1> s1 = 0; 623*9880d681SAndroid Build Coastguard Worker 624*9880d681SAndroid Build Coastguard Worker let s= s_; 625*9880d681SAndroid Build Coastguard Worker 626*9880d681SAndroid Build Coastguard Worker let Inst{26-24} = xsregs; 627*9880d681SAndroid Build Coastguard Worker let Inst{23-20} = framesize{7-4}; 628*9880d681SAndroid Build Coastguard Worker let Inst{19} = 0; 629*9880d681SAndroid Build Coastguard Worker let Inst{18-16} = aregs; 630*9880d681SAndroid Build Coastguard Worker let Inst{15-11} = I8; 631*9880d681SAndroid Build Coastguard Worker let Inst{10-8} = SVRS; 632*9880d681SAndroid Build Coastguard Worker let Inst{7} = s; 633*9880d681SAndroid Build Coastguard Worker let Inst{6} = ra; 634*9880d681SAndroid Build Coastguard Worker let Inst{5} = s0; 635*9880d681SAndroid Build Coastguard Worker let Inst{4} = s1; 636*9880d681SAndroid Build Coastguard Worker let Inst{3-0} = framesize{3-0}; 637*9880d681SAndroid Build Coastguard Worker 638*9880d681SAndroid Build Coastguard Worker 639*9880d681SAndroid Build Coastguard Worker} 640*9880d681SAndroid Build Coastguard Worker 641