133388ae8SLu Weining//===- LoongArchInstrFormats.td - LoongArch Instr. Formats -*- tablegen -*-===// 233388ae8SLu Weining// 333388ae8SLu Weining// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 433388ae8SLu Weining// See https://llvm.org/LICENSE.txt for license information. 533388ae8SLu Weining// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 633388ae8SLu Weining// 733388ae8SLu Weining//===----------------------------------------------------------------------===// 833388ae8SLu Weining 933388ae8SLu Weining//===----------------------------------------------------------------------===// 1033388ae8SLu Weining// Describe LoongArch instructions format 1133388ae8SLu Weining// 1233388ae8SLu Weining// opcode - operation code. 133a49ad71SWeining Lu// rd - destination register operand. 143a49ad71SWeining Lu// r{j/k} - source register operand. 153a49ad71SWeining Lu// immN - immediate data operand. 1633388ae8SLu Weining// 1733388ae8SLu Weining//===----------------------------------------------------------------------===// 1833388ae8SLu Weining 19ca3c746bSWeining Luclass LAInst<dag outs, dag ins, string opcstr, string opnstr, 20ca3c746bSWeining Lu list<dag> pattern = []> 2133388ae8SLu Weining : Instruction { 2233388ae8SLu Weining field bits<32> Inst; 2333388ae8SLu Weining // SoftFail is a field the disassembler can use to provide a way for 2433388ae8SLu Weining // instructions to not match without killing the whole decode process. It is 2533388ae8SLu Weining // mainly used for ARM, but Tablegen expects this field to exist or it fails 2633388ae8SLu Weining // to build the decode table. 2733388ae8SLu Weining field bits<32> SoftFail = 0; 2833388ae8SLu Weining 2933388ae8SLu Weining let Namespace = "LoongArch"; 3033388ae8SLu Weining let Size = 4; 3133388ae8SLu Weining let OutOperandList = outs; 3233388ae8SLu Weining let InOperandList = ins; 33ca3c746bSWeining Lu let AsmString = opcstr # "\t" # opnstr; 3433388ae8SLu Weining let Pattern = pattern; 35*8234c612SWÁNG Xuěruì 36*8234c612SWÁNG Xuěruì // Target-specific instruction info and defaults 37*8234c612SWÁNG Xuěruì 38*8234c612SWÁNG Xuěruì bit IsSubjectToAMORdConstraint = 0; 39*8234c612SWÁNG Xuěruì let TSFlags{0} = IsSubjectToAMORdConstraint; 40*8234c612SWÁNG Xuěruì 41*8234c612SWÁNG Xuěruì bit IsAMCAS = 0; 42*8234c612SWÁNG Xuěruì let TSFlags{1} = IsAMCAS; 4333388ae8SLu Weining} 4433388ae8SLu Weining 4533388ae8SLu Weining// Pseudo instructions 46ca3c746bSWeining Luclass Pseudo<dag outs, dag ins, list<dag> pattern = [], string opcstr = "", 47ca3c746bSWeining Lu string opnstr = ""> 48ca3c746bSWeining Lu : LAInst<outs, ins, opcstr, opnstr, pattern> { 4933388ae8SLu Weining let isPseudo = 1; 50a1c67439Swanglei let isCodeGenOnly = 1; 5133388ae8SLu Weining} 5233388ae8SLu Weining 53294bee10SWANG Xueruiclass deriveInsnMnemonic<string name> { 54294bee10SWANG Xuerui string ret = !tolower(!subst("@", "_", !subst("_", ".", !subst("__", "@", name)))); 55294bee10SWANG Xuerui} 56294bee10SWANG Xuerui 5733388ae8SLu Weining// 2R-type 5833388ae8SLu Weining// <opcode | rj | rd> 5946aec7bcSwangleiclass Fmt2R<bits<32> op, dag outs, dag ins, string opnstr, 605b32102cSWeining Lu list<dag> pattern = []> 61294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 6233388ae8SLu Weining bits<5> rj; 6333388ae8SLu Weining bits<5> rd; 6433388ae8SLu Weining 6546aec7bcSwanglei let Inst{31-0} = op; 6633388ae8SLu Weining let Inst{9-5} = rj; 6733388ae8SLu Weining let Inst{4-0} = rd; 6833388ae8SLu Weining} 6933388ae8SLu Weining 7033388ae8SLu Weining// 3R-type 7133388ae8SLu Weining// <opcode | rk | rj | rd> 7246aec7bcSwangleiclass Fmt3R<bits<32> op, dag outs, dag ins, string opnstr, 735b32102cSWeining Lu list<dag> pattern = []> 74294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 7533388ae8SLu Weining bits<5> rk; 7633388ae8SLu Weining bits<5> rj; 7733388ae8SLu Weining bits<5> rd; 7833388ae8SLu Weining 7946aec7bcSwanglei let Inst{31-0} = op; 8033388ae8SLu Weining let Inst{14-10} = rk; 8133388ae8SLu Weining let Inst{9-5} = rj; 8233388ae8SLu Weining let Inst{4-0} = rd; 8333388ae8SLu Weining} 8433388ae8SLu Weining 8533388ae8SLu Weining// 3RI2-type 8633388ae8SLu Weining// <opcode | I2 | rk | rj | rd> 8746aec7bcSwangleiclass Fmt3RI2<bits<32> op, dag outs, dag ins, string opnstr, 885b32102cSWeining Lu list<dag> pattern = []> 89294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 9033388ae8SLu Weining bits<2> imm2; 9133388ae8SLu Weining bits<5> rk; 9233388ae8SLu Weining bits<5> rj; 9333388ae8SLu Weining bits<5> rd; 9433388ae8SLu Weining 9546aec7bcSwanglei let Inst{31-0} = op; 9633388ae8SLu Weining let Inst{16-15} = imm2; 9733388ae8SLu Weining let Inst{14-10} = rk; 9833388ae8SLu Weining let Inst{9-5} = rj; 9933388ae8SLu Weining let Inst{4-0} = rd; 10033388ae8SLu Weining} 10133388ae8SLu Weining 10233388ae8SLu Weining// 3RI3-type 10333388ae8SLu Weining// <opcode | I3 | rk | rj | rd> 10446aec7bcSwangleiclass Fmt3RI3<bits<32> op, dag outs, dag ins, string opnstr, 1055b32102cSWeining Lu list<dag> pattern = []> 106294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 10733388ae8SLu Weining bits<3> imm3; 10833388ae8SLu Weining bits<5> rk; 10933388ae8SLu Weining bits<5> rj; 11033388ae8SLu Weining bits<5> rd; 11133388ae8SLu Weining 11246aec7bcSwanglei let Inst{31-0} = op; 11333388ae8SLu Weining let Inst{17-15} = imm3; 11433388ae8SLu Weining let Inst{14-10} = rk; 11533388ae8SLu Weining let Inst{9-5} = rj; 11633388ae8SLu Weining let Inst{4-0} = rd; 11733388ae8SLu Weining} 11833388ae8SLu Weining 11933388ae8SLu Weining// 2RI5-type 12033388ae8SLu Weining// <opcode | I5 | rj | rd> 12146aec7bcSwangleiclass Fmt2RI5<bits<32> op, dag outs, dag ins, string opnstr, 1225b32102cSWeining Lu list<dag> pattern = []> 123294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 12433388ae8SLu Weining bits<5> imm5; 12533388ae8SLu Weining bits<5> rj; 12633388ae8SLu Weining bits<5> rd; 12733388ae8SLu Weining 12846aec7bcSwanglei let Inst{31-0} = op; 12933388ae8SLu Weining let Inst{14-10} = imm5; 13033388ae8SLu Weining let Inst{9-5} = rj; 13133388ae8SLu Weining let Inst{4-0} = rd; 13233388ae8SLu Weining} 13333388ae8SLu Weining 13433388ae8SLu Weining// 2RI6-type 13533388ae8SLu Weining// <opcode | I6 | rj | rd> 13646aec7bcSwangleiclass Fmt2RI6<bits<32> op, dag outs, dag ins, string opnstr, 1375b32102cSWeining Lu list<dag> pattern = []> 138294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 13933388ae8SLu Weining bits<6> imm6; 14033388ae8SLu Weining bits<5> rj; 14133388ae8SLu Weining bits<5> rd; 14233388ae8SLu Weining 14346aec7bcSwanglei let Inst{31-0} = op; 14433388ae8SLu Weining let Inst{15-10} = imm6; 14533388ae8SLu Weining let Inst{9-5} = rj; 14633388ae8SLu Weining let Inst{4-0} = rd; 14733388ae8SLu Weining} 14833388ae8SLu Weining 14933388ae8SLu Weining// 2RI8-type 15033388ae8SLu Weining// <opcode | I8 | rj | rd> 15146aec7bcSwangleiclass Fmt2RI8<bits<32> op, dag outs, dag ins, string opnstr, 1525b32102cSWeining Lu list<dag> pattern = []> 153294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 15433388ae8SLu Weining bits<8> imm8; 15533388ae8SLu Weining bits<5> rj; 15633388ae8SLu Weining bits<5> rd; 15733388ae8SLu Weining 15846aec7bcSwanglei let Inst{31-0} = op; 15933388ae8SLu Weining let Inst{17-10} = imm8; 16033388ae8SLu Weining let Inst{9-5} = rj; 16133388ae8SLu Weining let Inst{4-0} = rd; 16233388ae8SLu Weining} 16333388ae8SLu Weining 16433388ae8SLu Weining// 2RI12-type 16533388ae8SLu Weining// <opcode | I12 | rj | rd> 16646aec7bcSwangleiclass Fmt2RI12<bits<32> op, dag outs, dag ins, string opnstr, 1675b32102cSWeining Lu list<dag> pattern = []> 168294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 16933388ae8SLu Weining bits<12> imm12; 17033388ae8SLu Weining bits<5> rj; 17133388ae8SLu Weining bits<5> rd; 17233388ae8SLu Weining 17346aec7bcSwanglei let Inst{31-0} = op; 17433388ae8SLu Weining let Inst{21-10} = imm12; 17533388ae8SLu Weining let Inst{9-5} = rj; 17633388ae8SLu Weining let Inst{4-0} = rd; 17733388ae8SLu Weining} 17833388ae8SLu Weining 17933388ae8SLu Weining// 2RI14-type 18033388ae8SLu Weining// <opcode | I14 | rj | rd> 18146aec7bcSwangleiclass Fmt2RI14<bits<32> op, dag outs, dag ins, string opnstr, 1825b32102cSWeining Lu list<dag> pattern = []> 183294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 18433388ae8SLu Weining bits<14> imm14; 18533388ae8SLu Weining bits<5> rj; 18633388ae8SLu Weining bits<5> rd; 18733388ae8SLu Weining 18846aec7bcSwanglei let Inst{31-0} = op; 18933388ae8SLu Weining let Inst{23-10} = imm14; 19033388ae8SLu Weining let Inst{9-5} = rj; 19133388ae8SLu Weining let Inst{4-0} = rd; 19233388ae8SLu Weining} 19333388ae8SLu Weining 19433388ae8SLu Weining// 2RI16-type 19533388ae8SLu Weining// <opcode | I16 | rj | rd> 19646aec7bcSwangleiclass Fmt2RI16<bits<32> op, dag outs, dag ins, string opnstr, 1975b32102cSWeining Lu list<dag> pattern = []> 198294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 19933388ae8SLu Weining bits<16> imm16; 20033388ae8SLu Weining bits<5> rj; 20133388ae8SLu Weining bits<5> rd; 20233388ae8SLu Weining 20346aec7bcSwanglei let Inst{31-0} = op; 20433388ae8SLu Weining let Inst{25-10} = imm16; 20533388ae8SLu Weining let Inst{9-5} = rj; 20633388ae8SLu Weining let Inst{4-0} = rd; 20733388ae8SLu Weining} 20833388ae8SLu Weining 20933388ae8SLu Weining// 1RI20-type 21033388ae8SLu Weining// <opcode | I20 | rd> 21146aec7bcSwangleiclass Fmt1RI20<bits<32> op, dag outs, dag ins, string opnstr, 2125b32102cSWeining Lu list<dag> pattern = []> 213294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 21433388ae8SLu Weining bits<20> imm20; 21533388ae8SLu Weining bits<5> rd; 21633388ae8SLu Weining 21746aec7bcSwanglei let Inst{31-0} = op; 21833388ae8SLu Weining let Inst{24-5} = imm20; 21933388ae8SLu Weining let Inst{4-0} = rd; 22033388ae8SLu Weining} 22133388ae8SLu Weining 22233388ae8SLu Weining// 1RI21-type 22333388ae8SLu Weining// <opcode | I21[15:0] | rj | I21[20:16]> 22446aec7bcSwangleiclass Fmt1RI21<bits<32> op, dag outs, dag ins, string opnstr, 2255b32102cSWeining Lu list<dag> pattern = []> 226294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 22733388ae8SLu Weining bits<21> imm21; 22833388ae8SLu Weining bits<5> rj; 22933388ae8SLu Weining 23046aec7bcSwanglei let Inst{31-0} = op; 23133388ae8SLu Weining let Inst{25-10} = imm21{15-0}; 23233388ae8SLu Weining let Inst{9-5} = rj; 23333388ae8SLu Weining let Inst{4-0} = imm21{20-16}; 23433388ae8SLu Weining} 23533388ae8SLu Weining 23633388ae8SLu Weining// I15-type 23733388ae8SLu Weining// <opcode | I15> 23846aec7bcSwangleiclass FmtI15<bits<32> op, dag outs, dag ins, string opnstr, 2395b32102cSWeining Lu list<dag> pattern = []> 240294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 24133388ae8SLu Weining bits<15> imm15; 24233388ae8SLu Weining 24346aec7bcSwanglei let Inst{31-0} = op; 24433388ae8SLu Weining let Inst{14-0} = imm15; 24533388ae8SLu Weining} 24633388ae8SLu Weining 24733388ae8SLu Weining// I26-type 24833388ae8SLu Weining// <opcode | I26[15:0] | I26[25:16]> 24946aec7bcSwangleiclass FmtI26<bits<32> op, dag outs, dag ins, string opnstr, 2505b32102cSWeining Lu list<dag> pattern = []> 251294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 25233388ae8SLu Weining bits<26> imm26; 25333388ae8SLu Weining 25446aec7bcSwanglei let Inst{31-0} = op; 25533388ae8SLu Weining let Inst{25-10} = imm26{15-0}; 25633388ae8SLu Weining let Inst{9-0} = imm26{25-16}; 25733388ae8SLu Weining} 25833388ae8SLu Weining 25933388ae8SLu Weining// FmtBSTR_W 26046aec7bcSwanglei// <opcode | msbw | lsbw | rj | rd> 26146aec7bcSwangleiclass FmtBSTR_W<bits<32> op, dag outs, dag ins, string opnstr, 2625b32102cSWeining Lu list<dag> pattern = []> 263294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 26479b0fa08SWeining Lu bits<5> msbw; 26579b0fa08SWeining Lu bits<5> lsbw; 26633388ae8SLu Weining bits<5> rj; 26733388ae8SLu Weining bits<5> rd; 26833388ae8SLu Weining 26946aec7bcSwanglei let Inst{31-0} = op; 27079b0fa08SWeining Lu let Inst{20-16} = msbw; 27179b0fa08SWeining Lu let Inst{14-10} = lsbw; 27233388ae8SLu Weining let Inst{9-5} = rj; 27333388ae8SLu Weining let Inst{4-0} = rd; 27433388ae8SLu Weining} 27533388ae8SLu Weining 27633388ae8SLu Weining// FmtBSTR_D 27779b0fa08SWeining Lu// <opcode | msbd | lsbd | rj | rd> 27846aec7bcSwangleiclass FmtBSTR_D<bits<32> op, dag outs, dag ins, string opnstr, 2795b32102cSWeining Lu list<dag> pattern = []> 280294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 28179b0fa08SWeining Lu bits<6> msbd; 28279b0fa08SWeining Lu bits<6> lsbd; 28333388ae8SLu Weining bits<5> rj; 28433388ae8SLu Weining bits<5> rd; 28533388ae8SLu Weining 28646aec7bcSwanglei let Inst{31-0} = op; 28779b0fa08SWeining Lu let Inst{21-16} = msbd; 28879b0fa08SWeining Lu let Inst{15-10} = lsbd; 28933388ae8SLu Weining let Inst{9-5} = rj; 29033388ae8SLu Weining let Inst{4-0} = rd; 29133388ae8SLu Weining} 29233388ae8SLu Weining 29333388ae8SLu Weining// FmtASRT 29446aec7bcSwanglei// <opcode | rk | rj> 29546aec7bcSwangleiclass FmtASRT<bits<32> op, dag outs, dag ins, string opnstr, 2965b32102cSWeining Lu list<dag> pattern = []> 297294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 29833388ae8SLu Weining bits<5> rk; 29933388ae8SLu Weining bits<5> rj; 30033388ae8SLu Weining 30146aec7bcSwanglei let Inst{31-0} = op; 30233388ae8SLu Weining let Inst{14-10} = rk; 30333388ae8SLu Weining let Inst{9-5} = rj; 30433388ae8SLu Weining} 30533388ae8SLu Weining 30633388ae8SLu Weining// FmtPRELD 30733388ae8SLu Weining// < 0b0010101011 | I12 | rj | I5> 308294bee10SWANG Xueruiclass FmtPRELD<dag outs, dag ins, string opnstr, list<dag> pattern = []> 309294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 31033388ae8SLu Weining bits<12> imm12; 31133388ae8SLu Weining bits<5> rj; 31233388ae8SLu Weining bits<5> imm5; 31333388ae8SLu Weining 31433388ae8SLu Weining let Inst{31-22} = 0b0010101011; 31533388ae8SLu Weining let Inst{21-10} = imm12; 31633388ae8SLu Weining let Inst{9-5} = rj; 31733388ae8SLu Weining let Inst{4-0} = imm5; 31833388ae8SLu Weining} 31933388ae8SLu Weining 32033388ae8SLu Weining// FmtPRELDX 32133388ae8SLu Weining// < 0b00111000001011000 | rk | rj | I5> 322294bee10SWANG Xueruiclass FmtPRELDX<dag outs, dag ins, string opnstr, list<dag> pattern = []> 323294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 32433388ae8SLu Weining bits<5> rk; 32533388ae8SLu Weining bits<5> rj; 32633388ae8SLu Weining bits<5> imm5; 32733388ae8SLu Weining 32833388ae8SLu Weining let Inst{31-15} = 0b00111000001011000; 32933388ae8SLu Weining let Inst{14-10} = rk; 33033388ae8SLu Weining let Inst{9-5} = rj; 33133388ae8SLu Weining let Inst{4-0} = imm5; 33233388ae8SLu Weining} 33311ec7307SWeining Lu 33411ec7307SWeining Lu// FmtCSR 33546aec7bcSwanglei// <opcode | csr_num | rd> 33646aec7bcSwangleiclass FmtCSR<bits<32> op, dag outs, dag ins, string opnstr, 33711ec7307SWeining Lu list<dag> pattern = []> 338294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 33911ec7307SWeining Lu bits<14> csr_num; 34011ec7307SWeining Lu bits<5> rd; 34111ec7307SWeining Lu 34246aec7bcSwanglei let Inst{31-0} = op; 34311ec7307SWeining Lu let Inst{23-10} = csr_num; 34411ec7307SWeining Lu let Inst{4-0} = rd; 34511ec7307SWeining Lu} 34611ec7307SWeining Lu 34711ec7307SWeining Lu// FmtCSRXCHG 34811ec7307SWeining Lu// <opcode | csr_num | rj | rd> 34946aec7bcSwangleiclass FmtCSRXCHG<bits<32> op, dag outs, dag ins, string opnstr, 35011ec7307SWeining Lu list<dag> pattern = []> 351294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 35211ec7307SWeining Lu bits<14> csr_num; 35311ec7307SWeining Lu bits<5> rj; 35411ec7307SWeining Lu bits<5> rd; 35511ec7307SWeining Lu 35646aec7bcSwanglei let Inst{31-0} = op; 35711ec7307SWeining Lu let Inst{23-10} = csr_num; 35811ec7307SWeining Lu let Inst{9-5} = rj; 35911ec7307SWeining Lu let Inst{4-0} = rd; 36011ec7307SWeining Lu} 36111ec7307SWeining Lu 36211ec7307SWeining Lu// FmtCACOP 36311ec7307SWeining Lu// <0b0000011000 | I12 | rj | I5> 364294bee10SWANG Xueruiclass FmtCACOP<dag outs, dag ins, string opnstr, list<dag> pattern = []> 365294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 36611ec7307SWeining Lu bits<12> imm12; 36711ec7307SWeining Lu bits<5> rj; 36811ec7307SWeining Lu bits<5> op; 36911ec7307SWeining Lu 37011ec7307SWeining Lu let Inst{31-22} = 0b0000011000; 37111ec7307SWeining Lu let Inst{21-10} = imm12; 37211ec7307SWeining Lu let Inst{9-5} = rj; 37311ec7307SWeining Lu let Inst{4-0} = op; 37411ec7307SWeining Lu} 37511ec7307SWeining Lu 37611ec7307SWeining Lu// FmtIMM32 37711ec7307SWeining Lu// <I32> 378294bee10SWANG Xueruiclass FmtI32<bits<32> op, list<dag> pattern = []> 379294bee10SWANG Xuerui : LAInst<(outs), (ins), deriveInsnMnemonic<NAME>.ret, "", pattern> { 38011ec7307SWeining Lu let Inst{31-0} = op; 38111ec7307SWeining Lu} 38211ec7307SWeining Lu 38311ec7307SWeining Lu// FmtINVTLB 38411ec7307SWeining Lu// <0b00000110010010011 | rk | rj | I5> 385294bee10SWANG Xueruiclass FmtINVTLB<dag outs, dag ins, string opnstr, list<dag> pattern = []> 386294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 38711ec7307SWeining Lu bits<5> rk; 38811ec7307SWeining Lu bits<5> rj; 38911ec7307SWeining Lu bits<5> op; 39011ec7307SWeining Lu 39111ec7307SWeining Lu let Inst{31-15} = 0b00000110010010011; 39211ec7307SWeining Lu let Inst{14-10} = rk; 39311ec7307SWeining Lu let Inst{9-5} = rj; 39411ec7307SWeining Lu let Inst{4-0} = op; 39511ec7307SWeining Lu} 39611ec7307SWeining Lu 39711ec7307SWeining Lu// FmtLDPTE 39811ec7307SWeining Lu// <0b00000110010001 | seq | rj | 00000> 399294bee10SWANG Xueruiclass FmtLDPTE<dag outs, dag ins, string opnstr, list<dag> pattern = []> 400294bee10SWANG Xuerui : LAInst<outs, ins, deriveInsnMnemonic<NAME>.ret, opnstr, pattern> { 40111ec7307SWeining Lu bits<8> seq; 40211ec7307SWeining Lu bits<5> rj; 40311ec7307SWeining Lu 40411ec7307SWeining Lu let Inst{31-18} = 0b00000110010001; 40511ec7307SWeining Lu let Inst{17-10} = seq; 40611ec7307SWeining Lu let Inst{9-5} = rj; 40711ec7307SWeining Lu let Inst{4-0} = 0b00000; 40811ec7307SWeining Lu} 409