13a2c2d42SJack Carter//===- MipsMSAInstrFormats.td - Mips Instruction Formats ---*- tablegen -*-===// 23a2c2d42SJack Carter// 3*2946cd70SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth// See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 63a2c2d42SJack Carter// 73a2c2d42SJack Carter//===----------------------------------------------------------------------===// 83a2c2d42SJack Carter 9090f6e41SDaniel Sandersclass MSAInst : MipsInst<(outs), (ins), "", [], NoItinerary, FrmOther>, 10f909058aSSimon Dardis ASE_MSA { 11090f6e41SDaniel Sanders let EncodingPredicates = [HasStdEnc]; 123a2c2d42SJack Carter let Inst{31-26} = 0b011110; 133a2c2d42SJack Carter} 143a2c2d42SJack Carter 15eb68d9d9SMatheus Almeidaclass MSACBranch : MSAInst { 16eb68d9d9SMatheus Almeida let Inst{31-26} = 0b010001; 17eb68d9d9SMatheus Almeida} 18eb68d9d9SMatheus Almeida 19be8681b4SMatheus Almeidaclass MSASpecial : MSAInst { 20be8681b4SMatheus Almeida let Inst{31-26} = 0b000000; 21be8681b4SMatheus Almeida} 22be8681b4SMatheus Almeida 23f93e8152SDaniel Sandersclass MSAPseudo<dag outs, dag ins, list<dag> pattern, 243a2c2d42SJack Carter InstrItinClass itin = IIPseudo>: 253a2c2d42SJack Carter MipsPseudo<outs, ins, pattern, itin> { 266ad680abSSimon Dardis let EncodingPredicates = [HasStdEnc]; 276ad680abSSimon Dardis let ASEPredicate = [HasMSA]; 283a2c2d42SJack Carter} 293a2c2d42SJack Carter 30babdcc8cSJack Carterclass MSA_BIT_B_FMT<bits<3> major, bits<6> minor>: MSAInst { 312102188cSMatheus Almeida bits<5> ws; 322102188cSMatheus Almeida bits<5> wd; 332102188cSMatheus Almeida bits<3> m; 342102188cSMatheus Almeida 35babdcc8cSJack Carter let Inst{25-23} = major; 36babdcc8cSJack Carter let Inst{22-19} = 0b1110; 372102188cSMatheus Almeida let Inst{18-16} = m; 382102188cSMatheus Almeida let Inst{15-11} = ws; 392102188cSMatheus Almeida let Inst{10-6} = wd; 40babdcc8cSJack Carter let Inst{5-0} = minor; 41babdcc8cSJack Carter} 42babdcc8cSJack Carter 43babdcc8cSJack Carterclass MSA_BIT_H_FMT<bits<3> major, bits<6> minor>: MSAInst { 442102188cSMatheus Almeida bits<5> ws; 452102188cSMatheus Almeida bits<5> wd; 462102188cSMatheus Almeida bits<4> m; 472102188cSMatheus Almeida 48babdcc8cSJack Carter let Inst{25-23} = major; 49babdcc8cSJack Carter let Inst{22-20} = 0b110; 502102188cSMatheus Almeida let Inst{19-16} = m; 512102188cSMatheus Almeida let Inst{15-11} = ws; 522102188cSMatheus Almeida let Inst{10-6} = wd; 53babdcc8cSJack Carter let Inst{5-0} = minor; 54babdcc8cSJack Carter} 55babdcc8cSJack Carter 56babdcc8cSJack Carterclass MSA_BIT_W_FMT<bits<3> major, bits<6> minor>: MSAInst { 572102188cSMatheus Almeida bits<5> ws; 582102188cSMatheus Almeida bits<5> wd; 592102188cSMatheus Almeida bits<5> m; 602102188cSMatheus Almeida 61babdcc8cSJack Carter let Inst{25-23} = major; 62babdcc8cSJack Carter let Inst{22-21} = 0b10; 632102188cSMatheus Almeida let Inst{20-16} = m; 642102188cSMatheus Almeida let Inst{15-11} = ws; 652102188cSMatheus Almeida let Inst{10-6} = wd; 66babdcc8cSJack Carter let Inst{5-0} = minor; 67babdcc8cSJack Carter} 68babdcc8cSJack Carter 69babdcc8cSJack Carterclass MSA_BIT_D_FMT<bits<3> major, bits<6> minor>: MSAInst { 702102188cSMatheus Almeida bits<5> ws; 712102188cSMatheus Almeida bits<5> wd; 722102188cSMatheus Almeida bits<6> m; 732102188cSMatheus Almeida 74babdcc8cSJack Carter let Inst{25-23} = major; 75babdcc8cSJack Carter let Inst{22} = 0b0; 762102188cSMatheus Almeida let Inst{21-16} = m; 772102188cSMatheus Almeida let Inst{15-11} = ws; 782102188cSMatheus Almeida let Inst{10-6} = wd; 79babdcc8cSJack Carter let Inst{5-0} = minor; 80babdcc8cSJack Carter} 81babdcc8cSJack Carter 826eed9cc6SJack Carterclass MSA_2R_FILL_FMT<bits<8> major, bits<2> df, bits<6> minor>: MSAInst { 836eed9cc6SJack Carter bits<5> rs; 846eed9cc6SJack Carter bits<5> wd; 856eed9cc6SJack Carter 866eed9cc6SJack Carter let Inst{25-18} = major; 876eed9cc6SJack Carter let Inst{17-16} = df; 886eed9cc6SJack Carter let Inst{15-11} = rs; 896eed9cc6SJack Carter let Inst{10-6} = wd; 906eed9cc6SJack Carter let Inst{5-0} = minor; 916eed9cc6SJack Carter} 926eed9cc6SJack Carter 93090f6e41SDaniel Sandersclass MSA_2R_FILL_D_FMT<bits<8> major, bits<2> df, bits<6> minor>: MSAInst { 94ec079d9eSMatheus Almeida bits<5> rs; 95ec079d9eSMatheus Almeida bits<5> wd; 96ec079d9eSMatheus Almeida 97ec079d9eSMatheus Almeida let Inst{25-18} = major; 98ec079d9eSMatheus Almeida let Inst{17-16} = df; 99ec079d9eSMatheus Almeida let Inst{15-11} = rs; 100ec079d9eSMatheus Almeida let Inst{10-6} = wd; 101ec079d9eSMatheus Almeida let Inst{5-0} = minor; 102ec079d9eSMatheus Almeida} 103ec079d9eSMatheus Almeida 104babdcc8cSJack Carterclass MSA_2R_FMT<bits<8> major, bits<2> df, bits<6> minor>: MSAInst { 10592e6e0f1SJack Carter bits<5> ws; 10692e6e0f1SJack Carter bits<5> wd; 10792e6e0f1SJack Carter 108babdcc8cSJack Carter let Inst{25-18} = major; 109babdcc8cSJack Carter let Inst{17-16} = df; 11092e6e0f1SJack Carter let Inst{15-11} = ws; 11192e6e0f1SJack Carter let Inst{10-6} = wd; 112babdcc8cSJack Carter let Inst{5-0} = minor; 113babdcc8cSJack Carter} 114babdcc8cSJack Carter 115babdcc8cSJack Carterclass MSA_2RF_FMT<bits<9> major, bits<1> df, bits<6> minor>: MSAInst { 1165dc8ac92SJack Carter bits<5> ws; 1175dc8ac92SJack Carter bits<5> wd; 1185dc8ac92SJack Carter 119babdcc8cSJack Carter let Inst{25-17} = major; 120babdcc8cSJack Carter let Inst{16} = df; 1215dc8ac92SJack Carter let Inst{15-11} = ws; 1225dc8ac92SJack Carter let Inst{10-6} = wd; 123babdcc8cSJack Carter let Inst{5-0} = minor; 124babdcc8cSJack Carter} 125babdcc8cSJack Carter 1263a2c2d42SJack Carterclass MSA_3R_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst { 1273eb663b0SJack Carter bits<5> wt; 1283eb663b0SJack Carter bits<5> ws; 1293eb663b0SJack Carter bits<5> wd; 1303eb663b0SJack Carter 1313a2c2d42SJack Carter let Inst{25-23} = major; 1323a2c2d42SJack Carter let Inst{22-21} = df; 1333eb663b0SJack Carter let Inst{20-16} = wt; 1343eb663b0SJack Carter let Inst{15-11} = ws; 1353eb663b0SJack Carter let Inst{10-6} = wd; 1363a2c2d42SJack Carter let Inst{5-0} = minor; 1373a2c2d42SJack Carter} 1383a2c2d42SJack Carter 139babdcc8cSJack Carterclass MSA_3RF_FMT<bits<4> major, bits<1> df, bits<6> minor>: MSAInst { 140cb8b40b0SJack Carter bits<5> wt; 141cb8b40b0SJack Carter bits<5> ws; 142cb8b40b0SJack Carter bits<5> wd; 143cb8b40b0SJack Carter 144babdcc8cSJack Carter let Inst{25-22} = major; 145babdcc8cSJack Carter let Inst{21} = df; 146cb8b40b0SJack Carter let Inst{20-16} = wt; 147cb8b40b0SJack Carter let Inst{15-11} = ws; 148cb8b40b0SJack Carter let Inst{10-6} = wd; 149babdcc8cSJack Carter let Inst{5-0} = minor; 150babdcc8cSJack Carter} 151babdcc8cSJack Carter 15270fbf775SMatheus Almeidaclass MSA_3R_INDEX_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst { 15370fbf775SMatheus Almeida bits<5> rt; 15470fbf775SMatheus Almeida bits<5> ws; 15570fbf775SMatheus Almeida bits<5> wd; 15670fbf775SMatheus Almeida 15770fbf775SMatheus Almeida let Inst{25-23} = major; 15870fbf775SMatheus Almeida let Inst{22-21} = df; 15970fbf775SMatheus Almeida let Inst{20-16} = rt; 16070fbf775SMatheus Almeida let Inst{15-11} = ws; 16170fbf775SMatheus Almeida let Inst{10-6} = wd; 16270fbf775SMatheus Almeida let Inst{5-0} = minor; 16370fbf775SMatheus Almeida} 16470fbf775SMatheus Almeida 165f9aa1d19SDaniel Sandersclass MSA_ELM_FMT<bits<10> major, bits<6> minor>: MSAInst { 16683d797deSMatheus Almeida bits<5> ws; 16783d797deSMatheus Almeida bits<5> wd; 16883d797deSMatheus Almeida 169f9aa1d19SDaniel Sanders let Inst{25-16} = major; 17083d797deSMatheus Almeida let Inst{15-11} = ws; 17183d797deSMatheus Almeida let Inst{10-6} = wd; 172f9aa1d19SDaniel Sanders let Inst{5-0} = minor; 173f9aa1d19SDaniel Sanders} 174f9aa1d19SDaniel Sanders 175a591fdc6SMatheus Almeidaclass MSA_ELM_CFCMSA_FMT<bits<10> major, bits<6> minor>: MSAInst { 176a591fdc6SMatheus Almeida bits<5> rd; 177a591fdc6SMatheus Almeida bits<5> cs; 178a591fdc6SMatheus Almeida 179a591fdc6SMatheus Almeida let Inst{25-16} = major; 180a591fdc6SMatheus Almeida let Inst{15-11} = cs; 181a591fdc6SMatheus Almeida let Inst{10-6} = rd; 182a591fdc6SMatheus Almeida let Inst{5-0} = minor; 183a591fdc6SMatheus Almeida} 184a591fdc6SMatheus Almeida 185a591fdc6SMatheus Almeidaclass MSA_ELM_CTCMSA_FMT<bits<10> major, bits<6> minor>: MSAInst { 186a591fdc6SMatheus Almeida bits<5> rs; 187a591fdc6SMatheus Almeida bits<5> cd; 188a591fdc6SMatheus Almeida 189a591fdc6SMatheus Almeida let Inst{25-16} = major; 190a591fdc6SMatheus Almeida let Inst{15-11} = rs; 191a591fdc6SMatheus Almeida let Inst{10-6} = cd; 192a591fdc6SMatheus Almeida let Inst{5-0} = minor; 193a591fdc6SMatheus Almeida} 194a591fdc6SMatheus Almeida 195babdcc8cSJack Carterclass MSA_ELM_B_FMT<bits<4> major, bits<6> minor>: MSAInst { 196bc189eb3SMatheus Almeida bits<4> n; 197bc189eb3SMatheus Almeida bits<5> ws; 198bc189eb3SMatheus Almeida bits<5> wd; 199bc189eb3SMatheus Almeida 200babdcc8cSJack Carter let Inst{25-22} = major; 201babdcc8cSJack Carter let Inst{21-20} = 0b00; 202bc189eb3SMatheus Almeida let Inst{19-16} = n{3-0}; 203bc189eb3SMatheus Almeida let Inst{15-11} = ws; 204bc189eb3SMatheus Almeida let Inst{10-6} = wd; 205babdcc8cSJack Carter let Inst{5-0} = minor; 206babdcc8cSJack Carter} 207babdcc8cSJack Carter 208babdcc8cSJack Carterclass MSA_ELM_H_FMT<bits<4> major, bits<6> minor>: MSAInst { 209bc189eb3SMatheus Almeida bits<4> n; 210bc189eb3SMatheus Almeida bits<5> ws; 211bc189eb3SMatheus Almeida bits<5> wd; 212bc189eb3SMatheus Almeida 213babdcc8cSJack Carter let Inst{25-22} = major; 214babdcc8cSJack Carter let Inst{21-19} = 0b100; 215bc189eb3SMatheus Almeida let Inst{18-16} = n{2-0}; 216bc189eb3SMatheus Almeida let Inst{15-11} = ws; 217bc189eb3SMatheus Almeida let Inst{10-6} = wd; 218babdcc8cSJack Carter let Inst{5-0} = minor; 219babdcc8cSJack Carter} 220babdcc8cSJack Carter 221babdcc8cSJack Carterclass MSA_ELM_W_FMT<bits<4> major, bits<6> minor>: MSAInst { 222bc189eb3SMatheus Almeida bits<4> n; 223bc189eb3SMatheus Almeida bits<5> ws; 224bc189eb3SMatheus Almeida bits<5> wd; 225bc189eb3SMatheus Almeida 226babdcc8cSJack Carter let Inst{25-22} = major; 227babdcc8cSJack Carter let Inst{21-18} = 0b1100; 228bc189eb3SMatheus Almeida let Inst{17-16} = n{1-0}; 229bc189eb3SMatheus Almeida let Inst{15-11} = ws; 230bc189eb3SMatheus Almeida let Inst{10-6} = wd; 231babdcc8cSJack Carter let Inst{5-0} = minor; 232babdcc8cSJack Carter} 233babdcc8cSJack Carter 234babdcc8cSJack Carterclass MSA_ELM_D_FMT<bits<4> major, bits<6> minor>: MSAInst { 235bc189eb3SMatheus Almeida bits<4> n; 236bc189eb3SMatheus Almeida bits<5> ws; 237bc189eb3SMatheus Almeida bits<5> wd; 238bc189eb3SMatheus Almeida 239babdcc8cSJack Carter let Inst{25-22} = major; 240babdcc8cSJack Carter let Inst{21-17} = 0b11100; 241bc189eb3SMatheus Almeida let Inst{16} = n{0}; 242bc189eb3SMatheus Almeida let Inst{15-11} = ws; 243bc189eb3SMatheus Almeida let Inst{10-6} = wd; 244bc189eb3SMatheus Almeida let Inst{5-0} = minor; 245bc189eb3SMatheus Almeida} 246bc189eb3SMatheus Almeida 247bc189eb3SMatheus Almeidaclass MSA_ELM_COPY_B_FMT<bits<4> major, bits<6> minor>: MSAInst { 248bc189eb3SMatheus Almeida bits<4> n; 249bc189eb3SMatheus Almeida bits<5> ws; 250bc189eb3SMatheus Almeida bits<5> rd; 251bc189eb3SMatheus Almeida 252bc189eb3SMatheus Almeida let Inst{25-22} = major; 253bc189eb3SMatheus Almeida let Inst{21-20} = 0b00; 254bc189eb3SMatheus Almeida let Inst{19-16} = n{3-0}; 255bc189eb3SMatheus Almeida let Inst{15-11} = ws; 256bc189eb3SMatheus Almeida let Inst{10-6} = rd; 257bc189eb3SMatheus Almeida let Inst{5-0} = minor; 258bc189eb3SMatheus Almeida} 259bc189eb3SMatheus Almeida 260bc189eb3SMatheus Almeidaclass MSA_ELM_COPY_H_FMT<bits<4> major, bits<6> minor>: MSAInst { 261bc189eb3SMatheus Almeida bits<4> n; 262bc189eb3SMatheus Almeida bits<5> ws; 263bc189eb3SMatheus Almeida bits<5> rd; 264bc189eb3SMatheus Almeida 265bc189eb3SMatheus Almeida let Inst{25-22} = major; 266bc189eb3SMatheus Almeida let Inst{21-19} = 0b100; 267bc189eb3SMatheus Almeida let Inst{18-16} = n{2-0}; 268bc189eb3SMatheus Almeida let Inst{15-11} = ws; 269bc189eb3SMatheus Almeida let Inst{10-6} = rd; 270bc189eb3SMatheus Almeida let Inst{5-0} = minor; 271bc189eb3SMatheus Almeida} 272bc189eb3SMatheus Almeida 273bc189eb3SMatheus Almeidaclass MSA_ELM_COPY_W_FMT<bits<4> major, bits<6> minor>: MSAInst { 274bc189eb3SMatheus Almeida bits<4> n; 275bc189eb3SMatheus Almeida bits<5> ws; 276bc189eb3SMatheus Almeida bits<5> rd; 277bc189eb3SMatheus Almeida 278bc189eb3SMatheus Almeida let Inst{25-22} = major; 279bc189eb3SMatheus Almeida let Inst{21-18} = 0b1100; 280bc189eb3SMatheus Almeida let Inst{17-16} = n{1-0}; 281bc189eb3SMatheus Almeida let Inst{15-11} = ws; 282bc189eb3SMatheus Almeida let Inst{10-6} = rd; 283babdcc8cSJack Carter let Inst{5-0} = minor; 284babdcc8cSJack Carter} 285babdcc8cSJack Carter 286090f6e41SDaniel Sandersclass MSA_ELM_COPY_D_FMT<bits<4> major, bits<6> minor>: MSAInst { 28774070327SMatheus Almeida bits<4> n; 28874070327SMatheus Almeida bits<5> ws; 28974070327SMatheus Almeida bits<5> rd; 29074070327SMatheus Almeida 29174070327SMatheus Almeida let Inst{25-22} = major; 29274070327SMatheus Almeida let Inst{21-17} = 0b11100; 29374070327SMatheus Almeida let Inst{16} = n{0}; 29474070327SMatheus Almeida let Inst{15-11} = ws; 29574070327SMatheus Almeida let Inst{10-6} = rd; 29674070327SMatheus Almeida let Inst{5-0} = minor; 29774070327SMatheus Almeida} 29874070327SMatheus Almeida 299b74293dcSMatheus Almeidaclass MSA_ELM_INSERT_B_FMT<bits<4> major, bits<6> minor>: MSAInst { 300b74293dcSMatheus Almeida bits<6> n; 301b74293dcSMatheus Almeida bits<5> rs; 302b74293dcSMatheus Almeida bits<5> wd; 303b74293dcSMatheus Almeida 304b74293dcSMatheus Almeida let Inst{25-22} = major; 305b74293dcSMatheus Almeida let Inst{21-20} = 0b00; 306b74293dcSMatheus Almeida let Inst{19-16} = n{3-0}; 307b74293dcSMatheus Almeida let Inst{15-11} = rs; 308b74293dcSMatheus Almeida let Inst{10-6} = wd; 309b74293dcSMatheus Almeida let Inst{5-0} = minor; 310b74293dcSMatheus Almeida} 311b74293dcSMatheus Almeida 312b74293dcSMatheus Almeidaclass MSA_ELM_INSERT_H_FMT<bits<4> major, bits<6> minor>: MSAInst { 313b74293dcSMatheus Almeida bits<6> n; 314b74293dcSMatheus Almeida bits<5> rs; 315b74293dcSMatheus Almeida bits<5> wd; 316b74293dcSMatheus Almeida 317b74293dcSMatheus Almeida let Inst{25-22} = major; 318b74293dcSMatheus Almeida let Inst{21-19} = 0b100; 319b74293dcSMatheus Almeida let Inst{18-16} = n{2-0}; 320b74293dcSMatheus Almeida let Inst{15-11} = rs; 321b74293dcSMatheus Almeida let Inst{10-6} = wd; 322b74293dcSMatheus Almeida let Inst{5-0} = minor; 323b74293dcSMatheus Almeida} 324b74293dcSMatheus Almeida 325b74293dcSMatheus Almeidaclass MSA_ELM_INSERT_W_FMT<bits<4> major, bits<6> minor>: MSAInst { 326b74293dcSMatheus Almeida bits<6> n; 327b74293dcSMatheus Almeida bits<5> rs; 328b74293dcSMatheus Almeida bits<5> wd; 329b74293dcSMatheus Almeida 330b74293dcSMatheus Almeida let Inst{25-22} = major; 331b74293dcSMatheus Almeida let Inst{21-18} = 0b1100; 332b74293dcSMatheus Almeida let Inst{17-16} = n{1-0}; 333b74293dcSMatheus Almeida let Inst{15-11} = rs; 334b74293dcSMatheus Almeida let Inst{10-6} = wd; 335b74293dcSMatheus Almeida let Inst{5-0} = minor; 336b74293dcSMatheus Almeida} 337b74293dcSMatheus Almeida 338090f6e41SDaniel Sandersclass MSA_ELM_INSERT_D_FMT<bits<4> major, bits<6> minor>: MSAInst { 3391ace1f12SMatheus Almeida bits<6> n; 3401ace1f12SMatheus Almeida bits<5> rs; 3411ace1f12SMatheus Almeida bits<5> wd; 3421ace1f12SMatheus Almeida 3431ace1f12SMatheus Almeida let Inst{25-22} = major; 3441ace1f12SMatheus Almeida let Inst{21-17} = 0b11100; 3451ace1f12SMatheus Almeida let Inst{16} = n{0}; 3461ace1f12SMatheus Almeida let Inst{15-11} = rs; 3471ace1f12SMatheus Almeida let Inst{10-6} = wd; 3481ace1f12SMatheus Almeida let Inst{5-0} = minor; 3491ace1f12SMatheus Almeida} 3501ace1f12SMatheus Almeida 3513a2c2d42SJack Carterclass MSA_I5_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst { 352c3b25686SJack Carter bits<5> imm; 353c3b25686SJack Carter bits<5> ws; 354c3b25686SJack Carter bits<5> wd; 355c3b25686SJack Carter 3563a2c2d42SJack Carter let Inst{25-23} = major; 3573a2c2d42SJack Carter let Inst{22-21} = df; 358c3b25686SJack Carter let Inst{20-16} = imm; 359c3b25686SJack Carter let Inst{15-11} = ws; 360c3b25686SJack Carter let Inst{10-6} = wd; 3613a2c2d42SJack Carter let Inst{5-0} = minor; 3623a2c2d42SJack Carter} 363babdcc8cSJack Carter 364babdcc8cSJack Carterclass MSA_I8_FMT<bits<2> major, bits<6> minor>: MSAInst { 3658ff70e3eSJack Carter bits<8> u8; 3668ff70e3eSJack Carter bits<5> ws; 3678ff70e3eSJack Carter bits<5> wd; 3688ff70e3eSJack Carter 369babdcc8cSJack Carter let Inst{25-24} = major; 3708ff70e3eSJack Carter let Inst{23-16} = u8; 3718ff70e3eSJack Carter let Inst{15-11} = ws; 3728ff70e3eSJack Carter let Inst{10-6} = wd; 373babdcc8cSJack Carter let Inst{5-0} = minor; 374babdcc8cSJack Carter} 375babdcc8cSJack Carter 376babdcc8cSJack Carterclass MSA_I10_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst { 3778ddad151SMatheus Almeida bits<10> s10; 3788ddad151SMatheus Almeida bits<5> wd; 3798ddad151SMatheus Almeida 380babdcc8cSJack Carter let Inst{25-23} = major; 381babdcc8cSJack Carter let Inst{22-21} = df; 3828ddad151SMatheus Almeida let Inst{20-11} = s10; 3838ddad151SMatheus Almeida let Inst{10-6} = wd; 384babdcc8cSJack Carter let Inst{5-0} = minor; 385babdcc8cSJack Carter} 386869bdad9SDaniel Sanders 387fe0bf9f6SMatheus Almeidaclass MSA_MI10_FMT<bits<2> df, bits<4> minor>: MSAInst { 388fe0bf9f6SMatheus Almeida bits<21> addr; 389fe0bf9f6SMatheus Almeida bits<5> wd; 390fe0bf9f6SMatheus Almeida 391fe0bf9f6SMatheus Almeida let Inst{25-16} = addr{9-0}; 392fe0bf9f6SMatheus Almeida let Inst{15-11} = addr{20-16}; 393fe0bf9f6SMatheus Almeida let Inst{10-6} = wd; 394fe0bf9f6SMatheus Almeida let Inst{5-2} = minor; 395fe0bf9f6SMatheus Almeida let Inst{1-0} = df; 396fe0bf9f6SMatheus Almeida} 397fe0bf9f6SMatheus Almeida 398869bdad9SDaniel Sandersclass MSA_VEC_FMT<bits<5> major, bits<6> minor>: MSAInst { 3995be0cd87SMatheus Almeida bits<5> wt; 4005be0cd87SMatheus Almeida bits<5> ws; 4015be0cd87SMatheus Almeida bits<5> wd; 4025be0cd87SMatheus Almeida 403869bdad9SDaniel Sanders let Inst{25-21} = major; 4045be0cd87SMatheus Almeida let Inst{20-16} = wt; 4055be0cd87SMatheus Almeida let Inst{15-11} = ws; 4065be0cd87SMatheus Almeida let Inst{10-6} = wd; 407869bdad9SDaniel Sanders let Inst{5-0} = minor; 408869bdad9SDaniel Sanders} 409ce09d078SDaniel Sanders 410eb68d9d9SMatheus Almeidaclass MSA_CBRANCH_FMT<bits<3> major, bits<2> df>: MSACBranch { 411eb68d9d9SMatheus Almeida bits<16> offset; 412eb68d9d9SMatheus Almeida bits<5> wt; 413eb68d9d9SMatheus Almeida 414eb68d9d9SMatheus Almeida let Inst{25-23} = major; 415eb68d9d9SMatheus Almeida let Inst{22-21} = df; 416eb68d9d9SMatheus Almeida let Inst{20-16} = wt; 417eb68d9d9SMatheus Almeida let Inst{15-0} = offset; 418eb68d9d9SMatheus Almeida} 419eb68d9d9SMatheus Almeida 420eb68d9d9SMatheus Almeidaclass MSA_CBRANCH_V_FMT<bits<5> major>: MSACBranch { 421eb68d9d9SMatheus Almeida bits<16> offset; 422eb68d9d9SMatheus Almeida bits<5> wt; 423eb68d9d9SMatheus Almeida 424ce09d078SDaniel Sanders let Inst{25-21} = major; 425eb68d9d9SMatheus Almeida let Inst{20-16} = wt; 426eb68d9d9SMatheus Almeida let Inst{15-0} = offset; 427ce09d078SDaniel Sanders} 428a4eaf59fSDaniel Sanders 429be8681b4SMatheus Almeidaclass SPECIAL_LSA_FMT<bits<6> minor>: MSASpecial { 430be8681b4SMatheus Almeida bits<5> rs; 431be8681b4SMatheus Almeida bits<5> rt; 432be8681b4SMatheus Almeida bits<5> rd; 433be8681b4SMatheus Almeida bits<2> sa; 434be8681b4SMatheus Almeida 435be8681b4SMatheus Almeida let Inst{25-21} = rs; 436be8681b4SMatheus Almeida let Inst{20-16} = rt; 437be8681b4SMatheus Almeida let Inst{15-11} = rd; 438a4eaf59fSDaniel Sanders let Inst{10-8} = 0b000; 439be8681b4SMatheus Almeida let Inst{7-6} = sa; 440be8681b4SMatheus Almeida let Inst{5-0} = minor; 441a4eaf59fSDaniel Sanders} 4424b27eb58SMatheus Almeida 443090f6e41SDaniel Sandersclass SPECIAL_DLSA_FMT<bits<6> minor>: MSASpecial { 4444b27eb58SMatheus Almeida bits<5> rs; 4454b27eb58SMatheus Almeida bits<5> rt; 4464b27eb58SMatheus Almeida bits<5> rd; 4474b27eb58SMatheus Almeida bits<2> sa; 4484b27eb58SMatheus Almeida 4494b27eb58SMatheus Almeida let Inst{25-21} = rs; 4504b27eb58SMatheus Almeida let Inst{20-16} = rt; 4514b27eb58SMatheus Almeida let Inst{15-11} = rd; 4524b27eb58SMatheus Almeida let Inst{10-8} = 0b000; 4534b27eb58SMatheus Almeida let Inst{7-6} = sa; 4544b27eb58SMatheus Almeida let Inst{5-0} = minor; 4554b27eb58SMatheus Almeida} 456