MipsMSAInstrInfo.td revision 2fd3e67dc6438cee5e32e0d7d7d42891df7edd96
1//===- MipsMSAInstrInfo.td - MSA ASE instructions -*- tablegen ------------*-=// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file describes Mips MSA ASE instructions. 11// 12//===----------------------------------------------------------------------===// 13 14def immSExt5 : ImmLeaf<i32, [{return isInt<5>(Imm);}]>; 15def immSExt10: ImmLeaf<i32, [{return isInt<10>(Imm);}]>; 16 17def uimm3 : Operand<i32> { 18 let PrintMethod = "printUnsignedImm"; 19} 20 21def uimm4 : Operand<i32> { 22 let PrintMethod = "printUnsignedImm"; 23} 24 25def uimm6 : Operand<i32> { 26 let PrintMethod = "printUnsignedImm"; 27} 28 29def uimm8 : Operand<i32> { 30 let PrintMethod = "printUnsignedImm"; 31} 32 33def simm5 : Operand<i32>; 34 35def simm10 : Operand<i32>; 36 37// Instruction encoding. 38class ADD_A_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010000>; 39class ADD_A_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010000>; 40class ADD_A_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010000>; 41class ADD_A_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010000>; 42 43class ADDS_A_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010000>; 44class ADDS_A_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010000>; 45class ADDS_A_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010000>; 46class ADDS_A_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010000>; 47 48class ADDS_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010000>; 49class ADDS_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010000>; 50class ADDS_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010000>; 51class ADDS_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010000>; 52 53class ADDS_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010000>; 54class ADDS_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010000>; 55class ADDS_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010000>; 56class ADDS_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010000>; 57 58class ADDV_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001110>; 59class ADDV_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001110>; 60class ADDV_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001110>; 61class ADDV_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001110>; 62 63class ADDVI_B_ENC : MSA_I5_FMT<0b000, 0b00, 0b000110>; 64class ADDVI_H_ENC : MSA_I5_FMT<0b000, 0b01, 0b000110>; 65class ADDVI_W_ENC : MSA_I5_FMT<0b000, 0b10, 0b000110>; 66class ADDVI_D_ENC : MSA_I5_FMT<0b000, 0b11, 0b000110>; 67 68class AND_V_ENC : MSA_VEC_FMT<0b00000, 0b011110>; 69 70class ANDI_B_ENC : MSA_I8_FMT<0b00, 0b000000>; 71 72class ASUB_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010001>; 73class ASUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010001>; 74class ASUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010001>; 75class ASUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010001>; 76 77class ASUB_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010001>; 78class ASUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010001>; 79class ASUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010001>; 80class ASUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010001>; 81 82class AVE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010000>; 83class AVE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010000>; 84class AVE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010000>; 85class AVE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010000>; 86 87class AVE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010000>; 88class AVE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010000>; 89class AVE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010000>; 90class AVE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010000>; 91 92class AVER_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010000>; 93class AVER_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010000>; 94class AVER_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010000>; 95class AVER_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010000>; 96 97class AVER_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010000>; 98class AVER_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010000>; 99class AVER_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010000>; 100class AVER_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010000>; 101 102class BCLR_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001101>; 103class BCLR_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001101>; 104class BCLR_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001101>; 105class BCLR_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001101>; 106 107class BCLRI_B_ENC : MSA_BIT_B_FMT<0b011, 0b001001>; 108class BCLRI_H_ENC : MSA_BIT_H_FMT<0b011, 0b001001>; 109class BCLRI_W_ENC : MSA_BIT_W_FMT<0b011, 0b001001>; 110class BCLRI_D_ENC : MSA_BIT_D_FMT<0b011, 0b001001>; 111 112class BINSL_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001101>; 113class BINSL_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001101>; 114class BINSL_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001101>; 115class BINSL_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001101>; 116 117class BINSLI_B_ENC : MSA_BIT_B_FMT<0b110, 0b001001>; 118class BINSLI_H_ENC : MSA_BIT_H_FMT<0b110, 0b001001>; 119class BINSLI_W_ENC : MSA_BIT_W_FMT<0b110, 0b001001>; 120class BINSLI_D_ENC : MSA_BIT_D_FMT<0b110, 0b001001>; 121 122class BINSR_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001101>; 123class BINSR_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001101>; 124class BINSR_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001101>; 125class BINSR_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001101>; 126 127class BINSRI_B_ENC : MSA_BIT_B_FMT<0b111, 0b001001>; 128class BINSRI_H_ENC : MSA_BIT_H_FMT<0b111, 0b001001>; 129class BINSRI_W_ENC : MSA_BIT_W_FMT<0b111, 0b001001>; 130class BINSRI_D_ENC : MSA_BIT_D_FMT<0b111, 0b001001>; 131 132class BMNZ_V_ENC : MSA_VEC_FMT<0b00100, 0b011110>; 133 134class BMNZI_B_ENC : MSA_I8_FMT<0b00, 0b000001>; 135 136class BMZ_V_ENC : MSA_VEC_FMT<0b00101, 0b011110>; 137 138class BMZI_B_ENC : MSA_I8_FMT<0b01, 0b000001>; 139 140class BNEG_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001101>; 141class BNEG_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001101>; 142class BNEG_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001101>; 143class BNEG_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001101>; 144 145class BNEGI_B_ENC : MSA_BIT_B_FMT<0b101, 0b001001>; 146class BNEGI_H_ENC : MSA_BIT_H_FMT<0b101, 0b001001>; 147class BNEGI_W_ENC : MSA_BIT_W_FMT<0b101, 0b001001>; 148class BNEGI_D_ENC : MSA_BIT_D_FMT<0b101, 0b001001>; 149 150class BSEL_V_ENC : MSA_VEC_FMT<0b00110, 0b011110>; 151 152class BSELI_B_ENC : MSA_I8_FMT<0b10, 0b000001>; 153 154class BSET_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001101>; 155class BSET_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001101>; 156class BSET_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001101>; 157class BSET_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001101>; 158 159class BSETI_B_ENC : MSA_BIT_B_FMT<0b100, 0b001001>; 160class BSETI_H_ENC : MSA_BIT_H_FMT<0b100, 0b001001>; 161class BSETI_W_ENC : MSA_BIT_W_FMT<0b100, 0b001001>; 162class BSETI_D_ENC : MSA_BIT_D_FMT<0b100, 0b001001>; 163 164class CEQ_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001111>; 165class CEQ_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001111>; 166class CEQ_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001111>; 167class CEQ_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001111>; 168 169class CEQI_B_ENC : MSA_I5_FMT<0b000, 0b00, 0b000111>; 170class CEQI_H_ENC : MSA_I5_FMT<0b000, 0b01, 0b000111>; 171class CEQI_W_ENC : MSA_I5_FMT<0b000, 0b10, 0b000111>; 172class CEQI_D_ENC : MSA_I5_FMT<0b000, 0b11, 0b000111>; 173 174class CFCMSA_ENC : MSA_ELM_FMT<0b0001111110, 0b011001>; 175 176class CLE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001111>; 177class CLE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001111>; 178class CLE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001111>; 179class CLE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001111>; 180 181class CLE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001111>; 182class CLE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001111>; 183class CLE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001111>; 184class CLE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001111>; 185 186class CLEI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000111>; 187class CLEI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000111>; 188class CLEI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000111>; 189class CLEI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000111>; 190 191class CLEI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000111>; 192class CLEI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000111>; 193class CLEI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000111>; 194class CLEI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000111>; 195 196class CLT_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001111>; 197class CLT_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001111>; 198class CLT_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001111>; 199class CLT_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001111>; 200 201class CLT_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001111>; 202class CLT_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001111>; 203class CLT_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001111>; 204class CLT_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001111>; 205 206class CLTI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000111>; 207class CLTI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000111>; 208class CLTI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000111>; 209class CLTI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000111>; 210 211class CLTI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000111>; 212class CLTI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000111>; 213class CLTI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000111>; 214class CLTI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000111>; 215 216class COPY_S_B_ENC : MSA_ELM_B_FMT<0b0010, 0b011001>; 217class COPY_S_H_ENC : MSA_ELM_H_FMT<0b0010, 0b011001>; 218class COPY_S_W_ENC : MSA_ELM_W_FMT<0b0010, 0b011001>; 219 220class COPY_U_B_ENC : MSA_ELM_B_FMT<0b0011, 0b011001>; 221class COPY_U_H_ENC : MSA_ELM_H_FMT<0b0011, 0b011001>; 222class COPY_U_W_ENC : MSA_ELM_W_FMT<0b0011, 0b011001>; 223 224class CTCMSA_ENC : MSA_ELM_FMT<0b0000111110, 0b011001>; 225 226class DIV_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010010>; 227class DIV_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010010>; 228class DIV_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010010>; 229class DIV_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010010>; 230 231class DIV_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010010>; 232class DIV_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010010>; 233class DIV_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010010>; 234class DIV_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010010>; 235 236class DOTP_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010011>; 237class DOTP_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010011>; 238class DOTP_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010011>; 239class DOTP_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010011>; 240 241class DOTP_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010011>; 242class DOTP_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010011>; 243class DOTP_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010011>; 244class DOTP_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010011>; 245 246class DPADD_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010011>; 247class DPADD_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010011>; 248class DPADD_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010011>; 249 250class DPADD_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010011>; 251class DPADD_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010011>; 252class DPADD_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010011>; 253 254class DPSUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010011>; 255class DPSUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010011>; 256class DPSUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010011>; 257 258class DPSUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010011>; 259class DPSUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010011>; 260class DPSUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010011>; 261 262class FADD_W_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011011>; 263class FADD_D_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011011>; 264 265class FCAF_W_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011010>; 266class FCAF_D_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011010>; 267 268class FCEQ_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011010>; 269class FCEQ_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011010>; 270 271class FCLASS_W_ENC : MSA_2RF_FMT<0b110010000, 0b0, 0b011110>; 272class FCLASS_D_ENC : MSA_2RF_FMT<0b110010000, 0b1, 0b011110>; 273 274class FCLE_W_ENC : MSA_3RF_FMT<0b0110, 0b0, 0b011010>; 275class FCLE_D_ENC : MSA_3RF_FMT<0b0110, 0b1, 0b011010>; 276 277class FCLT_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011010>; 278class FCLT_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011010>; 279 280class FCNE_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011100>; 281class FCNE_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011100>; 282 283class FCOR_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011100>; 284class FCOR_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011100>; 285 286class FCUEQ_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011010>; 287class FCUEQ_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011010>; 288 289class FCULE_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011010>; 290class FCULE_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011010>; 291 292class FCULT_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011010>; 293class FCULT_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011010>; 294 295class FCUN_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011010>; 296class FCUN_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011010>; 297 298class FCUNE_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011100>; 299class FCUNE_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011100>; 300 301class FDIV_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011011>; 302class FDIV_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011011>; 303 304class FEXDO_H_ENC : MSA_3RF_FMT<0b1000, 0b0, 0b011011>; 305class FEXDO_W_ENC : MSA_3RF_FMT<0b1000, 0b1, 0b011011>; 306 307class FEXP2_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011011>; 308class FEXP2_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011011>; 309 310class FEXUPL_W_ENC : MSA_2RF_FMT<0b110011000, 0b0, 0b011110>; 311class FEXUPL_D_ENC : MSA_2RF_FMT<0b110011000, 0b1, 0b011110>; 312 313class FEXUPR_W_ENC : MSA_2RF_FMT<0b110011001, 0b0, 0b011110>; 314class FEXUPR_D_ENC : MSA_2RF_FMT<0b110011001, 0b1, 0b011110>; 315 316class FFINT_S_W_ENC : MSA_2RF_FMT<0b110011110, 0b0, 0b011110>; 317class FFINT_S_D_ENC : MSA_2RF_FMT<0b110011110, 0b1, 0b011110>; 318 319class FFINT_U_W_ENC : MSA_2RF_FMT<0b110011111, 0b0, 0b011110>; 320class FFINT_U_D_ENC : MSA_2RF_FMT<0b110011111, 0b1, 0b011110>; 321 322class FFQL_W_ENC : MSA_2RF_FMT<0b110011010, 0b0, 0b011110>; 323class FFQL_D_ENC : MSA_2RF_FMT<0b110011010, 0b1, 0b011110>; 324 325class FFQR_W_ENC : MSA_2RF_FMT<0b110011011, 0b0, 0b011110>; 326class FFQR_D_ENC : MSA_2RF_FMT<0b110011011, 0b1, 0b011110>; 327 328class FILL_B_ENC : MSA_2R_FMT<0b11000000, 0b00, 0b011110>; 329class FILL_H_ENC : MSA_2R_FMT<0b11000000, 0b01, 0b011110>; 330class FILL_W_ENC : MSA_2R_FMT<0b11000000, 0b10, 0b011110>; 331 332class FLOG2_W_ENC : MSA_2RF_FMT<0b110010111, 0b0, 0b011110>; 333class FLOG2_D_ENC : MSA_2RF_FMT<0b110010111, 0b1, 0b011110>; 334 335class FMADD_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011011>; 336class FMADD_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011011>; 337 338class FMAX_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011011>; 339class FMAX_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011011>; 340 341class FMAX_A_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011011>; 342class FMAX_A_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011011>; 343 344class FMIN_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011011>; 345class FMIN_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011011>; 346 347class FMIN_A_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011011>; 348class FMIN_A_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011011>; 349 350class FMSUB_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011011>; 351class FMSUB_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011011>; 352 353class FMUL_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011011>; 354class FMUL_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011011>; 355 356class FRINT_W_ENC : MSA_2RF_FMT<0b110010110, 0b0, 0b011110>; 357class FRINT_D_ENC : MSA_2RF_FMT<0b110010110, 0b1, 0b011110>; 358 359class FRCP_W_ENC : MSA_2RF_FMT<0b110010101, 0b0, 0b011110>; 360class FRCP_D_ENC : MSA_2RF_FMT<0b110010101, 0b1, 0b011110>; 361 362class FRSQRT_W_ENC : MSA_2RF_FMT<0b110010100, 0b0, 0b011110>; 363class FRSQRT_D_ENC : MSA_2RF_FMT<0b110010100, 0b1, 0b011110>; 364 365class FSAF_W_ENC : MSA_3RF_FMT<0b1000, 0b0, 0b011010>; 366class FSAF_D_ENC : MSA_3RF_FMT<0b1000, 0b1, 0b011010>; 367 368class FSEQ_W_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011010>; 369class FSEQ_D_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011010>; 370 371class FSLE_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011010>; 372class FSLE_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011010>; 373 374class FSLT_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011010>; 375class FSLT_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011010>; 376 377class FSNE_W_ENC : MSA_3RF_FMT<0b1011, 0b0, 0b011100>; 378class FSNE_D_ENC : MSA_3RF_FMT<0b1011, 0b1, 0b011100>; 379 380class FSOR_W_ENC : MSA_3RF_FMT<0b1001, 0b0, 0b011100>; 381class FSOR_D_ENC : MSA_3RF_FMT<0b1001, 0b1, 0b011100>; 382 383class FSQRT_W_ENC : MSA_2RF_FMT<0b110010011, 0b0, 0b011110>; 384class FSQRT_D_ENC : MSA_2RF_FMT<0b110010011, 0b1, 0b011110>; 385 386class FSUB_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011011>; 387class FSUB_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011011>; 388 389class FSUEQ_W_ENC : MSA_3RF_FMT<0b1011, 0b0, 0b011010>; 390class FSUEQ_D_ENC : MSA_3RF_FMT<0b1011, 0b1, 0b011010>; 391 392class FSULE_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011010>; 393class FSULE_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011010>; 394 395class FSULT_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011010>; 396class FSULT_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011010>; 397 398class FSUN_W_ENC : MSA_3RF_FMT<0b1001, 0b0, 0b011010>; 399class FSUN_D_ENC : MSA_3RF_FMT<0b1001, 0b1, 0b011010>; 400 401class FSUNE_W_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011100>; 402class FSUNE_D_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011100>; 403 404class FTRUNC_S_W_ENC : MSA_2RF_FMT<0b110100000, 0b0, 0b011110>; 405class FTRUNC_S_D_ENC : MSA_2RF_FMT<0b110100000, 0b1, 0b011110>; 406 407class FTRUNC_U_W_ENC : MSA_2RF_FMT<0b110100001, 0b0, 0b011110>; 408class FTRUNC_U_D_ENC : MSA_2RF_FMT<0b110100001, 0b1, 0b011110>; 409 410class FTINT_S_W_ENC : MSA_2RF_FMT<0b110011100, 0b0, 0b011110>; 411class FTINT_S_D_ENC : MSA_2RF_FMT<0b110011100, 0b1, 0b011110>; 412 413class FTINT_U_W_ENC : MSA_2RF_FMT<0b110011101, 0b0, 0b011110>; 414class FTINT_U_D_ENC : MSA_2RF_FMT<0b110011101, 0b1, 0b011110>; 415 416class FTQ_H_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011011>; 417class FTQ_W_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011011>; 418 419class HADD_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010101>; 420class HADD_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010101>; 421class HADD_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010101>; 422 423class HADD_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010101>; 424class HADD_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010101>; 425class HADD_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010101>; 426 427class HSUB_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010101>; 428class HSUB_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010101>; 429class HSUB_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010101>; 430 431class HSUB_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010101>; 432class HSUB_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010101>; 433class HSUB_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010101>; 434 435class ILVEV_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010100>; 436class ILVEV_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010100>; 437class ILVEV_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010100>; 438class ILVEV_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010100>; 439 440class ILVL_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010100>; 441class ILVL_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010100>; 442class ILVL_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010100>; 443class ILVL_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010100>; 444 445class ILVOD_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010100>; 446class ILVOD_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010100>; 447class ILVOD_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010100>; 448class ILVOD_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010100>; 449 450class ILVR_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010100>; 451class ILVR_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010100>; 452class ILVR_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010100>; 453class ILVR_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010100>; 454 455class INSERT_B_ENC : MSA_ELM_B_FMT<0b0100, 0b011001>; 456class INSERT_H_ENC : MSA_ELM_H_FMT<0b0100, 0b011001>; 457class INSERT_W_ENC : MSA_ELM_W_FMT<0b0100, 0b011001>; 458 459class INSVE_B_ENC : MSA_ELM_B_FMT<0b0101, 0b011001>; 460class INSVE_H_ENC : MSA_ELM_H_FMT<0b0101, 0b011001>; 461class INSVE_W_ENC : MSA_ELM_W_FMT<0b0101, 0b011001>; 462class INSVE_D_ENC : MSA_ELM_D_FMT<0b0101, 0b011001>; 463 464class LD_B_ENC : MSA_I5_FMT<0b110, 0b00, 0b000111>; 465class LD_H_ENC : MSA_I5_FMT<0b110, 0b01, 0b000111>; 466class LD_W_ENC : MSA_I5_FMT<0b110, 0b10, 0b000111>; 467class LD_D_ENC : MSA_I5_FMT<0b110, 0b11, 0b000111>; 468 469class LDI_B_ENC : MSA_I10_FMT<0b010, 0b00, 0b001100>; 470class LDI_H_ENC : MSA_I10_FMT<0b010, 0b01, 0b001100>; 471class LDI_W_ENC : MSA_I10_FMT<0b010, 0b10, 0b001100>; 472class LDI_D_ENC : MSA_I10_FMT<0b010, 0b11, 0b001100>; 473 474class LDX_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001111>; 475class LDX_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001111>; 476class LDX_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001111>; 477class LDX_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001111>; 478 479class MADD_Q_H_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011100>; 480class MADD_Q_W_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011100>; 481 482class MADDR_Q_H_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011100>; 483class MADDR_Q_W_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011100>; 484 485class MADDV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010010>; 486class MADDV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010010>; 487class MADDV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010010>; 488class MADDV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010010>; 489 490class MAX_A_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001110>; 491class MAX_A_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001110>; 492class MAX_A_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001110>; 493class MAX_A_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001110>; 494 495class MAX_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001110>; 496class MAX_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001110>; 497class MAX_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001110>; 498class MAX_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001110>; 499 500class MAX_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001110>; 501class MAX_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001110>; 502class MAX_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001110>; 503class MAX_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001110>; 504 505class MAXI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000110>; 506class MAXI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000110>; 507class MAXI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000110>; 508class MAXI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000110>; 509 510class MAXI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000110>; 511class MAXI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000110>; 512class MAXI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000110>; 513class MAXI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000110>; 514 515class MIN_A_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001110>; 516class MIN_A_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001110>; 517class MIN_A_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001110>; 518class MIN_A_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001110>; 519 520class MIN_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001110>; 521class MIN_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001110>; 522class MIN_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001110>; 523class MIN_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001110>; 524 525class MIN_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001110>; 526class MIN_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001110>; 527class MIN_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001110>; 528class MIN_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001110>; 529 530class MINI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000110>; 531class MINI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000110>; 532class MINI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000110>; 533class MINI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000110>; 534 535class MINI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000110>; 536class MINI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000110>; 537class MINI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000110>; 538class MINI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000110>; 539 540class MOD_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010010>; 541class MOD_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010010>; 542class MOD_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010010>; 543class MOD_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010010>; 544 545class MOD_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010010>; 546class MOD_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010010>; 547class MOD_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010010>; 548class MOD_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010010>; 549 550class MOVE_V_ENC : MSA_ELM_FMT<0b0010111110, 0b011001>; 551 552class MSUB_Q_H_ENC : MSA_3RF_FMT<0b0110, 0b0, 0b011100>; 553class MSUB_Q_W_ENC : MSA_3RF_FMT<0b0110, 0b1, 0b011100>; 554 555class MSUBR_Q_H_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011100>; 556class MSUBR_Q_W_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011100>; 557 558class MSUBV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010010>; 559class MSUBV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010010>; 560class MSUBV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010010>; 561class MSUBV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010010>; 562 563class MUL_Q_H_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011100>; 564class MUL_Q_W_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011100>; 565 566class MULR_Q_H_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011100>; 567class MULR_Q_W_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011100>; 568 569class MULV_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010010>; 570class MULV_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010010>; 571class MULV_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010010>; 572class MULV_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010010>; 573 574class NLOC_B_ENC : MSA_2R_FMT<0b11000010, 0b00, 0b011110>; 575class NLOC_H_ENC : MSA_2R_FMT<0b11000010, 0b01, 0b011110>; 576class NLOC_W_ENC : MSA_2R_FMT<0b11000010, 0b10, 0b011110>; 577class NLOC_D_ENC : MSA_2R_FMT<0b11000010, 0b11, 0b011110>; 578 579class NLZC_B_ENC : MSA_2R_FMT<0b11000011, 0b00, 0b011110>; 580class NLZC_H_ENC : MSA_2R_FMT<0b11000011, 0b01, 0b011110>; 581class NLZC_W_ENC : MSA_2R_FMT<0b11000011, 0b10, 0b011110>; 582class NLZC_D_ENC : MSA_2R_FMT<0b11000011, 0b11, 0b011110>; 583 584class NOR_V_ENC : MSA_VEC_FMT<0b00010, 0b011110>; 585 586class NORI_B_ENC : MSA_I8_FMT<0b10, 0b000000>; 587 588class OR_V_ENC : MSA_VEC_FMT<0b00001, 0b011110>; 589 590class ORI_B_ENC : MSA_I8_FMT<0b01, 0b000000>; 591 592class PCKEV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010100>; 593class PCKEV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010100>; 594class PCKEV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010100>; 595class PCKEV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010100>; 596 597class PCKOD_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010100>; 598class PCKOD_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010100>; 599class PCKOD_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010100>; 600class PCKOD_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010100>; 601 602class PCNT_B_ENC : MSA_2R_FMT<0b11000001, 0b00, 0b011110>; 603class PCNT_H_ENC : MSA_2R_FMT<0b11000001, 0b01, 0b011110>; 604class PCNT_W_ENC : MSA_2R_FMT<0b11000001, 0b10, 0b011110>; 605class PCNT_D_ENC : MSA_2R_FMT<0b11000001, 0b11, 0b011110>; 606 607class SAT_S_B_ENC : MSA_BIT_B_FMT<0b000, 0b001010>; 608class SAT_S_H_ENC : MSA_BIT_H_FMT<0b000, 0b001010>; 609class SAT_S_W_ENC : MSA_BIT_W_FMT<0b000, 0b001010>; 610class SAT_S_D_ENC : MSA_BIT_D_FMT<0b000, 0b001010>; 611 612class SAT_U_B_ENC : MSA_BIT_B_FMT<0b001, 0b001010>; 613class SAT_U_H_ENC : MSA_BIT_H_FMT<0b001, 0b001010>; 614class SAT_U_W_ENC : MSA_BIT_W_FMT<0b001, 0b001010>; 615class SAT_U_D_ENC : MSA_BIT_D_FMT<0b001, 0b001010>; 616 617class SHF_B_ENC : MSA_I8_FMT<0b00, 0b000010>; 618class SHF_H_ENC : MSA_I8_FMT<0b01, 0b000010>; 619class SHF_W_ENC : MSA_I8_FMT<0b10, 0b000010>; 620 621class SLD_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010100>; 622class SLD_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010100>; 623class SLD_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010100>; 624class SLD_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010100>; 625 626class SLDI_B_ENC : MSA_ELM_B_FMT<0b0000, 0b011001>; 627class SLDI_H_ENC : MSA_ELM_H_FMT<0b0000, 0b011001>; 628class SLDI_W_ENC : MSA_ELM_W_FMT<0b0000, 0b011001>; 629class SLDI_D_ENC : MSA_ELM_D_FMT<0b0000, 0b011001>; 630 631class SLL_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001101>; 632class SLL_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001101>; 633class SLL_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001101>; 634class SLL_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001101>; 635 636class SLLI_B_ENC : MSA_BIT_B_FMT<0b000, 0b001001>; 637class SLLI_H_ENC : MSA_BIT_H_FMT<0b000, 0b001001>; 638class SLLI_W_ENC : MSA_BIT_W_FMT<0b000, 0b001001>; 639class SLLI_D_ENC : MSA_BIT_D_FMT<0b000, 0b001001>; 640 641class SPLAT_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010100>; 642class SPLAT_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010100>; 643class SPLAT_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010100>; 644class SPLAT_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010100>; 645 646class SPLATI_B_ENC : MSA_ELM_B_FMT<0b0001, 0b011001>; 647class SPLATI_H_ENC : MSA_ELM_H_FMT<0b0001, 0b011001>; 648class SPLATI_W_ENC : MSA_ELM_W_FMT<0b0001, 0b011001>; 649class SPLATI_D_ENC : MSA_ELM_D_FMT<0b0001, 0b011001>; 650 651class SRA_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001101>; 652class SRA_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001101>; 653class SRA_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001101>; 654class SRA_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001101>; 655 656class SRAI_B_ENC : MSA_BIT_B_FMT<0b001, 0b001001>; 657class SRAI_H_ENC : MSA_BIT_H_FMT<0b001, 0b001001>; 658class SRAI_W_ENC : MSA_BIT_W_FMT<0b001, 0b001001>; 659class SRAI_D_ENC : MSA_BIT_D_FMT<0b001, 0b001001>; 660 661class SRAR_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010101>; 662class SRAR_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010101>; 663class SRAR_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010101>; 664class SRAR_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010101>; 665 666class SRARI_B_ENC : MSA_BIT_B_FMT<0b010, 0b001010>; 667class SRARI_H_ENC : MSA_BIT_H_FMT<0b010, 0b001010>; 668class SRARI_W_ENC : MSA_BIT_W_FMT<0b010, 0b001010>; 669class SRARI_D_ENC : MSA_BIT_D_FMT<0b010, 0b001010>; 670 671class SRL_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001101>; 672class SRL_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001101>; 673class SRL_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001101>; 674class SRL_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001101>; 675 676class SRLI_B_ENC : MSA_BIT_B_FMT<0b010, 0b001001>; 677class SRLI_H_ENC : MSA_BIT_H_FMT<0b010, 0b001001>; 678class SRLI_W_ENC : MSA_BIT_W_FMT<0b010, 0b001001>; 679class SRLI_D_ENC : MSA_BIT_D_FMT<0b010, 0b001001>; 680 681class SRLR_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010101>; 682class SRLR_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010101>; 683class SRLR_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010101>; 684class SRLR_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010101>; 685 686class SRLRI_B_ENC : MSA_BIT_B_FMT<0b011, 0b001010>; 687class SRLRI_H_ENC : MSA_BIT_H_FMT<0b011, 0b001010>; 688class SRLRI_W_ENC : MSA_BIT_W_FMT<0b011, 0b001010>; 689class SRLRI_D_ENC : MSA_BIT_D_FMT<0b011, 0b001010>; 690 691class ST_B_ENC : MSA_I5_FMT<0b111, 0b00, 0b000111>; 692class ST_H_ENC : MSA_I5_FMT<0b111, 0b01, 0b000111>; 693class ST_W_ENC : MSA_I5_FMT<0b111, 0b10, 0b000111>; 694class ST_D_ENC : MSA_I5_FMT<0b111, 0b11, 0b000111>; 695 696class STX_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001111>; 697class STX_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001111>; 698class STX_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001111>; 699class STX_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001111>; 700 701class SUBS_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010001>; 702class SUBS_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010001>; 703class SUBS_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010001>; 704class SUBS_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010001>; 705 706class SUBS_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010001>; 707class SUBS_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010001>; 708class SUBS_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010001>; 709class SUBS_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010001>; 710 711class SUBSUS_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010001>; 712class SUBSUS_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010001>; 713class SUBSUS_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010001>; 714class SUBSUS_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010001>; 715 716class SUBSUU_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010001>; 717class SUBSUU_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010001>; 718class SUBSUU_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010001>; 719class SUBSUU_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010001>; 720 721class SUBV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001110>; 722class SUBV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001110>; 723class SUBV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001110>; 724class SUBV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001110>; 725 726class SUBVI_B_ENC : MSA_I5_FMT<0b001, 0b00, 0b000110>; 727class SUBVI_H_ENC : MSA_I5_FMT<0b001, 0b01, 0b000110>; 728class SUBVI_W_ENC : MSA_I5_FMT<0b001, 0b10, 0b000110>; 729class SUBVI_D_ENC : MSA_I5_FMT<0b001, 0b11, 0b000110>; 730 731class VSHF_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010101>; 732class VSHF_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010101>; 733class VSHF_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010101>; 734class VSHF_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010101>; 735 736class XOR_V_ENC : MSA_VEC_FMT<0b00011, 0b011110>; 737 738class XORI_B_ENC : MSA_I8_FMT<0b11, 0b000000>; 739 740// Instruction desc. 741class MSA_BIT_D_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 742 InstrItinClass itin, RegisterClass RCWD, 743 RegisterClass RCWS> { 744 dag OutOperandList = (outs RCWD:$wd); 745 dag InOperandList = (ins RCWS:$ws, uimm6:$u6); 746 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u6"); 747 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt6:$u6))]; 748 InstrItinClass Itinerary = itin; 749} 750 751class MSA_BIT_W_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 752 InstrItinClass itin, RegisterClass RCWD, 753 RegisterClass RCWS> { 754 dag OutOperandList = (outs RCWD:$wd); 755 dag InOperandList = (ins RCWS:$ws, uimm5:$u5); 756 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5"); 757 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))]; 758 InstrItinClass Itinerary = itin; 759} 760 761class MSA_BIT_H_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 762 InstrItinClass itin, RegisterClass RCWD, 763 RegisterClass RCWS> { 764 dag OutOperandList = (outs RCWD:$wd); 765 dag InOperandList = (ins RCWS:$ws, uimm4:$u4); 766 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u4"); 767 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt4:$u4))]; 768 InstrItinClass Itinerary = itin; 769} 770 771class MSA_BIT_B_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 772 InstrItinClass itin, RegisterClass RCWD, 773 RegisterClass RCWS> { 774 dag OutOperandList = (outs RCWD:$wd); 775 dag InOperandList = (ins RCWS:$ws, uimm3:$u3); 776 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u3"); 777 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt3:$u3))]; 778 InstrItinClass Itinerary = itin; 779} 780 781class MSA_COPY_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 782 InstrItinClass itin, RegisterClass RCD, 783 RegisterClass RCWS> { 784 dag OutOperandList = (outs RCD:$rd); 785 dag InOperandList = (ins RCWS:$ws, uimm6:$n); 786 string AsmString = !strconcat(instr_asm, "\t$rd, $ws[$n]"); 787 list<dag> Pattern = [(set RCD:$rd, (OpNode RCWS:$ws, immZExt6:$n))]; 788 InstrItinClass Itinerary = itin; 789} 790 791class MSA_I5_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 792 InstrItinClass itin, RegisterClass RCWD, 793 RegisterClass RCWS> { 794 dag OutOperandList = (outs RCWD:$wd); 795 dag InOperandList = (ins RCWS:$ws, uimm5:$u5); 796 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5"); 797 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))]; 798 InstrItinClass Itinerary = itin; 799} 800 801class MSA_SI5_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 802 InstrItinClass itin, RegisterClass RCWD, 803 RegisterClass RCWS> { 804 dag OutOperandList = (outs RCWD:$wd); 805 dag InOperandList = (ins RCWS:$ws, simm5:$s5); 806 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $s5"); 807 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immSExt5:$s5))]; 808 InstrItinClass Itinerary = itin; 809} 810 811class MSA_I8_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 812 InstrItinClass itin, RegisterClass RCWD, 813 RegisterClass RCWS> { 814 dag OutOperandList = (outs RCWD:$wd); 815 dag InOperandList = (ins RCWS:$ws, uimm8:$u8); 816 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u8"); 817 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt8:$u8))]; 818 InstrItinClass Itinerary = itin; 819} 820 821class MSA_I10_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 822 InstrItinClass itin, RegisterClass RCWD> { 823 dag OutOperandList = (outs RCWD:$wd); 824 dag InOperandList = (ins simm10:$i10); 825 string AsmString = !strconcat(instr_asm, "\t$wd, $i10"); 826 list<dag> Pattern = [(set RCWD:$wd, (OpNode immSExt10:$i10))]; 827 InstrItinClass Itinerary = itin; 828} 829 830class MSA_2R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 831 InstrItinClass itin, RegisterClass RCWD, 832 RegisterClass RCWS> { 833 dag OutOperandList = (outs RCWD:$wd); 834 dag InOperandList = (ins RCWS:$ws); 835 string AsmString = !strconcat(instr_asm, "\t$wd, $ws"); 836 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws))]; 837 InstrItinClass Itinerary = itin; 838} 839 840class MSA_2RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 841 InstrItinClass itin, RegisterClass RCWD, 842 RegisterClass RCWS> : 843 MSA_2R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS>; 844 845 846class MSA_3R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 847 InstrItinClass itin, RegisterClass RCWD, 848 RegisterClass RCWS, RegisterClass RCWT = RCWS> { 849 dag OutOperandList = (outs RCWD:$wd); 850 dag InOperandList = (ins RCWS:$ws, RCWT:$wt); 851 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt"); 852 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))]; 853 InstrItinClass Itinerary = itin; 854} 855 856class MSA_3R_4R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 857 InstrItinClass itin, RegisterClass RCWD, 858 RegisterClass RCWS, RegisterClass RCWT = RCWS> { 859 dag OutOperandList = (outs RCWD:$wd); 860 dag InOperandList = (ins RCWD:$wd_in, RCWS:$ws, RCWT:$wt); 861 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt"); 862 list<dag> Pattern = [(set RCWD:$wd, 863 (OpNode RCWD:$wd_in, RCWS:$ws, RCWT:$wt))]; 864 InstrItinClass Itinerary = itin; 865 string Constraints = "$wd = $wd_in"; 866} 867 868class MSA_3RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 869 InstrItinClass itin, RegisterClass RCWD, 870 RegisterClass RCWS, RegisterClass RCWT = RCWS> : 871 MSA_3R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>; 872 873class MSA_3RF_4RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 874 InstrItinClass itin, RegisterClass RCWD, 875 RegisterClass RCWS, RegisterClass RCWT = RCWS> : 876 MSA_3R_4R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>; 877 878class MSA_INSERT_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 879 InstrItinClass itin, RegisterClass RCD, 880 RegisterClass RCWS> { 881 dag OutOperandList = (outs RCD:$wd); 882 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$rs); 883 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $rs"); 884 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in, 885 immZExt6:$n, 886 RCWS:$rs))]; 887 InstrItinClass Itinerary = itin; 888 string Constraints = "$wd = $wd_in"; 889} 890 891class MSA_INSVE_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 892 InstrItinClass itin, RegisterClass RCD, 893 RegisterClass RCWS> { 894 dag OutOperandList = (outs RCD:$wd); 895 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$ws); 896 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $ws[0]"); 897 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in, 898 immZExt6:$n, 899 RCWS:$ws))]; 900 InstrItinClass Itinerary = itin; 901 string Constraints = "$wd = $wd_in"; 902} 903 904class MSA_VEC_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 905 InstrItinClass itin, RegisterClass RCWD, 906 RegisterClass RCWS, RegisterClass RCWT = RCWS> { 907 dag OutOperandList = (outs RCWD:$wd); 908 dag InOperandList = (ins RCWS:$ws, RCWT:$wt); 909 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt"); 910 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))]; 911 InstrItinClass Itinerary = itin; 912} 913 914class ADD_A_B_DESC : MSA_3R_DESC_BASE<"add_a.b", int_mips_add_a_b, NoItinerary, 915 MSA128B, MSA128B>, IsCommutable; 916class ADD_A_H_DESC : MSA_3R_DESC_BASE<"add_a.h", int_mips_add_a_h, NoItinerary, 917 MSA128H, MSA128H>, IsCommutable; 918class ADD_A_W_DESC : MSA_3R_DESC_BASE<"add_a.w", int_mips_add_a_w, NoItinerary, 919 MSA128W, MSA128W>, IsCommutable; 920class ADD_A_D_DESC : MSA_3R_DESC_BASE<"add_a.d", int_mips_add_a_d, NoItinerary, 921 MSA128D, MSA128D>, IsCommutable; 922 923class ADDS_A_B_DESC : MSA_3R_DESC_BASE<"adds_a.b", int_mips_adds_a_b, 924 NoItinerary, MSA128B, MSA128B>, 925 IsCommutable; 926class ADDS_A_H_DESC : MSA_3R_DESC_BASE<"adds_a.h", int_mips_adds_a_h, 927 NoItinerary, MSA128H, MSA128H>, 928 IsCommutable; 929class ADDS_A_W_DESC : MSA_3R_DESC_BASE<"adds_a.w", int_mips_adds_a_w, 930 NoItinerary, MSA128W, MSA128W>, 931 IsCommutable; 932class ADDS_A_D_DESC : MSA_3R_DESC_BASE<"adds_a.d", int_mips_adds_a_d, 933 NoItinerary, MSA128D, MSA128D>, 934 IsCommutable; 935 936class ADDS_S_B_DESC : MSA_3R_DESC_BASE<"adds_s.b", int_mips_adds_s_b, 937 NoItinerary, MSA128B, MSA128B>, 938 IsCommutable; 939class ADDS_S_H_DESC : MSA_3R_DESC_BASE<"adds_s.h", int_mips_adds_s_h, 940 NoItinerary, MSA128H, MSA128H>, 941 IsCommutable; 942class ADDS_S_W_DESC : MSA_3R_DESC_BASE<"adds_s.w", int_mips_adds_s_w, 943 NoItinerary, MSA128W, MSA128W>, 944 IsCommutable; 945class ADDS_S_D_DESC : MSA_3R_DESC_BASE<"adds_s.d", int_mips_adds_s_d, 946 NoItinerary, MSA128D, MSA128D>, 947 IsCommutable; 948 949class ADDS_U_B_DESC : MSA_3R_DESC_BASE<"adds_u.b", int_mips_adds_u_b, 950 NoItinerary, MSA128B, MSA128B>, 951 IsCommutable; 952class ADDS_U_H_DESC : MSA_3R_DESC_BASE<"adds_u.h", int_mips_adds_u_h, 953 NoItinerary, MSA128H, MSA128H>, 954 IsCommutable; 955class ADDS_U_W_DESC : MSA_3R_DESC_BASE<"adds_u.w", int_mips_adds_u_w, 956 NoItinerary, MSA128W, MSA128W>, 957 IsCommutable; 958class ADDS_U_D_DESC : MSA_3R_DESC_BASE<"adds_u.d", int_mips_adds_u_d, 959 NoItinerary, MSA128D, MSA128D>, 960 IsCommutable; 961 962class ADDV_B_DESC : MSA_3R_DESC_BASE<"addv.b", int_mips_addv_b, NoItinerary, 963 MSA128B, MSA128B>, IsCommutable; 964class ADDV_H_DESC : MSA_3R_DESC_BASE<"addv.h", int_mips_addv_h, NoItinerary, 965 MSA128H, MSA128H>, IsCommutable; 966class ADDV_W_DESC : MSA_3R_DESC_BASE<"addv.w", int_mips_addv_w, NoItinerary, 967 MSA128W, MSA128W>, IsCommutable; 968class ADDV_D_DESC : MSA_3R_DESC_BASE<"addv.d", int_mips_addv_d, NoItinerary, 969 MSA128D, MSA128D>, IsCommutable; 970 971class ADDVI_B_DESC : MSA_I5_DESC_BASE<"addvi.b", int_mips_addvi_b, NoItinerary, 972 MSA128B, MSA128B>; 973class ADDVI_H_DESC : MSA_I5_DESC_BASE<"addvi.h", int_mips_addvi_h, NoItinerary, 974 MSA128H, MSA128H>; 975class ADDVI_W_DESC : MSA_I5_DESC_BASE<"addvi.w", int_mips_addvi_w, NoItinerary, 976 MSA128W, MSA128W>; 977class ADDVI_D_DESC : MSA_I5_DESC_BASE<"addvi.d", int_mips_addvi_d, NoItinerary, 978 MSA128D, MSA128D>; 979 980class AND_V_DESC : MSA_VEC_DESC_BASE<"and.v", int_mips_and_v, NoItinerary, 981 MSA128B, MSA128B>; 982 983class ANDI_B_DESC : MSA_I8_DESC_BASE<"andi.b", int_mips_andi_b, NoItinerary, 984 MSA128B, MSA128B>; 985 986class ASUB_S_B_DESC : MSA_3R_DESC_BASE<"asub_s.b", int_mips_asub_s_b, 987 NoItinerary, MSA128B, MSA128B>; 988class ASUB_S_H_DESC : MSA_3R_DESC_BASE<"asub_s.h", int_mips_asub_s_h, 989 NoItinerary, MSA128H, MSA128H>; 990class ASUB_S_W_DESC : MSA_3R_DESC_BASE<"asub_s.w", int_mips_asub_s_w, 991 NoItinerary, MSA128W, MSA128W>; 992class ASUB_S_D_DESC : MSA_3R_DESC_BASE<"asub_s.d", int_mips_asub_s_d, 993 NoItinerary, MSA128D, MSA128D>; 994 995class ASUB_U_B_DESC : MSA_3R_DESC_BASE<"asub_u.b", int_mips_asub_u_b, 996 NoItinerary, MSA128B, MSA128B>; 997class ASUB_U_H_DESC : MSA_3R_DESC_BASE<"asub_u.h", int_mips_asub_u_h, 998 NoItinerary, MSA128H, MSA128H>; 999class ASUB_U_W_DESC : MSA_3R_DESC_BASE<"asub_u.w", int_mips_asub_u_w, 1000 NoItinerary, MSA128W, MSA128W>; 1001class ASUB_U_D_DESC : MSA_3R_DESC_BASE<"asub_u.d", int_mips_asub_u_d, 1002 NoItinerary, MSA128D, MSA128D>; 1003 1004class AVE_S_B_DESC : MSA_3R_DESC_BASE<"ave_s.b", int_mips_ave_s_b, NoItinerary, 1005 MSA128B, MSA128B>, IsCommutable; 1006class AVE_S_H_DESC : MSA_3R_DESC_BASE<"ave_s.h", int_mips_ave_s_h, NoItinerary, 1007 MSA128H, MSA128H>, IsCommutable; 1008class AVE_S_W_DESC : MSA_3R_DESC_BASE<"ave_s.w", int_mips_ave_s_w, NoItinerary, 1009 MSA128W, MSA128W>, IsCommutable; 1010class AVE_S_D_DESC : MSA_3R_DESC_BASE<"ave_s.d", int_mips_ave_s_d, NoItinerary, 1011 MSA128D, MSA128D>, IsCommutable; 1012 1013class AVE_U_B_DESC : MSA_3R_DESC_BASE<"ave_u.b", int_mips_ave_u_b, NoItinerary, 1014 MSA128B, MSA128B>, IsCommutable; 1015class AVE_U_H_DESC : MSA_3R_DESC_BASE<"ave_u.h", int_mips_ave_u_h, NoItinerary, 1016 MSA128H, MSA128H>, IsCommutable; 1017class AVE_U_W_DESC : MSA_3R_DESC_BASE<"ave_u.w", int_mips_ave_u_w, NoItinerary, 1018 MSA128W, MSA128W>, IsCommutable; 1019class AVE_U_D_DESC : MSA_3R_DESC_BASE<"ave_u.d", int_mips_ave_u_d, NoItinerary, 1020 MSA128D, MSA128D>, IsCommutable; 1021 1022class AVER_S_B_DESC : MSA_3R_DESC_BASE<"aver_s.b", int_mips_aver_s_b, 1023 NoItinerary, MSA128B, MSA128B>, 1024 IsCommutable; 1025class AVER_S_H_DESC : MSA_3R_DESC_BASE<"aver_s.h", int_mips_aver_s_h, 1026 NoItinerary, MSA128H, MSA128H>, 1027 IsCommutable; 1028class AVER_S_W_DESC : MSA_3R_DESC_BASE<"aver_s.w", int_mips_aver_s_w, 1029 NoItinerary, MSA128W, MSA128W>, 1030 IsCommutable; 1031class AVER_S_D_DESC : MSA_3R_DESC_BASE<"aver_s.d", int_mips_aver_s_d, 1032 NoItinerary, MSA128D, MSA128D>, 1033 IsCommutable; 1034 1035class AVER_U_B_DESC : MSA_3R_DESC_BASE<"aver_u.b", int_mips_aver_u_b, 1036 NoItinerary, MSA128B, MSA128B>, 1037 IsCommutable; 1038class AVER_U_H_DESC : MSA_3R_DESC_BASE<"aver_u.h", int_mips_aver_u_h, 1039 NoItinerary, MSA128H, MSA128H>, 1040 IsCommutable; 1041class AVER_U_W_DESC : MSA_3R_DESC_BASE<"aver_u.w", int_mips_aver_u_w, 1042 NoItinerary, MSA128W, MSA128W>, 1043 IsCommutable; 1044class AVER_U_D_DESC : MSA_3R_DESC_BASE<"aver_u.d", int_mips_aver_u_d, 1045 NoItinerary, MSA128D, MSA128D>, 1046 IsCommutable; 1047 1048class BCLR_B_DESC : MSA_3R_DESC_BASE<"bclr.b", int_mips_bclr_b, NoItinerary, 1049 MSA128B, MSA128B>; 1050class BCLR_H_DESC : MSA_3R_DESC_BASE<"bclr.h", int_mips_bclr_h, NoItinerary, 1051 MSA128H, MSA128H>; 1052class BCLR_W_DESC : MSA_3R_DESC_BASE<"bclr.w", int_mips_bclr_w, NoItinerary, 1053 MSA128W, MSA128W>; 1054class BCLR_D_DESC : MSA_3R_DESC_BASE<"bclr.d", int_mips_bclr_d, NoItinerary, 1055 MSA128D, MSA128D>; 1056 1057class BCLRI_B_DESC : MSA_BIT_B_DESC_BASE<"bclri.b", int_mips_bclri_b, 1058 NoItinerary, MSA128B, MSA128B>; 1059class BCLRI_H_DESC : MSA_BIT_H_DESC_BASE<"bclri.h", int_mips_bclri_h, 1060 NoItinerary, MSA128H, MSA128H>; 1061class BCLRI_W_DESC : MSA_BIT_W_DESC_BASE<"bclri.w", int_mips_bclri_w, 1062 NoItinerary, MSA128W, MSA128W>; 1063class BCLRI_D_DESC : MSA_BIT_D_DESC_BASE<"bclri.d", int_mips_bclri_d, 1064 NoItinerary, MSA128D, MSA128D>; 1065 1066class BINSL_B_DESC : MSA_3R_DESC_BASE<"binsl.b", int_mips_binsl_b, NoItinerary, 1067 MSA128B, MSA128B>; 1068class BINSL_H_DESC : MSA_3R_DESC_BASE<"binsl.h", int_mips_binsl_h, NoItinerary, 1069 MSA128H, MSA128H>; 1070class BINSL_W_DESC : MSA_3R_DESC_BASE<"binsl.w", int_mips_binsl_w, NoItinerary, 1071 MSA128W, MSA128W>; 1072class BINSL_D_DESC : MSA_3R_DESC_BASE<"binsl.d", int_mips_binsl_d, NoItinerary, 1073 MSA128D, MSA128D>; 1074 1075class BINSLI_B_DESC : MSA_BIT_B_DESC_BASE<"binsli.b", int_mips_binsli_b, 1076 NoItinerary, MSA128B, MSA128B>; 1077class BINSLI_H_DESC : MSA_BIT_H_DESC_BASE<"binsli.h", int_mips_binsli_h, 1078 NoItinerary, MSA128H, MSA128H>; 1079class BINSLI_W_DESC : MSA_BIT_W_DESC_BASE<"binsli.w", int_mips_binsli_w, 1080 NoItinerary, MSA128W, MSA128W>; 1081class BINSLI_D_DESC : MSA_BIT_D_DESC_BASE<"binsli.d", int_mips_binsli_d, 1082 NoItinerary, MSA128D, MSA128D>; 1083 1084class BINSR_B_DESC : MSA_3R_DESC_BASE<"binsr.b", int_mips_binsr_b, NoItinerary, 1085 MSA128B, MSA128B>; 1086class BINSR_H_DESC : MSA_3R_DESC_BASE<"binsr.h", int_mips_binsr_h, NoItinerary, 1087 MSA128H, MSA128H>; 1088class BINSR_W_DESC : MSA_3R_DESC_BASE<"binsr.w", int_mips_binsr_w, NoItinerary, 1089 MSA128W, MSA128W>; 1090class BINSR_D_DESC : MSA_3R_DESC_BASE<"binsr.d", int_mips_binsr_d, NoItinerary, 1091 MSA128D, MSA128D>; 1092 1093class BINSRI_B_DESC : MSA_BIT_B_DESC_BASE<"binsri.b", int_mips_binsri_b, 1094 NoItinerary, MSA128B, MSA128B>; 1095class BINSRI_H_DESC : MSA_BIT_H_DESC_BASE<"binsri.h", int_mips_binsri_h, 1096 NoItinerary, MSA128H, MSA128H>; 1097class BINSRI_W_DESC : MSA_BIT_W_DESC_BASE<"binsri.w", int_mips_binsri_w, 1098 NoItinerary, MSA128W, MSA128W>; 1099class BINSRI_D_DESC : MSA_BIT_D_DESC_BASE<"binsri.d", int_mips_binsri_d, 1100 NoItinerary, MSA128D, MSA128D>; 1101 1102class BMNZ_V_DESC : MSA_VEC_DESC_BASE<"bmnz.v", int_mips_bmnz_v, NoItinerary, 1103 MSA128B, MSA128B>; 1104 1105class BMNZI_B_DESC : MSA_I8_DESC_BASE<"bmnzi.b", int_mips_bmnzi_b, NoItinerary, 1106 MSA128B, MSA128B>; 1107 1108class BMZ_V_DESC : MSA_VEC_DESC_BASE<"bmz.v", int_mips_bmz_v, NoItinerary, 1109 MSA128B, MSA128B>; 1110 1111class BMZI_B_DESC : MSA_I8_DESC_BASE<"bmzi.b", int_mips_bmzi_b, NoItinerary, 1112 MSA128B, MSA128B>; 1113 1114class BNEG_B_DESC : MSA_3R_DESC_BASE<"bneg.b", int_mips_bneg_b, NoItinerary, 1115 MSA128B, MSA128B>; 1116class BNEG_H_DESC : MSA_3R_DESC_BASE<"bneg.h", int_mips_bneg_h, NoItinerary, 1117 MSA128H, MSA128H>; 1118class BNEG_W_DESC : MSA_3R_DESC_BASE<"bneg.w", int_mips_bneg_w, NoItinerary, 1119 MSA128W, MSA128W>; 1120class BNEG_D_DESC : MSA_3R_DESC_BASE<"bneg.d", int_mips_bneg_d, NoItinerary, 1121 MSA128D, MSA128D>; 1122 1123class BNEGI_B_DESC : MSA_BIT_B_DESC_BASE<"bnegi.b", int_mips_bnegi_b, 1124 NoItinerary, MSA128B, MSA128B>; 1125class BNEGI_H_DESC : MSA_BIT_H_DESC_BASE<"bnegi.h", int_mips_bnegi_h, 1126 NoItinerary, MSA128H, MSA128H>; 1127class BNEGI_W_DESC : MSA_BIT_W_DESC_BASE<"bnegi.w", int_mips_bnegi_w, 1128 NoItinerary, MSA128W, MSA128W>; 1129class BNEGI_D_DESC : MSA_BIT_D_DESC_BASE<"bnegi.d", int_mips_bnegi_d, 1130 NoItinerary, MSA128D, MSA128D>; 1131 1132class BSEL_V_DESC : MSA_VEC_DESC_BASE<"bsel.v", int_mips_bsel_v, NoItinerary, 1133 MSA128B, MSA128B>; 1134 1135class BSELI_B_DESC : MSA_I8_DESC_BASE<"bseli.b", int_mips_bseli_b, NoItinerary, 1136 MSA128B, MSA128B>; 1137 1138class BSET_B_DESC : MSA_3R_DESC_BASE<"bset.b", int_mips_bset_b, NoItinerary, 1139 MSA128B, MSA128B>; 1140class BSET_H_DESC : MSA_3R_DESC_BASE<"bset.h", int_mips_bset_h, NoItinerary, 1141 MSA128H, MSA128H>; 1142class BSET_W_DESC : MSA_3R_DESC_BASE<"bset.w", int_mips_bset_w, NoItinerary, 1143 MSA128W, MSA128W>; 1144class BSET_D_DESC : MSA_3R_DESC_BASE<"bset.d", int_mips_bset_d, NoItinerary, 1145 MSA128D, MSA128D>; 1146 1147class BSETI_B_DESC : MSA_BIT_B_DESC_BASE<"bseti.b", int_mips_bseti_b, 1148 NoItinerary, MSA128B, MSA128B>; 1149class BSETI_H_DESC : MSA_BIT_H_DESC_BASE<"bseti.h", int_mips_bseti_h, 1150 NoItinerary, MSA128H, MSA128H>; 1151class BSETI_W_DESC : MSA_BIT_W_DESC_BASE<"bseti.w", int_mips_bseti_w, 1152 NoItinerary, MSA128W, MSA128W>; 1153class BSETI_D_DESC : MSA_BIT_D_DESC_BASE<"bseti.d", int_mips_bseti_d, 1154 NoItinerary, MSA128D, MSA128D>; 1155 1156class CEQ_B_DESC : MSA_3R_DESC_BASE<"ceq.b", int_mips_ceq_b, NoItinerary, 1157 MSA128B, MSA128B>, IsCommutable; 1158class CEQ_H_DESC : MSA_3R_DESC_BASE<"ceq.h", int_mips_ceq_h, NoItinerary, 1159 MSA128H, MSA128H>, IsCommutable; 1160class CEQ_W_DESC : MSA_3R_DESC_BASE<"ceq.w", int_mips_ceq_w, NoItinerary, 1161 MSA128W, MSA128W>, IsCommutable; 1162class CEQ_D_DESC : MSA_3R_DESC_BASE<"ceq.d", int_mips_ceq_d, NoItinerary, 1163 MSA128D, MSA128D>, IsCommutable; 1164 1165class CEQI_B_DESC : MSA_SI5_DESC_BASE<"ceqi.b", int_mips_ceqi_b, NoItinerary, 1166 MSA128B, MSA128B>; 1167class CEQI_H_DESC : MSA_SI5_DESC_BASE<"ceqi.h", int_mips_ceqi_h, NoItinerary, 1168 MSA128H, MSA128H>; 1169class CEQI_W_DESC : MSA_SI5_DESC_BASE<"ceqi.w", int_mips_ceqi_w, NoItinerary, 1170 MSA128W, MSA128W>; 1171class CEQI_D_DESC : MSA_SI5_DESC_BASE<"ceqi.d", int_mips_ceqi_d, NoItinerary, 1172 MSA128D, MSA128D>; 1173 1174class CFCMSA_DESC { 1175 dag OutOperandList = (outs GPR32:$rd); 1176 dag InOperandList = (ins MSACtrl:$cs); 1177 string AsmString = "cfcmsa\t$rd, $cs"; 1178 InstrItinClass Itinerary = NoItinerary; 1179 bit hasSideEffects = 1; 1180} 1181 1182class CLE_S_B_DESC : MSA_3R_DESC_BASE<"cle_s.b", int_mips_cle_s_b, NoItinerary, 1183 MSA128B, MSA128B>; 1184class CLE_S_H_DESC : MSA_3R_DESC_BASE<"cle_s.h", int_mips_cle_s_h, NoItinerary, 1185 MSA128H, MSA128H>; 1186class CLE_S_W_DESC : MSA_3R_DESC_BASE<"cle_s.w", int_mips_cle_s_w, NoItinerary, 1187 MSA128W, MSA128W>; 1188class CLE_S_D_DESC : MSA_3R_DESC_BASE<"cle_s.d", int_mips_cle_s_d, NoItinerary, 1189 MSA128D, MSA128D>; 1190 1191class CLE_U_B_DESC : MSA_3R_DESC_BASE<"cle_u.b", int_mips_cle_u_b, NoItinerary, 1192 MSA128B, MSA128B>; 1193class CLE_U_H_DESC : MSA_3R_DESC_BASE<"cle_u.h", int_mips_cle_u_h, NoItinerary, 1194 MSA128H, MSA128H>; 1195class CLE_U_W_DESC : MSA_3R_DESC_BASE<"cle_u.w", int_mips_cle_u_w, NoItinerary, 1196 MSA128W, MSA128W>; 1197class CLE_U_D_DESC : MSA_3R_DESC_BASE<"cle_u.d", int_mips_cle_u_d, NoItinerary, 1198 MSA128D, MSA128D>; 1199 1200class CLEI_S_B_DESC : MSA_SI5_DESC_BASE<"clei_s.b", int_mips_clei_s_b, 1201 NoItinerary, MSA128B, MSA128B>; 1202class CLEI_S_H_DESC : MSA_SI5_DESC_BASE<"clei_s.h", int_mips_clei_s_h, 1203 NoItinerary, MSA128H, MSA128H>; 1204class CLEI_S_W_DESC : MSA_SI5_DESC_BASE<"clei_s.w", int_mips_clei_s_w, 1205 NoItinerary, MSA128W, MSA128W>; 1206class CLEI_S_D_DESC : MSA_SI5_DESC_BASE<"clei_s.d", int_mips_clei_s_d, 1207 NoItinerary, MSA128D, MSA128D>; 1208 1209class CLEI_U_B_DESC : MSA_SI5_DESC_BASE<"clei_u.b", int_mips_clei_u_b, 1210 NoItinerary, MSA128B, MSA128B>; 1211class CLEI_U_H_DESC : MSA_SI5_DESC_BASE<"clei_u.h", int_mips_clei_u_h, 1212 NoItinerary, MSA128H, MSA128H>; 1213class CLEI_U_W_DESC : MSA_SI5_DESC_BASE<"clei_u.w", int_mips_clei_u_w, 1214 NoItinerary, MSA128W, MSA128W>; 1215class CLEI_U_D_DESC : MSA_SI5_DESC_BASE<"clei_u.d", int_mips_clei_u_d, 1216 NoItinerary, MSA128D, MSA128D>; 1217 1218class CLT_S_B_DESC : MSA_3R_DESC_BASE<"clt_s.b", int_mips_clt_s_b, NoItinerary, 1219 MSA128B, MSA128B>; 1220class CLT_S_H_DESC : MSA_3R_DESC_BASE<"clt_s.h", int_mips_clt_s_h, NoItinerary, 1221 MSA128H, MSA128H>; 1222class CLT_S_W_DESC : MSA_3R_DESC_BASE<"clt_s.w", int_mips_clt_s_w, NoItinerary, 1223 MSA128W, MSA128W>; 1224class CLT_S_D_DESC : MSA_3R_DESC_BASE<"clt_s.d", int_mips_clt_s_d, NoItinerary, 1225 MSA128D, MSA128D>; 1226 1227class CLT_U_B_DESC : MSA_3R_DESC_BASE<"clt_u.b", int_mips_clt_u_b, NoItinerary, 1228 MSA128B, MSA128B>; 1229class CLT_U_H_DESC : MSA_3R_DESC_BASE<"clt_u.h", int_mips_clt_u_h, NoItinerary, 1230 MSA128H, MSA128H>; 1231class CLT_U_W_DESC : MSA_3R_DESC_BASE<"clt_u.w", int_mips_clt_u_w, NoItinerary, 1232 MSA128W, MSA128W>; 1233class CLT_U_D_DESC : MSA_3R_DESC_BASE<"clt_u.d", int_mips_clt_u_d, NoItinerary, 1234 MSA128D, MSA128D>; 1235 1236class CLTI_S_B_DESC : MSA_SI5_DESC_BASE<"clti_s.b", int_mips_clti_s_b, 1237 NoItinerary, MSA128B, MSA128B>; 1238class CLTI_S_H_DESC : MSA_SI5_DESC_BASE<"clti_s.h", int_mips_clti_s_h, 1239 NoItinerary, MSA128H, MSA128H>; 1240class CLTI_S_W_DESC : MSA_SI5_DESC_BASE<"clti_s.w", int_mips_clti_s_w, 1241 NoItinerary, MSA128W, MSA128W>; 1242class CLTI_S_D_DESC : MSA_SI5_DESC_BASE<"clti_s.d", int_mips_clti_s_d, 1243 NoItinerary, MSA128D, MSA128D>; 1244 1245class CLTI_U_B_DESC : MSA_SI5_DESC_BASE<"clti_u.b", int_mips_clti_u_b, 1246 NoItinerary, MSA128B, MSA128B>; 1247class CLTI_U_H_DESC : MSA_SI5_DESC_BASE<"clti_u.h", int_mips_clti_u_h, 1248 NoItinerary, MSA128H, MSA128H>; 1249class CLTI_U_W_DESC : MSA_SI5_DESC_BASE<"clti_u.w", int_mips_clti_u_w, 1250 NoItinerary, MSA128W, MSA128W>; 1251class CLTI_U_D_DESC : MSA_SI5_DESC_BASE<"clti_u.d", int_mips_clti_u_d, 1252 NoItinerary, MSA128D, MSA128D>; 1253 1254class COPY_S_B_DESC : MSA_COPY_DESC_BASE<"copy_s.b", int_mips_copy_s_b, 1255 NoItinerary, GPR32, MSA128B>; 1256class COPY_S_H_DESC : MSA_COPY_DESC_BASE<"copy_s.h", int_mips_copy_s_h, 1257 NoItinerary, GPR32, MSA128H>; 1258class COPY_S_W_DESC : MSA_COPY_DESC_BASE<"copy_s.w", int_mips_copy_s_w, 1259 NoItinerary, GPR32, MSA128W>; 1260 1261class COPY_U_B_DESC : MSA_COPY_DESC_BASE<"copy_u.b", int_mips_copy_u_b, 1262 NoItinerary, GPR32, MSA128B>; 1263class COPY_U_H_DESC : MSA_COPY_DESC_BASE<"copy_u.h", int_mips_copy_u_h, 1264 NoItinerary, GPR32, MSA128H>; 1265class COPY_U_W_DESC : MSA_COPY_DESC_BASE<"copy_u.w", int_mips_copy_u_w, 1266 NoItinerary, GPR32, MSA128W>; 1267 1268class CTCMSA_DESC { 1269 dag OutOperandList = (outs); 1270 dag InOperandList = (ins MSACtrl:$cd, GPR32:$rs); 1271 string AsmString = "ctcmsa\t$cd, $rs"; 1272 InstrItinClass Itinerary = NoItinerary; 1273 bit hasSideEffects = 1; 1274} 1275 1276class DIV_S_B_DESC : MSA_3R_DESC_BASE<"div_s.b", int_mips_div_s_b, NoItinerary, 1277 MSA128B, MSA128B>; 1278class DIV_S_H_DESC : MSA_3R_DESC_BASE<"div_s.h", int_mips_div_s_h, NoItinerary, 1279 MSA128H, MSA128H>; 1280class DIV_S_W_DESC : MSA_3R_DESC_BASE<"div_s.w", int_mips_div_s_w, NoItinerary, 1281 MSA128W, MSA128W>; 1282class DIV_S_D_DESC : MSA_3R_DESC_BASE<"div_s.d", int_mips_div_s_d, NoItinerary, 1283 MSA128D, MSA128D>; 1284 1285class DIV_U_B_DESC : MSA_3R_DESC_BASE<"div_u.b", int_mips_div_u_b, NoItinerary, 1286 MSA128B, MSA128B>; 1287class DIV_U_H_DESC : MSA_3R_DESC_BASE<"div_u.h", int_mips_div_u_h, NoItinerary, 1288 MSA128H, MSA128H>; 1289class DIV_U_W_DESC : MSA_3R_DESC_BASE<"div_u.w", int_mips_div_u_w, NoItinerary, 1290 MSA128W, MSA128W>; 1291class DIV_U_D_DESC : MSA_3R_DESC_BASE<"div_u.d", int_mips_div_u_d, NoItinerary, 1292 MSA128D, MSA128D>; 1293 1294class DOTP_S_B_DESC : MSA_3R_DESC_BASE<"dotp_s.b", int_mips_dotp_s_b, 1295 NoItinerary, MSA128B, MSA128B>, 1296 IsCommutable; 1297class DOTP_S_H_DESC : MSA_3R_DESC_BASE<"dotp_s.h", int_mips_dotp_s_h, 1298 NoItinerary, MSA128H, MSA128H>, 1299 IsCommutable; 1300class DOTP_S_W_DESC : MSA_3R_DESC_BASE<"dotp_s.w", int_mips_dotp_s_w, 1301 NoItinerary, MSA128W, MSA128W>, 1302 IsCommutable; 1303class DOTP_S_D_DESC : MSA_3R_DESC_BASE<"dotp_s.d", int_mips_dotp_s_d, 1304 NoItinerary, MSA128D, MSA128D>, 1305 IsCommutable; 1306 1307class DOTP_U_B_DESC : MSA_3R_DESC_BASE<"dotp_u.b", int_mips_dotp_u_b, 1308 NoItinerary, MSA128B, MSA128B>, 1309 IsCommutable; 1310class DOTP_U_H_DESC : MSA_3R_DESC_BASE<"dotp_u.h", int_mips_dotp_u_h, 1311 NoItinerary, MSA128H, MSA128H>, 1312 IsCommutable; 1313class DOTP_U_W_DESC : MSA_3R_DESC_BASE<"dotp_u.w", int_mips_dotp_u_w, 1314 NoItinerary, MSA128W, MSA128W>, 1315 IsCommutable; 1316class DOTP_U_D_DESC : MSA_3R_DESC_BASE<"dotp_u.d", int_mips_dotp_u_d, 1317 NoItinerary, MSA128D, MSA128D>, 1318 IsCommutable; 1319 1320class DPADD_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.h", int_mips_dpadd_s_h, 1321 NoItinerary, MSA128H, MSA128B>, 1322 IsCommutable; 1323class DPADD_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.w", int_mips_dpadd_s_w, 1324 NoItinerary, MSA128W, MSA128H>, 1325 IsCommutable; 1326class DPADD_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.d", int_mips_dpadd_s_d, 1327 NoItinerary, MSA128D, MSA128W>, 1328 IsCommutable; 1329 1330class DPADD_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.h", int_mips_dpadd_u_h, 1331 NoItinerary, MSA128H, MSA128B>, 1332 IsCommutable; 1333class DPADD_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.w", int_mips_dpadd_u_w, 1334 NoItinerary, MSA128W, MSA128H>, 1335 IsCommutable; 1336class DPADD_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.d", int_mips_dpadd_u_d, 1337 NoItinerary, MSA128D, MSA128W>, 1338 IsCommutable; 1339 1340class DPSUB_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.h", int_mips_dpsub_s_h, 1341 NoItinerary, MSA128H, MSA128B>; 1342class DPSUB_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.w", int_mips_dpsub_s_w, 1343 NoItinerary, MSA128W, MSA128H>; 1344class DPSUB_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.d", int_mips_dpsub_s_d, 1345 NoItinerary, MSA128D, MSA128W>; 1346 1347class DPSUB_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.h", int_mips_dpsub_u_h, 1348 NoItinerary, MSA128H, MSA128B>; 1349class DPSUB_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.w", int_mips_dpsub_u_w, 1350 NoItinerary, MSA128W, MSA128H>; 1351class DPSUB_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.d", int_mips_dpsub_u_d, 1352 NoItinerary, MSA128D, MSA128W>; 1353 1354class FADD_W_DESC : MSA_3RF_DESC_BASE<"fadd.w", int_mips_fadd_w, 1355 NoItinerary, MSA128W, MSA128W>, 1356 IsCommutable; 1357class FADD_D_DESC : MSA_3RF_DESC_BASE<"fadd.d", int_mips_fadd_d, 1358 NoItinerary, MSA128D, MSA128D>, 1359 IsCommutable; 1360 1361class FCAF_W_DESC : MSA_3RF_DESC_BASE<"fcaf.w", int_mips_fcaf_w, 1362 NoItinerary, MSA128W, MSA128W>, 1363 IsCommutable; 1364class FCAF_D_DESC : MSA_3RF_DESC_BASE<"fcaf.d", int_mips_fcaf_d, 1365 NoItinerary, MSA128D, MSA128D>, 1366 IsCommutable; 1367 1368class FCEQ_W_DESC : MSA_3RF_DESC_BASE<"fceq.w", int_mips_fceq_w, 1369 NoItinerary, MSA128W, MSA128W>, 1370 IsCommutable; 1371class FCEQ_D_DESC : MSA_3RF_DESC_BASE<"fceq.d", int_mips_fceq_d, 1372 NoItinerary, MSA128D, MSA128D>, 1373 IsCommutable; 1374 1375class FCLASS_W_DESC : MSA_2RF_DESC_BASE<"fclass.w", int_mips_fclass_w, 1376 NoItinerary, MSA128W, MSA128W>; 1377class FCLASS_D_DESC : MSA_2RF_DESC_BASE<"fclass.d", int_mips_fclass_d, 1378 NoItinerary, MSA128D, MSA128D>; 1379 1380class FCLE_W_DESC : MSA_3RF_DESC_BASE<"fcle.w", int_mips_fcle_w, 1381 NoItinerary, MSA128W, MSA128W>; 1382class FCLE_D_DESC : MSA_3RF_DESC_BASE<"fcle.d", int_mips_fcle_d, 1383 NoItinerary, MSA128D, MSA128D>; 1384 1385class FCLT_W_DESC : MSA_3RF_DESC_BASE<"fclt.w", int_mips_fclt_w, 1386 NoItinerary, MSA128W, MSA128W>; 1387class FCLT_D_DESC : MSA_3RF_DESC_BASE<"fclt.d", int_mips_fclt_d, 1388 NoItinerary, MSA128D, MSA128D>; 1389 1390class FCNE_W_DESC : MSA_3RF_DESC_BASE<"fcne.w", int_mips_fcne_w, 1391 NoItinerary, MSA128W, MSA128W>, 1392 IsCommutable; 1393class FCNE_D_DESC : MSA_3RF_DESC_BASE<"fcne.d", int_mips_fcne_d, 1394 NoItinerary, MSA128D, MSA128D>, 1395 IsCommutable; 1396 1397class FCOR_W_DESC : MSA_3RF_DESC_BASE<"fcor.w", int_mips_fcor_w, 1398 NoItinerary, MSA128W, MSA128W>, 1399 IsCommutable; 1400class FCOR_D_DESC : MSA_3RF_DESC_BASE<"fcor.d", int_mips_fcor_d, 1401 NoItinerary, MSA128D, MSA128D>, 1402 IsCommutable; 1403 1404class FCUEQ_W_DESC : MSA_3RF_DESC_BASE<"fcueq.w", int_mips_fcueq_w, 1405 NoItinerary, MSA128W, MSA128W>, 1406 IsCommutable; 1407class FCUEQ_D_DESC : MSA_3RF_DESC_BASE<"fcueq.d", int_mips_fcueq_d, 1408 NoItinerary, MSA128D, MSA128D>, 1409 IsCommutable; 1410 1411class FCULE_W_DESC : MSA_3RF_DESC_BASE<"fcule.w", int_mips_fcule_w, 1412 NoItinerary, MSA128W, MSA128W>, 1413 IsCommutable; 1414class FCULE_D_DESC : MSA_3RF_DESC_BASE<"fcule.d", int_mips_fcule_d, 1415 NoItinerary, MSA128D, MSA128D>, 1416 IsCommutable; 1417 1418class FCULT_W_DESC : MSA_3RF_DESC_BASE<"fcult.w", int_mips_fcult_w, 1419 NoItinerary, MSA128W, MSA128W>, 1420 IsCommutable; 1421class FCULT_D_DESC : MSA_3RF_DESC_BASE<"fcult.d", int_mips_fcult_d, 1422 NoItinerary, MSA128D, MSA128D>, 1423 IsCommutable; 1424 1425class FCUN_W_DESC : MSA_3RF_DESC_BASE<"fcun.w", int_mips_fcun_w, 1426 NoItinerary, MSA128W, MSA128W>, 1427 IsCommutable; 1428class FCUN_D_DESC : MSA_3RF_DESC_BASE<"fcun.d", int_mips_fcun_d, 1429 NoItinerary, MSA128D, MSA128D>, 1430 IsCommutable; 1431 1432class FCUNE_W_DESC : MSA_3RF_DESC_BASE<"fcune.w", int_mips_fcune_w, 1433 NoItinerary, MSA128W, MSA128W>, 1434 IsCommutable; 1435class FCUNE_D_DESC : MSA_3RF_DESC_BASE<"fcune.d", int_mips_fcune_d, 1436 NoItinerary, MSA128D, MSA128D>, 1437 IsCommutable; 1438 1439class FDIV_W_DESC : MSA_3RF_DESC_BASE<"fdiv.w", int_mips_fdiv_w, 1440 NoItinerary, MSA128W, MSA128W>; 1441class FDIV_D_DESC : MSA_3RF_DESC_BASE<"fdiv.d", int_mips_fdiv_d, 1442 NoItinerary, MSA128D, MSA128D>; 1443 1444class FEXDO_H_DESC : MSA_3RF_DESC_BASE<"fexdo.h", int_mips_fexdo_h, 1445 NoItinerary, MSA128H, MSA128W>; 1446class FEXDO_W_DESC : MSA_3RF_DESC_BASE<"fexdo.w", int_mips_fexdo_w, 1447 NoItinerary, MSA128W, MSA128D>; 1448 1449class FEXP2_W_DESC : MSA_3RF_DESC_BASE<"fexp2.w", int_mips_fexp2_w, 1450 NoItinerary, MSA128W, MSA128W>; 1451class FEXP2_D_DESC : MSA_3RF_DESC_BASE<"fexp2.d", int_mips_fexp2_d, 1452 NoItinerary, MSA128D, MSA128D>; 1453 1454class FEXUPL_W_DESC : MSA_2RF_DESC_BASE<"fexupl.w", int_mips_fexupl_w, 1455 NoItinerary, MSA128W, MSA128H>; 1456class FEXUPL_D_DESC : MSA_2RF_DESC_BASE<"fexupl.d", int_mips_fexupl_d, 1457 NoItinerary, MSA128D, MSA128W>; 1458 1459class FEXUPR_W_DESC : MSA_2RF_DESC_BASE<"fexupr.w", int_mips_fexupr_w, 1460 NoItinerary, MSA128W, MSA128H>; 1461class FEXUPR_D_DESC : MSA_2RF_DESC_BASE<"fexupr.d", int_mips_fexupr_d, 1462 NoItinerary, MSA128D, MSA128W>; 1463 1464class FFINT_S_W_DESC : MSA_2RF_DESC_BASE<"ffint_s.w", int_mips_ffint_s_w, 1465 NoItinerary, MSA128W, MSA128W>; 1466class FFINT_S_D_DESC : MSA_2RF_DESC_BASE<"ffint_s.d", int_mips_ffint_s_d, 1467 NoItinerary, MSA128D, MSA128D>; 1468 1469class FFINT_U_W_DESC : MSA_2RF_DESC_BASE<"ffint_u.w", int_mips_ffint_u_w, 1470 NoItinerary, MSA128W, MSA128W>; 1471class FFINT_U_D_DESC : MSA_2RF_DESC_BASE<"ffint_u.d", int_mips_ffint_u_d, 1472 NoItinerary, MSA128D, MSA128D>; 1473 1474class FFQL_W_DESC : MSA_2RF_DESC_BASE<"ffql.w", int_mips_ffql_w, 1475 NoItinerary, MSA128W, MSA128H>; 1476class FFQL_D_DESC : MSA_2RF_DESC_BASE<"ffql.d", int_mips_ffql_d, 1477 NoItinerary, MSA128D, MSA128W>; 1478 1479class FFQR_W_DESC : MSA_2RF_DESC_BASE<"ffqr.w", int_mips_ffqr_w, 1480 NoItinerary, MSA128W, MSA128H>; 1481class FFQR_D_DESC : MSA_2RF_DESC_BASE<"ffqr.d", int_mips_ffqr_d, 1482 NoItinerary, MSA128D, MSA128W>; 1483 1484class FILL_B_DESC : MSA_2R_DESC_BASE<"fill.b", int_mips_fill_b, 1485 NoItinerary, MSA128B, GPR32>; 1486class FILL_H_DESC : MSA_2R_DESC_BASE<"fill.h", int_mips_fill_h, 1487 NoItinerary, MSA128H, GPR32>; 1488class FILL_W_DESC : MSA_2R_DESC_BASE<"fill.w", int_mips_fill_w, 1489 NoItinerary, MSA128W, GPR32>; 1490 1491class FLOG2_W_DESC : MSA_2RF_DESC_BASE<"flog2.w", int_mips_flog2_w, 1492 NoItinerary, MSA128W, MSA128W>; 1493class FLOG2_D_DESC : MSA_2RF_DESC_BASE<"flog2.d", int_mips_flog2_d, 1494 NoItinerary, MSA128D, MSA128D>; 1495 1496class FMADD_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.w", int_mips_fmadd_w, 1497 NoItinerary, MSA128W, MSA128W>; 1498class FMADD_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.d", int_mips_fmadd_d, 1499 NoItinerary, MSA128D, MSA128D>; 1500 1501class FMAX_W_DESC : MSA_3RF_DESC_BASE<"fmax.w", int_mips_fmax_w, 1502 NoItinerary, MSA128W, MSA128W>; 1503class FMAX_D_DESC : MSA_3RF_DESC_BASE<"fmax.d", int_mips_fmax_d, 1504 NoItinerary, MSA128D, MSA128D>; 1505 1506class FMAX_A_W_DESC : MSA_3RF_DESC_BASE<"fmax_a.w", int_mips_fmax_a_w, 1507 NoItinerary, MSA128W, MSA128W>; 1508class FMAX_A_D_DESC : MSA_3RF_DESC_BASE<"fmax_a.d", int_mips_fmax_a_d, 1509 NoItinerary, MSA128D, MSA128D>; 1510 1511class FMIN_W_DESC : MSA_3RF_DESC_BASE<"fmin.w", int_mips_fmin_w, 1512 NoItinerary, MSA128W, MSA128W>; 1513class FMIN_D_DESC : MSA_3RF_DESC_BASE<"fmin.d", int_mips_fmin_d, 1514 NoItinerary, MSA128D, MSA128D>; 1515 1516class FMIN_A_W_DESC : MSA_3RF_DESC_BASE<"fmin_a.w", int_mips_fmin_a_w, 1517 NoItinerary, MSA128W, MSA128W>; 1518class FMIN_A_D_DESC : MSA_3RF_DESC_BASE<"fmin_a.d", int_mips_fmin_a_d, 1519 NoItinerary, MSA128D, MSA128D>; 1520 1521class FMSUB_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.w", int_mips_fmsub_w, 1522 NoItinerary, MSA128W, MSA128W>; 1523class FMSUB_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.d", int_mips_fmsub_d, 1524 NoItinerary, MSA128D, MSA128D>; 1525 1526class FMUL_W_DESC : MSA_3RF_DESC_BASE<"fmul.w", int_mips_fmul_w, 1527 NoItinerary, MSA128W, MSA128W>; 1528class FMUL_D_DESC : MSA_3RF_DESC_BASE<"fmul.d", int_mips_fmul_d, 1529 NoItinerary, MSA128D, MSA128D>; 1530 1531class FRINT_W_DESC : MSA_2RF_DESC_BASE<"frint.w", int_mips_frint_w, 1532 NoItinerary, MSA128W, MSA128W>; 1533class FRINT_D_DESC : MSA_2RF_DESC_BASE<"frint.d", int_mips_frint_d, 1534 NoItinerary, MSA128D, MSA128D>; 1535 1536class FRCP_W_DESC : MSA_2RF_DESC_BASE<"frcp.w", int_mips_frcp_w, 1537 NoItinerary, MSA128W, MSA128W>; 1538class FRCP_D_DESC : MSA_2RF_DESC_BASE<"frcp.d", int_mips_frcp_d, 1539 NoItinerary, MSA128D, MSA128D>; 1540 1541class FRSQRT_W_DESC : MSA_2RF_DESC_BASE<"frsqrt.w", int_mips_frsqrt_w, 1542 NoItinerary, MSA128W, MSA128W>; 1543class FRSQRT_D_DESC : MSA_2RF_DESC_BASE<"frsqrt.d", int_mips_frsqrt_d, 1544 NoItinerary, MSA128D, MSA128D>; 1545 1546class FSAF_W_DESC : MSA_3RF_DESC_BASE<"fsaf.w", int_mips_fsaf_w, 1547 NoItinerary, MSA128W, MSA128W>; 1548class FSAF_D_DESC : MSA_3RF_DESC_BASE<"fsaf.d", int_mips_fsaf_d, 1549 NoItinerary, MSA128D, MSA128D>; 1550 1551class FSEQ_W_DESC : MSA_3RF_DESC_BASE<"fseq.w", int_mips_fseq_w, 1552 NoItinerary, MSA128W, MSA128W>; 1553class FSEQ_D_DESC : MSA_3RF_DESC_BASE<"fseq.d", int_mips_fseq_d, 1554 NoItinerary, MSA128D, MSA128D>; 1555 1556class FSLE_W_DESC : MSA_3RF_DESC_BASE<"fsle.w", int_mips_fsle_w, 1557 NoItinerary, MSA128W, MSA128W>; 1558class FSLE_D_DESC : MSA_3RF_DESC_BASE<"fsle.d", int_mips_fsle_d, 1559 NoItinerary, MSA128D, MSA128D>; 1560 1561class FSLT_W_DESC : MSA_3RF_DESC_BASE<"fslt.w", int_mips_fslt_w, 1562 NoItinerary, MSA128W, MSA128W>; 1563class FSLT_D_DESC : MSA_3RF_DESC_BASE<"fslt.d", int_mips_fslt_d, 1564 NoItinerary, MSA128D, MSA128D>; 1565 1566class FSNE_W_DESC : MSA_3RF_DESC_BASE<"fsne.w", int_mips_fsne_w, 1567 NoItinerary, MSA128W, MSA128W>; 1568class FSNE_D_DESC : MSA_3RF_DESC_BASE<"fsne.d", int_mips_fsne_d, 1569 NoItinerary, MSA128D, MSA128D>; 1570 1571class FSOR_W_DESC : MSA_3RF_DESC_BASE<"fsor.w", int_mips_fsor_w, 1572 NoItinerary, MSA128W, MSA128W>; 1573class FSOR_D_DESC : MSA_3RF_DESC_BASE<"fsor.d", int_mips_fsor_d, 1574 NoItinerary, MSA128D, MSA128D>; 1575 1576class FSQRT_W_DESC : MSA_2RF_DESC_BASE<"fsqrt.w", int_mips_fsqrt_w, 1577 NoItinerary, MSA128W, MSA128W>; 1578class FSQRT_D_DESC : MSA_2RF_DESC_BASE<"fsqrt.d", int_mips_fsqrt_d, 1579 NoItinerary, MSA128D, MSA128D>; 1580 1581class FSUB_W_DESC : MSA_3RF_DESC_BASE<"fsub.w", int_mips_fsub_w, 1582 NoItinerary, MSA128W, MSA128W>; 1583class FSUB_D_DESC : MSA_3RF_DESC_BASE<"fsub.d", int_mips_fsub_d, 1584 NoItinerary, MSA128D, MSA128D>; 1585 1586class FSUEQ_W_DESC : MSA_3RF_DESC_BASE<"fsueq.w", int_mips_fsueq_w, 1587 NoItinerary, MSA128W, MSA128W>; 1588class FSUEQ_D_DESC : MSA_3RF_DESC_BASE<"fsueq.d", int_mips_fsueq_d, 1589 NoItinerary, MSA128D, MSA128D>; 1590 1591class FSULE_W_DESC : MSA_3RF_DESC_BASE<"fsule.w", int_mips_fsule_w, 1592 NoItinerary, MSA128W, MSA128W>; 1593class FSULE_D_DESC : MSA_3RF_DESC_BASE<"fsule.d", int_mips_fsule_d, 1594 NoItinerary, MSA128D, MSA128D>; 1595 1596class FSULT_W_DESC : MSA_3RF_DESC_BASE<"fsult.w", int_mips_fsult_w, 1597 NoItinerary, MSA128W, MSA128W>; 1598class FSULT_D_DESC : MSA_3RF_DESC_BASE<"fsult.d", int_mips_fsult_d, 1599 NoItinerary, MSA128D, MSA128D>; 1600 1601class FSUN_W_DESC : MSA_3RF_DESC_BASE<"fsun.w", int_mips_fsun_w, 1602 NoItinerary, MSA128W, MSA128W>; 1603class FSUN_D_DESC : MSA_3RF_DESC_BASE<"fsun.d", int_mips_fsun_d, 1604 NoItinerary, MSA128D, MSA128D>; 1605 1606class FSUNE_W_DESC : MSA_3RF_DESC_BASE<"fsune.w", int_mips_fsune_w, 1607 NoItinerary, MSA128W, MSA128W>; 1608class FSUNE_D_DESC : MSA_3RF_DESC_BASE<"fsune.d", int_mips_fsune_d, 1609 NoItinerary, MSA128D, MSA128D>; 1610 1611class FTRUNC_S_W_DESC : MSA_2RF_DESC_BASE<"ftrunc_s.w", int_mips_ftrunc_s_w, 1612 NoItinerary, MSA128W, MSA128W>; 1613class FTRUNC_S_D_DESC : MSA_2RF_DESC_BASE<"ftrunc_s.d", int_mips_ftrunc_s_d, 1614 NoItinerary, MSA128D, MSA128D>; 1615 1616class FTRUNC_U_W_DESC : MSA_2RF_DESC_BASE<"ftrunc_u.w", int_mips_ftrunc_u_w, 1617 NoItinerary, MSA128W, MSA128W>; 1618class FTRUNC_U_D_DESC : MSA_2RF_DESC_BASE<"ftrunc_u.d", int_mips_ftrunc_u_d, 1619 NoItinerary, MSA128D, MSA128D>; 1620 1621class FTINT_S_W_DESC : MSA_2RF_DESC_BASE<"ftint_s.w", int_mips_ftint_s_w, 1622 NoItinerary, MSA128W, MSA128W>; 1623class FTINT_S_D_DESC : MSA_2RF_DESC_BASE<"ftint_s.d", int_mips_ftint_s_d, 1624 NoItinerary, MSA128D, MSA128D>; 1625 1626class FTINT_U_W_DESC : MSA_2RF_DESC_BASE<"ftint_u.w", int_mips_ftint_u_w, 1627 NoItinerary, MSA128W, MSA128W>; 1628class FTINT_U_D_DESC : MSA_2RF_DESC_BASE<"ftint_u.d", int_mips_ftint_u_d, 1629 NoItinerary, MSA128D, MSA128D>; 1630 1631class FTQ_H_DESC : MSA_3RF_DESC_BASE<"ftq.h", int_mips_ftq_h, 1632 NoItinerary, MSA128H, MSA128W>; 1633class FTQ_W_DESC : MSA_3RF_DESC_BASE<"ftq.w", int_mips_ftq_w, 1634 NoItinerary, MSA128W, MSA128D>; 1635 1636class HADD_S_H_DESC : MSA_3R_DESC_BASE<"hadd_s.h", int_mips_hadd_s_h, 1637 NoItinerary, MSA128H, MSA128B>; 1638class HADD_S_W_DESC : MSA_3R_DESC_BASE<"hadd_s.w", int_mips_hadd_s_w, 1639 NoItinerary, MSA128W, MSA128H>; 1640class HADD_S_D_DESC : MSA_3R_DESC_BASE<"hadd_s.d", int_mips_hadd_s_d, 1641 NoItinerary, MSA128D, MSA128W>; 1642 1643class HADD_U_H_DESC : MSA_3R_DESC_BASE<"hadd_u.h", int_mips_hadd_u_h, 1644 NoItinerary, MSA128H, MSA128B>; 1645class HADD_U_W_DESC : MSA_3R_DESC_BASE<"hadd_u.w", int_mips_hadd_u_w, 1646 NoItinerary, MSA128W, MSA128H>; 1647class HADD_U_D_DESC : MSA_3R_DESC_BASE<"hadd_u.d", int_mips_hadd_u_d, 1648 NoItinerary, MSA128D, MSA128W>; 1649 1650class HSUB_S_H_DESC : MSA_3R_DESC_BASE<"hsub_s.h", int_mips_hsub_s_h, 1651 NoItinerary, MSA128H, MSA128B>; 1652class HSUB_S_W_DESC : MSA_3R_DESC_BASE<"hsub_s.w", int_mips_hsub_s_w, 1653 NoItinerary, MSA128W, MSA128H>; 1654class HSUB_S_D_DESC : MSA_3R_DESC_BASE<"hsub_s.d", int_mips_hsub_s_d, 1655 NoItinerary, MSA128D, MSA128W>; 1656 1657class HSUB_U_H_DESC : MSA_3R_DESC_BASE<"hsub_u.h", int_mips_hsub_u_h, 1658 NoItinerary, MSA128H, MSA128B>; 1659class HSUB_U_W_DESC : MSA_3R_DESC_BASE<"hsub_u.w", int_mips_hsub_u_w, 1660 NoItinerary, MSA128W, MSA128H>; 1661class HSUB_U_D_DESC : MSA_3R_DESC_BASE<"hsub_u.d", int_mips_hsub_u_d, 1662 NoItinerary, MSA128D, MSA128W>; 1663 1664class ILVEV_B_DESC : MSA_3R_DESC_BASE<"ilvev.b", int_mips_ilvev_b, NoItinerary, 1665 MSA128B, MSA128B>; 1666class ILVEV_H_DESC : MSA_3R_DESC_BASE<"ilvev.h", int_mips_ilvev_h, NoItinerary, 1667 MSA128H, MSA128H>; 1668class ILVEV_W_DESC : MSA_3R_DESC_BASE<"ilvev.w", int_mips_ilvev_w, NoItinerary, 1669 MSA128W, MSA128W>; 1670class ILVEV_D_DESC : MSA_3R_DESC_BASE<"ilvev.d", int_mips_ilvev_d, NoItinerary, 1671 MSA128D, MSA128D>; 1672 1673class ILVL_B_DESC : MSA_3R_DESC_BASE<"ilvl.b", int_mips_ilvl_b, NoItinerary, 1674 MSA128B, MSA128B>; 1675class ILVL_H_DESC : MSA_3R_DESC_BASE<"ilvl.h", int_mips_ilvl_h, NoItinerary, 1676 MSA128H, MSA128H>; 1677class ILVL_W_DESC : MSA_3R_DESC_BASE<"ilvl.w", int_mips_ilvl_w, NoItinerary, 1678 MSA128W, MSA128W>; 1679class ILVL_D_DESC : MSA_3R_DESC_BASE<"ilvl.d", int_mips_ilvl_d, NoItinerary, 1680 MSA128D, MSA128D>; 1681 1682class ILVOD_B_DESC : MSA_3R_DESC_BASE<"ilvod.b", int_mips_ilvod_b, NoItinerary, 1683 MSA128B, MSA128B>; 1684class ILVOD_H_DESC : MSA_3R_DESC_BASE<"ilvod.h", int_mips_ilvod_h, NoItinerary, 1685 MSA128H, MSA128H>; 1686class ILVOD_W_DESC : MSA_3R_DESC_BASE<"ilvod.w", int_mips_ilvod_w, NoItinerary, 1687 MSA128W, MSA128W>; 1688class ILVOD_D_DESC : MSA_3R_DESC_BASE<"ilvod.d", int_mips_ilvod_d, NoItinerary, 1689 MSA128D, MSA128D>; 1690 1691class ILVR_B_DESC : MSA_3R_DESC_BASE<"ilvr.b", int_mips_ilvr_b, NoItinerary, 1692 MSA128B, MSA128B>; 1693class ILVR_H_DESC : MSA_3R_DESC_BASE<"ilvr.h", int_mips_ilvr_h, NoItinerary, 1694 MSA128H, MSA128H>; 1695class ILVR_W_DESC : MSA_3R_DESC_BASE<"ilvr.w", int_mips_ilvr_w, NoItinerary, 1696 MSA128W, MSA128W>; 1697class ILVR_D_DESC : MSA_3R_DESC_BASE<"ilvr.d", int_mips_ilvr_d, NoItinerary, 1698 MSA128D, MSA128D>; 1699 1700class INSERT_B_DESC : MSA_INSERT_DESC_BASE<"insert.b", int_mips_insert_b, 1701 NoItinerary, MSA128B, GPR32>; 1702class INSERT_H_DESC : MSA_INSERT_DESC_BASE<"insert.h", int_mips_insert_h, 1703 NoItinerary, MSA128H, GPR32>; 1704class INSERT_W_DESC : MSA_INSERT_DESC_BASE<"insert.w", int_mips_insert_w, 1705 NoItinerary, MSA128W, GPR32>; 1706 1707class INSVE_B_DESC : MSA_INSVE_DESC_BASE<"insve.b", int_mips_insve_b, 1708 NoItinerary, MSA128B, MSA128B>; 1709class INSVE_H_DESC : MSA_INSVE_DESC_BASE<"insve.h", int_mips_insve_h, 1710 NoItinerary, MSA128H, MSA128H>; 1711class INSVE_W_DESC : MSA_INSVE_DESC_BASE<"insve.w", int_mips_insve_w, 1712 NoItinerary, MSA128W, MSA128W>; 1713class INSVE_D_DESC : MSA_INSVE_DESC_BASE<"insve.d", int_mips_insve_d, 1714 NoItinerary, MSA128D, MSA128D>; 1715 1716class LD_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 1717 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 1718 Operand MemOpnd = mem, ComplexPattern Addr = addrRegImm> { 1719 dag OutOperandList = (outs RCWD:$wd); 1720 dag InOperandList = (ins MemOpnd:$addr); 1721 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 1722 list<dag> Pattern = [(set RCWD:$wd, (TyNode (OpNode Addr:$addr)))]; 1723 InstrItinClass Itinerary = itin; 1724} 1725 1726class LD_B_DESC : LD_DESC_BASE<"ld.b", load, v16i8, NoItinerary, MSA128B>; 1727class LD_H_DESC : LD_DESC_BASE<"ld.h", load, v8i16, NoItinerary, MSA128H>; 1728class LD_W_DESC : LD_DESC_BASE<"ld.w", load, v4i32, NoItinerary, MSA128W>; 1729class LD_D_DESC : LD_DESC_BASE<"ld.d", load, v2i64, NoItinerary, MSA128D>; 1730 1731class LDI_B_DESC : MSA_I10_DESC_BASE<"ldi.b", int_mips_ldi_b, 1732 NoItinerary, MSA128B>; 1733class LDI_H_DESC : MSA_I10_DESC_BASE<"ldi.h", int_mips_ldi_h, 1734 NoItinerary, MSA128H>; 1735class LDI_W_DESC : MSA_I10_DESC_BASE<"ldi.w", int_mips_ldi_w, 1736 NoItinerary, MSA128W>; 1737class LDI_D_DESC : MSA_I10_DESC_BASE<"ldi.d", int_mips_ldi_d, 1738 NoItinerary, MSA128D>; 1739 1740class LDX_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 1741 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 1742 Operand MemOpnd = mem, ComplexPattern Addr = addrRegReg> { 1743 dag OutOperandList = (outs RCWD:$wd); 1744 dag InOperandList = (ins MemOpnd:$addr); 1745 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 1746 list<dag> Pattern = [(set RCWD:$wd, (TyNode (OpNode Addr:$addr)))]; 1747 InstrItinClass Itinerary = itin; 1748} 1749 1750class LDX_B_DESC : LDX_DESC_BASE<"ldx.b", load, v16i8, NoItinerary, MSA128B>; 1751class LDX_H_DESC : LDX_DESC_BASE<"ldx.h", load, v8i16, NoItinerary, MSA128H>; 1752class LDX_W_DESC : LDX_DESC_BASE<"ldx.w", load, v4i32, NoItinerary, MSA128W>; 1753class LDX_D_DESC : LDX_DESC_BASE<"ldx.d", load, v2i64, NoItinerary, MSA128D>; 1754 1755class MADD_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.h", int_mips_madd_q_h, 1756 NoItinerary, MSA128H, MSA128H>; 1757class MADD_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.w", int_mips_madd_q_w, 1758 NoItinerary, MSA128W, MSA128W>; 1759 1760class MADDR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.h", int_mips_maddr_q_h, 1761 NoItinerary, MSA128H, MSA128H>; 1762class MADDR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.w", int_mips_maddr_q_w, 1763 NoItinerary, MSA128W, MSA128W>; 1764 1765class MADDV_B_DESC : MSA_3R_4R_DESC_BASE<"maddv.b", int_mips_maddv_b, 1766 NoItinerary, MSA128B, MSA128B>; 1767class MADDV_H_DESC : MSA_3R_4R_DESC_BASE<"maddv.h", int_mips_maddv_h, 1768 NoItinerary, MSA128H, MSA128H>; 1769class MADDV_W_DESC : MSA_3R_4R_DESC_BASE<"maddv.w", int_mips_maddv_w, 1770 NoItinerary, MSA128W, MSA128W>; 1771class MADDV_D_DESC : MSA_3R_4R_DESC_BASE<"maddv.d", int_mips_maddv_d, 1772 NoItinerary, MSA128D, MSA128D>; 1773 1774class MAX_A_B_DESC : MSA_3R_DESC_BASE<"max_a.b", int_mips_max_a_b, NoItinerary, 1775 MSA128B, MSA128B>; 1776class MAX_A_H_DESC : MSA_3R_DESC_BASE<"max_a.h", int_mips_max_a_h, NoItinerary, 1777 MSA128H, MSA128H>; 1778class MAX_A_W_DESC : MSA_3R_DESC_BASE<"max_a.w", int_mips_max_a_w, NoItinerary, 1779 MSA128W, MSA128W>; 1780class MAX_A_D_DESC : MSA_3R_DESC_BASE<"max_a.d", int_mips_max_a_d, NoItinerary, 1781 MSA128D, MSA128D>; 1782 1783class MAX_S_B_DESC : MSA_3R_DESC_BASE<"max_s.b", int_mips_max_s_b, NoItinerary, 1784 MSA128B, MSA128B>; 1785class MAX_S_H_DESC : MSA_3R_DESC_BASE<"max_s.h", int_mips_max_s_h, NoItinerary, 1786 MSA128H, MSA128H>; 1787class MAX_S_W_DESC : MSA_3R_DESC_BASE<"max_s.w", int_mips_max_s_w, NoItinerary, 1788 MSA128W, MSA128W>; 1789class MAX_S_D_DESC : MSA_3R_DESC_BASE<"max_s.d", int_mips_max_s_d, NoItinerary, 1790 MSA128D, MSA128D>; 1791 1792class MAX_U_B_DESC : MSA_3R_DESC_BASE<"max_u.b", int_mips_max_u_b, NoItinerary, 1793 MSA128B, MSA128B>; 1794class MAX_U_H_DESC : MSA_3R_DESC_BASE<"max_u.h", int_mips_max_u_h, NoItinerary, 1795 MSA128H, MSA128H>; 1796class MAX_U_W_DESC : MSA_3R_DESC_BASE<"max_u.w", int_mips_max_u_w, NoItinerary, 1797 MSA128W, MSA128W>; 1798class MAX_U_D_DESC : MSA_3R_DESC_BASE<"max_u.d", int_mips_max_u_d, NoItinerary, 1799 MSA128D, MSA128D>; 1800 1801class MAXI_S_B_DESC : MSA_I5_DESC_BASE<"maxi_s.b", int_mips_maxi_s_b, 1802 NoItinerary, MSA128B, MSA128B>; 1803class MAXI_S_H_DESC : MSA_I5_DESC_BASE<"maxi_s.h", int_mips_maxi_s_h, 1804 NoItinerary, MSA128H, MSA128H>; 1805class MAXI_S_W_DESC : MSA_I5_DESC_BASE<"maxi_s.w", int_mips_maxi_s_w, 1806 NoItinerary, MSA128W, MSA128W>; 1807class MAXI_S_D_DESC : MSA_I5_DESC_BASE<"maxi_s.d", int_mips_maxi_s_d, 1808 NoItinerary, MSA128D, MSA128D>; 1809 1810class MAXI_U_B_DESC : MSA_I5_DESC_BASE<"maxi_u.b", int_mips_maxi_u_b, 1811 NoItinerary, MSA128B, MSA128B>; 1812class MAXI_U_H_DESC : MSA_I5_DESC_BASE<"maxi_u.h", int_mips_maxi_u_h, 1813 NoItinerary, MSA128H, MSA128H>; 1814class MAXI_U_W_DESC : MSA_I5_DESC_BASE<"maxi_u.w", int_mips_maxi_u_w, 1815 NoItinerary, MSA128W, MSA128W>; 1816class MAXI_U_D_DESC : MSA_I5_DESC_BASE<"maxi_u.d", int_mips_maxi_u_d, 1817 NoItinerary, MSA128D, MSA128D>; 1818 1819class MIN_A_B_DESC : MSA_3R_DESC_BASE<"min_a.b", int_mips_min_a_b, NoItinerary, 1820 MSA128B, MSA128B>; 1821class MIN_A_H_DESC : MSA_3R_DESC_BASE<"min_a.h", int_mips_min_a_h, NoItinerary, 1822 MSA128H, MSA128H>; 1823class MIN_A_W_DESC : MSA_3R_DESC_BASE<"min_a.w", int_mips_min_a_w, NoItinerary, 1824 MSA128W, MSA128W>; 1825class MIN_A_D_DESC : MSA_3R_DESC_BASE<"min_a.d", int_mips_min_a_d, NoItinerary, 1826 MSA128D, MSA128D>; 1827 1828class MIN_S_B_DESC : MSA_3R_DESC_BASE<"min_s.b", int_mips_min_s_b, NoItinerary, 1829 MSA128B, MSA128B>; 1830class MIN_S_H_DESC : MSA_3R_DESC_BASE<"min_s.h", int_mips_min_s_h, NoItinerary, 1831 MSA128H, MSA128H>; 1832class MIN_S_W_DESC : MSA_3R_DESC_BASE<"min_s.w", int_mips_min_s_w, NoItinerary, 1833 MSA128W, MSA128W>; 1834class MIN_S_D_DESC : MSA_3R_DESC_BASE<"min_s.d", int_mips_min_s_d, NoItinerary, 1835 MSA128D, MSA128D>; 1836 1837class MIN_U_B_DESC : MSA_3R_DESC_BASE<"min_u.b", int_mips_min_u_b, NoItinerary, 1838 MSA128B, MSA128B>; 1839class MIN_U_H_DESC : MSA_3R_DESC_BASE<"min_u.h", int_mips_min_u_h, NoItinerary, 1840 MSA128H, MSA128H>; 1841class MIN_U_W_DESC : MSA_3R_DESC_BASE<"min_u.w", int_mips_min_u_w, NoItinerary, 1842 MSA128W, MSA128W>; 1843class MIN_U_D_DESC : MSA_3R_DESC_BASE<"min_u.d", int_mips_min_u_d, NoItinerary, 1844 MSA128D, MSA128D>; 1845 1846class MINI_S_B_DESC : MSA_I5_DESC_BASE<"mini_s.b", int_mips_mini_s_b, 1847 NoItinerary, MSA128B, MSA128B>; 1848class MINI_S_H_DESC : MSA_I5_DESC_BASE<"mini_s.h", int_mips_mini_s_h, 1849 NoItinerary, MSA128H, MSA128H>; 1850class MINI_S_W_DESC : MSA_I5_DESC_BASE<"mini_s.w", int_mips_mini_s_w, 1851 NoItinerary, MSA128W, MSA128W>; 1852class MINI_S_D_DESC : MSA_I5_DESC_BASE<"mini_s.d", int_mips_mini_s_d, 1853 NoItinerary, MSA128D, MSA128D>; 1854 1855class MINI_U_B_DESC : MSA_I5_DESC_BASE<"mini_u.b", int_mips_mini_u_b, 1856 NoItinerary, MSA128B, MSA128B>; 1857class MINI_U_H_DESC : MSA_I5_DESC_BASE<"mini_u.h", int_mips_mini_u_h, 1858 NoItinerary, MSA128H, MSA128H>; 1859class MINI_U_W_DESC : MSA_I5_DESC_BASE<"mini_u.w", int_mips_mini_u_w, 1860 NoItinerary, MSA128W, MSA128W>; 1861class MINI_U_D_DESC : MSA_I5_DESC_BASE<"mini_u.d", int_mips_mini_u_d, 1862 NoItinerary, MSA128D, MSA128D>; 1863 1864class MOD_S_B_DESC : MSA_3R_DESC_BASE<"mod_s.b", int_mips_mod_s_b, NoItinerary, 1865 MSA128B, MSA128B>; 1866class MOD_S_H_DESC : MSA_3R_DESC_BASE<"mod_s.h", int_mips_mod_s_h, NoItinerary, 1867 MSA128H, MSA128H>; 1868class MOD_S_W_DESC : MSA_3R_DESC_BASE<"mod_s.w", int_mips_mod_s_w, NoItinerary, 1869 MSA128W, MSA128W>; 1870class MOD_S_D_DESC : MSA_3R_DESC_BASE<"mod_s.d", int_mips_mod_s_d, NoItinerary, 1871 MSA128D, MSA128D>; 1872 1873class MOD_U_B_DESC : MSA_3R_DESC_BASE<"mod_u.b", int_mips_mod_u_b, NoItinerary, 1874 MSA128B, MSA128B>; 1875class MOD_U_H_DESC : MSA_3R_DESC_BASE<"mod_u.h", int_mips_mod_u_h, NoItinerary, 1876 MSA128H, MSA128H>; 1877class MOD_U_W_DESC : MSA_3R_DESC_BASE<"mod_u.w", int_mips_mod_u_w, NoItinerary, 1878 MSA128W, MSA128W>; 1879class MOD_U_D_DESC : MSA_3R_DESC_BASE<"mod_u.d", int_mips_mod_u_d, NoItinerary, 1880 MSA128D, MSA128D>; 1881 1882class MOVE_V_DESC { 1883 dag OutOperandList = (outs MSA128B:$wd); 1884 dag InOperandList = (ins MSA128B:$ws); 1885 string AsmString = "move.v\t$wd, $ws"; 1886 list<dag> Pattern = []; 1887 InstrItinClass Itinerary = NoItinerary; 1888} 1889 1890class MSUB_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.h", int_mips_msub_q_h, 1891 NoItinerary, MSA128H, MSA128H>; 1892class MSUB_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.w", int_mips_msub_q_w, 1893 NoItinerary, MSA128W, MSA128W>; 1894 1895class MSUBR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.h", int_mips_msubr_q_h, 1896 NoItinerary, MSA128H, MSA128H>; 1897class MSUBR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.w", int_mips_msubr_q_w, 1898 NoItinerary, MSA128W, MSA128W>; 1899 1900class MSUBV_B_DESC : MSA_3R_4R_DESC_BASE<"msubv.b", int_mips_msubv_b, 1901 NoItinerary, MSA128B, MSA128B>; 1902class MSUBV_H_DESC : MSA_3R_4R_DESC_BASE<"msubv.h", int_mips_msubv_h, 1903 NoItinerary, MSA128H, MSA128H>; 1904class MSUBV_W_DESC : MSA_3R_4R_DESC_BASE<"msubv.w", int_mips_msubv_w, 1905 NoItinerary, MSA128W, MSA128W>; 1906class MSUBV_D_DESC : MSA_3R_4R_DESC_BASE<"msubv.d", int_mips_msubv_d, 1907 NoItinerary, MSA128D, MSA128D>; 1908 1909class MUL_Q_H_DESC : MSA_3RF_DESC_BASE<"mul_q.h", int_mips_mul_q_h, 1910 NoItinerary, MSA128H, MSA128H>; 1911class MUL_Q_W_DESC : MSA_3RF_DESC_BASE<"mul_q.w", int_mips_mul_q_w, 1912 NoItinerary, MSA128W, MSA128W>; 1913 1914class MULR_Q_H_DESC : MSA_3RF_DESC_BASE<"mulr_q.h", int_mips_mulr_q_h, 1915 NoItinerary, MSA128H, MSA128H>; 1916class MULR_Q_W_DESC : MSA_3RF_DESC_BASE<"mulr_q.w", int_mips_mulr_q_w, 1917 NoItinerary, MSA128W, MSA128W>; 1918 1919class MULV_B_DESC : MSA_3R_DESC_BASE<"mulv.b", int_mips_mulv_b, 1920 NoItinerary, MSA128B, MSA128B>; 1921class MULV_H_DESC : MSA_3R_DESC_BASE<"mulv.h", int_mips_mulv_h, 1922 NoItinerary, MSA128H, MSA128H>; 1923class MULV_W_DESC : MSA_3R_DESC_BASE<"mulv.w", int_mips_mulv_w, 1924 NoItinerary, MSA128W, MSA128W>; 1925class MULV_D_DESC : MSA_3R_DESC_BASE<"mulv.d", int_mips_mulv_d, 1926 NoItinerary, MSA128D, MSA128D>; 1927 1928class NLOC_B_DESC : MSA_2R_DESC_BASE<"nloc.b", int_mips_nloc_b, 1929 NoItinerary, MSA128B, MSA128B>; 1930class NLOC_H_DESC : MSA_2R_DESC_BASE<"nloc.h", int_mips_nloc_h, 1931 NoItinerary, MSA128H, MSA128H>; 1932class NLOC_W_DESC : MSA_2R_DESC_BASE<"nloc.w", int_mips_nloc_w, 1933 NoItinerary, MSA128W, MSA128W>; 1934class NLOC_D_DESC : MSA_2R_DESC_BASE<"nloc.d", int_mips_nloc_d, 1935 NoItinerary, MSA128D, MSA128D>; 1936 1937class NLZC_B_DESC : MSA_2R_DESC_BASE<"nlzc.b", int_mips_nlzc_b, 1938 NoItinerary, MSA128B, MSA128B>; 1939class NLZC_H_DESC : MSA_2R_DESC_BASE<"nlzc.h", int_mips_nlzc_h, 1940 NoItinerary, MSA128H, MSA128H>; 1941class NLZC_W_DESC : MSA_2R_DESC_BASE<"nlzc.w", int_mips_nlzc_w, 1942 NoItinerary, MSA128W, MSA128W>; 1943class NLZC_D_DESC : MSA_2R_DESC_BASE<"nlzc.d", int_mips_nlzc_d, 1944 NoItinerary, MSA128D, MSA128D>; 1945 1946class NOR_V_DESC : MSA_VEC_DESC_BASE<"nor.v", int_mips_nor_v, NoItinerary, 1947 MSA128B, MSA128B>; 1948 1949class NORI_B_DESC : MSA_I8_DESC_BASE<"nori.b", int_mips_nori_b, NoItinerary, 1950 MSA128B, MSA128B>; 1951 1952class OR_V_DESC : MSA_VEC_DESC_BASE<"or.v", int_mips_or_v, NoItinerary, 1953 MSA128B, MSA128B>; 1954 1955class ORI_B_DESC : MSA_I8_DESC_BASE<"ori.b", int_mips_ori_b, NoItinerary, 1956 MSA128B, MSA128B>; 1957 1958class PCKEV_B_DESC : MSA_3R_DESC_BASE<"pckev.b", int_mips_pckev_b, NoItinerary, 1959 MSA128B, MSA128B>; 1960class PCKEV_H_DESC : MSA_3R_DESC_BASE<"pckev.h", int_mips_pckev_h, NoItinerary, 1961 MSA128H, MSA128H>; 1962class PCKEV_W_DESC : MSA_3R_DESC_BASE<"pckev.w", int_mips_pckev_w, NoItinerary, 1963 MSA128W, MSA128W>; 1964class PCKEV_D_DESC : MSA_3R_DESC_BASE<"pckev.d", int_mips_pckev_d, NoItinerary, 1965 MSA128D, MSA128D>; 1966 1967class PCKOD_B_DESC : MSA_3R_DESC_BASE<"pckod.b", int_mips_pckod_b, NoItinerary, 1968 MSA128B, MSA128B>; 1969class PCKOD_H_DESC : MSA_3R_DESC_BASE<"pckod.h", int_mips_pckod_h, NoItinerary, 1970 MSA128H, MSA128H>; 1971class PCKOD_W_DESC : MSA_3R_DESC_BASE<"pckod.w", int_mips_pckod_w, NoItinerary, 1972 MSA128W, MSA128W>; 1973class PCKOD_D_DESC : MSA_3R_DESC_BASE<"pckod.d", int_mips_pckod_d, NoItinerary, 1974 MSA128D, MSA128D>; 1975 1976class PCNT_B_DESC : MSA_2R_DESC_BASE<"pcnt.b", int_mips_pcnt_b, 1977 NoItinerary, MSA128B, MSA128B>; 1978class PCNT_H_DESC : MSA_2R_DESC_BASE<"pcnt.h", int_mips_pcnt_h, 1979 NoItinerary, MSA128H, MSA128H>; 1980class PCNT_W_DESC : MSA_2R_DESC_BASE<"pcnt.w", int_mips_pcnt_w, 1981 NoItinerary, MSA128W, MSA128W>; 1982class PCNT_D_DESC : MSA_2R_DESC_BASE<"pcnt.d", int_mips_pcnt_d, 1983 NoItinerary, MSA128D, MSA128D>; 1984 1985class SAT_S_B_DESC : MSA_BIT_B_DESC_BASE<"sat_s.b", int_mips_sat_s_b, 1986 NoItinerary, MSA128B, MSA128B>; 1987class SAT_S_H_DESC : MSA_BIT_H_DESC_BASE<"sat_s.h", int_mips_sat_s_h, 1988 NoItinerary, MSA128H, MSA128H>; 1989class SAT_S_W_DESC : MSA_BIT_W_DESC_BASE<"sat_s.w", int_mips_sat_s_w, 1990 NoItinerary, MSA128W, MSA128W>; 1991class SAT_S_D_DESC : MSA_BIT_D_DESC_BASE<"sat_s.d", int_mips_sat_s_d, 1992 NoItinerary, MSA128D, MSA128D>; 1993 1994class SAT_U_B_DESC : MSA_BIT_B_DESC_BASE<"sat_u.b", int_mips_sat_u_b, 1995 NoItinerary, MSA128B, MSA128B>; 1996class SAT_U_H_DESC : MSA_BIT_H_DESC_BASE<"sat_u.h", int_mips_sat_u_h, 1997 NoItinerary, MSA128H, MSA128H>; 1998class SAT_U_W_DESC : MSA_BIT_W_DESC_BASE<"sat_u.w", int_mips_sat_u_w, 1999 NoItinerary, MSA128W, MSA128W>; 2000class SAT_U_D_DESC : MSA_BIT_D_DESC_BASE<"sat_u.d", int_mips_sat_u_d, 2001 NoItinerary, MSA128D, MSA128D>; 2002 2003class SHF_B_DESC : MSA_I8_DESC_BASE<"shf.b", int_mips_shf_b, NoItinerary, 2004 MSA128B, MSA128B>; 2005class SHF_H_DESC : MSA_I8_DESC_BASE<"shf.h", int_mips_shf_h, NoItinerary, 2006 MSA128H, MSA128H>; 2007class SHF_W_DESC : MSA_I8_DESC_BASE<"shf.w", int_mips_shf_w, NoItinerary, 2008 MSA128W, MSA128W>; 2009 2010class SLD_B_DESC : MSA_3R_DESC_BASE<"sld.b", int_mips_sld_b, NoItinerary, 2011 MSA128B, MSA128B>; 2012class SLD_H_DESC : MSA_3R_DESC_BASE<"sld.h", int_mips_sld_h, NoItinerary, 2013 MSA128H, MSA128H>; 2014class SLD_W_DESC : MSA_3R_DESC_BASE<"sld.w", int_mips_sld_w, NoItinerary, 2015 MSA128W, MSA128W>; 2016class SLD_D_DESC : MSA_3R_DESC_BASE<"sld.d", int_mips_sld_d, NoItinerary, 2017 MSA128D, MSA128D>; 2018 2019class SLDI_B_DESC : MSA_BIT_B_DESC_BASE<"sldi.b", int_mips_sldi_b, 2020 NoItinerary, MSA128B, MSA128B>; 2021class SLDI_H_DESC : MSA_BIT_H_DESC_BASE<"sldi.h", int_mips_sldi_h, 2022 NoItinerary, MSA128H, MSA128H>; 2023class SLDI_W_DESC : MSA_BIT_W_DESC_BASE<"sldi.w", int_mips_sldi_w, 2024 NoItinerary, MSA128W, MSA128W>; 2025class SLDI_D_DESC : MSA_BIT_D_DESC_BASE<"sldi.d", int_mips_sldi_d, 2026 NoItinerary, MSA128D, MSA128D>; 2027 2028class SLL_B_DESC : MSA_3R_DESC_BASE<"sll.b", int_mips_sll_b, NoItinerary, 2029 MSA128B, MSA128B>; 2030class SLL_H_DESC : MSA_3R_DESC_BASE<"sll.h", int_mips_sll_h, NoItinerary, 2031 MSA128H, MSA128H>; 2032class SLL_W_DESC : MSA_3R_DESC_BASE<"sll.w", int_mips_sll_w, NoItinerary, 2033 MSA128W, MSA128W>; 2034class SLL_D_DESC : MSA_3R_DESC_BASE<"sll.d", int_mips_sll_d, NoItinerary, 2035 MSA128D, MSA128D>; 2036 2037class SLLI_B_DESC : MSA_BIT_B_DESC_BASE<"slli.b", int_mips_slli_b, 2038 NoItinerary, MSA128B, MSA128B>; 2039class SLLI_H_DESC : MSA_BIT_H_DESC_BASE<"slli.h", int_mips_slli_h, 2040 NoItinerary, MSA128H, MSA128H>; 2041class SLLI_W_DESC : MSA_BIT_W_DESC_BASE<"slli.w", int_mips_slli_w, 2042 NoItinerary, MSA128W, MSA128W>; 2043class SLLI_D_DESC : MSA_BIT_D_DESC_BASE<"slli.d", int_mips_slli_d, 2044 NoItinerary, MSA128D, MSA128D>; 2045 2046class SPLAT_B_DESC : MSA_3R_DESC_BASE<"splat.b", int_mips_splat_b, NoItinerary, 2047 MSA128B, MSA128B, GPR32>; 2048class SPLAT_H_DESC : MSA_3R_DESC_BASE<"splat.h", int_mips_splat_h, NoItinerary, 2049 MSA128H, MSA128H, GPR32>; 2050class SPLAT_W_DESC : MSA_3R_DESC_BASE<"splat.w", int_mips_splat_w, NoItinerary, 2051 MSA128W, MSA128W, GPR32>; 2052class SPLAT_D_DESC : MSA_3R_DESC_BASE<"splat.d", int_mips_splat_d, NoItinerary, 2053 MSA128D, MSA128D, GPR32>; 2054 2055class SPLATI_B_DESC : MSA_BIT_B_DESC_BASE<"splati.b", int_mips_splati_b, 2056 NoItinerary, MSA128B, MSA128B>; 2057class SPLATI_H_DESC : MSA_BIT_H_DESC_BASE<"splati.h", int_mips_splati_h, 2058 NoItinerary, MSA128H, MSA128H>; 2059class SPLATI_W_DESC : MSA_BIT_W_DESC_BASE<"splati.w", int_mips_splati_w, 2060 NoItinerary, MSA128W, MSA128W>; 2061class SPLATI_D_DESC : MSA_BIT_D_DESC_BASE<"splati.d", int_mips_splati_d, 2062 NoItinerary, MSA128D, MSA128D>; 2063 2064class SRA_B_DESC : MSA_3R_DESC_BASE<"sra.b", int_mips_sra_b, NoItinerary, 2065 MSA128B, MSA128B>; 2066class SRA_H_DESC : MSA_3R_DESC_BASE<"sra.h", int_mips_sra_h, NoItinerary, 2067 MSA128H, MSA128H>; 2068class SRA_W_DESC : MSA_3R_DESC_BASE<"sra.w", int_mips_sra_w, NoItinerary, 2069 MSA128W, MSA128W>; 2070class SRA_D_DESC : MSA_3R_DESC_BASE<"sra.d", int_mips_sra_d, NoItinerary, 2071 MSA128D, MSA128D>; 2072 2073class SRAI_B_DESC : MSA_BIT_B_DESC_BASE<"srai.b", int_mips_srai_b, 2074 NoItinerary, MSA128B, MSA128B>; 2075class SRAI_H_DESC : MSA_BIT_H_DESC_BASE<"srai.h", int_mips_srai_h, 2076 NoItinerary, MSA128H, MSA128H>; 2077class SRAI_W_DESC : MSA_BIT_W_DESC_BASE<"srai.w", int_mips_srai_w, 2078 NoItinerary, MSA128W, MSA128W>; 2079class SRAI_D_DESC : MSA_BIT_D_DESC_BASE<"srai.d", int_mips_srai_d, 2080 NoItinerary, MSA128D, MSA128D>; 2081 2082class SRAR_B_DESC : MSA_3R_DESC_BASE<"srar.b", int_mips_srar_b, NoItinerary, 2083 MSA128B, MSA128B>; 2084class SRAR_H_DESC : MSA_3R_DESC_BASE<"srar.h", int_mips_srar_h, NoItinerary, 2085 MSA128H, MSA128H>; 2086class SRAR_W_DESC : MSA_3R_DESC_BASE<"srar.w", int_mips_srar_w, NoItinerary, 2087 MSA128W, MSA128W>; 2088class SRAR_D_DESC : MSA_3R_DESC_BASE<"srar.d", int_mips_srar_d, NoItinerary, 2089 MSA128D, MSA128D>; 2090 2091class SRARI_B_DESC : MSA_BIT_B_DESC_BASE<"srari.b", int_mips_srari_b, 2092 NoItinerary, MSA128B, MSA128B>; 2093class SRARI_H_DESC : MSA_BIT_H_DESC_BASE<"srari.h", int_mips_srari_h, 2094 NoItinerary, MSA128H, MSA128H>; 2095class SRARI_W_DESC : MSA_BIT_W_DESC_BASE<"srari.w", int_mips_srari_w, 2096 NoItinerary, MSA128W, MSA128W>; 2097class SRARI_D_DESC : MSA_BIT_D_DESC_BASE<"srari.d", int_mips_srari_d, 2098 NoItinerary, MSA128D, MSA128D>; 2099 2100class SRL_B_DESC : MSA_3R_DESC_BASE<"srl.b", int_mips_srl_b, NoItinerary, 2101 MSA128B, MSA128B>; 2102class SRL_H_DESC : MSA_3R_DESC_BASE<"srl.h", int_mips_srl_h, NoItinerary, 2103 MSA128H, MSA128H>; 2104class SRL_W_DESC : MSA_3R_DESC_BASE<"srl.w", int_mips_srl_w, NoItinerary, 2105 MSA128W, MSA128W>; 2106class SRL_D_DESC : MSA_3R_DESC_BASE<"srl.d", int_mips_srl_d, NoItinerary, 2107 MSA128D, MSA128D>; 2108 2109class SRLI_B_DESC : MSA_BIT_B_DESC_BASE<"srli.b", int_mips_srli_b, 2110 NoItinerary, MSA128B, MSA128B>; 2111class SRLI_H_DESC : MSA_BIT_H_DESC_BASE<"srli.h", int_mips_srli_h, 2112 NoItinerary, MSA128H, MSA128H>; 2113class SRLI_W_DESC : MSA_BIT_W_DESC_BASE<"srli.w", int_mips_srli_w, 2114 NoItinerary, MSA128W, MSA128W>; 2115class SRLI_D_DESC : MSA_BIT_D_DESC_BASE<"srli.d", int_mips_srli_d, 2116 NoItinerary, MSA128D, MSA128D>; 2117 2118class SRLR_B_DESC : MSA_3R_DESC_BASE<"srlr.b", int_mips_srlr_b, NoItinerary, 2119 MSA128B, MSA128B>; 2120class SRLR_H_DESC : MSA_3R_DESC_BASE<"srlr.h", int_mips_srlr_h, NoItinerary, 2121 MSA128H, MSA128H>; 2122class SRLR_W_DESC : MSA_3R_DESC_BASE<"srlr.w", int_mips_srlr_w, NoItinerary, 2123 MSA128W, MSA128W>; 2124class SRLR_D_DESC : MSA_3R_DESC_BASE<"srlr.d", int_mips_srlr_d, NoItinerary, 2125 MSA128D, MSA128D>; 2126 2127class SRLRI_B_DESC : MSA_BIT_B_DESC_BASE<"srlri.b", int_mips_srlri_b, 2128 NoItinerary, MSA128B, MSA128B>; 2129class SRLRI_H_DESC : MSA_BIT_H_DESC_BASE<"srlri.h", int_mips_srlri_h, 2130 NoItinerary, MSA128H, MSA128H>; 2131class SRLRI_W_DESC : MSA_BIT_W_DESC_BASE<"srlri.w", int_mips_srlri_w, 2132 NoItinerary, MSA128W, MSA128W>; 2133class SRLRI_D_DESC : MSA_BIT_D_DESC_BASE<"srlri.d", int_mips_srlri_d, 2134 NoItinerary, MSA128D, MSA128D>; 2135 2136class ST_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 2137 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 2138 Operand MemOpnd = mem, ComplexPattern Addr = addrRegImm> { 2139 dag OutOperandList = (outs); 2140 dag InOperandList = (ins RCWD:$wd, MemOpnd:$addr); 2141 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 2142 list<dag> Pattern = [(OpNode (TyNode RCWD:$wd), Addr:$addr)]; 2143 InstrItinClass Itinerary = itin; 2144} 2145 2146class ST_B_DESC : ST_DESC_BASE<"st.b", store, v16i8, NoItinerary, MSA128B>; 2147class ST_H_DESC : ST_DESC_BASE<"st.h", store, v8i16, NoItinerary, MSA128H>; 2148class ST_W_DESC : ST_DESC_BASE<"st.w", store, v4i32, NoItinerary, MSA128W>; 2149class ST_D_DESC : ST_DESC_BASE<"st.d", store, v2i64, NoItinerary, MSA128D>; 2150 2151class STX_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 2152 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 2153 Operand MemOpnd = mem, ComplexPattern Addr = addrRegReg> { 2154 dag OutOperandList = (outs); 2155 dag InOperandList = (ins RCWD:$wd, MemOpnd:$addr); 2156 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 2157 list<dag> Pattern = [(OpNode (TyNode RCWD:$wd), Addr:$addr)]; 2158 InstrItinClass Itinerary = itin; 2159} 2160 2161class STX_B_DESC : STX_DESC_BASE<"stx.b", store, v16i8, NoItinerary, MSA128B>; 2162class STX_H_DESC : STX_DESC_BASE<"stx.h", store, v8i16, NoItinerary, MSA128H>; 2163class STX_W_DESC : STX_DESC_BASE<"stx.w", store, v4i32, NoItinerary, MSA128W>; 2164class STX_D_DESC : STX_DESC_BASE<"stx.d", store, v2i64, NoItinerary, MSA128D>; 2165 2166class SUBS_S_B_DESC : MSA_3R_DESC_BASE<"subs_s.b", int_mips_subs_s_b, 2167 NoItinerary, MSA128B, MSA128B>; 2168class SUBS_S_H_DESC : MSA_3R_DESC_BASE<"subs_s.h", int_mips_subs_s_h, 2169 NoItinerary, MSA128H, MSA128H>; 2170class SUBS_S_W_DESC : MSA_3R_DESC_BASE<"subs_s.w", int_mips_subs_s_w, 2171 NoItinerary, MSA128W, MSA128W>; 2172class SUBS_S_D_DESC : MSA_3R_DESC_BASE<"subs_s.d", int_mips_subs_s_d, 2173 NoItinerary, MSA128D, MSA128D>; 2174 2175class SUBS_U_B_DESC : MSA_3R_DESC_BASE<"subs_u.b", int_mips_subs_u_b, 2176 NoItinerary, MSA128B, MSA128B>; 2177class SUBS_U_H_DESC : MSA_3R_DESC_BASE<"subs_u.h", int_mips_subs_u_h, 2178 NoItinerary, MSA128H, MSA128H>; 2179class SUBS_U_W_DESC : MSA_3R_DESC_BASE<"subs_u.w", int_mips_subs_u_w, 2180 NoItinerary, MSA128W, MSA128W>; 2181class SUBS_U_D_DESC : MSA_3R_DESC_BASE<"subs_u.d", int_mips_subs_u_d, 2182 NoItinerary, MSA128D, MSA128D>; 2183 2184class SUBSUS_U_B_DESC : MSA_3R_DESC_BASE<"subsus_u.b", int_mips_subsus_u_b, 2185 NoItinerary, MSA128B, MSA128B>; 2186class SUBSUS_U_H_DESC : MSA_3R_DESC_BASE<"subsus_u.h", int_mips_subsus_u_h, 2187 NoItinerary, MSA128H, MSA128H>; 2188class SUBSUS_U_W_DESC : MSA_3R_DESC_BASE<"subsus_u.w", int_mips_subsus_u_w, 2189 NoItinerary, MSA128W, MSA128W>; 2190class SUBSUS_U_D_DESC : MSA_3R_DESC_BASE<"subsus_u.d", int_mips_subsus_u_d, 2191 NoItinerary, MSA128D, MSA128D>; 2192 2193class SUBSUU_S_B_DESC : MSA_3R_DESC_BASE<"subsuu_s.b", int_mips_subsuu_s_b, 2194 NoItinerary, MSA128B, MSA128B>; 2195class SUBSUU_S_H_DESC : MSA_3R_DESC_BASE<"subsuu_s.h", int_mips_subsuu_s_h, 2196 NoItinerary, MSA128H, MSA128H>; 2197class SUBSUU_S_W_DESC : MSA_3R_DESC_BASE<"subsuu_s.w", int_mips_subsuu_s_w, 2198 NoItinerary, MSA128W, MSA128W>; 2199class SUBSUU_S_D_DESC : MSA_3R_DESC_BASE<"subsuu_s.d", int_mips_subsuu_s_d, 2200 NoItinerary, MSA128D, MSA128D>; 2201 2202class SUBV_B_DESC : MSA_3R_DESC_BASE<"subv.b", int_mips_subv_b, 2203 NoItinerary, MSA128B, MSA128B>; 2204class SUBV_H_DESC : MSA_3R_DESC_BASE<"subv.h", int_mips_subv_h, 2205 NoItinerary, MSA128H, MSA128H>; 2206class SUBV_W_DESC : MSA_3R_DESC_BASE<"subv.w", int_mips_subv_w, 2207 NoItinerary, MSA128W, MSA128W>; 2208class SUBV_D_DESC : MSA_3R_DESC_BASE<"subv.d", int_mips_subv_d, 2209 NoItinerary, MSA128D, MSA128D>; 2210 2211class SUBVI_B_DESC : MSA_I5_DESC_BASE<"subvi.b", int_mips_subvi_b, NoItinerary, 2212 MSA128B, MSA128B>; 2213class SUBVI_H_DESC : MSA_I5_DESC_BASE<"subvi.h", int_mips_subvi_h, NoItinerary, 2214 MSA128H, MSA128H>; 2215class SUBVI_W_DESC : MSA_I5_DESC_BASE<"subvi.w", int_mips_subvi_w, NoItinerary, 2216 MSA128W, MSA128W>; 2217class SUBVI_D_DESC : MSA_I5_DESC_BASE<"subvi.d", int_mips_subvi_d, NoItinerary, 2218 MSA128D, MSA128D>; 2219 2220class VSHF_B_DESC : MSA_3R_DESC_BASE<"vshf.b", int_mips_vshf_b, 2221 NoItinerary, MSA128B, MSA128B>; 2222class VSHF_H_DESC : MSA_3R_DESC_BASE<"vshf.h", int_mips_vshf_h, 2223 NoItinerary, MSA128H, MSA128H>; 2224class VSHF_W_DESC : MSA_3R_DESC_BASE<"vshf.w", int_mips_vshf_w, 2225 NoItinerary, MSA128W, MSA128W>; 2226class VSHF_D_DESC : MSA_3R_DESC_BASE<"vshf.d", int_mips_vshf_d, 2227 NoItinerary, MSA128D, MSA128D>; 2228 2229class XOR_V_DESC : MSA_VEC_DESC_BASE<"xor.v", int_mips_xor_v, NoItinerary, 2230 MSA128B, MSA128B>; 2231 2232class XORI_B_DESC : MSA_I8_DESC_BASE<"xori.b", int_mips_xori_b, NoItinerary, 2233 MSA128B, MSA128B>; 2234// Instruction defs. 2235def ADD_A_B : ADD_A_B_ENC, ADD_A_B_DESC, Requires<[HasMSA]>; 2236def ADD_A_H : ADD_A_H_ENC, ADD_A_H_DESC, Requires<[HasMSA]>; 2237def ADD_A_W : ADD_A_W_ENC, ADD_A_W_DESC, Requires<[HasMSA]>; 2238def ADD_A_D : ADD_A_D_ENC, ADD_A_D_DESC, Requires<[HasMSA]>; 2239 2240def ADDS_A_B : ADDS_A_B_ENC, ADDS_A_B_DESC, Requires<[HasMSA]>; 2241def ADDS_A_H : ADDS_A_H_ENC, ADDS_A_H_DESC, Requires<[HasMSA]>; 2242def ADDS_A_W : ADDS_A_W_ENC, ADDS_A_W_DESC, Requires<[HasMSA]>; 2243def ADDS_A_D : ADDS_A_D_ENC, ADDS_A_D_DESC, Requires<[HasMSA]>; 2244 2245def ADDS_S_B : ADDS_S_B_ENC, ADDS_S_B_DESC, Requires<[HasMSA]>; 2246def ADDS_S_H : ADDS_S_H_ENC, ADDS_S_H_DESC, Requires<[HasMSA]>; 2247def ADDS_S_W : ADDS_S_W_ENC, ADDS_S_W_DESC, Requires<[HasMSA]>; 2248def ADDS_S_D : ADDS_S_D_ENC, ADDS_S_D_DESC, Requires<[HasMSA]>; 2249 2250def ADDS_U_B : ADDS_U_B_ENC, ADDS_U_B_DESC, Requires<[HasMSA]>; 2251def ADDS_U_H : ADDS_U_H_ENC, ADDS_U_H_DESC, Requires<[HasMSA]>; 2252def ADDS_U_W : ADDS_U_W_ENC, ADDS_U_W_DESC, Requires<[HasMSA]>; 2253def ADDS_U_D : ADDS_U_D_ENC, ADDS_U_D_DESC, Requires<[HasMSA]>; 2254 2255def ADDV_B : ADDV_B_ENC, ADDV_B_DESC, Requires<[HasMSA]>; 2256def ADDV_H : ADDV_H_ENC, ADDV_H_DESC, Requires<[HasMSA]>; 2257def ADDV_W : ADDV_W_ENC, ADDV_W_DESC, Requires<[HasMSA]>; 2258def ADDV_D : ADDV_D_ENC, ADDV_D_DESC, Requires<[HasMSA]>; 2259 2260def ADDVI_B : ADDVI_B_ENC, ADDVI_B_DESC, Requires<[HasMSA]>; 2261def ADDVI_H : ADDVI_H_ENC, ADDVI_H_DESC, Requires<[HasMSA]>; 2262def ADDVI_W : ADDVI_W_ENC, ADDVI_W_DESC, Requires<[HasMSA]>; 2263def ADDVI_D : ADDVI_D_ENC, ADDVI_D_DESC, Requires<[HasMSA]>; 2264 2265def AND_V : AND_V_ENC, AND_V_DESC, Requires<[HasMSA]>; 2266 2267def ANDI_B : ANDI_B_ENC, ANDI_B_DESC, Requires<[HasMSA]>; 2268 2269def ASUB_S_B : ASUB_S_B_ENC, ASUB_S_B_DESC, Requires<[HasMSA]>; 2270def ASUB_S_H : ASUB_S_H_ENC, ASUB_S_H_DESC, Requires<[HasMSA]>; 2271def ASUB_S_W : ASUB_S_W_ENC, ASUB_S_W_DESC, Requires<[HasMSA]>; 2272def ASUB_S_D : ASUB_S_D_ENC, ASUB_S_D_DESC, Requires<[HasMSA]>; 2273 2274def ASUB_U_B : ASUB_U_B_ENC, ASUB_U_B_DESC, Requires<[HasMSA]>; 2275def ASUB_U_H : ASUB_U_H_ENC, ASUB_U_H_DESC, Requires<[HasMSA]>; 2276def ASUB_U_W : ASUB_U_W_ENC, ASUB_U_W_DESC, Requires<[HasMSA]>; 2277def ASUB_U_D : ASUB_U_D_ENC, ASUB_U_D_DESC, Requires<[HasMSA]>; 2278 2279def AVE_S_B : AVE_S_B_ENC, AVE_S_B_DESC, Requires<[HasMSA]>; 2280def AVE_S_H : AVE_S_H_ENC, AVE_S_H_DESC, Requires<[HasMSA]>; 2281def AVE_S_W : AVE_S_W_ENC, AVE_S_W_DESC, Requires<[HasMSA]>; 2282def AVE_S_D : AVE_S_D_ENC, AVE_S_D_DESC, Requires<[HasMSA]>; 2283 2284def AVE_U_B : AVE_U_B_ENC, AVE_U_B_DESC, Requires<[HasMSA]>; 2285def AVE_U_H : AVE_U_H_ENC, AVE_U_H_DESC, Requires<[HasMSA]>; 2286def AVE_U_W : AVE_U_W_ENC, AVE_U_W_DESC, Requires<[HasMSA]>; 2287def AVE_U_D : AVE_U_D_ENC, AVE_U_D_DESC, Requires<[HasMSA]>; 2288 2289def AVER_S_B : AVER_S_B_ENC, AVER_S_B_DESC, Requires<[HasMSA]>; 2290def AVER_S_H : AVER_S_H_ENC, AVER_S_H_DESC, Requires<[HasMSA]>; 2291def AVER_S_W : AVER_S_W_ENC, AVER_S_W_DESC, Requires<[HasMSA]>; 2292def AVER_S_D : AVER_S_D_ENC, AVER_S_D_DESC, Requires<[HasMSA]>; 2293 2294def AVER_U_B : AVER_U_B_ENC, AVER_U_B_DESC, Requires<[HasMSA]>; 2295def AVER_U_H : AVER_U_H_ENC, AVER_U_H_DESC, Requires<[HasMSA]>; 2296def AVER_U_W : AVER_U_W_ENC, AVER_U_W_DESC, Requires<[HasMSA]>; 2297def AVER_U_D : AVER_U_D_ENC, AVER_U_D_DESC, Requires<[HasMSA]>; 2298 2299def BCLR_B : BCLR_B_ENC, BCLR_B_DESC, Requires<[HasMSA]>; 2300def BCLR_H : BCLR_H_ENC, BCLR_H_DESC, Requires<[HasMSA]>; 2301def BCLR_W : BCLR_W_ENC, BCLR_W_DESC, Requires<[HasMSA]>; 2302def BCLR_D : BCLR_D_ENC, BCLR_D_DESC, Requires<[HasMSA]>; 2303 2304def BCLRI_B : BCLRI_B_ENC, BCLRI_B_DESC, Requires<[HasMSA]>; 2305def BCLRI_H : BCLRI_H_ENC, BCLRI_H_DESC, Requires<[HasMSA]>; 2306def BCLRI_W : BCLRI_W_ENC, BCLRI_W_DESC, Requires<[HasMSA]>; 2307def BCLRI_D : BCLRI_D_ENC, BCLRI_D_DESC, Requires<[HasMSA]>; 2308 2309def BINSL_B : BINSL_B_ENC, BINSL_B_DESC, Requires<[HasMSA]>; 2310def BINSL_H : BINSL_H_ENC, BINSL_H_DESC, Requires<[HasMSA]>; 2311def BINSL_W : BINSL_W_ENC, BINSL_W_DESC, Requires<[HasMSA]>; 2312def BINSL_D : BINSL_D_ENC, BINSL_D_DESC, Requires<[HasMSA]>; 2313 2314def BINSLI_B : BINSLI_B_ENC, BINSLI_B_DESC, Requires<[HasMSA]>; 2315def BINSLI_H : BINSLI_H_ENC, BINSLI_H_DESC, Requires<[HasMSA]>; 2316def BINSLI_W : BINSLI_W_ENC, BINSLI_W_DESC, Requires<[HasMSA]>; 2317def BINSLI_D : BINSLI_D_ENC, BINSLI_D_DESC, Requires<[HasMSA]>; 2318 2319def BINSR_B : BINSR_B_ENC, BINSR_B_DESC, Requires<[HasMSA]>; 2320def BINSR_H : BINSR_H_ENC, BINSR_H_DESC, Requires<[HasMSA]>; 2321def BINSR_W : BINSR_W_ENC, BINSR_W_DESC, Requires<[HasMSA]>; 2322def BINSR_D : BINSR_D_ENC, BINSR_D_DESC, Requires<[HasMSA]>; 2323 2324def BINSRI_B : BINSRI_B_ENC, BINSRI_B_DESC, Requires<[HasMSA]>; 2325def BINSRI_H : BINSRI_H_ENC, BINSRI_H_DESC, Requires<[HasMSA]>; 2326def BINSRI_W : BINSRI_W_ENC, BINSRI_W_DESC, Requires<[HasMSA]>; 2327def BINSRI_D : BINSRI_D_ENC, BINSRI_D_DESC, Requires<[HasMSA]>; 2328 2329def BMNZ_V : BMNZ_V_ENC, BMNZ_V_DESC, Requires<[HasMSA]>; 2330 2331def BMNZI_B : BMNZI_B_ENC, BMNZI_B_DESC, Requires<[HasMSA]>; 2332 2333def BMZ_V : BMZ_V_ENC, BMZ_V_DESC, Requires<[HasMSA]>; 2334 2335def BMZI_B : BMZI_B_ENC, BMZI_B_DESC, Requires<[HasMSA]>; 2336 2337def BNEG_B : BNEG_B_ENC, BNEG_B_DESC, Requires<[HasMSA]>; 2338def BNEG_H : BNEG_H_ENC, BNEG_H_DESC, Requires<[HasMSA]>; 2339def BNEG_W : BNEG_W_ENC, BNEG_W_DESC, Requires<[HasMSA]>; 2340def BNEG_D : BNEG_D_ENC, BNEG_D_DESC, Requires<[HasMSA]>; 2341 2342def BNEGI_B : BNEGI_B_ENC, BNEGI_B_DESC, Requires<[HasMSA]>; 2343def BNEGI_H : BNEGI_H_ENC, BNEGI_H_DESC, Requires<[HasMSA]>; 2344def BNEGI_W : BNEGI_W_ENC, BNEGI_W_DESC, Requires<[HasMSA]>; 2345def BNEGI_D : BNEGI_D_ENC, BNEGI_D_DESC, Requires<[HasMSA]>; 2346 2347def BSEL_V : BSEL_V_ENC, BSEL_V_DESC, Requires<[HasMSA]>; 2348 2349def BSELI_B : BSELI_B_ENC, BSELI_B_DESC, Requires<[HasMSA]>; 2350 2351def BSET_B : BSET_B_ENC, BSET_B_DESC, Requires<[HasMSA]>; 2352def BSET_H : BSET_H_ENC, BSET_H_DESC, Requires<[HasMSA]>; 2353def BSET_W : BSET_W_ENC, BSET_W_DESC, Requires<[HasMSA]>; 2354def BSET_D : BSET_D_ENC, BSET_D_DESC, Requires<[HasMSA]>; 2355 2356def BSETI_B : BSETI_B_ENC, BSETI_B_DESC, Requires<[HasMSA]>; 2357def BSETI_H : BSETI_H_ENC, BSETI_H_DESC, Requires<[HasMSA]>; 2358def BSETI_W : BSETI_W_ENC, BSETI_W_DESC, Requires<[HasMSA]>; 2359def BSETI_D : BSETI_D_ENC, BSETI_D_DESC, Requires<[HasMSA]>; 2360 2361def CEQ_B : CEQ_B_ENC, CEQ_B_DESC, Requires<[HasMSA]>; 2362def CEQ_H : CEQ_H_ENC, CEQ_H_DESC, Requires<[HasMSA]>; 2363def CEQ_W : CEQ_W_ENC, CEQ_W_DESC, Requires<[HasMSA]>; 2364def CEQ_D : CEQ_D_ENC, CEQ_D_DESC, Requires<[HasMSA]>; 2365 2366def CEQI_B : CEQI_B_ENC, CEQI_B_DESC, Requires<[HasMSA]>; 2367def CEQI_H : CEQI_H_ENC, CEQI_H_DESC, Requires<[HasMSA]>; 2368def CEQI_W : CEQI_W_ENC, CEQI_W_DESC, Requires<[HasMSA]>; 2369def CEQI_D : CEQI_D_ENC, CEQI_D_DESC, Requires<[HasMSA]>; 2370 2371def CFCMSA : CFCMSA_ENC, CFCMSA_DESC, Requires<[HasMSA]>; 2372 2373def CLE_S_B : CLE_S_B_ENC, CLE_S_B_DESC, Requires<[HasMSA]>; 2374def CLE_S_H : CLE_S_H_ENC, CLE_S_H_DESC, Requires<[HasMSA]>; 2375def CLE_S_W : CLE_S_W_ENC, CLE_S_W_DESC, Requires<[HasMSA]>; 2376def CLE_S_D : CLE_S_D_ENC, CLE_S_D_DESC, Requires<[HasMSA]>; 2377 2378def CLE_U_B : CLE_U_B_ENC, CLE_U_B_DESC, Requires<[HasMSA]>; 2379def CLE_U_H : CLE_U_H_ENC, CLE_U_H_DESC, Requires<[HasMSA]>; 2380def CLE_U_W : CLE_U_W_ENC, CLE_U_W_DESC, Requires<[HasMSA]>; 2381def CLE_U_D : CLE_U_D_ENC, CLE_U_D_DESC, Requires<[HasMSA]>; 2382 2383def CLEI_S_B : CLEI_S_B_ENC, CLEI_S_B_DESC, Requires<[HasMSA]>; 2384def CLEI_S_H : CLEI_S_H_ENC, CLEI_S_H_DESC, Requires<[HasMSA]>; 2385def CLEI_S_W : CLEI_S_W_ENC, CLEI_S_W_DESC, Requires<[HasMSA]>; 2386def CLEI_S_D : CLEI_S_D_ENC, CLEI_S_D_DESC, Requires<[HasMSA]>; 2387 2388def CLEI_U_B : CLEI_U_B_ENC, CLEI_U_B_DESC, Requires<[HasMSA]>; 2389def CLEI_U_H : CLEI_U_H_ENC, CLEI_U_H_DESC, Requires<[HasMSA]>; 2390def CLEI_U_W : CLEI_U_W_ENC, CLEI_U_W_DESC, Requires<[HasMSA]>; 2391def CLEI_U_D : CLEI_U_D_ENC, CLEI_U_D_DESC, Requires<[HasMSA]>; 2392 2393def CLT_S_B : CLT_S_B_ENC, CLT_S_B_DESC, Requires<[HasMSA]>; 2394def CLT_S_H : CLT_S_H_ENC, CLT_S_H_DESC, Requires<[HasMSA]>; 2395def CLT_S_W : CLT_S_W_ENC, CLT_S_W_DESC, Requires<[HasMSA]>; 2396def CLT_S_D : CLT_S_D_ENC, CLT_S_D_DESC, Requires<[HasMSA]>; 2397 2398def CLT_U_B : CLT_U_B_ENC, CLT_U_B_DESC, Requires<[HasMSA]>; 2399def CLT_U_H : CLT_U_H_ENC, CLT_U_H_DESC, Requires<[HasMSA]>; 2400def CLT_U_W : CLT_U_W_ENC, CLT_U_W_DESC, Requires<[HasMSA]>; 2401def CLT_U_D : CLT_U_D_ENC, CLT_U_D_DESC, Requires<[HasMSA]>; 2402 2403def CLTI_S_B : CLTI_S_B_ENC, CLTI_S_B_DESC, Requires<[HasMSA]>; 2404def CLTI_S_H : CLTI_S_H_ENC, CLTI_S_H_DESC, Requires<[HasMSA]>; 2405def CLTI_S_W : CLTI_S_W_ENC, CLTI_S_W_DESC, Requires<[HasMSA]>; 2406def CLTI_S_D : CLTI_S_D_ENC, CLTI_S_D_DESC, Requires<[HasMSA]>; 2407 2408def CLTI_U_B : CLTI_U_B_ENC, CLTI_U_B_DESC, Requires<[HasMSA]>; 2409def CLTI_U_H : CLTI_U_H_ENC, CLTI_U_H_DESC, Requires<[HasMSA]>; 2410def CLTI_U_W : CLTI_U_W_ENC, CLTI_U_W_DESC, Requires<[HasMSA]>; 2411def CLTI_U_D : CLTI_U_D_ENC, CLTI_U_D_DESC, Requires<[HasMSA]>; 2412 2413def COPY_S_B : COPY_S_B_ENC, COPY_S_B_DESC, Requires<[HasMSA]>; 2414def COPY_S_H : COPY_S_H_ENC, COPY_S_H_DESC, Requires<[HasMSA]>; 2415def COPY_S_W : COPY_S_W_ENC, COPY_S_W_DESC, Requires<[HasMSA]>; 2416 2417def COPY_U_B : COPY_U_B_ENC, COPY_U_B_DESC, Requires<[HasMSA]>; 2418def COPY_U_H : COPY_U_H_ENC, COPY_U_H_DESC, Requires<[HasMSA]>; 2419def COPY_U_W : COPY_U_W_ENC, COPY_U_W_DESC, Requires<[HasMSA]>; 2420 2421def CTCMSA : CTCMSA_ENC, CTCMSA_DESC, Requires<[HasMSA]>; 2422 2423def DIV_S_B : DIV_S_B_ENC, DIV_S_B_DESC, Requires<[HasMSA]>; 2424def DIV_S_H : DIV_S_H_ENC, DIV_S_H_DESC, Requires<[HasMSA]>; 2425def DIV_S_W : DIV_S_W_ENC, DIV_S_W_DESC, Requires<[HasMSA]>; 2426def DIV_S_D : DIV_S_D_ENC, DIV_S_D_DESC, Requires<[HasMSA]>; 2427 2428def DIV_U_B : DIV_U_B_ENC, DIV_U_B_DESC, Requires<[HasMSA]>; 2429def DIV_U_H : DIV_U_H_ENC, DIV_U_H_DESC, Requires<[HasMSA]>; 2430def DIV_U_W : DIV_U_W_ENC, DIV_U_W_DESC, Requires<[HasMSA]>; 2431def DIV_U_D : DIV_U_D_ENC, DIV_U_D_DESC, Requires<[HasMSA]>; 2432 2433def DOTP_S_B : DOTP_S_B_ENC, DOTP_S_B_DESC, Requires<[HasMSA]>; 2434def DOTP_S_H : DOTP_S_H_ENC, DOTP_S_H_DESC, Requires<[HasMSA]>; 2435def DOTP_S_W : DOTP_S_W_ENC, DOTP_S_W_DESC, Requires<[HasMSA]>; 2436def DOTP_S_D : DOTP_S_D_ENC, DOTP_S_D_DESC, Requires<[HasMSA]>; 2437 2438def DOTP_U_B : DOTP_U_B_ENC, DOTP_U_B_DESC, Requires<[HasMSA]>; 2439def DOTP_U_H : DOTP_U_H_ENC, DOTP_U_H_DESC, Requires<[HasMSA]>; 2440def DOTP_U_W : DOTP_U_W_ENC, DOTP_U_W_DESC, Requires<[HasMSA]>; 2441def DOTP_U_D : DOTP_U_D_ENC, DOTP_U_D_DESC, Requires<[HasMSA]>; 2442 2443def DPADD_S_H : DPADD_S_H_ENC, DPADD_S_H_DESC, Requires<[HasMSA]>; 2444def DPADD_S_W : DPADD_S_W_ENC, DPADD_S_W_DESC, Requires<[HasMSA]>; 2445def DPADD_S_D : DPADD_S_D_ENC, DPADD_S_D_DESC, Requires<[HasMSA]>; 2446 2447def DPADD_U_H : DPADD_U_H_ENC, DPADD_U_H_DESC, Requires<[HasMSA]>; 2448def DPADD_U_W : DPADD_U_W_ENC, DPADD_U_W_DESC, Requires<[HasMSA]>; 2449def DPADD_U_D : DPADD_U_D_ENC, DPADD_U_D_DESC, Requires<[HasMSA]>; 2450 2451def DPSUB_S_H : DPSUB_S_H_ENC, DPSUB_S_H_DESC, Requires<[HasMSA]>; 2452def DPSUB_S_W : DPSUB_S_W_ENC, DPSUB_S_W_DESC, Requires<[HasMSA]>; 2453def DPSUB_S_D : DPSUB_S_D_ENC, DPSUB_S_D_DESC, Requires<[HasMSA]>; 2454 2455def DPSUB_U_H : DPSUB_U_H_ENC, DPSUB_U_H_DESC, Requires<[HasMSA]>; 2456def DPSUB_U_W : DPSUB_U_W_ENC, DPSUB_U_W_DESC, Requires<[HasMSA]>; 2457def DPSUB_U_D : DPSUB_U_D_ENC, DPSUB_U_D_DESC, Requires<[HasMSA]>; 2458 2459def FADD_W : FADD_W_ENC, FADD_W_DESC, Requires<[HasMSA]>; 2460def FADD_D : FADD_D_ENC, FADD_D_DESC, Requires<[HasMSA]>; 2461 2462def FCAF_W : FCAF_W_ENC, FCAF_W_DESC, Requires<[HasMSA]>; 2463def FCAF_D : FCAF_D_ENC, FCAF_D_DESC, Requires<[HasMSA]>; 2464 2465def FCEQ_W : FCEQ_W_ENC, FCEQ_W_DESC, Requires<[HasMSA]>; 2466def FCEQ_D : FCEQ_D_ENC, FCEQ_D_DESC, Requires<[HasMSA]>; 2467 2468def FCLE_W : FCLE_W_ENC, FCLE_W_DESC, Requires<[HasMSA]>; 2469def FCLE_D : FCLE_D_ENC, FCLE_D_DESC, Requires<[HasMSA]>; 2470 2471def FCLT_W : FCLT_W_ENC, FCLT_W_DESC, Requires<[HasMSA]>; 2472def FCLT_D : FCLT_D_ENC, FCLT_D_DESC, Requires<[HasMSA]>; 2473 2474def FCLASS_W : FCLASS_W_ENC, FCLASS_W_DESC, Requires<[HasMSA]>; 2475def FCLASS_D : FCLASS_D_ENC, FCLASS_D_DESC, Requires<[HasMSA]>; 2476 2477def FCNE_W : FCNE_W_ENC, FCNE_W_DESC, Requires<[HasMSA]>; 2478def FCNE_D : FCNE_D_ENC, FCNE_D_DESC, Requires<[HasMSA]>; 2479 2480def FCOR_W : FCOR_W_ENC, FCOR_W_DESC, Requires<[HasMSA]>; 2481def FCOR_D : FCOR_D_ENC, FCOR_D_DESC, Requires<[HasMSA]>; 2482 2483def FCUEQ_W : FCUEQ_W_ENC, FCUEQ_W_DESC, Requires<[HasMSA]>; 2484def FCUEQ_D : FCUEQ_D_ENC, FCUEQ_D_DESC, Requires<[HasMSA]>; 2485 2486def FCULE_W : FCULE_W_ENC, FCULE_W_DESC, Requires<[HasMSA]>; 2487def FCULE_D : FCULE_D_ENC, FCULE_D_DESC, Requires<[HasMSA]>; 2488 2489def FCULT_W : FCULT_W_ENC, FCULT_W_DESC, Requires<[HasMSA]>; 2490def FCULT_D : FCULT_D_ENC, FCULT_D_DESC, Requires<[HasMSA]>; 2491 2492def FCUN_W : FCUN_W_ENC, FCUN_W_DESC, Requires<[HasMSA]>; 2493def FCUN_D : FCUN_D_ENC, FCUN_D_DESC, Requires<[HasMSA]>; 2494 2495def FCUNE_W : FCUNE_W_ENC, FCUNE_W_DESC, Requires<[HasMSA]>; 2496def FCUNE_D : FCUNE_D_ENC, FCUNE_D_DESC, Requires<[HasMSA]>; 2497 2498def FDIV_W : FDIV_W_ENC, FDIV_W_DESC, Requires<[HasMSA]>; 2499def FDIV_D : FDIV_D_ENC, FDIV_D_DESC, Requires<[HasMSA]>; 2500 2501def FEXDO_H : FEXDO_H_ENC, FEXDO_H_DESC, Requires<[HasMSA]>; 2502def FEXDO_W : FEXDO_W_ENC, FEXDO_W_DESC, Requires<[HasMSA]>; 2503 2504def FEXP2_W : FEXP2_W_ENC, FEXP2_W_DESC, Requires<[HasMSA]>; 2505def FEXP2_D : FEXP2_D_ENC, FEXP2_D_DESC, Requires<[HasMSA]>; 2506 2507def FEXUPL_W : FEXUPL_W_ENC, FEXUPL_W_DESC, Requires<[HasMSA]>; 2508def FEXUPL_D : FEXUPL_D_ENC, FEXUPL_D_DESC, Requires<[HasMSA]>; 2509 2510def FEXUPR_W : FEXUPR_W_ENC, FEXUPR_W_DESC, Requires<[HasMSA]>; 2511def FEXUPR_D : FEXUPR_D_ENC, FEXUPR_D_DESC, Requires<[HasMSA]>; 2512 2513def FFINT_S_W : FFINT_S_W_ENC, FFINT_S_W_DESC, Requires<[HasMSA]>; 2514def FFINT_S_D : FFINT_S_D_ENC, FFINT_S_D_DESC, Requires<[HasMSA]>; 2515 2516def FFINT_U_W : FFINT_U_W_ENC, FFINT_U_W_DESC, Requires<[HasMSA]>; 2517def FFINT_U_D : FFINT_U_D_ENC, FFINT_U_D_DESC, Requires<[HasMSA]>; 2518 2519def FFQL_W : FFQL_W_ENC, FFQL_W_DESC, Requires<[HasMSA]>; 2520def FFQL_D : FFQL_D_ENC, FFQL_D_DESC, Requires<[HasMSA]>; 2521 2522def FFQR_W : FFQR_W_ENC, FFQR_W_DESC, Requires<[HasMSA]>; 2523def FFQR_D : FFQR_D_ENC, FFQR_D_DESC, Requires<[HasMSA]>; 2524 2525def FILL_B : FILL_B_ENC, FILL_B_DESC, Requires<[HasMSA]>; 2526def FILL_H : FILL_H_ENC, FILL_H_DESC, Requires<[HasMSA]>; 2527def FILL_W : FILL_W_ENC, FILL_W_DESC, Requires<[HasMSA]>; 2528 2529def FLOG2_W : FLOG2_W_ENC, FLOG2_W_DESC, Requires<[HasMSA]>; 2530def FLOG2_D : FLOG2_D_ENC, FLOG2_D_DESC, Requires<[HasMSA]>; 2531 2532def FMADD_W : FMADD_W_ENC, FMADD_W_DESC, Requires<[HasMSA]>; 2533def FMADD_D : FMADD_D_ENC, FMADD_D_DESC, Requires<[HasMSA]>; 2534 2535def FMAX_W : FMAX_W_ENC, FMAX_W_DESC, Requires<[HasMSA]>; 2536def FMAX_D : FMAX_D_ENC, FMAX_D_DESC, Requires<[HasMSA]>; 2537 2538def FMAX_A_W : FMAX_A_W_ENC, FMAX_A_W_DESC, Requires<[HasMSA]>; 2539def FMAX_A_D : FMAX_A_D_ENC, FMAX_A_D_DESC, Requires<[HasMSA]>; 2540 2541def FMIN_W : FMIN_W_ENC, FMIN_W_DESC, Requires<[HasMSA]>; 2542def FMIN_D : FMIN_D_ENC, FMIN_D_DESC, Requires<[HasMSA]>; 2543 2544def FMIN_A_W : FMIN_A_W_ENC, FMIN_A_W_DESC, Requires<[HasMSA]>; 2545def FMIN_A_D : FMIN_A_D_ENC, FMIN_A_D_DESC, Requires<[HasMSA]>; 2546 2547def FMSUB_W : FMSUB_W_ENC, FMSUB_W_DESC, Requires<[HasMSA]>; 2548def FMSUB_D : FMSUB_D_ENC, FMSUB_D_DESC, Requires<[HasMSA]>; 2549 2550def FMUL_W : FMUL_W_ENC, FMUL_W_DESC, Requires<[HasMSA]>; 2551def FMUL_D : FMUL_D_ENC, FMUL_D_DESC, Requires<[HasMSA]>; 2552 2553def FRINT_W : FRINT_W_ENC, FRINT_W_DESC, Requires<[HasMSA]>; 2554def FRINT_D : FRINT_D_ENC, FRINT_D_DESC, Requires<[HasMSA]>; 2555 2556def FRCP_W : FRCP_W_ENC, FRCP_W_DESC, Requires<[HasMSA]>; 2557def FRCP_D : FRCP_D_ENC, FRCP_D_DESC, Requires<[HasMSA]>; 2558 2559def FRSQRT_W : FRSQRT_W_ENC, FRSQRT_W_DESC, Requires<[HasMSA]>; 2560def FRSQRT_D : FRSQRT_D_ENC, FRSQRT_D_DESC, Requires<[HasMSA]>; 2561 2562def FSAF_W : FSAF_W_ENC, FSAF_W_DESC, Requires<[HasMSA]>; 2563def FSAF_D : FSAF_D_ENC, FSAF_D_DESC, Requires<[HasMSA]>; 2564 2565def FSEQ_W : FSEQ_W_ENC, FSEQ_W_DESC, Requires<[HasMSA]>; 2566def FSEQ_D : FSEQ_D_ENC, FSEQ_D_DESC, Requires<[HasMSA]>; 2567 2568def FSLE_W : FSLE_W_ENC, FSLE_W_DESC, Requires<[HasMSA]>; 2569def FSLE_D : FSLE_D_ENC, FSLE_D_DESC, Requires<[HasMSA]>; 2570 2571def FSLT_W : FSLT_W_ENC, FSLT_W_DESC, Requires<[HasMSA]>; 2572def FSLT_D : FSLT_D_ENC, FSLT_D_DESC, Requires<[HasMSA]>; 2573 2574def FSNE_W : FSNE_W_ENC, FSNE_W_DESC, Requires<[HasMSA]>; 2575def FSNE_D : FSNE_D_ENC, FSNE_D_DESC, Requires<[HasMSA]>; 2576 2577def FSOR_W : FSOR_W_ENC, FSOR_W_DESC, Requires<[HasMSA]>; 2578def FSOR_D : FSOR_D_ENC, FSOR_D_DESC, Requires<[HasMSA]>; 2579 2580def FSQRT_W : FSQRT_W_ENC, FSQRT_W_DESC, Requires<[HasMSA]>; 2581def FSQRT_D : FSQRT_D_ENC, FSQRT_D_DESC, Requires<[HasMSA]>; 2582 2583def FSUB_W : FSUB_W_ENC, FSUB_W_DESC, Requires<[HasMSA]>; 2584def FSUB_D : FSUB_D_ENC, FSUB_D_DESC, Requires<[HasMSA]>; 2585 2586def FSUEQ_W : FSUEQ_W_ENC, FSUEQ_W_DESC, Requires<[HasMSA]>; 2587def FSUEQ_D : FSUEQ_D_ENC, FSUEQ_D_DESC, Requires<[HasMSA]>; 2588 2589def FSULE_W : FSULE_W_ENC, FSULE_W_DESC, Requires<[HasMSA]>; 2590def FSULE_D : FSULE_D_ENC, FSULE_D_DESC, Requires<[HasMSA]>; 2591 2592def FSULT_W : FSULT_W_ENC, FSULT_W_DESC, Requires<[HasMSA]>; 2593def FSULT_D : FSULT_D_ENC, FSULT_D_DESC, Requires<[HasMSA]>; 2594 2595def FSUN_W : FSUN_W_ENC, FSUN_W_DESC, Requires<[HasMSA]>; 2596def FSUN_D : FSUN_D_ENC, FSUN_D_DESC, Requires<[HasMSA]>; 2597 2598def FSUNE_W : FSUNE_W_ENC, FSUNE_W_DESC, Requires<[HasMSA]>; 2599def FSUNE_D : FSUNE_D_ENC, FSUNE_D_DESC, Requires<[HasMSA]>; 2600 2601def FTRUNC_S_W : FTRUNC_S_W_ENC, FTRUNC_S_W_DESC, Requires<[HasMSA]>; 2602def FTRUNC_S_D : FTRUNC_S_D_ENC, FTRUNC_S_D_DESC, Requires<[HasMSA]>; 2603 2604def FTRUNC_U_W : FTRUNC_U_W_ENC, FTRUNC_U_W_DESC, Requires<[HasMSA]>; 2605def FTRUNC_U_D : FTRUNC_U_D_ENC, FTRUNC_U_D_DESC, Requires<[HasMSA]>; 2606 2607def FTINT_S_W : FTINT_S_W_ENC, FTINT_S_W_DESC, Requires<[HasMSA]>; 2608def FTINT_S_D : FTINT_S_D_ENC, FTINT_S_D_DESC, Requires<[HasMSA]>; 2609 2610def FTINT_U_W : FTINT_U_W_ENC, FTINT_U_W_DESC, Requires<[HasMSA]>; 2611def FTINT_U_D : FTINT_U_D_ENC, FTINT_U_D_DESC, Requires<[HasMSA]>; 2612 2613def FTQ_H : FTQ_H_ENC, FTQ_H_DESC, Requires<[HasMSA]>; 2614def FTQ_W : FTQ_W_ENC, FTQ_W_DESC, Requires<[HasMSA]>; 2615 2616def HADD_S_H : HADD_S_H_ENC, HADD_S_H_DESC, Requires<[HasMSA]>; 2617def HADD_S_W : HADD_S_W_ENC, HADD_S_W_DESC, Requires<[HasMSA]>; 2618def HADD_S_D : HADD_S_D_ENC, HADD_S_D_DESC, Requires<[HasMSA]>; 2619 2620def HADD_U_H : HADD_U_H_ENC, HADD_U_H_DESC, Requires<[HasMSA]>; 2621def HADD_U_W : HADD_U_W_ENC, HADD_U_W_DESC, Requires<[HasMSA]>; 2622def HADD_U_D : HADD_U_D_ENC, HADD_U_D_DESC, Requires<[HasMSA]>; 2623 2624def HSUB_S_H : HSUB_S_H_ENC, HSUB_S_H_DESC, Requires<[HasMSA]>; 2625def HSUB_S_W : HSUB_S_W_ENC, HSUB_S_W_DESC, Requires<[HasMSA]>; 2626def HSUB_S_D : HSUB_S_D_ENC, HSUB_S_D_DESC, Requires<[HasMSA]>; 2627 2628def HSUB_U_H : HSUB_U_H_ENC, HSUB_U_H_DESC, Requires<[HasMSA]>; 2629def HSUB_U_W : HSUB_U_W_ENC, HSUB_U_W_DESC, Requires<[HasMSA]>; 2630def HSUB_U_D : HSUB_U_D_ENC, HSUB_U_D_DESC, Requires<[HasMSA]>; 2631 2632def ILVEV_B : ILVEV_B_ENC, ILVEV_B_DESC, Requires<[HasMSA]>; 2633def ILVEV_H : ILVEV_H_ENC, ILVEV_H_DESC, Requires<[HasMSA]>; 2634def ILVEV_W : ILVEV_W_ENC, ILVEV_W_DESC, Requires<[HasMSA]>; 2635def ILVEV_D : ILVEV_D_ENC, ILVEV_D_DESC, Requires<[HasMSA]>; 2636 2637def ILVL_B : ILVL_B_ENC, ILVL_B_DESC, Requires<[HasMSA]>; 2638def ILVL_H : ILVL_H_ENC, ILVL_H_DESC, Requires<[HasMSA]>; 2639def ILVL_W : ILVL_W_ENC, ILVL_W_DESC, Requires<[HasMSA]>; 2640def ILVL_D : ILVL_D_ENC, ILVL_D_DESC, Requires<[HasMSA]>; 2641 2642def ILVOD_B : ILVOD_B_ENC, ILVOD_B_DESC, Requires<[HasMSA]>; 2643def ILVOD_H : ILVOD_H_ENC, ILVOD_H_DESC, Requires<[HasMSA]>; 2644def ILVOD_W : ILVOD_W_ENC, ILVOD_W_DESC, Requires<[HasMSA]>; 2645def ILVOD_D : ILVOD_D_ENC, ILVOD_D_DESC, Requires<[HasMSA]>; 2646 2647def ILVR_B : ILVR_B_ENC, ILVR_B_DESC, Requires<[HasMSA]>; 2648def ILVR_H : ILVR_H_ENC, ILVR_H_DESC, Requires<[HasMSA]>; 2649def ILVR_W : ILVR_W_ENC, ILVR_W_DESC, Requires<[HasMSA]>; 2650def ILVR_D : ILVR_D_ENC, ILVR_D_DESC, Requires<[HasMSA]>; 2651 2652def INSERT_B : INSERT_B_ENC, INSERT_B_DESC, Requires<[HasMSA]>; 2653def INSERT_H : INSERT_H_ENC, INSERT_H_DESC, Requires<[HasMSA]>; 2654def INSERT_W : INSERT_W_ENC, INSERT_W_DESC, Requires<[HasMSA]>; 2655 2656def INSVE_B : INSVE_B_ENC, INSVE_B_DESC, Requires<[HasMSA]>; 2657def INSVE_H : INSVE_H_ENC, INSVE_H_DESC, Requires<[HasMSA]>; 2658def INSVE_W : INSVE_W_ENC, INSVE_W_DESC, Requires<[HasMSA]>; 2659def INSVE_D : INSVE_D_ENC, INSVE_D_DESC, Requires<[HasMSA]>; 2660 2661def LD_B: LD_B_ENC, LD_B_DESC, Requires<[HasMSA]>; 2662def LD_H: LD_H_ENC, LD_H_DESC, Requires<[HasMSA]>; 2663def LD_W: LD_W_ENC, LD_W_DESC, Requires<[HasMSA]>; 2664def LD_D: LD_D_ENC, LD_D_DESC, Requires<[HasMSA]>; 2665 2666def LDI_B : LDI_B_ENC, LDI_B_DESC, Requires<[HasMSA]>; 2667def LDI_H : LDI_H_ENC, LDI_H_DESC, Requires<[HasMSA]>; 2668def LDI_W : LDI_W_ENC, LDI_W_DESC, Requires<[HasMSA]>; 2669 2670def LDX_B: LDX_B_ENC, LDX_B_DESC, Requires<[HasMSA]>; 2671def LDX_H: LDX_H_ENC, LDX_H_DESC, Requires<[HasMSA]>; 2672def LDX_W: LDX_W_ENC, LDX_W_DESC, Requires<[HasMSA]>; 2673def LDX_D: LDX_D_ENC, LDX_D_DESC, Requires<[HasMSA]>; 2674 2675def MADD_Q_H : MADD_Q_H_ENC, MADD_Q_H_DESC, Requires<[HasMSA]>; 2676def MADD_Q_W : MADD_Q_W_ENC, MADD_Q_W_DESC, Requires<[HasMSA]>; 2677 2678def MADDR_Q_H : MADDR_Q_H_ENC, MADDR_Q_H_DESC, Requires<[HasMSA]>; 2679def MADDR_Q_W : MADDR_Q_W_ENC, MADDR_Q_W_DESC, Requires<[HasMSA]>; 2680 2681def MADDV_B : MADDV_B_ENC, MADDV_B_DESC, Requires<[HasMSA]>; 2682def MADDV_H : MADDV_H_ENC, MADDV_H_DESC, Requires<[HasMSA]>; 2683def MADDV_W : MADDV_W_ENC, MADDV_W_DESC, Requires<[HasMSA]>; 2684def MADDV_D : MADDV_D_ENC, MADDV_D_DESC, Requires<[HasMSA]>; 2685 2686def MAX_A_B : MAX_A_B_ENC, MAX_A_B_DESC, Requires<[HasMSA]>; 2687def MAX_A_H : MAX_A_H_ENC, MAX_A_H_DESC, Requires<[HasMSA]>; 2688def MAX_A_W : MAX_A_W_ENC, MAX_A_W_DESC, Requires<[HasMSA]>; 2689def MAX_A_D : MAX_A_D_ENC, MAX_A_D_DESC, Requires<[HasMSA]>; 2690 2691def MAX_S_B : MAX_S_B_ENC, MAX_S_B_DESC, Requires<[HasMSA]>; 2692def MAX_S_H : MAX_S_H_ENC, MAX_S_H_DESC, Requires<[HasMSA]>; 2693def MAX_S_W : MAX_S_W_ENC, MAX_S_W_DESC, Requires<[HasMSA]>; 2694def MAX_S_D : MAX_S_D_ENC, MAX_S_D_DESC, Requires<[HasMSA]>; 2695 2696def MAX_U_B : MAX_U_B_ENC, MAX_U_B_DESC, Requires<[HasMSA]>; 2697def MAX_U_H : MAX_U_H_ENC, MAX_U_H_DESC, Requires<[HasMSA]>; 2698def MAX_U_W : MAX_U_W_ENC, MAX_U_W_DESC, Requires<[HasMSA]>; 2699def MAX_U_D : MAX_U_D_ENC, MAX_U_D_DESC, Requires<[HasMSA]>; 2700 2701def MAXI_S_B : MAXI_S_B_ENC, MAXI_S_B_DESC, Requires<[HasMSA]>; 2702def MAXI_S_H : MAXI_S_H_ENC, MAXI_S_H_DESC, Requires<[HasMSA]>; 2703def MAXI_S_W : MAXI_S_W_ENC, MAXI_S_W_DESC, Requires<[HasMSA]>; 2704def MAXI_S_D : MAXI_S_D_ENC, MAXI_S_D_DESC, Requires<[HasMSA]>; 2705 2706def MAXI_U_B : MAXI_U_B_ENC, MAXI_U_B_DESC, Requires<[HasMSA]>; 2707def MAXI_U_H : MAXI_U_H_ENC, MAXI_U_H_DESC, Requires<[HasMSA]>; 2708def MAXI_U_W : MAXI_U_W_ENC, MAXI_U_W_DESC, Requires<[HasMSA]>; 2709def MAXI_U_D : MAXI_U_D_ENC, MAXI_U_D_DESC, Requires<[HasMSA]>; 2710 2711def MIN_A_B : MIN_A_B_ENC, MIN_A_B_DESC, Requires<[HasMSA]>; 2712def MIN_A_H : MIN_A_H_ENC, MIN_A_H_DESC, Requires<[HasMSA]>; 2713def MIN_A_W : MIN_A_W_ENC, MIN_A_W_DESC, Requires<[HasMSA]>; 2714def MIN_A_D : MIN_A_D_ENC, MIN_A_D_DESC, Requires<[HasMSA]>; 2715 2716def MIN_S_B : MIN_S_B_ENC, MIN_S_B_DESC, Requires<[HasMSA]>; 2717def MIN_S_H : MIN_S_H_ENC, MIN_S_H_DESC, Requires<[HasMSA]>; 2718def MIN_S_W : MIN_S_W_ENC, MIN_S_W_DESC, Requires<[HasMSA]>; 2719def MIN_S_D : MIN_S_D_ENC, MIN_S_D_DESC, Requires<[HasMSA]>; 2720 2721def MIN_U_B : MIN_U_B_ENC, MIN_U_B_DESC, Requires<[HasMSA]>; 2722def MIN_U_H : MIN_U_H_ENC, MIN_U_H_DESC, Requires<[HasMSA]>; 2723def MIN_U_W : MIN_U_W_ENC, MIN_U_W_DESC, Requires<[HasMSA]>; 2724def MIN_U_D : MIN_U_D_ENC, MIN_U_D_DESC, Requires<[HasMSA]>; 2725 2726def MINI_S_B : MINI_S_B_ENC, MINI_S_B_DESC, Requires<[HasMSA]>; 2727def MINI_S_H : MINI_S_H_ENC, MINI_S_H_DESC, Requires<[HasMSA]>; 2728def MINI_S_W : MINI_S_W_ENC, MINI_S_W_DESC, Requires<[HasMSA]>; 2729def MINI_S_D : MINI_S_D_ENC, MINI_S_D_DESC, Requires<[HasMSA]>; 2730 2731def MINI_U_B : MINI_U_B_ENC, MINI_U_B_DESC, Requires<[HasMSA]>; 2732def MINI_U_H : MINI_U_H_ENC, MINI_U_H_DESC, Requires<[HasMSA]>; 2733def MINI_U_W : MINI_U_W_ENC, MINI_U_W_DESC, Requires<[HasMSA]>; 2734def MINI_U_D : MINI_U_D_ENC, MINI_U_D_DESC, Requires<[HasMSA]>; 2735 2736def MOD_S_B : MOD_S_B_ENC, MOD_S_B_DESC, Requires<[HasMSA]>; 2737def MOD_S_H : MOD_S_H_ENC, MOD_S_H_DESC, Requires<[HasMSA]>; 2738def MOD_S_W : MOD_S_W_ENC, MOD_S_W_DESC, Requires<[HasMSA]>; 2739def MOD_S_D : MOD_S_D_ENC, MOD_S_D_DESC, Requires<[HasMSA]>; 2740 2741def MOD_U_B : MOD_U_B_ENC, MOD_U_B_DESC, Requires<[HasMSA]>; 2742def MOD_U_H : MOD_U_H_ENC, MOD_U_H_DESC, Requires<[HasMSA]>; 2743def MOD_U_W : MOD_U_W_ENC, MOD_U_W_DESC, Requires<[HasMSA]>; 2744def MOD_U_D : MOD_U_D_ENC, MOD_U_D_DESC, Requires<[HasMSA]>; 2745 2746def MOVE_V : MOVE_V_ENC, MOVE_V_DESC, Requires<[HasMSA]>; 2747 2748def MSUB_Q_H : MSUB_Q_H_ENC, MSUB_Q_H_DESC, Requires<[HasMSA]>; 2749def MSUB_Q_W : MSUB_Q_W_ENC, MSUB_Q_W_DESC, Requires<[HasMSA]>; 2750 2751def MSUBR_Q_H : MSUBR_Q_H_ENC, MSUBR_Q_H_DESC, Requires<[HasMSA]>; 2752def MSUBR_Q_W : MSUBR_Q_W_ENC, MSUBR_Q_W_DESC, Requires<[HasMSA]>; 2753 2754def MSUBV_B : MSUBV_B_ENC, MSUBV_B_DESC, Requires<[HasMSA]>; 2755def MSUBV_H : MSUBV_H_ENC, MSUBV_H_DESC, Requires<[HasMSA]>; 2756def MSUBV_W : MSUBV_W_ENC, MSUBV_W_DESC, Requires<[HasMSA]>; 2757def MSUBV_D : MSUBV_D_ENC, MSUBV_D_DESC, Requires<[HasMSA]>; 2758 2759def MUL_Q_H : MUL_Q_H_ENC, MUL_Q_H_DESC, Requires<[HasMSA]>; 2760def MUL_Q_W : MUL_Q_W_ENC, MUL_Q_W_DESC, Requires<[HasMSA]>; 2761 2762def MULR_Q_H : MULR_Q_H_ENC, MULR_Q_H_DESC, Requires<[HasMSA]>; 2763def MULR_Q_W : MULR_Q_W_ENC, MULR_Q_W_DESC, Requires<[HasMSA]>; 2764 2765def MULV_B : MULV_B_ENC, MULV_B_DESC, Requires<[HasMSA]>; 2766def MULV_H : MULV_H_ENC, MULV_H_DESC, Requires<[HasMSA]>; 2767def MULV_W : MULV_W_ENC, MULV_W_DESC, Requires<[HasMSA]>; 2768def MULV_D : MULV_D_ENC, MULV_D_DESC, Requires<[HasMSA]>; 2769 2770def NLOC_B : NLOC_B_ENC, NLOC_B_DESC, Requires<[HasMSA]>; 2771def NLOC_H : NLOC_H_ENC, NLOC_H_DESC, Requires<[HasMSA]>; 2772def NLOC_W : NLOC_W_ENC, NLOC_W_DESC, Requires<[HasMSA]>; 2773def NLOC_D : NLOC_D_ENC, NLOC_D_DESC, Requires<[HasMSA]>; 2774 2775def NLZC_B : NLZC_B_ENC, NLZC_B_DESC, Requires<[HasMSA]>; 2776def NLZC_H : NLZC_H_ENC, NLZC_H_DESC, Requires<[HasMSA]>; 2777def NLZC_W : NLZC_W_ENC, NLZC_W_DESC, Requires<[HasMSA]>; 2778def NLZC_D : NLZC_D_ENC, NLZC_D_DESC, Requires<[HasMSA]>; 2779 2780def NOR_V : NOR_V_ENC, NOR_V_DESC, Requires<[HasMSA]>; 2781 2782def NORI_B : NORI_B_ENC, NORI_B_DESC, Requires<[HasMSA]>; 2783 2784def OR_V : OR_V_ENC, OR_V_DESC, Requires<[HasMSA]>; 2785 2786def ORI_B : ORI_B_ENC, ORI_B_DESC, Requires<[HasMSA]>; 2787 2788def PCKEV_B : PCKEV_B_ENC, PCKEV_B_DESC, Requires<[HasMSA]>; 2789def PCKEV_H : PCKEV_H_ENC, PCKEV_H_DESC, Requires<[HasMSA]>; 2790def PCKEV_W : PCKEV_W_ENC, PCKEV_W_DESC, Requires<[HasMSA]>; 2791def PCKEV_D : PCKEV_D_ENC, PCKEV_D_DESC, Requires<[HasMSA]>; 2792 2793def PCKOD_B : PCKOD_B_ENC, PCKOD_B_DESC, Requires<[HasMSA]>; 2794def PCKOD_H : PCKOD_H_ENC, PCKOD_H_DESC, Requires<[HasMSA]>; 2795def PCKOD_W : PCKOD_W_ENC, PCKOD_W_DESC, Requires<[HasMSA]>; 2796def PCKOD_D : PCKOD_D_ENC, PCKOD_D_DESC, Requires<[HasMSA]>; 2797 2798def PCNT_B : PCNT_B_ENC, PCNT_B_DESC, Requires<[HasMSA]>; 2799def PCNT_H : PCNT_H_ENC, PCNT_H_DESC, Requires<[HasMSA]>; 2800def PCNT_W : PCNT_W_ENC, PCNT_W_DESC, Requires<[HasMSA]>; 2801def PCNT_D : PCNT_D_ENC, PCNT_D_DESC, Requires<[HasMSA]>; 2802 2803def SAT_S_B : SAT_S_B_ENC, SAT_S_B_DESC, Requires<[HasMSA]>; 2804def SAT_S_H : SAT_S_H_ENC, SAT_S_H_DESC, Requires<[HasMSA]>; 2805def SAT_S_W : SAT_S_W_ENC, SAT_S_W_DESC, Requires<[HasMSA]>; 2806def SAT_S_D : SAT_S_D_ENC, SAT_S_D_DESC, Requires<[HasMSA]>; 2807 2808def SAT_U_B : SAT_U_B_ENC, SAT_U_B_DESC, Requires<[HasMSA]>; 2809def SAT_U_H : SAT_U_H_ENC, SAT_U_H_DESC, Requires<[HasMSA]>; 2810def SAT_U_W : SAT_U_W_ENC, SAT_U_W_DESC, Requires<[HasMSA]>; 2811def SAT_U_D : SAT_U_D_ENC, SAT_U_D_DESC, Requires<[HasMSA]>; 2812 2813def SHF_B : SHF_B_ENC, SHF_B_DESC, Requires<[HasMSA]>; 2814def SHF_H : SHF_H_ENC, SHF_H_DESC, Requires<[HasMSA]>; 2815def SHF_W : SHF_W_ENC, SHF_W_DESC, Requires<[HasMSA]>; 2816 2817def SLD_B : SLD_B_ENC, SLD_B_DESC, Requires<[HasMSA]>; 2818def SLD_H : SLD_H_ENC, SLD_H_DESC, Requires<[HasMSA]>; 2819def SLD_W : SLD_W_ENC, SLD_W_DESC, Requires<[HasMSA]>; 2820def SLD_D : SLD_D_ENC, SLD_D_DESC, Requires<[HasMSA]>; 2821 2822def SLDI_B : SLDI_B_ENC, SLDI_B_DESC, Requires<[HasMSA]>; 2823def SLDI_H : SLDI_H_ENC, SLDI_H_DESC, Requires<[HasMSA]>; 2824def SLDI_W : SLDI_W_ENC, SLDI_W_DESC, Requires<[HasMSA]>; 2825def SLDI_D : SLDI_D_ENC, SLDI_D_DESC, Requires<[HasMSA]>; 2826 2827def SLL_B : SLL_B_ENC, SLL_B_DESC, Requires<[HasMSA]>; 2828def SLL_H : SLL_H_ENC, SLL_H_DESC, Requires<[HasMSA]>; 2829def SLL_W : SLL_W_ENC, SLL_W_DESC, Requires<[HasMSA]>; 2830def SLL_D : SLL_D_ENC, SLL_D_DESC, Requires<[HasMSA]>; 2831 2832def SLLI_B : SLLI_B_ENC, SLLI_B_DESC, Requires<[HasMSA]>; 2833def SLLI_H : SLLI_H_ENC, SLLI_H_DESC, Requires<[HasMSA]>; 2834def SLLI_W : SLLI_W_ENC, SLLI_W_DESC, Requires<[HasMSA]>; 2835def SLLI_D : SLLI_D_ENC, SLLI_D_DESC, Requires<[HasMSA]>; 2836 2837def SPLAT_B : SPLAT_B_ENC, SPLAT_B_DESC, Requires<[HasMSA]>; 2838def SPLAT_H : SPLAT_H_ENC, SPLAT_H_DESC, Requires<[HasMSA]>; 2839def SPLAT_W : SPLAT_W_ENC, SPLAT_W_DESC, Requires<[HasMSA]>; 2840def SPLAT_D : SPLAT_D_ENC, SPLAT_D_DESC, Requires<[HasMSA]>; 2841 2842def SPLATI_B : SPLATI_B_ENC, SPLATI_B_DESC, Requires<[HasMSA]>; 2843def SPLATI_H : SPLATI_H_ENC, SPLATI_H_DESC, Requires<[HasMSA]>; 2844def SPLATI_W : SPLATI_W_ENC, SPLATI_W_DESC, Requires<[HasMSA]>; 2845def SPLATI_D : SPLATI_D_ENC, SPLATI_D_DESC, Requires<[HasMSA]>; 2846 2847def SRA_B : SRA_B_ENC, SRA_B_DESC, Requires<[HasMSA]>; 2848def SRA_H : SRA_H_ENC, SRA_H_DESC, Requires<[HasMSA]>; 2849def SRA_W : SRA_W_ENC, SRA_W_DESC, Requires<[HasMSA]>; 2850def SRA_D : SRA_D_ENC, SRA_D_DESC, Requires<[HasMSA]>; 2851 2852def SRAI_B : SRAI_B_ENC, SRAI_B_DESC, Requires<[HasMSA]>; 2853def SRAI_H : SRAI_H_ENC, SRAI_H_DESC, Requires<[HasMSA]>; 2854def SRAI_W : SRAI_W_ENC, SRAI_W_DESC, Requires<[HasMSA]>; 2855def SRAI_D : SRAI_D_ENC, SRAI_D_DESC, Requires<[HasMSA]>; 2856 2857def SRAR_B : SRAR_B_ENC, SRAR_B_DESC, Requires<[HasMSA]>; 2858def SRAR_H : SRAR_H_ENC, SRAR_H_DESC, Requires<[HasMSA]>; 2859def SRAR_W : SRAR_W_ENC, SRAR_W_DESC, Requires<[HasMSA]>; 2860def SRAR_D : SRAR_D_ENC, SRAR_D_DESC, Requires<[HasMSA]>; 2861 2862def SRARI_B : SRARI_B_ENC, SRARI_B_DESC, Requires<[HasMSA]>; 2863def SRARI_H : SRARI_H_ENC, SRARI_H_DESC, Requires<[HasMSA]>; 2864def SRARI_W : SRARI_W_ENC, SRARI_W_DESC, Requires<[HasMSA]>; 2865def SRARI_D : SRARI_D_ENC, SRARI_D_DESC, Requires<[HasMSA]>; 2866 2867def SRL_B : SRL_B_ENC, SRL_B_DESC, Requires<[HasMSA]>; 2868def SRL_H : SRL_H_ENC, SRL_H_DESC, Requires<[HasMSA]>; 2869def SRL_W : SRL_W_ENC, SRL_W_DESC, Requires<[HasMSA]>; 2870def SRL_D : SRL_D_ENC, SRL_D_DESC, Requires<[HasMSA]>; 2871 2872def SRLI_B : SRLI_B_ENC, SRLI_B_DESC, Requires<[HasMSA]>; 2873def SRLI_H : SRLI_H_ENC, SRLI_H_DESC, Requires<[HasMSA]>; 2874def SRLI_W : SRLI_W_ENC, SRLI_W_DESC, Requires<[HasMSA]>; 2875def SRLI_D : SRLI_D_ENC, SRLI_D_DESC, Requires<[HasMSA]>; 2876 2877def SRLR_B : SRLR_B_ENC, SRLR_B_DESC, Requires<[HasMSA]>; 2878def SRLR_H : SRLR_H_ENC, SRLR_H_DESC, Requires<[HasMSA]>; 2879def SRLR_W : SRLR_W_ENC, SRLR_W_DESC, Requires<[HasMSA]>; 2880def SRLR_D : SRLR_D_ENC, SRLR_D_DESC, Requires<[HasMSA]>; 2881 2882def SRLRI_B : SRLRI_B_ENC, SRLRI_B_DESC, Requires<[HasMSA]>; 2883def SRLRI_H : SRLRI_H_ENC, SRLRI_H_DESC, Requires<[HasMSA]>; 2884def SRLRI_W : SRLRI_W_ENC, SRLRI_W_DESC, Requires<[HasMSA]>; 2885def SRLRI_D : SRLRI_D_ENC, SRLRI_D_DESC, Requires<[HasMSA]>; 2886 2887def ST_B: ST_B_ENC, ST_B_DESC, Requires<[HasMSA]>; 2888def ST_H: ST_H_ENC, ST_H_DESC, Requires<[HasMSA]>; 2889def ST_W: ST_W_ENC, ST_W_DESC, Requires<[HasMSA]>; 2890def ST_D: ST_D_ENC, ST_D_DESC, Requires<[HasMSA]>; 2891 2892def STX_B: STX_B_ENC, STX_B_DESC, Requires<[HasMSA]>; 2893def STX_H: STX_H_ENC, STX_H_DESC, Requires<[HasMSA]>; 2894def STX_W: STX_W_ENC, STX_W_DESC, Requires<[HasMSA]>; 2895def STX_D: STX_D_ENC, STX_D_DESC, Requires<[HasMSA]>; 2896 2897def SUBS_S_B : SUBS_S_B_ENC, SUBS_S_B_DESC, Requires<[HasMSA]>; 2898def SUBS_S_H : SUBS_S_H_ENC, SUBS_S_H_DESC, Requires<[HasMSA]>; 2899def SUBS_S_W : SUBS_S_W_ENC, SUBS_S_W_DESC, Requires<[HasMSA]>; 2900def SUBS_S_D : SUBS_S_D_ENC, SUBS_S_D_DESC, Requires<[HasMSA]>; 2901 2902def SUBS_U_B : SUBS_U_B_ENC, SUBS_U_B_DESC, Requires<[HasMSA]>; 2903def SUBS_U_H : SUBS_U_H_ENC, SUBS_U_H_DESC, Requires<[HasMSA]>; 2904def SUBS_U_W : SUBS_U_W_ENC, SUBS_U_W_DESC, Requires<[HasMSA]>; 2905def SUBS_U_D : SUBS_U_D_ENC, SUBS_U_D_DESC, Requires<[HasMSA]>; 2906 2907def SUBSUS_U_B : SUBSUS_U_B_ENC, SUBSUS_U_B_DESC, Requires<[HasMSA]>; 2908def SUBSUS_U_H : SUBSUS_U_H_ENC, SUBSUS_U_H_DESC, Requires<[HasMSA]>; 2909def SUBSUS_U_W : SUBSUS_U_W_ENC, SUBSUS_U_W_DESC, Requires<[HasMSA]>; 2910def SUBSUS_U_D : SUBSUS_U_D_ENC, SUBSUS_U_D_DESC, Requires<[HasMSA]>; 2911 2912def SUBSUU_S_B : SUBSUU_S_B_ENC, SUBSUU_S_B_DESC, Requires<[HasMSA]>; 2913def SUBSUU_S_H : SUBSUU_S_H_ENC, SUBSUU_S_H_DESC, Requires<[HasMSA]>; 2914def SUBSUU_S_W : SUBSUU_S_W_ENC, SUBSUU_S_W_DESC, Requires<[HasMSA]>; 2915def SUBSUU_S_D : SUBSUU_S_D_ENC, SUBSUU_S_D_DESC, Requires<[HasMSA]>; 2916 2917def SUBV_B : SUBV_B_ENC, SUBV_B_DESC, Requires<[HasMSA]>; 2918def SUBV_H : SUBV_H_ENC, SUBV_H_DESC, Requires<[HasMSA]>; 2919def SUBV_W : SUBV_W_ENC, SUBV_W_DESC, Requires<[HasMSA]>; 2920def SUBV_D : SUBV_D_ENC, SUBV_D_DESC, Requires<[HasMSA]>; 2921 2922def SUBVI_B : SUBVI_B_ENC, SUBVI_B_DESC, Requires<[HasMSA]>; 2923def SUBVI_H : SUBVI_H_ENC, SUBVI_H_DESC, Requires<[HasMSA]>; 2924def SUBVI_W : SUBVI_W_ENC, SUBVI_W_DESC, Requires<[HasMSA]>; 2925def SUBVI_D : SUBVI_D_ENC, SUBVI_D_DESC, Requires<[HasMSA]>; 2926 2927def VSHF_B : VSHF_B_ENC, VSHF_B_DESC, Requires<[HasMSA]>; 2928def VSHF_H : VSHF_H_ENC, VSHF_H_DESC, Requires<[HasMSA]>; 2929def VSHF_W : VSHF_W_ENC, VSHF_W_DESC, Requires<[HasMSA]>; 2930def VSHF_D : VSHF_D_ENC, VSHF_D_DESC, Requires<[HasMSA]>; 2931 2932def XOR_V : XOR_V_ENC, XOR_V_DESC, Requires<[HasMSA]>; 2933 2934def XORI_B : XORI_B_ENC, XORI_B_DESC, Requires<[HasMSA]>; 2935 2936// Patterns. 2937class MSAPat<dag pattern, dag result, list<Predicate> pred = [HasMSA]> : 2938 Pat<pattern, result>, Requires<pred>; 2939 2940def : MSAPat<(v16i8 (load addr:$addr)), (LD_B addr:$addr)>; 2941def : MSAPat<(v8i16 (load addr:$addr)), (LD_H addr:$addr)>; 2942def : MSAPat<(v4i32 (load addr:$addr)), (LD_W addr:$addr)>; 2943def : MSAPat<(v2i64 (load addr:$addr)), (LD_D addr:$addr)>; 2944def : MSAPat<(v8f16 (load addr:$addr)), (LD_H addr:$addr)>; 2945def : MSAPat<(v4f32 (load addr:$addr)), (LD_W addr:$addr)>; 2946def : MSAPat<(v2f64 (load addr:$addr)), (LD_D addr:$addr)>; 2947 2948def : MSAPat<(v8f16 (load addrRegImm:$addr)), (LD_H addrRegImm:$addr)>; 2949def : MSAPat<(v4f32 (load addrRegImm:$addr)), (LD_W addrRegImm:$addr)>; 2950def : MSAPat<(v2f64 (load addrRegImm:$addr)), (LD_D addrRegImm:$addr)>; 2951 2952def : MSAPat<(store (v16i8 MSA128B:$ws), addr:$addr), 2953 (ST_B MSA128B:$ws, addr:$addr)>; 2954def : MSAPat<(store (v8i16 MSA128H:$ws), addr:$addr), 2955 (ST_H MSA128H:$ws, addr:$addr)>; 2956def : MSAPat<(store (v4i32 MSA128W:$ws), addr:$addr), 2957 (ST_W MSA128W:$ws, addr:$addr)>; 2958def : MSAPat<(store (v2i64 MSA128D:$ws), addr:$addr), 2959 (ST_D MSA128D:$ws, addr:$addr)>; 2960def : MSAPat<(store (v8f16 MSA128H:$ws), addr:$addr), 2961 (ST_H MSA128H:$ws, addr:$addr)>; 2962def : MSAPat<(store (v4f32 MSA128W:$ws), addr:$addr), 2963 (ST_W MSA128W:$ws, addr:$addr)>; 2964def : MSAPat<(store (v2f64 MSA128D:$ws), addr:$addr), 2965 (ST_D MSA128D:$ws, addr:$addr)>; 2966 2967def ST_FH : MSAPat<(store (v8f16 MSA128H:$ws), addrRegImm:$addr), 2968 (ST_H MSA128H:$ws, addrRegImm:$addr)>; 2969def ST_FW : MSAPat<(store (v4f32 MSA128W:$ws), addrRegImm:$addr), 2970 (ST_W MSA128W:$ws, addrRegImm:$addr)>; 2971def ST_FD : MSAPat<(store (v2f64 MSA128D:$ws), addrRegImm:$addr), 2972 (ST_D MSA128D:$ws, addrRegImm:$addr)>; 2973 2974class MSABitconvertPat<ValueType DstVT, ValueType SrcVT, 2975 RegisterClass DstRC, list<Predicate> preds = [HasMSA]> : 2976 MSAPat<(DstVT (bitconvert SrcVT:$src)), 2977 (COPY_TO_REGCLASS SrcVT:$src, DstRC), preds>; 2978 2979// These are endian-independant because the element size doesnt change 2980def : MSABitconvertPat<v8i16, v8f16, MSA128H>; 2981def : MSABitconvertPat<v4i32, v4f32, MSA128W>; 2982def : MSABitconvertPat<v2i64, v2f64, MSA128D>; 2983def : MSABitconvertPat<v8f16, v8i16, MSA128H>; 2984def : MSABitconvertPat<v4f32, v4i32, MSA128W>; 2985def : MSABitconvertPat<v2f64, v2i64, MSA128D>; 2986 2987// Little endian bitcasts are always no-ops 2988def : MSABitconvertPat<v16i8, v8i16, MSA128B, [HasMSA, IsLE]>; 2989def : MSABitconvertPat<v16i8, v4i32, MSA128B, [HasMSA, IsLE]>; 2990def : MSABitconvertPat<v16i8, v2i64, MSA128B, [HasMSA, IsLE]>; 2991def : MSABitconvertPat<v16i8, v8f16, MSA128B, [HasMSA, IsLE]>; 2992def : MSABitconvertPat<v16i8, v4f32, MSA128B, [HasMSA, IsLE]>; 2993def : MSABitconvertPat<v16i8, v2f64, MSA128B, [HasMSA, IsLE]>; 2994 2995def : MSABitconvertPat<v8i16, v16i8, MSA128H, [HasMSA, IsLE]>; 2996def : MSABitconvertPat<v8i16, v4i32, MSA128H, [HasMSA, IsLE]>; 2997def : MSABitconvertPat<v8i16, v2i64, MSA128H, [HasMSA, IsLE]>; 2998def : MSABitconvertPat<v8i16, v4f32, MSA128H, [HasMSA, IsLE]>; 2999def : MSABitconvertPat<v8i16, v2f64, MSA128H, [HasMSA, IsLE]>; 3000 3001def : MSABitconvertPat<v4i32, v16i8, MSA128W, [HasMSA, IsLE]>; 3002def : MSABitconvertPat<v4i32, v8i16, MSA128W, [HasMSA, IsLE]>; 3003def : MSABitconvertPat<v4i32, v2i64, MSA128W, [HasMSA, IsLE]>; 3004def : MSABitconvertPat<v4i32, v8f16, MSA128W, [HasMSA, IsLE]>; 3005def : MSABitconvertPat<v4i32, v2f64, MSA128W, [HasMSA, IsLE]>; 3006 3007def : MSABitconvertPat<v2i64, v16i8, MSA128D, [HasMSA, IsLE]>; 3008def : MSABitconvertPat<v2i64, v8i16, MSA128D, [HasMSA, IsLE]>; 3009def : MSABitconvertPat<v2i64, v4i32, MSA128D, [HasMSA, IsLE]>; 3010def : MSABitconvertPat<v2i64, v8f16, MSA128D, [HasMSA, IsLE]>; 3011def : MSABitconvertPat<v2i64, v4f32, MSA128D, [HasMSA, IsLE]>; 3012 3013def : MSABitconvertPat<v4f32, v16i8, MSA128W, [HasMSA, IsLE]>; 3014def : MSABitconvertPat<v4f32, v8i16, MSA128W, [HasMSA, IsLE]>; 3015def : MSABitconvertPat<v4f32, v2i64, MSA128W, [HasMSA, IsLE]>; 3016def : MSABitconvertPat<v4f32, v8f16, MSA128W, [HasMSA, IsLE]>; 3017def : MSABitconvertPat<v4f32, v2f64, MSA128W, [HasMSA, IsLE]>; 3018 3019def : MSABitconvertPat<v2f64, v16i8, MSA128D, [HasMSA, IsLE]>; 3020def : MSABitconvertPat<v2f64, v8i16, MSA128D, [HasMSA, IsLE]>; 3021def : MSABitconvertPat<v2f64, v4i32, MSA128D, [HasMSA, IsLE]>; 3022def : MSABitconvertPat<v2f64, v8f16, MSA128D, [HasMSA, IsLE]>; 3023def : MSABitconvertPat<v2f64, v4f32, MSA128D, [HasMSA, IsLE]>; 3024 3025// Big endian bitcasts expand to shuffle instructions. 3026// This is because bitcast is defined to be a store/load sequence and the 3027// vector store/load instructions are mixed-endian with respect to the vector 3028// as a whole (little endian with respect to element order, but big endian 3029// elements). 3030 3031class MSABitconvertReverseQuartersPat<ValueType DstVT, ValueType SrcVT, 3032 RegisterClass DstRC, MSAInst Insn, 3033 RegisterClass ViaRC> : 3034 MSAPat<(DstVT (bitconvert SrcVT:$src)), 3035 (COPY_TO_REGCLASS (Insn (COPY_TO_REGCLASS SrcVT:$src, ViaRC), 27), 3036 DstRC), 3037 [HasMSA, IsBE]>; 3038 3039class MSABitconvertReverseHalvesPat<ValueType DstVT, ValueType SrcVT, 3040 RegisterClass DstRC, MSAInst Insn, 3041 RegisterClass ViaRC> : 3042 MSAPat<(DstVT (bitconvert SrcVT:$src)), 3043 (COPY_TO_REGCLASS (Insn (COPY_TO_REGCLASS SrcVT:$src, ViaRC), 177), 3044 DstRC), 3045 [HasMSA, IsBE]>; 3046 3047class MSABitconvertReverseBInHPat<ValueType DstVT, ValueType SrcVT, 3048 RegisterClass DstRC> : 3049 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_B, MSA128B>; 3050 3051class MSABitconvertReverseBInWPat<ValueType DstVT, ValueType SrcVT, 3052 RegisterClass DstRC> : 3053 MSABitconvertReverseQuartersPat<DstVT, SrcVT, DstRC, SHF_B, MSA128B>; 3054 3055class MSABitconvertReverseBInDPat<ValueType DstVT, ValueType SrcVT, 3056 RegisterClass DstRC> : 3057 MSAPat<(DstVT (bitconvert SrcVT:$src)), 3058 (COPY_TO_REGCLASS 3059 (SHF_W 3060 (COPY_TO_REGCLASS 3061 (SHF_B (COPY_TO_REGCLASS SrcVT:$src, MSA128B), 27), 3062 MSA128W), 177), 3063 DstRC), 3064 [HasMSA, IsBE]>; 3065 3066class MSABitconvertReverseHInWPat<ValueType DstVT, ValueType SrcVT, 3067 RegisterClass DstRC> : 3068 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_H, MSA128H>; 3069 3070class MSABitconvertReverseHInDPat<ValueType DstVT, ValueType SrcVT, 3071 RegisterClass DstRC> : 3072 MSABitconvertReverseQuartersPat<DstVT, SrcVT, DstRC, SHF_H, MSA128H>; 3073 3074class MSABitconvertReverseWInDPat<ValueType DstVT, ValueType SrcVT, 3075 RegisterClass DstRC> : 3076 MSABitconvertReverseHalvesPat<DstVT, SrcVT, DstRC, SHF_W, MSA128W>; 3077 3078def : MSABitconvertReverseBInHPat<v8i16, v16i8, MSA128H>; 3079def : MSABitconvertReverseBInHPat<v8f16, v16i8, MSA128H>; 3080def : MSABitconvertReverseBInWPat<v4i32, v16i8, MSA128W>; 3081def : MSABitconvertReverseBInWPat<v4f32, v16i8, MSA128W>; 3082def : MSABitconvertReverseBInDPat<v2i64, v16i8, MSA128D>; 3083def : MSABitconvertReverseBInDPat<v2f64, v16i8, MSA128D>; 3084 3085def : MSABitconvertReverseBInHPat<v16i8, v8i16, MSA128B>; 3086def : MSABitconvertReverseHInWPat<v4i32, v8i16, MSA128W>; 3087def : MSABitconvertReverseHInWPat<v4f32, v8i16, MSA128W>; 3088def : MSABitconvertReverseHInDPat<v2i64, v8i16, MSA128D>; 3089def : MSABitconvertReverseHInDPat<v2f64, v8i16, MSA128D>; 3090 3091def : MSABitconvertReverseBInHPat<v16i8, v8f16, MSA128B>; 3092def : MSABitconvertReverseHInWPat<v4i32, v8f16, MSA128W>; 3093def : MSABitconvertReverseHInWPat<v4f32, v8f16, MSA128W>; 3094def : MSABitconvertReverseHInDPat<v2i64, v8f16, MSA128D>; 3095def : MSABitconvertReverseHInDPat<v2f64, v8f16, MSA128D>; 3096 3097def : MSABitconvertReverseBInWPat<v16i8, v4i32, MSA128B>; 3098def : MSABitconvertReverseHInWPat<v8i16, v4i32, MSA128H>; 3099def : MSABitconvertReverseHInWPat<v8f16, v4i32, MSA128H>; 3100def : MSABitconvertReverseWInDPat<v2i64, v4i32, MSA128D>; 3101def : MSABitconvertReverseWInDPat<v2f64, v4i32, MSA128D>; 3102 3103def : MSABitconvertReverseBInWPat<v16i8, v4f32, MSA128B>; 3104def : MSABitconvertReverseHInWPat<v8i16, v4f32, MSA128H>; 3105def : MSABitconvertReverseHInWPat<v8f16, v4f32, MSA128H>; 3106def : MSABitconvertReverseWInDPat<v2i64, v4f32, MSA128D>; 3107def : MSABitconvertReverseWInDPat<v2f64, v4f32, MSA128D>; 3108 3109def : MSABitconvertReverseBInDPat<v16i8, v2i64, MSA128B>; 3110def : MSABitconvertReverseHInDPat<v8i16, v2i64, MSA128H>; 3111def : MSABitconvertReverseHInDPat<v8f16, v2i64, MSA128H>; 3112def : MSABitconvertReverseWInDPat<v4i32, v2i64, MSA128W>; 3113def : MSABitconvertReverseWInDPat<v4f32, v2i64, MSA128W>; 3114 3115def : MSABitconvertReverseBInDPat<v16i8, v2f64, MSA128B>; 3116def : MSABitconvertReverseHInDPat<v8i16, v2f64, MSA128H>; 3117def : MSABitconvertReverseHInDPat<v8f16, v2f64, MSA128H>; 3118def : MSABitconvertReverseWInDPat<v4i32, v2f64, MSA128W>; 3119def : MSABitconvertReverseWInDPat<v4f32, v2f64, MSA128W>; 3120