MipsMSAInstrInfo.td revision d0f99639c16ddad697db30e75643ae4cc52c3e80
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 ANDI_B_ENC : MSA_I8_FMT<0b00, 0b000000>; 69 70class ASUB_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010001>; 71class ASUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010001>; 72class ASUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010001>; 73class ASUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010001>; 74 75class ASUB_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010001>; 76class ASUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010001>; 77class ASUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010001>; 78class ASUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010001>; 79 80class AVE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010000>; 81class AVE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010000>; 82class AVE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010000>; 83class AVE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010000>; 84 85class AVE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010000>; 86class AVE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010000>; 87class AVE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010000>; 88class AVE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010000>; 89 90class AVER_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010000>; 91class AVER_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010000>; 92class AVER_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010000>; 93class AVER_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010000>; 94 95class AVER_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010000>; 96class AVER_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010000>; 97class AVER_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010000>; 98class AVER_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010000>; 99 100class BCLR_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001101>; 101class BCLR_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001101>; 102class BCLR_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001101>; 103class BCLR_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001101>; 104 105class BCLRI_B_ENC : MSA_BIT_B_FMT<0b011, 0b001001>; 106class BCLRI_H_ENC : MSA_BIT_H_FMT<0b011, 0b001001>; 107class BCLRI_W_ENC : MSA_BIT_W_FMT<0b011, 0b001001>; 108class BCLRI_D_ENC : MSA_BIT_D_FMT<0b011, 0b001001>; 109 110class BINSL_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001101>; 111class BINSL_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001101>; 112class BINSL_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001101>; 113class BINSL_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001101>; 114 115class BINSLI_B_ENC : MSA_BIT_B_FMT<0b110, 0b001001>; 116class BINSLI_H_ENC : MSA_BIT_H_FMT<0b110, 0b001001>; 117class BINSLI_W_ENC : MSA_BIT_W_FMT<0b110, 0b001001>; 118class BINSLI_D_ENC : MSA_BIT_D_FMT<0b110, 0b001001>; 119 120class BINSR_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001101>; 121class BINSR_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001101>; 122class BINSR_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001101>; 123class BINSR_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001101>; 124 125class BINSRI_B_ENC : MSA_BIT_B_FMT<0b111, 0b001001>; 126class BINSRI_H_ENC : MSA_BIT_H_FMT<0b111, 0b001001>; 127class BINSRI_W_ENC : MSA_BIT_W_FMT<0b111, 0b001001>; 128class BINSRI_D_ENC : MSA_BIT_D_FMT<0b111, 0b001001>; 129 130class BMNZI_B_ENC : MSA_I8_FMT<0b00, 0b000001>; 131 132class BMZI_B_ENC : MSA_I8_FMT<0b01, 0b000001>; 133 134class BNEG_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001101>; 135class BNEG_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001101>; 136class BNEG_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001101>; 137class BNEG_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001101>; 138 139class BNEGI_B_ENC : MSA_BIT_B_FMT<0b101, 0b001001>; 140class BNEGI_H_ENC : MSA_BIT_H_FMT<0b101, 0b001001>; 141class BNEGI_W_ENC : MSA_BIT_W_FMT<0b101, 0b001001>; 142class BNEGI_D_ENC : MSA_BIT_D_FMT<0b101, 0b001001>; 143 144class BSELI_B_ENC : MSA_I8_FMT<0b10, 0b000001>; 145 146class BSET_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001101>; 147class BSET_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001101>; 148class BSET_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001101>; 149class BSET_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001101>; 150 151class BSETI_B_ENC : MSA_BIT_B_FMT<0b100, 0b001001>; 152class BSETI_H_ENC : MSA_BIT_H_FMT<0b100, 0b001001>; 153class BSETI_W_ENC : MSA_BIT_W_FMT<0b100, 0b001001>; 154class BSETI_D_ENC : MSA_BIT_D_FMT<0b100, 0b001001>; 155 156class CEQ_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001111>; 157class CEQ_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001111>; 158class CEQ_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001111>; 159class CEQ_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001111>; 160 161class CEQI_B_ENC : MSA_I5_FMT<0b000, 0b00, 0b000111>; 162class CEQI_H_ENC : MSA_I5_FMT<0b000, 0b01, 0b000111>; 163class CEQI_W_ENC : MSA_I5_FMT<0b000, 0b10, 0b000111>; 164class CEQI_D_ENC : MSA_I5_FMT<0b000, 0b11, 0b000111>; 165 166class CLE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001111>; 167class CLE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001111>; 168class CLE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001111>; 169class CLE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001111>; 170 171class CLE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001111>; 172class CLE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001111>; 173class CLE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001111>; 174class CLE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001111>; 175 176class CLEI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000111>; 177class CLEI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000111>; 178class CLEI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000111>; 179class CLEI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000111>; 180 181class CLEI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000111>; 182class CLEI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000111>; 183class CLEI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000111>; 184class CLEI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000111>; 185 186class CLT_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001111>; 187class CLT_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001111>; 188class CLT_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001111>; 189class CLT_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001111>; 190 191class CLT_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001111>; 192class CLT_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001111>; 193class CLT_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001111>; 194class CLT_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001111>; 195 196class CLTI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000111>; 197class CLTI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000111>; 198class CLTI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000111>; 199class CLTI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000111>; 200 201class CLTI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000111>; 202class CLTI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000111>; 203class CLTI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000111>; 204class CLTI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000111>; 205 206class COPY_S_B_ENC : MSA_ELM_B_FMT<0b0010, 0b011001>; 207class COPY_S_H_ENC : MSA_ELM_H_FMT<0b0010, 0b011001>; 208class COPY_S_W_ENC : MSA_ELM_W_FMT<0b0010, 0b011001>; 209 210class COPY_U_B_ENC : MSA_ELM_B_FMT<0b0011, 0b011001>; 211class COPY_U_H_ENC : MSA_ELM_H_FMT<0b0011, 0b011001>; 212class COPY_U_W_ENC : MSA_ELM_W_FMT<0b0011, 0b011001>; 213 214class DIV_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010010>; 215class DIV_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010010>; 216class DIV_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010010>; 217class DIV_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010010>; 218 219class DIV_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010010>; 220class DIV_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010010>; 221class DIV_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010010>; 222class DIV_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010010>; 223 224class DOTP_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010011>; 225class DOTP_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010011>; 226class DOTP_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010011>; 227class DOTP_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010011>; 228 229class DOTP_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010011>; 230class DOTP_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010011>; 231class DOTP_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010011>; 232class DOTP_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010011>; 233 234class DPADD_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010011>; 235class DPADD_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010011>; 236class DPADD_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010011>; 237 238class DPADD_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010011>; 239class DPADD_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010011>; 240class DPADD_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010011>; 241 242class DPSUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010011>; 243class DPSUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010011>; 244class DPSUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010011>; 245 246class DPSUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010011>; 247class DPSUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010011>; 248class DPSUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010011>; 249 250class FADD_W_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011011>; 251class FADD_D_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011011>; 252 253class FCEQ_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011010>; 254class FCEQ_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011010>; 255 256class FCGE_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011010>; 257class FCGE_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011010>; 258 259class FCGT_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011010>; 260class FCGT_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011010>; 261 262class FCLASS_W_ENC : MSA_2RF_FMT<0b110010000, 0b0, 0b011110>; 263class FCLASS_D_ENC : MSA_2RF_FMT<0b110010000, 0b1, 0b011110>; 264 265class FCLE_W_ENC : MSA_3RF_FMT<0b0110, 0b0, 0b011010>; 266class FCLE_D_ENC : MSA_3RF_FMT<0b0110, 0b1, 0b011010>; 267 268class FCLT_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011010>; 269class FCLT_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011010>; 270 271class FCNE_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011010>; 272class FCNE_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011010>; 273 274class FCUN_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011010>; 275class FCUN_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011010>; 276 277class FDIV_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011011>; 278class FDIV_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011011>; 279 280class FEXDO_H_ENC : MSA_3RF_FMT<0b1000, 0b0, 0b011011>; 281class FEXDO_W_ENC : MSA_3RF_FMT<0b1000, 0b1, 0b011011>; 282 283class FEXP2_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011011>; 284class FEXP2_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011011>; 285 286class FEXUPL_W_ENC : MSA_2RF_FMT<0b110011000, 0b0, 0b011110>; 287class FEXUPL_D_ENC : MSA_2RF_FMT<0b110011000, 0b1, 0b011110>; 288 289class FEXUPR_W_ENC : MSA_2RF_FMT<0b110011001, 0b0, 0b011110>; 290class FEXUPR_D_ENC : MSA_2RF_FMT<0b110011001, 0b1, 0b011110>; 291 292class FFINT_S_W_ENC : MSA_2RF_FMT<0b110011110, 0b0, 0b011110>; 293class FFINT_S_D_ENC : MSA_2RF_FMT<0b110011110, 0b1, 0b011110>; 294 295class FFINT_U_W_ENC : MSA_2RF_FMT<0b110011111, 0b0, 0b011110>; 296class FFINT_U_D_ENC : MSA_2RF_FMT<0b110011111, 0b1, 0b011110>; 297 298class FFQL_W_ENC : MSA_2RF_FMT<0b110011010, 0b0, 0b011110>; 299class FFQL_D_ENC : MSA_2RF_FMT<0b110011010, 0b1, 0b011110>; 300 301class FFQR_W_ENC : MSA_2RF_FMT<0b110011011, 0b0, 0b011110>; 302class FFQR_D_ENC : MSA_2RF_FMT<0b110011011, 0b1, 0b011110>; 303 304class FILL_B_ENC : MSA_2R_FMT<0b11000000, 0b00, 0b011110>; 305class FILL_H_ENC : MSA_2R_FMT<0b11000000, 0b01, 0b011110>; 306class FILL_W_ENC : MSA_2R_FMT<0b11000000, 0b10, 0b011110>; 307 308class FLOG2_W_ENC : MSA_2RF_FMT<0b110010111, 0b0, 0b011110>; 309class FLOG2_D_ENC : MSA_2RF_FMT<0b110010111, 0b1, 0b011110>; 310 311class FMADD_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011011>; 312class FMADD_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011011>; 313 314class FMAX_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011011>; 315class FMAX_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011011>; 316 317class FMAX_A_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011011>; 318class FMAX_A_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011011>; 319 320class FMIN_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011011>; 321class FMIN_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011011>; 322 323class FMIN_A_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011011>; 324class FMIN_A_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011011>; 325 326class FMSUB_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011011>; 327class FMSUB_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011011>; 328 329class FMUL_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011011>; 330class FMUL_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011011>; 331 332class FRINT_W_ENC : MSA_2RF_FMT<0b110010110, 0b0, 0b011110>; 333class FRINT_D_ENC : MSA_2RF_FMT<0b110010110, 0b1, 0b011110>; 334 335class FRCP_W_ENC : MSA_2RF_FMT<0b110010101, 0b0, 0b011110>; 336class FRCP_D_ENC : MSA_2RF_FMT<0b110010101, 0b1, 0b011110>; 337 338class FRSQRT_W_ENC : MSA_2RF_FMT<0b110010100, 0b0, 0b011110>; 339class FRSQRT_D_ENC : MSA_2RF_FMT<0b110010100, 0b1, 0b011110>; 340 341class FSEQ_W_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011010>; 342class FSEQ_D_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011010>; 343 344class FSGE_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011010>; 345class FSGE_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011010>; 346 347class FSGT_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011010>; 348class FSGT_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011010>; 349 350class FSLE_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011010>; 351class FSLE_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011010>; 352 353class FSLT_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011010>; 354class FSLT_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011010>; 355 356class FSNE_W_ENC : MSA_3RF_FMT<0b1011, 0b0, 0b011010>; 357class FSNE_D_ENC : MSA_3RF_FMT<0b1011, 0b1, 0b011010>; 358 359class FSQRT_W_ENC : MSA_2RF_FMT<0b110010011, 0b0, 0b011110>; 360class FSQRT_D_ENC : MSA_2RF_FMT<0b110010011, 0b1, 0b011110>; 361 362class FSUB_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011011>; 363class FSUB_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011011>; 364 365class FTINT_S_W_ENC : MSA_2RF_FMT<0b110011100, 0b0, 0b011110>; 366class FTINT_S_D_ENC : MSA_2RF_FMT<0b110011100, 0b1, 0b011110>; 367 368class FTINT_U_W_ENC : MSA_2RF_FMT<0b110011101, 0b0, 0b011110>; 369class FTINT_U_D_ENC : MSA_2RF_FMT<0b110011101, 0b1, 0b011110>; 370 371class FTQ_H_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011011>; 372class FTQ_W_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011011>; 373 374class ILVEV_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010100>; 375class ILVEV_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010100>; 376class ILVEV_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010100>; 377class ILVEV_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010100>; 378 379class ILVL_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010100>; 380class ILVL_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010100>; 381class ILVL_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010100>; 382class ILVL_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010100>; 383 384class ILVOD_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010100>; 385class ILVOD_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010100>; 386class ILVOD_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010100>; 387class ILVOD_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010100>; 388 389class ILVR_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010100>; 390class ILVR_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010100>; 391class ILVR_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010100>; 392class ILVR_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010100>; 393 394class INSERT_B_ENC : MSA_ELM_B_FMT<0b0100, 0b011001>; 395class INSERT_H_ENC : MSA_ELM_H_FMT<0b0100, 0b011001>; 396class INSERT_W_ENC : MSA_ELM_W_FMT<0b0100, 0b011001>; 397 398class LD_B_ENC : MSA_I5_FMT<0b110, 0b00, 0b000111>; 399class LD_H_ENC : MSA_I5_FMT<0b110, 0b01, 0b000111>; 400class LD_W_ENC : MSA_I5_FMT<0b110, 0b10, 0b000111>; 401class LD_D_ENC : MSA_I5_FMT<0b110, 0b11, 0b000111>; 402 403class LDI_B_ENC : MSA_I10_FMT<0b010, 0b00, 0b001100>; 404class LDI_H_ENC : MSA_I10_FMT<0b010, 0b01, 0b001100>; 405class LDI_W_ENC : MSA_I10_FMT<0b010, 0b10, 0b001100>; 406class LDI_D_ENC : MSA_I10_FMT<0b010, 0b11, 0b001100>; 407 408class ST_B_ENC : MSA_I5_FMT<0b111, 0b00, 0b000111>; 409class ST_H_ENC : MSA_I5_FMT<0b111, 0b01, 0b000111>; 410class ST_W_ENC : MSA_I5_FMT<0b111, 0b10, 0b000111>; 411class ST_D_ENC : MSA_I5_FMT<0b111, 0b11, 0b000111>; 412 413// Instruction desc. 414class MSA_BIT_D_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 415 InstrItinClass itin, RegisterClass RCWD, 416 RegisterClass RCWS> { 417 dag OutOperandList = (outs RCWD:$wd); 418 dag InOperandList = (ins RCWS:$ws, uimm6:$u6); 419 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u6"); 420 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt6:$u6))]; 421 InstrItinClass Itinerary = itin; 422} 423 424class MSA_BIT_W_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 425 InstrItinClass itin, RegisterClass RCWD, 426 RegisterClass RCWS> { 427 dag OutOperandList = (outs RCWD:$wd); 428 dag InOperandList = (ins RCWS:$ws, uimm5:$u5); 429 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5"); 430 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))]; 431 InstrItinClass Itinerary = itin; 432} 433 434class MSA_BIT_H_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 435 InstrItinClass itin, RegisterClass RCWD, 436 RegisterClass RCWS> { 437 dag OutOperandList = (outs RCWD:$wd); 438 dag InOperandList = (ins RCWS:$ws, uimm4:$u4); 439 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u4"); 440 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt4:$u4))]; 441 InstrItinClass Itinerary = itin; 442} 443 444class MSA_BIT_B_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 445 InstrItinClass itin, RegisterClass RCWD, 446 RegisterClass RCWS> { 447 dag OutOperandList = (outs RCWD:$wd); 448 dag InOperandList = (ins RCWS:$ws, uimm3:$u3); 449 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u3"); 450 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt3:$u3))]; 451 InstrItinClass Itinerary = itin; 452} 453 454class MSA_COPY_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 455 InstrItinClass itin, RegisterClass RCD, 456 RegisterClass RCWS> { 457 dag OutOperandList = (outs RCD:$rd); 458 dag InOperandList = (ins RCWS:$ws, uimm6:$n); 459 string AsmString = !strconcat(instr_asm, "\t$rd, $ws[$n]"); 460 list<dag> Pattern = [(set RCD:$rd, (OpNode RCWS:$ws, immZExt6:$n))]; 461 InstrItinClass Itinerary = itin; 462} 463 464class MSA_I5_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 465 InstrItinClass itin, RegisterClass RCWD, 466 RegisterClass RCWS> { 467 dag OutOperandList = (outs RCWD:$wd); 468 dag InOperandList = (ins RCWS:$ws, uimm5:$u5); 469 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5"); 470 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))]; 471 InstrItinClass Itinerary = itin; 472} 473 474class MSA_SI5_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 475 InstrItinClass itin, RegisterClass RCWD, 476 RegisterClass RCWS> { 477 dag OutOperandList = (outs RCWD:$wd); 478 dag InOperandList = (ins RCWS:$ws, simm5:$s5); 479 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $s5"); 480 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immSExt5:$s5))]; 481 InstrItinClass Itinerary = itin; 482} 483 484class MSA_I8_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 485 InstrItinClass itin, RegisterClass RCWD, 486 RegisterClass RCWS> { 487 dag OutOperandList = (outs RCWD:$wd); 488 dag InOperandList = (ins RCWS:$ws, uimm8:$u8); 489 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u8"); 490 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt8:$u8))]; 491 InstrItinClass Itinerary = itin; 492} 493 494class MSA_I10_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 495 InstrItinClass itin, RegisterClass RCWD> { 496 dag OutOperandList = (outs RCWD:$wd); 497 dag InOperandList = (ins simm10:$i10); 498 string AsmString = !strconcat(instr_asm, "\t$wd, $i10"); 499 list<dag> Pattern = [(set RCWD:$wd, (OpNode immSExt10:$i10))]; 500 InstrItinClass Itinerary = itin; 501} 502 503class MSA_2R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 504 InstrItinClass itin, RegisterClass RCWD, 505 RegisterClass RCWS> { 506 dag OutOperandList = (outs RCWD:$wd); 507 dag InOperandList = (ins RCWS:$ws); 508 string AsmString = !strconcat(instr_asm, "\t$wd, $ws"); 509 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws))]; 510 InstrItinClass Itinerary = itin; 511} 512 513class MSA_2RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 514 InstrItinClass itin, RegisterClass RCWD, 515 RegisterClass RCWS> : 516 MSA_2R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS>; 517 518 519class MSA_3R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 520 InstrItinClass itin, RegisterClass RCWD, 521 RegisterClass RCWS, RegisterClass RCWT = RCWS> { 522 dag OutOperandList = (outs RCWD:$wd); 523 dag InOperandList = (ins RCWS:$ws, RCWT:$wt); 524 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt"); 525 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))]; 526 InstrItinClass Itinerary = itin; 527} 528 529class MSA_3R_4R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 530 InstrItinClass itin, RegisterClass RCWD, 531 RegisterClass RCWS, RegisterClass RCWT = RCWS> { 532 dag OutOperandList = (outs RCWD:$wd); 533 dag InOperandList = (ins RCWD:$wd_in, RCWS:$ws, RCWT:$wt); 534 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt"); 535 list<dag> Pattern = [(set RCWD:$wd, 536 (OpNode RCWD:$wd_in, RCWS:$ws, RCWT:$wt))]; 537 InstrItinClass Itinerary = itin; 538 string Constraints = "$wd = $wd_in"; 539} 540 541class MSA_3RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 542 InstrItinClass itin, RegisterClass RCWD, 543 RegisterClass RCWS, RegisterClass RCWT = RCWS> : 544 MSA_3R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>; 545 546class MSA_3RF_4RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 547 InstrItinClass itin, RegisterClass RCWD, 548 RegisterClass RCWS, RegisterClass RCWT = RCWS> : 549 MSA_3R_4R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>; 550 551class MSA_INSERT_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 552 InstrItinClass itin, RegisterClass RCD, 553 RegisterClass RCWS> { 554 dag OutOperandList = (outs RCD:$wd); 555 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$rs); 556 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $rs"); 557 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in, 558 immZExt6:$n, 559 RCWS:$rs))]; 560 InstrItinClass Itinerary = itin; 561 string Constraints = "$wd = $wd_in"; 562} 563 564class ADD_A_B_DESC : MSA_3R_DESC_BASE<"add_a.b", int_mips_add_a_b, NoItinerary, 565 MSA128, MSA128>, IsCommutable; 566class ADD_A_H_DESC : MSA_3R_DESC_BASE<"add_a.h", int_mips_add_a_h, NoItinerary, 567 MSA128, MSA128>, IsCommutable; 568class ADD_A_W_DESC : MSA_3R_DESC_BASE<"add_a.w", int_mips_add_a_w, NoItinerary, 569 MSA128, MSA128>, IsCommutable; 570class ADD_A_D_DESC : MSA_3R_DESC_BASE<"add_a.d", int_mips_add_a_d, NoItinerary, 571 MSA128, MSA128>, IsCommutable; 572 573class ADDS_A_B_DESC : MSA_3R_DESC_BASE<"adds_a.b", int_mips_adds_a_b, 574 NoItinerary, MSA128, MSA128>, 575 IsCommutable; 576class ADDS_A_H_DESC : MSA_3R_DESC_BASE<"adds_a.h", int_mips_adds_a_h, 577 NoItinerary, MSA128, MSA128>, 578 IsCommutable; 579class ADDS_A_W_DESC : MSA_3R_DESC_BASE<"adds_a.w", int_mips_adds_a_w, 580 NoItinerary, MSA128, MSA128>, 581 IsCommutable; 582class ADDS_A_D_DESC : MSA_3R_DESC_BASE<"adds_a.d", int_mips_adds_a_d, 583 NoItinerary, MSA128, MSA128>, 584 IsCommutable; 585 586class ADDS_S_B_DESC : MSA_3R_DESC_BASE<"adds_s.b", int_mips_adds_s_b, 587 NoItinerary, MSA128, MSA128>, 588 IsCommutable; 589class ADDS_S_H_DESC : MSA_3R_DESC_BASE<"adds_s.h", int_mips_adds_s_h, 590 NoItinerary, MSA128, MSA128>, 591 IsCommutable; 592class ADDS_S_W_DESC : MSA_3R_DESC_BASE<"adds_s.w", int_mips_adds_s_w, 593 NoItinerary, MSA128, MSA128>, 594 IsCommutable; 595class ADDS_S_D_DESC : MSA_3R_DESC_BASE<"adds_s.d", int_mips_adds_s_d, 596 NoItinerary, MSA128, MSA128>, 597 IsCommutable; 598 599class ADDS_U_B_DESC : MSA_3R_DESC_BASE<"adds_u.b", int_mips_adds_u_b, 600 NoItinerary, MSA128, MSA128>, 601 IsCommutable; 602class ADDS_U_H_DESC : MSA_3R_DESC_BASE<"adds_u.h", int_mips_adds_u_h, 603 NoItinerary, MSA128, MSA128>, 604 IsCommutable; 605class ADDS_U_W_DESC : MSA_3R_DESC_BASE<"adds_u.w", int_mips_adds_u_w, 606 NoItinerary, MSA128, MSA128>, 607 IsCommutable; 608class ADDS_U_D_DESC : MSA_3R_DESC_BASE<"adds_u.d", int_mips_adds_u_d, 609 NoItinerary, MSA128, MSA128>, 610 IsCommutable; 611 612class ADDV_B_DESC : MSA_3R_DESC_BASE<"addv.b", int_mips_addv_b, NoItinerary, 613 MSA128, MSA128>, IsCommutable; 614class ADDV_H_DESC : MSA_3R_DESC_BASE<"addv.h", int_mips_addv_h, NoItinerary, 615 MSA128, MSA128>, IsCommutable; 616class ADDV_W_DESC : MSA_3R_DESC_BASE<"addv.w", int_mips_addv_w, NoItinerary, 617 MSA128, MSA128>, IsCommutable; 618class ADDV_D_DESC : MSA_3R_DESC_BASE<"addv.d", int_mips_addv_d, NoItinerary, 619 MSA128, MSA128>, IsCommutable; 620 621class ADDVI_B_DESC : MSA_I5_DESC_BASE<"addvi.b", int_mips_addvi_b, NoItinerary, 622 MSA128, MSA128>; 623class ADDVI_H_DESC : MSA_I5_DESC_BASE<"addvi.h", int_mips_addvi_h, NoItinerary, 624 MSA128, MSA128>; 625class ADDVI_W_DESC : MSA_I5_DESC_BASE<"addvi.w", int_mips_addvi_w, NoItinerary, 626 MSA128, MSA128>; 627class ADDVI_D_DESC : MSA_I5_DESC_BASE<"addvi.d", int_mips_addvi_d, NoItinerary, 628 MSA128, MSA128>; 629 630class ANDI_B_DESC : MSA_I8_DESC_BASE<"andi.b", int_mips_andi_b, NoItinerary, 631 MSA128, MSA128>; 632 633class ASUB_S_B_DESC : MSA_3R_DESC_BASE<"asub_s.b", int_mips_asub_s_b, 634 NoItinerary, MSA128, MSA128>; 635class ASUB_S_H_DESC : MSA_3R_DESC_BASE<"asub_s.h", int_mips_asub_s_h, 636 NoItinerary, MSA128, MSA128>; 637class ASUB_S_W_DESC : MSA_3R_DESC_BASE<"asub_s.w", int_mips_asub_s_w, 638 NoItinerary, MSA128, MSA128>; 639class ASUB_S_D_DESC : MSA_3R_DESC_BASE<"asub_s.d", int_mips_asub_s_d, 640 NoItinerary, MSA128, MSA128>; 641 642class ASUB_U_B_DESC : MSA_3R_DESC_BASE<"asub_u.b", int_mips_asub_u_b, 643 NoItinerary, MSA128, MSA128>; 644class ASUB_U_H_DESC : MSA_3R_DESC_BASE<"asub_u.h", int_mips_asub_u_h, 645 NoItinerary, MSA128, MSA128>; 646class ASUB_U_W_DESC : MSA_3R_DESC_BASE<"asub_u.w", int_mips_asub_u_w, 647 NoItinerary, MSA128, MSA128>; 648class ASUB_U_D_DESC : MSA_3R_DESC_BASE<"asub_u.d", int_mips_asub_u_d, 649 NoItinerary, MSA128, MSA128>; 650 651class AVE_S_B_DESC : MSA_3R_DESC_BASE<"ave_s.b", int_mips_ave_s_b, NoItinerary, 652 MSA128, MSA128>, IsCommutable; 653class AVE_S_H_DESC : MSA_3R_DESC_BASE<"ave_s.h", int_mips_ave_s_h, NoItinerary, 654 MSA128, MSA128>, IsCommutable; 655class AVE_S_W_DESC : MSA_3R_DESC_BASE<"ave_s.w", int_mips_ave_s_w, NoItinerary, 656 MSA128, MSA128>, IsCommutable; 657class AVE_S_D_DESC : MSA_3R_DESC_BASE<"ave_s.d", int_mips_ave_s_d, NoItinerary, 658 MSA128, MSA128>, IsCommutable; 659 660class AVE_U_B_DESC : MSA_3R_DESC_BASE<"ave_u.b", int_mips_ave_u_b, NoItinerary, 661 MSA128, MSA128>, IsCommutable; 662class AVE_U_H_DESC : MSA_3R_DESC_BASE<"ave_u.h", int_mips_ave_u_h, NoItinerary, 663 MSA128, MSA128>, IsCommutable; 664class AVE_U_W_DESC : MSA_3R_DESC_BASE<"ave_u.w", int_mips_ave_u_w, NoItinerary, 665 MSA128, MSA128>, IsCommutable; 666class AVE_U_D_DESC : MSA_3R_DESC_BASE<"ave_u.d", int_mips_ave_u_d, NoItinerary, 667 MSA128, MSA128>, IsCommutable; 668 669class AVER_S_B_DESC : MSA_3R_DESC_BASE<"aver_s.b", int_mips_aver_s_b, 670 NoItinerary, MSA128, MSA128>, 671 IsCommutable; 672class AVER_S_H_DESC : MSA_3R_DESC_BASE<"aver_s.h", int_mips_aver_s_h, 673 NoItinerary, MSA128, MSA128>, 674 IsCommutable; 675class AVER_S_W_DESC : MSA_3R_DESC_BASE<"aver_s.w", int_mips_aver_s_w, 676 NoItinerary, MSA128, MSA128>, 677 IsCommutable; 678class AVER_S_D_DESC : MSA_3R_DESC_BASE<"aver_s.d", int_mips_aver_s_d, 679 NoItinerary, MSA128, MSA128>, 680 IsCommutable; 681 682class AVER_U_B_DESC : MSA_3R_DESC_BASE<"aver_u.b", int_mips_aver_u_b, 683 NoItinerary, MSA128, MSA128>, 684 IsCommutable; 685class AVER_U_H_DESC : MSA_3R_DESC_BASE<"aver_u.h", int_mips_aver_u_h, 686 NoItinerary, MSA128, MSA128>, 687 IsCommutable; 688class AVER_U_W_DESC : MSA_3R_DESC_BASE<"aver_u.w", int_mips_aver_u_w, 689 NoItinerary, MSA128, MSA128>, 690 IsCommutable; 691class AVER_U_D_DESC : MSA_3R_DESC_BASE<"aver_u.d", int_mips_aver_u_d, 692 NoItinerary, MSA128, MSA128>, 693 IsCommutable; 694 695class BCLR_B_DESC : MSA_3R_DESC_BASE<"bclr.b", int_mips_bclr_b, NoItinerary, 696 MSA128, MSA128>; 697class BCLR_H_DESC : MSA_3R_DESC_BASE<"bclr.h", int_mips_bclr_h, NoItinerary, 698 MSA128, MSA128>; 699class BCLR_W_DESC : MSA_3R_DESC_BASE<"bclr.w", int_mips_bclr_w, NoItinerary, 700 MSA128, MSA128>; 701class BCLR_D_DESC : MSA_3R_DESC_BASE<"bclr.d", int_mips_bclr_d, NoItinerary, 702 MSA128, MSA128>; 703 704class BCLRI_B_DESC : MSA_BIT_B_DESC_BASE<"bclri.b", int_mips_bclri_b, 705 NoItinerary, MSA128, MSA128>; 706class BCLRI_H_DESC : MSA_BIT_H_DESC_BASE<"bclri.h", int_mips_bclri_h, 707 NoItinerary, MSA128, MSA128>; 708class BCLRI_W_DESC : MSA_BIT_W_DESC_BASE<"bclri.w", int_mips_bclri_w, 709 NoItinerary, MSA128, MSA128>; 710class BCLRI_D_DESC : MSA_BIT_D_DESC_BASE<"bclri.d", int_mips_bclri_d, 711 NoItinerary, MSA128, MSA128>; 712 713class BINSL_B_DESC : MSA_3R_DESC_BASE<"binsl.b", int_mips_binsl_b, NoItinerary, 714 MSA128, MSA128>; 715class BINSL_H_DESC : MSA_3R_DESC_BASE<"binsl.h", int_mips_binsl_h, NoItinerary, 716 MSA128, MSA128>; 717class BINSL_W_DESC : MSA_3R_DESC_BASE<"binsl.w", int_mips_binsl_w, NoItinerary, 718 MSA128, MSA128>; 719class BINSL_D_DESC : MSA_3R_DESC_BASE<"binsl.d", int_mips_binsl_d, NoItinerary, 720 MSA128, MSA128>; 721 722class BINSLI_B_DESC : MSA_BIT_B_DESC_BASE<"binsli.b", int_mips_binsli_b, 723 NoItinerary, MSA128, MSA128>; 724class BINSLI_H_DESC : MSA_BIT_H_DESC_BASE<"binsli.h", int_mips_binsli_h, 725 NoItinerary, MSA128, MSA128>; 726class BINSLI_W_DESC : MSA_BIT_W_DESC_BASE<"binsli.w", int_mips_binsli_w, 727 NoItinerary, MSA128, MSA128>; 728class BINSLI_D_DESC : MSA_BIT_D_DESC_BASE<"binsli.d", int_mips_binsli_d, 729 NoItinerary, MSA128, MSA128>; 730 731class BINSR_B_DESC : MSA_3R_DESC_BASE<"binsr.b", int_mips_binsr_b, NoItinerary, 732 MSA128, MSA128>; 733class BINSR_H_DESC : MSA_3R_DESC_BASE<"binsr.h", int_mips_binsr_h, NoItinerary, 734 MSA128, MSA128>; 735class BINSR_W_DESC : MSA_3R_DESC_BASE<"binsr.w", int_mips_binsr_w, NoItinerary, 736 MSA128, MSA128>; 737class BINSR_D_DESC : MSA_3R_DESC_BASE<"binsr.d", int_mips_binsr_d, NoItinerary, 738 MSA128, MSA128>; 739 740class BINSRI_B_DESC : MSA_BIT_B_DESC_BASE<"binsri.b", int_mips_binsri_b, 741 NoItinerary, MSA128, MSA128>; 742class BINSRI_H_DESC : MSA_BIT_H_DESC_BASE<"binsri.h", int_mips_binsri_h, 743 NoItinerary, MSA128, MSA128>; 744class BINSRI_W_DESC : MSA_BIT_W_DESC_BASE<"binsri.w", int_mips_binsri_w, 745 NoItinerary, MSA128, MSA128>; 746class BINSRI_D_DESC : MSA_BIT_D_DESC_BASE<"binsri.d", int_mips_binsri_d, 747 NoItinerary, MSA128, MSA128>; 748 749class BMNZI_B_DESC : MSA_I8_DESC_BASE<"bmnzi.b", int_mips_bmnzi_b, NoItinerary, 750 MSA128, MSA128>; 751 752class BMZI_B_DESC : MSA_I8_DESC_BASE<"bmzi.b", int_mips_bmzi_b, NoItinerary, 753 MSA128, MSA128>; 754 755class BNEG_B_DESC : MSA_3R_DESC_BASE<"bneg.b", int_mips_bneg_b, NoItinerary, 756 MSA128, MSA128>; 757class BNEG_H_DESC : MSA_3R_DESC_BASE<"bneg.h", int_mips_bneg_h, NoItinerary, 758 MSA128, MSA128>; 759class BNEG_W_DESC : MSA_3R_DESC_BASE<"bneg.w", int_mips_bneg_w, NoItinerary, 760 MSA128, MSA128>; 761class BNEG_D_DESC : MSA_3R_DESC_BASE<"bneg.d", int_mips_bneg_d, NoItinerary, 762 MSA128, MSA128>; 763 764class BNEGI_B_DESC : MSA_BIT_B_DESC_BASE<"bnegi.b", int_mips_bnegi_b, 765 NoItinerary, MSA128, MSA128>; 766class BNEGI_H_DESC : MSA_BIT_H_DESC_BASE<"bnegi.h", int_mips_bnegi_h, 767 NoItinerary, MSA128, MSA128>; 768class BNEGI_W_DESC : MSA_BIT_W_DESC_BASE<"bnegi.w", int_mips_bnegi_w, 769 NoItinerary, MSA128, MSA128>; 770class BNEGI_D_DESC : MSA_BIT_D_DESC_BASE<"bnegi.d", int_mips_bnegi_d, 771 NoItinerary, MSA128, MSA128>; 772 773class BSELI_B_DESC : MSA_I8_DESC_BASE<"bseli.b", int_mips_bseli_b, NoItinerary, 774 MSA128, MSA128>; 775 776class BSET_B_DESC : MSA_3R_DESC_BASE<"bset.b", int_mips_bset_b, NoItinerary, 777 MSA128, MSA128>; 778class BSET_H_DESC : MSA_3R_DESC_BASE<"bset.h", int_mips_bset_h, NoItinerary, 779 MSA128, MSA128>; 780class BSET_W_DESC : MSA_3R_DESC_BASE<"bset.w", int_mips_bset_w, NoItinerary, 781 MSA128, MSA128>; 782class BSET_D_DESC : MSA_3R_DESC_BASE<"bset.d", int_mips_bset_d, NoItinerary, 783 MSA128, MSA128>; 784 785class BSETI_B_DESC : MSA_BIT_B_DESC_BASE<"bseti.b", int_mips_bseti_b, 786 NoItinerary, MSA128, MSA128>; 787class BSETI_H_DESC : MSA_BIT_H_DESC_BASE<"bseti.h", int_mips_bseti_h, 788 NoItinerary, MSA128, MSA128>; 789class BSETI_W_DESC : MSA_BIT_W_DESC_BASE<"bseti.w", int_mips_bseti_w, 790 NoItinerary, MSA128, MSA128>; 791class BSETI_D_DESC : MSA_BIT_D_DESC_BASE<"bseti.d", int_mips_bseti_d, 792 NoItinerary, MSA128, MSA128>; 793 794class CEQ_B_DESC : MSA_3R_DESC_BASE<"ceq.b", int_mips_ceq_b, NoItinerary, 795 MSA128, MSA128>, IsCommutable; 796class CEQ_H_DESC : MSA_3R_DESC_BASE<"ceq.h", int_mips_ceq_h, NoItinerary, 797 MSA128, MSA128>, IsCommutable; 798class CEQ_W_DESC : MSA_3R_DESC_BASE<"ceq.w", int_mips_ceq_w, NoItinerary, 799 MSA128, MSA128>, IsCommutable; 800class CEQ_D_DESC : MSA_3R_DESC_BASE<"ceq.d", int_mips_ceq_d, NoItinerary, 801 MSA128, MSA128>, IsCommutable; 802 803class CEQI_B_DESC : MSA_SI5_DESC_BASE<"ceqi.b", int_mips_ceqi_b, NoItinerary, 804 MSA128, MSA128>; 805class CEQI_H_DESC : MSA_SI5_DESC_BASE<"ceqi.h", int_mips_ceqi_h, NoItinerary, 806 MSA128, MSA128>; 807class CEQI_W_DESC : MSA_SI5_DESC_BASE<"ceqi.w", int_mips_ceqi_w, NoItinerary, 808 MSA128, MSA128>; 809class CEQI_D_DESC : MSA_SI5_DESC_BASE<"ceqi.d", int_mips_ceqi_d, NoItinerary, 810 MSA128, MSA128>; 811 812class CLE_S_B_DESC : MSA_3R_DESC_BASE<"cle_s.b", int_mips_cle_s_b, NoItinerary, 813 MSA128, MSA128>; 814class CLE_S_H_DESC : MSA_3R_DESC_BASE<"cle_s.h", int_mips_cle_s_h, NoItinerary, 815 MSA128, MSA128>; 816class CLE_S_W_DESC : MSA_3R_DESC_BASE<"cle_s.w", int_mips_cle_s_w, NoItinerary, 817 MSA128, MSA128>; 818class CLE_S_D_DESC : MSA_3R_DESC_BASE<"cle_s.d", int_mips_cle_s_d, NoItinerary, 819 MSA128, MSA128>; 820 821class CLE_U_B_DESC : MSA_3R_DESC_BASE<"cle_u.b", int_mips_cle_u_b, NoItinerary, 822 MSA128, MSA128>; 823class CLE_U_H_DESC : MSA_3R_DESC_BASE<"cle_u.h", int_mips_cle_u_h, NoItinerary, 824 MSA128, MSA128>; 825class CLE_U_W_DESC : MSA_3R_DESC_BASE<"cle_u.w", int_mips_cle_u_w, NoItinerary, 826 MSA128, MSA128>; 827class CLE_U_D_DESC : MSA_3R_DESC_BASE<"cle_u.d", int_mips_cle_u_d, NoItinerary, 828 MSA128, MSA128>; 829 830class CLEI_S_B_DESC : MSA_SI5_DESC_BASE<"clei_s.b", int_mips_clei_s_b, 831 NoItinerary, MSA128, MSA128>; 832class CLEI_S_H_DESC : MSA_SI5_DESC_BASE<"clei_s.h", int_mips_clei_s_h, 833 NoItinerary, MSA128, MSA128>; 834class CLEI_S_W_DESC : MSA_SI5_DESC_BASE<"clei_s.w", int_mips_clei_s_w, 835 NoItinerary, MSA128, MSA128>; 836class CLEI_S_D_DESC : MSA_SI5_DESC_BASE<"clei_s.d", int_mips_clei_s_d, 837 NoItinerary, MSA128, MSA128>; 838 839class CLEI_U_B_DESC : MSA_SI5_DESC_BASE<"clei_u.b", int_mips_clei_u_b, 840 NoItinerary, MSA128, MSA128>; 841class CLEI_U_H_DESC : MSA_SI5_DESC_BASE<"clei_u.h", int_mips_clei_u_h, 842 NoItinerary, MSA128, MSA128>; 843class CLEI_U_W_DESC : MSA_SI5_DESC_BASE<"clei_u.w", int_mips_clei_u_w, 844 NoItinerary, MSA128, MSA128>; 845class CLEI_U_D_DESC : MSA_SI5_DESC_BASE<"clei_u.d", int_mips_clei_u_d, 846 NoItinerary, MSA128, MSA128>; 847 848class CLT_S_B_DESC : MSA_3R_DESC_BASE<"clt_s.b", int_mips_clt_s_b, NoItinerary, 849 MSA128, MSA128>; 850class CLT_S_H_DESC : MSA_3R_DESC_BASE<"clt_s.h", int_mips_clt_s_h, NoItinerary, 851 MSA128, MSA128>; 852class CLT_S_W_DESC : MSA_3R_DESC_BASE<"clt_s.w", int_mips_clt_s_w, NoItinerary, 853 MSA128, MSA128>; 854class CLT_S_D_DESC : MSA_3R_DESC_BASE<"clt_s.d", int_mips_clt_s_d, NoItinerary, 855 MSA128, MSA128>; 856 857class CLT_U_B_DESC : MSA_3R_DESC_BASE<"clt_u.b", int_mips_clt_u_b, NoItinerary, 858 MSA128, MSA128>; 859class CLT_U_H_DESC : MSA_3R_DESC_BASE<"clt_u.h", int_mips_clt_u_h, NoItinerary, 860 MSA128, MSA128>; 861class CLT_U_W_DESC : MSA_3R_DESC_BASE<"clt_u.w", int_mips_clt_u_w, NoItinerary, 862 MSA128, MSA128>; 863class CLT_U_D_DESC : MSA_3R_DESC_BASE<"clt_u.d", int_mips_clt_u_d, NoItinerary, 864 MSA128, MSA128>; 865 866class CLTI_S_B_DESC : MSA_SI5_DESC_BASE<"clti_s.b", int_mips_clti_s_b, 867 NoItinerary, MSA128, MSA128>; 868class CLTI_S_H_DESC : MSA_SI5_DESC_BASE<"clti_s.h", int_mips_clti_s_h, 869 NoItinerary, MSA128, MSA128>; 870class CLTI_S_W_DESC : MSA_SI5_DESC_BASE<"clti_s.w", int_mips_clti_s_w, 871 NoItinerary, MSA128, MSA128>; 872class CLTI_S_D_DESC : MSA_SI5_DESC_BASE<"clti_s.d", int_mips_clti_s_d, 873 NoItinerary, MSA128, MSA128>; 874 875class CLTI_U_B_DESC : MSA_SI5_DESC_BASE<"clti_u.b", int_mips_clti_u_b, 876 NoItinerary, MSA128, MSA128>; 877class CLTI_U_H_DESC : MSA_SI5_DESC_BASE<"clti_u.h", int_mips_clti_u_h, 878 NoItinerary, MSA128, MSA128>; 879class CLTI_U_W_DESC : MSA_SI5_DESC_BASE<"clti_u.w", int_mips_clti_u_w, 880 NoItinerary, MSA128, MSA128>; 881class CLTI_U_D_DESC : MSA_SI5_DESC_BASE<"clti_u.d", int_mips_clti_u_d, 882 NoItinerary, MSA128, MSA128>; 883 884class COPY_S_B_DESC : MSA_COPY_DESC_BASE<"copy_s.b", int_mips_copy_s_b, 885 NoItinerary, GPR32, MSA128>; 886class COPY_S_H_DESC : MSA_COPY_DESC_BASE<"copy_s.h", int_mips_copy_s_h, 887 NoItinerary, GPR32, MSA128>; 888class COPY_S_W_DESC : MSA_COPY_DESC_BASE<"copy_s.w", int_mips_copy_s_w, 889 NoItinerary, GPR32, MSA128>; 890 891class COPY_U_B_DESC : MSA_COPY_DESC_BASE<"copy_u.b", int_mips_copy_u_b, 892 NoItinerary, GPR32, MSA128>; 893class COPY_U_H_DESC : MSA_COPY_DESC_BASE<"copy_u.h", int_mips_copy_u_h, 894 NoItinerary, GPR32, MSA128>; 895class COPY_U_W_DESC : MSA_COPY_DESC_BASE<"copy_u.w", int_mips_copy_u_w, 896 NoItinerary, GPR32, MSA128>; 897 898class DIV_S_B_DESC : MSA_3R_DESC_BASE<"div_s.b", int_mips_div_s_b, NoItinerary, 899 MSA128, MSA128>; 900class DIV_S_H_DESC : MSA_3R_DESC_BASE<"div_s.h", int_mips_div_s_h, NoItinerary, 901 MSA128, MSA128>; 902class DIV_S_W_DESC : MSA_3R_DESC_BASE<"div_s.w", int_mips_div_s_w, NoItinerary, 903 MSA128, MSA128>; 904class DIV_S_D_DESC : MSA_3R_DESC_BASE<"div_s.d", int_mips_div_s_d, NoItinerary, 905 MSA128, MSA128>; 906 907class DIV_U_B_DESC : MSA_3R_DESC_BASE<"div_u.b", int_mips_div_u_b, NoItinerary, 908 MSA128, MSA128>; 909class DIV_U_H_DESC : MSA_3R_DESC_BASE<"div_u.h", int_mips_div_u_h, NoItinerary, 910 MSA128, MSA128>; 911class DIV_U_W_DESC : MSA_3R_DESC_BASE<"div_u.w", int_mips_div_u_w, NoItinerary, 912 MSA128, MSA128>; 913class DIV_U_D_DESC : MSA_3R_DESC_BASE<"div_u.d", int_mips_div_u_d, NoItinerary, 914 MSA128, MSA128>; 915 916class DOTP_S_B_DESC : MSA_3R_DESC_BASE<"dotp_s.b", int_mips_dotp_s_b, 917 NoItinerary, MSA128, MSA128>, 918 IsCommutable; 919class DOTP_S_H_DESC : MSA_3R_DESC_BASE<"dotp_s.h", int_mips_dotp_s_h, 920 NoItinerary, MSA128, MSA128>, 921 IsCommutable; 922class DOTP_S_W_DESC : MSA_3R_DESC_BASE<"dotp_s.w", int_mips_dotp_s_w, 923 NoItinerary, MSA128, MSA128>, 924 IsCommutable; 925class DOTP_S_D_DESC : MSA_3R_DESC_BASE<"dotp_s.d", int_mips_dotp_s_d, 926 NoItinerary, MSA128, MSA128>, 927 IsCommutable; 928 929class DOTP_U_B_DESC : MSA_3R_DESC_BASE<"dotp_u.b", int_mips_dotp_u_b, 930 NoItinerary, MSA128, MSA128>, 931 IsCommutable; 932class DOTP_U_H_DESC : MSA_3R_DESC_BASE<"dotp_u.h", int_mips_dotp_u_h, 933 NoItinerary, MSA128, MSA128>, 934 IsCommutable; 935class DOTP_U_W_DESC : MSA_3R_DESC_BASE<"dotp_u.w", int_mips_dotp_u_w, 936 NoItinerary, MSA128, MSA128>, 937 IsCommutable; 938class DOTP_U_D_DESC : MSA_3R_DESC_BASE<"dotp_u.d", int_mips_dotp_u_d, 939 NoItinerary, MSA128, MSA128>, 940 IsCommutable; 941 942class DPADD_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.h", int_mips_dpadd_s_h, 943 NoItinerary, MSA128, MSA128>, 944 IsCommutable; 945class DPADD_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.w", int_mips_dpadd_s_w, 946 NoItinerary, MSA128, MSA128>, 947 IsCommutable; 948class DPADD_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.d", int_mips_dpadd_s_d, 949 NoItinerary, MSA128, MSA128>, 950 IsCommutable; 951 952class DPADD_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.h", int_mips_dpadd_u_h, 953 NoItinerary, MSA128, MSA128>, 954 IsCommutable; 955class DPADD_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.w", int_mips_dpadd_u_w, 956 NoItinerary, MSA128, MSA128>, 957 IsCommutable; 958class DPADD_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.d", int_mips_dpadd_u_d, 959 NoItinerary, MSA128, MSA128>, 960 IsCommutable; 961 962class DPSUB_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.h", int_mips_dpsub_s_h, 963 NoItinerary, MSA128, MSA128>; 964class DPSUB_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.w", int_mips_dpsub_s_w, 965 NoItinerary, MSA128, MSA128>; 966class DPSUB_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.d", int_mips_dpsub_s_d, 967 NoItinerary, MSA128, MSA128>; 968 969class DPSUB_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.h", int_mips_dpsub_u_h, 970 NoItinerary, MSA128, MSA128>; 971class DPSUB_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.w", int_mips_dpsub_u_w, 972 NoItinerary, MSA128, MSA128>; 973class DPSUB_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.d", int_mips_dpsub_u_d, 974 NoItinerary, MSA128, MSA128>; 975 976class FADD_W_DESC : MSA_3RF_DESC_BASE<"fadd.w", int_mips_fadd_w, 977 NoItinerary, MSA128, MSA128>, 978 IsCommutable; 979class FADD_D_DESC : MSA_3RF_DESC_BASE<"fadd.d", int_mips_fadd_d, 980 NoItinerary, MSA128, MSA128>, 981 IsCommutable; 982 983class FCEQ_W_DESC : MSA_3RF_DESC_BASE<"fceq.w", int_mips_fceq_w, 984 NoItinerary, MSA128, MSA128>, 985 IsCommutable; 986class FCEQ_D_DESC : MSA_3RF_DESC_BASE<"fceq.d", int_mips_fceq_d, 987 NoItinerary, MSA128, MSA128>, 988 IsCommutable; 989 990class FCGE_W_DESC : MSA_3RF_DESC_BASE<"fcge.w", int_mips_fcge_w, 991 NoItinerary, MSA128, MSA128>; 992class FCGE_D_DESC : MSA_3RF_DESC_BASE<"fcge.d", int_mips_fcge_d, 993 NoItinerary, MSA128, MSA128>; 994 995class FCGT_W_DESC : MSA_3RF_DESC_BASE<"fcgt.w", int_mips_fcgt_w, 996 NoItinerary, MSA128, MSA128>; 997class FCGT_D_DESC : MSA_3RF_DESC_BASE<"fcgt.d", int_mips_fcgt_d, 998 NoItinerary, MSA128, MSA128>; 999 1000class FCLASS_W_DESC : MSA_2RF_DESC_BASE<"fclass.w", int_mips_fclass_w, 1001 NoItinerary, MSA128, MSA128>; 1002class FCLASS_D_DESC : MSA_2RF_DESC_BASE<"fclass.d", int_mips_fclass_d, 1003 NoItinerary, MSA128, MSA128>; 1004 1005class FCLE_W_DESC : MSA_3RF_DESC_BASE<"fcle.w", int_mips_fcle_w, 1006 NoItinerary, MSA128, MSA128>; 1007class FCLE_D_DESC : MSA_3RF_DESC_BASE<"fcle.d", int_mips_fcle_d, 1008 NoItinerary, MSA128, MSA128>; 1009 1010class FCLT_W_DESC : MSA_3RF_DESC_BASE<"fclt.w", int_mips_fclt_w, 1011 NoItinerary, MSA128, MSA128>; 1012class FCLT_D_DESC : MSA_3RF_DESC_BASE<"fclt.d", int_mips_fclt_d, 1013 NoItinerary, MSA128, MSA128>; 1014 1015class FCNE_W_DESC : MSA_3RF_DESC_BASE<"fcne.w", int_mips_fcne_w, 1016 NoItinerary, MSA128, MSA128>, 1017 IsCommutable; 1018class FCNE_D_DESC : MSA_3RF_DESC_BASE<"fcne.d", int_mips_fcne_d, 1019 NoItinerary, MSA128, MSA128>, 1020 IsCommutable; 1021 1022class FCUN_W_DESC : MSA_3RF_DESC_BASE<"fcun.w", int_mips_fcun_w, 1023 NoItinerary, MSA128, MSA128>, 1024 IsCommutable; 1025class FCUN_D_DESC : MSA_3RF_DESC_BASE<"fcun.d", int_mips_fcun_d, 1026 NoItinerary, MSA128, MSA128>, 1027 IsCommutable; 1028 1029class FDIV_W_DESC : MSA_3RF_DESC_BASE<"fdiv.w", int_mips_fdiv_w, 1030 NoItinerary, MSA128, MSA128>; 1031class FDIV_D_DESC : MSA_3RF_DESC_BASE<"fdiv.d", int_mips_fdiv_d, 1032 NoItinerary, MSA128, MSA128>; 1033 1034class FEXDO_H_DESC : MSA_3RF_DESC_BASE<"fexdo.h", int_mips_fexdo_h, 1035 NoItinerary, MSA128, MSA128>; 1036class FEXDO_W_DESC : MSA_3RF_DESC_BASE<"fexdo.w", int_mips_fexdo_w, 1037 NoItinerary, MSA128, MSA128>; 1038 1039class FEXP2_W_DESC : MSA_3RF_DESC_BASE<"fexp2.w", int_mips_fexp2_w, 1040 NoItinerary, MSA128, MSA128>; 1041class FEXP2_D_DESC : MSA_3RF_DESC_BASE<"fexp2.d", int_mips_fexp2_d, 1042 NoItinerary, MSA128, MSA128>; 1043 1044class FEXUPL_W_DESC : MSA_2RF_DESC_BASE<"fexupl.w", int_mips_fexupl_w, 1045 NoItinerary, MSA128, MSA128>; 1046class FEXUPL_D_DESC : MSA_2RF_DESC_BASE<"fexupl.d", int_mips_fexupl_d, 1047 NoItinerary, MSA128, MSA128>; 1048 1049class FEXUPR_W_DESC : MSA_2RF_DESC_BASE<"fexupr.w", int_mips_fexupr_w, 1050 NoItinerary, MSA128, MSA128>; 1051class FEXUPR_D_DESC : MSA_2RF_DESC_BASE<"fexupr.d", int_mips_fexupr_d, 1052 NoItinerary, MSA128, MSA128>; 1053 1054class FFINT_S_W_DESC : MSA_2RF_DESC_BASE<"ffint_s.w", int_mips_ffint_s_w, 1055 NoItinerary, MSA128, MSA128>; 1056class FFINT_S_D_DESC : MSA_2RF_DESC_BASE<"ffint_s.d", int_mips_ffint_s_d, 1057 NoItinerary, MSA128, MSA128>; 1058 1059class FFINT_U_W_DESC : MSA_2RF_DESC_BASE<"ffint_u.w", int_mips_ffint_u_w, 1060 NoItinerary, MSA128, MSA128>; 1061class FFINT_U_D_DESC : MSA_2RF_DESC_BASE<"ffint_u.d", int_mips_ffint_u_d, 1062 NoItinerary, MSA128, MSA128>; 1063 1064class FFQL_W_DESC : MSA_2RF_DESC_BASE<"ffql.w", int_mips_ffql_w, 1065 NoItinerary, MSA128, MSA128>; 1066class FFQL_D_DESC : MSA_2RF_DESC_BASE<"ffql.d", int_mips_ffql_d, 1067 NoItinerary, MSA128, MSA128>; 1068 1069class FFQR_W_DESC : MSA_2RF_DESC_BASE<"ffqr.w", int_mips_ffqr_w, 1070 NoItinerary, MSA128, MSA128>; 1071class FFQR_D_DESC : MSA_2RF_DESC_BASE<"ffqr.d", int_mips_ffqr_d, 1072 NoItinerary, MSA128, MSA128>; 1073 1074class FILL_B_DESC : MSA_2R_DESC_BASE<"fill.b", int_mips_fill_b, 1075 NoItinerary, MSA128, GPR32>; 1076class FILL_H_DESC : MSA_2R_DESC_BASE<"fill.h", int_mips_fill_h, 1077 NoItinerary, MSA128, GPR32>; 1078class FILL_W_DESC : MSA_2R_DESC_BASE<"fill.w", int_mips_fill_w, 1079 NoItinerary, MSA128, GPR32>; 1080 1081class FLOG2_W_DESC : MSA_2RF_DESC_BASE<"flog2.w", int_mips_flog2_w, 1082 NoItinerary, MSA128, MSA128>; 1083class FLOG2_D_DESC : MSA_2RF_DESC_BASE<"flog2.d", int_mips_flog2_d, 1084 NoItinerary, MSA128, MSA128>; 1085 1086class FMADD_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.w", int_mips_fmadd_w, 1087 NoItinerary, MSA128, MSA128>; 1088class FMADD_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.d", int_mips_fmadd_d, 1089 NoItinerary, MSA128, MSA128>; 1090 1091class FMAX_W_DESC : MSA_3RF_DESC_BASE<"fmax.w", int_mips_fmax_w, 1092 NoItinerary, MSA128, MSA128>; 1093class FMAX_D_DESC : MSA_3RF_DESC_BASE<"fmax.d", int_mips_fmax_d, 1094 NoItinerary, MSA128, MSA128>; 1095 1096class FMAX_A_W_DESC : MSA_3RF_DESC_BASE<"fmax_a.w", int_mips_fmax_a_w, 1097 NoItinerary, MSA128, MSA128>; 1098class FMAX_A_D_DESC : MSA_3RF_DESC_BASE<"fmax_a.d", int_mips_fmax_a_d, 1099 NoItinerary, MSA128, MSA128>; 1100 1101class FMIN_W_DESC : MSA_3RF_DESC_BASE<"fmin.w", int_mips_fmin_w, 1102 NoItinerary, MSA128, MSA128>; 1103class FMIN_D_DESC : MSA_3RF_DESC_BASE<"fmin.d", int_mips_fmin_d, 1104 NoItinerary, MSA128, MSA128>; 1105 1106class FMIN_A_W_DESC : MSA_3RF_DESC_BASE<"fmin_a.w", int_mips_fmin_a_w, 1107 NoItinerary, MSA128, MSA128>; 1108class FMIN_A_D_DESC : MSA_3RF_DESC_BASE<"fmin_a.d", int_mips_fmin_a_d, 1109 NoItinerary, MSA128, MSA128>; 1110 1111class FMSUB_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.w", int_mips_fmsub_w, 1112 NoItinerary, MSA128, MSA128>; 1113class FMSUB_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.d", int_mips_fmsub_d, 1114 NoItinerary, MSA128, MSA128>; 1115 1116class FMUL_W_DESC : MSA_3RF_DESC_BASE<"fmul.w", int_mips_fmul_w, 1117 NoItinerary, MSA128, MSA128>; 1118class FMUL_D_DESC : MSA_3RF_DESC_BASE<"fmul.d", int_mips_fmul_d, 1119 NoItinerary, MSA128, MSA128>; 1120 1121class FRINT_W_DESC : MSA_2RF_DESC_BASE<"frint.w", int_mips_frint_w, 1122 NoItinerary, MSA128, MSA128>; 1123class FRINT_D_DESC : MSA_2RF_DESC_BASE<"frint.d", int_mips_frint_d, 1124 NoItinerary, MSA128, MSA128>; 1125 1126class FRCP_W_DESC : MSA_2RF_DESC_BASE<"frcp.w", int_mips_frcp_w, 1127 NoItinerary, MSA128, MSA128>; 1128class FRCP_D_DESC : MSA_2RF_DESC_BASE<"frcp.d", int_mips_frcp_d, 1129 NoItinerary, MSA128, MSA128>; 1130 1131class FRSQRT_W_DESC : MSA_2RF_DESC_BASE<"frsqrt.w", int_mips_frsqrt_w, 1132 NoItinerary, MSA128, MSA128>; 1133class FRSQRT_D_DESC : MSA_2RF_DESC_BASE<"frsqrt.d", int_mips_frsqrt_d, 1134 NoItinerary, MSA128, MSA128>; 1135 1136class FSEQ_W_DESC : MSA_3RF_DESC_BASE<"fseq.w", int_mips_fseq_w, 1137 NoItinerary, MSA128, MSA128>; 1138class FSEQ_D_DESC : MSA_3RF_DESC_BASE<"fseq.d", int_mips_fseq_d, 1139 NoItinerary, MSA128, MSA128>; 1140 1141class FSGE_W_DESC : MSA_3RF_DESC_BASE<"fsge.w", int_mips_fsge_w, 1142 NoItinerary, MSA128, MSA128>; 1143class FSGE_D_DESC : MSA_3RF_DESC_BASE<"fsge.d", int_mips_fsge_d, 1144 NoItinerary, MSA128, MSA128>; 1145 1146class FSGT_W_DESC : MSA_3RF_DESC_BASE<"fsgt.w", int_mips_fsgt_w, 1147 NoItinerary, MSA128, MSA128>; 1148class FSGT_D_DESC : MSA_3RF_DESC_BASE<"fsgt.d", int_mips_fsgt_d, 1149 NoItinerary, MSA128, MSA128>; 1150 1151class FSLE_W_DESC : MSA_3RF_DESC_BASE<"fsle.w", int_mips_fsle_w, 1152 NoItinerary, MSA128, MSA128>; 1153class FSLE_D_DESC : MSA_3RF_DESC_BASE<"fsle.d", int_mips_fsle_d, 1154 NoItinerary, MSA128, MSA128>; 1155 1156class FSLT_W_DESC : MSA_3RF_DESC_BASE<"fslt.w", int_mips_fslt_w, 1157 NoItinerary, MSA128, MSA128>; 1158class FSLT_D_DESC : MSA_3RF_DESC_BASE<"fslt.d", int_mips_fslt_d, 1159 NoItinerary, MSA128, MSA128>; 1160 1161class FSNE_W_DESC : MSA_3RF_DESC_BASE<"fsne.w", int_mips_fsne_w, 1162 NoItinerary, MSA128, MSA128>; 1163class FSNE_D_DESC : MSA_3RF_DESC_BASE<"fsne.d", int_mips_fsne_d, 1164 NoItinerary, MSA128, MSA128>; 1165 1166class FSQRT_W_DESC : MSA_2RF_DESC_BASE<"fsqrt.w", int_mips_fsqrt_w, 1167 NoItinerary, MSA128, MSA128>; 1168class FSQRT_D_DESC : MSA_2RF_DESC_BASE<"fsqrt.d", int_mips_fsqrt_d, 1169 NoItinerary, MSA128, MSA128>; 1170 1171class FSUB_W_DESC : MSA_3RF_DESC_BASE<"fsub.w", int_mips_fsub_w, 1172 NoItinerary, MSA128, MSA128>; 1173class FSUB_D_DESC : MSA_3RF_DESC_BASE<"fsub.d", int_mips_fsub_d, 1174 NoItinerary, MSA128, MSA128>; 1175 1176class FTINT_S_W_DESC : MSA_2RF_DESC_BASE<"ftint_s.w", int_mips_ftint_s_w, 1177 NoItinerary, MSA128, MSA128>; 1178class FTINT_S_D_DESC : MSA_2RF_DESC_BASE<"ftint_s.d", int_mips_ftint_s_d, 1179 NoItinerary, MSA128, MSA128>; 1180 1181class FTINT_U_W_DESC : MSA_2RF_DESC_BASE<"ftint_u.w", int_mips_ftint_u_w, 1182 NoItinerary, MSA128, MSA128>; 1183class FTINT_U_D_DESC : MSA_2RF_DESC_BASE<"ftint_u.d", int_mips_ftint_u_d, 1184 NoItinerary, MSA128, MSA128>; 1185 1186class FTQ_H_DESC : MSA_3RF_DESC_BASE<"ftq.h", int_mips_ftq_h, 1187 NoItinerary, MSA128, MSA128>; 1188class FTQ_W_DESC : MSA_3RF_DESC_BASE<"ftq.w", int_mips_ftq_w, 1189 NoItinerary, MSA128, MSA128>; 1190 1191class ILVEV_B_DESC : MSA_3R_DESC_BASE<"ilvev.b", int_mips_ilvev_b, NoItinerary, 1192 MSA128, MSA128>; 1193class ILVEV_H_DESC : MSA_3R_DESC_BASE<"ilvev.h", int_mips_ilvev_h, NoItinerary, 1194 MSA128, MSA128>; 1195class ILVEV_W_DESC : MSA_3R_DESC_BASE<"ilvev.w", int_mips_ilvev_w, NoItinerary, 1196 MSA128, MSA128>; 1197class ILVEV_D_DESC : MSA_3R_DESC_BASE<"ilvev.d", int_mips_ilvev_d, NoItinerary, 1198 MSA128, MSA128>; 1199 1200class ILVL_B_DESC : MSA_3R_DESC_BASE<"ilvl.b", int_mips_ilvl_b, NoItinerary, 1201 MSA128, MSA128>; 1202class ILVL_H_DESC : MSA_3R_DESC_BASE<"ilvl.h", int_mips_ilvl_h, NoItinerary, 1203 MSA128, MSA128>; 1204class ILVL_W_DESC : MSA_3R_DESC_BASE<"ilvl.w", int_mips_ilvl_w, NoItinerary, 1205 MSA128, MSA128>; 1206class ILVL_D_DESC : MSA_3R_DESC_BASE<"ilvl.d", int_mips_ilvl_d, NoItinerary, 1207 MSA128, MSA128>; 1208 1209class ILVOD_B_DESC : MSA_3R_DESC_BASE<"ilvod.b", int_mips_ilvod_b, NoItinerary, 1210 MSA128, MSA128>; 1211class ILVOD_H_DESC : MSA_3R_DESC_BASE<"ilvod.h", int_mips_ilvod_h, NoItinerary, 1212 MSA128, MSA128>; 1213class ILVOD_W_DESC : MSA_3R_DESC_BASE<"ilvod.w", int_mips_ilvod_w, NoItinerary, 1214 MSA128, MSA128>; 1215class ILVOD_D_DESC : MSA_3R_DESC_BASE<"ilvod.d", int_mips_ilvod_d, NoItinerary, 1216 MSA128, MSA128>; 1217 1218class ILVR_B_DESC : MSA_3R_DESC_BASE<"ilvr.b", int_mips_ilvr_b, NoItinerary, 1219 MSA128, MSA128>; 1220class ILVR_H_DESC : MSA_3R_DESC_BASE<"ilvr.h", int_mips_ilvr_h, NoItinerary, 1221 MSA128, MSA128>; 1222class ILVR_W_DESC : MSA_3R_DESC_BASE<"ilvr.w", int_mips_ilvr_w, NoItinerary, 1223 MSA128, MSA128>; 1224class ILVR_D_DESC : MSA_3R_DESC_BASE<"ilvr.d", int_mips_ilvr_d, NoItinerary, 1225 MSA128, MSA128>; 1226 1227class INSERT_B_DESC : MSA_INSERT_DESC_BASE<"insert.b", int_mips_insert_b, 1228 NoItinerary, MSA128, GPR32>; 1229class INSERT_H_DESC : MSA_INSERT_DESC_BASE<"insert.h", int_mips_insert_h, 1230 NoItinerary, MSA128, GPR32>; 1231class INSERT_W_DESC : MSA_INSERT_DESC_BASE<"insert.w", int_mips_insert_w, 1232 NoItinerary, MSA128, GPR32>; 1233 1234class LD_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 1235 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 1236 Operand MemOpnd = mem, ComplexPattern Addr = addr> { 1237 dag OutOperandList = (outs RCWD:$wd); 1238 dag InOperandList = (ins MemOpnd:$addr); 1239 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 1240 list<dag> Pattern = [(set RCWD:$wd, (TyNode (OpNode Addr:$addr)))]; 1241 InstrItinClass Itinerary = itin; 1242} 1243 1244class LD_B_DESC : LD_DESC_BASE<"ld.b", load, v16i8, NoItinerary, MSA128>; 1245class LD_H_DESC : LD_DESC_BASE<"ld.h", load, v8i16, NoItinerary, MSA128>; 1246class LD_W_DESC : LD_DESC_BASE<"ld.w", load, v4i32, NoItinerary, MSA128>; 1247class LD_D_DESC : LD_DESC_BASE<"ld.d", load, v2i64, NoItinerary, MSA128>; 1248 1249class LDI_B_DESC : MSA_I10_DESC_BASE<"ldi.b", int_mips_ldi_b, 1250 NoItinerary, MSA128>; 1251class LDI_H_DESC : MSA_I10_DESC_BASE<"ldi.h", int_mips_ldi_h, 1252 NoItinerary, MSA128>; 1253class LDI_W_DESC : MSA_I10_DESC_BASE<"ldi.w", int_mips_ldi_w, 1254 NoItinerary, MSA128>; 1255class LDI_D_DESC : MSA_I10_DESC_BASE<"ldi.d", int_mips_ldi_d, 1256 NoItinerary, MSA128>; 1257 1258class ST_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 1259 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 1260 Operand MemOpnd = mem, ComplexPattern Addr = addr> { 1261 dag OutOperandList = (outs); 1262 dag InOperandList = (ins RCWD:$wd, MemOpnd:$addr); 1263 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 1264 list<dag> Pattern = [(OpNode (TyNode RCWD:$wd), Addr:$addr)]; 1265 InstrItinClass Itinerary = itin; 1266} 1267 1268// Load/Store 1269class ST_B_DESC : ST_DESC_BASE<"st.b", store, v16i8, NoItinerary, MSA128>; 1270class ST_H_DESC : ST_DESC_BASE<"st.h", store, v8i16, NoItinerary, MSA128>; 1271class ST_W_DESC : ST_DESC_BASE<"st.w", store, v4i32, NoItinerary, MSA128>; 1272class ST_D_DESC : ST_DESC_BASE<"st.d", store, v2i64, NoItinerary, MSA128>; 1273 1274// Instruction defs. 1275def ADD_A_B : ADD_A_B_ENC, ADD_A_B_DESC, Requires<[HasMSA]>; 1276def ADD_A_H : ADD_A_H_ENC, ADD_A_H_DESC, Requires<[HasMSA]>; 1277def ADD_A_W : ADD_A_W_ENC, ADD_A_W_DESC, Requires<[HasMSA]>; 1278def ADD_A_D : ADD_A_D_ENC, ADD_A_D_DESC, Requires<[HasMSA]>; 1279 1280def ADDS_A_B : ADDS_A_B_ENC, ADDS_A_B_DESC, Requires<[HasMSA]>; 1281def ADDS_A_H : ADDS_A_H_ENC, ADDS_A_H_DESC, Requires<[HasMSA]>; 1282def ADDS_A_W : ADDS_A_W_ENC, ADDS_A_W_DESC, Requires<[HasMSA]>; 1283def ADDS_A_D : ADDS_A_D_ENC, ADDS_A_D_DESC, Requires<[HasMSA]>; 1284 1285def ADDS_S_B : ADDS_S_B_ENC, ADDS_S_B_DESC, Requires<[HasMSA]>; 1286def ADDS_S_H : ADDS_S_H_ENC, ADDS_S_H_DESC, Requires<[HasMSA]>; 1287def ADDS_S_W : ADDS_S_W_ENC, ADDS_S_W_DESC, Requires<[HasMSA]>; 1288def ADDS_S_D : ADDS_S_D_ENC, ADDS_S_D_DESC, Requires<[HasMSA]>; 1289 1290def ADDS_U_B : ADDS_U_B_ENC, ADDS_U_B_DESC, Requires<[HasMSA]>; 1291def ADDS_U_H : ADDS_U_H_ENC, ADDS_U_H_DESC, Requires<[HasMSA]>; 1292def ADDS_U_W : ADDS_U_W_ENC, ADDS_U_W_DESC, Requires<[HasMSA]>; 1293def ADDS_U_D : ADDS_U_D_ENC, ADDS_U_D_DESC, Requires<[HasMSA]>; 1294 1295def ADDV_B : ADDV_B_ENC, ADDV_B_DESC, Requires<[HasMSA]>; 1296def ADDV_H : ADDV_H_ENC, ADDV_H_DESC, Requires<[HasMSA]>; 1297def ADDV_W : ADDV_W_ENC, ADDV_W_DESC, Requires<[HasMSA]>; 1298def ADDV_D : ADDV_D_ENC, ADDV_D_DESC, Requires<[HasMSA]>; 1299 1300def ADDVI_B : ADDVI_B_ENC, ADDVI_B_DESC, Requires<[HasMSA]>; 1301def ADDVI_H : ADDVI_H_ENC, ADDVI_H_DESC, Requires<[HasMSA]>; 1302def ADDVI_W : ADDVI_W_ENC, ADDVI_W_DESC, Requires<[HasMSA]>; 1303def ADDVI_D : ADDVI_D_ENC, ADDVI_D_DESC, Requires<[HasMSA]>; 1304 1305def ANDI_B : ANDI_B_ENC, ANDI_B_DESC, Requires<[HasMSA]>; 1306 1307def ASUB_S_B : ASUB_S_B_ENC, ASUB_S_B_DESC, Requires<[HasMSA]>; 1308def ASUB_S_H : ASUB_S_H_ENC, ASUB_S_H_DESC, Requires<[HasMSA]>; 1309def ASUB_S_W : ASUB_S_W_ENC, ASUB_S_W_DESC, Requires<[HasMSA]>; 1310def ASUB_S_D : ASUB_S_D_ENC, ASUB_S_D_DESC, Requires<[HasMSA]>; 1311 1312def ASUB_U_B : ASUB_U_B_ENC, ASUB_U_B_DESC, Requires<[HasMSA]>; 1313def ASUB_U_H : ASUB_U_H_ENC, ASUB_U_H_DESC, Requires<[HasMSA]>; 1314def ASUB_U_W : ASUB_U_W_ENC, ASUB_U_W_DESC, Requires<[HasMSA]>; 1315def ASUB_U_D : ASUB_U_D_ENC, ASUB_U_D_DESC, Requires<[HasMSA]>; 1316 1317def AVE_S_B : AVE_S_B_ENC, AVE_S_B_DESC, Requires<[HasMSA]>; 1318def AVE_S_H : AVE_S_H_ENC, AVE_S_H_DESC, Requires<[HasMSA]>; 1319def AVE_S_W : AVE_S_W_ENC, AVE_S_W_DESC, Requires<[HasMSA]>; 1320def AVE_S_D : AVE_S_D_ENC, AVE_S_D_DESC, Requires<[HasMSA]>; 1321 1322def AVE_U_B : AVE_U_B_ENC, AVE_U_B_DESC, Requires<[HasMSA]>; 1323def AVE_U_H : AVE_U_H_ENC, AVE_U_H_DESC, Requires<[HasMSA]>; 1324def AVE_U_W : AVE_U_W_ENC, AVE_U_W_DESC, Requires<[HasMSA]>; 1325def AVE_U_D : AVE_U_D_ENC, AVE_U_D_DESC, Requires<[HasMSA]>; 1326 1327def AVER_S_B : AVER_S_B_ENC, AVER_S_B_DESC, Requires<[HasMSA]>; 1328def AVER_S_H : AVER_S_H_ENC, AVER_S_H_DESC, Requires<[HasMSA]>; 1329def AVER_S_W : AVER_S_W_ENC, AVER_S_W_DESC, Requires<[HasMSA]>; 1330def AVER_S_D : AVER_S_D_ENC, AVER_S_D_DESC, Requires<[HasMSA]>; 1331 1332def AVER_U_B : AVER_U_B_ENC, AVER_U_B_DESC, Requires<[HasMSA]>; 1333def AVER_U_H : AVER_U_H_ENC, AVER_U_H_DESC, Requires<[HasMSA]>; 1334def AVER_U_W : AVER_U_W_ENC, AVER_U_W_DESC, Requires<[HasMSA]>; 1335def AVER_U_D : AVER_U_D_ENC, AVER_U_D_DESC, Requires<[HasMSA]>; 1336 1337def BCLR_B : BCLR_B_ENC, BCLR_B_DESC, Requires<[HasMSA]>; 1338def BCLR_H : BCLR_H_ENC, BCLR_H_DESC, Requires<[HasMSA]>; 1339def BCLR_W : BCLR_W_ENC, BCLR_W_DESC, Requires<[HasMSA]>; 1340def BCLR_D : BCLR_D_ENC, BCLR_D_DESC, Requires<[HasMSA]>; 1341 1342def BCLRI_B : BCLRI_B_ENC, BCLRI_B_DESC, Requires<[HasMSA]>; 1343def BCLRI_H : BCLRI_H_ENC, BCLRI_H_DESC, Requires<[HasMSA]>; 1344def BCLRI_W : BCLRI_W_ENC, BCLRI_W_DESC, Requires<[HasMSA]>; 1345def BCLRI_D : BCLRI_D_ENC, BCLRI_D_DESC, Requires<[HasMSA]>; 1346 1347def BINSL_B : BINSL_B_ENC, BINSL_B_DESC, Requires<[HasMSA]>; 1348def BINSL_H : BINSL_H_ENC, BINSL_H_DESC, Requires<[HasMSA]>; 1349def BINSL_W : BINSL_W_ENC, BINSL_W_DESC, Requires<[HasMSA]>; 1350def BINSL_D : BINSL_D_ENC, BINSL_D_DESC, Requires<[HasMSA]>; 1351 1352def BINSLI_B : BINSLI_B_ENC, BINSLI_B_DESC, Requires<[HasMSA]>; 1353def BINSLI_H : BINSLI_H_ENC, BINSLI_H_DESC, Requires<[HasMSA]>; 1354def BINSLI_W : BINSLI_W_ENC, BINSLI_W_DESC, Requires<[HasMSA]>; 1355def BINSLI_D : BINSLI_D_ENC, BINSLI_D_DESC, Requires<[HasMSA]>; 1356 1357def BINSR_B : BINSR_B_ENC, BINSR_B_DESC, Requires<[HasMSA]>; 1358def BINSR_H : BINSR_H_ENC, BINSR_H_DESC, Requires<[HasMSA]>; 1359def BINSR_W : BINSR_W_ENC, BINSR_W_DESC, Requires<[HasMSA]>; 1360def BINSR_D : BINSR_D_ENC, BINSR_D_DESC, Requires<[HasMSA]>; 1361 1362def BINSRI_B : BINSRI_B_ENC, BINSRI_B_DESC, Requires<[HasMSA]>; 1363def BINSRI_H : BINSRI_H_ENC, BINSRI_H_DESC, Requires<[HasMSA]>; 1364def BINSRI_W : BINSRI_W_ENC, BINSRI_W_DESC, Requires<[HasMSA]>; 1365def BINSRI_D : BINSRI_D_ENC, BINSRI_D_DESC, Requires<[HasMSA]>; 1366 1367def BMNZI_B : BMNZI_B_ENC, BMNZI_B_DESC, Requires<[HasMSA]>; 1368 1369def BMZI_B : BMZI_B_ENC, BMZI_B_DESC, Requires<[HasMSA]>; 1370 1371def BNEG_B : BNEG_B_ENC, BNEG_B_DESC, Requires<[HasMSA]>; 1372def BNEG_H : BNEG_H_ENC, BNEG_H_DESC, Requires<[HasMSA]>; 1373def BNEG_W : BNEG_W_ENC, BNEG_W_DESC, Requires<[HasMSA]>; 1374def BNEG_D : BNEG_D_ENC, BNEG_D_DESC, Requires<[HasMSA]>; 1375 1376def BNEGI_B : BNEGI_B_ENC, BNEGI_B_DESC, Requires<[HasMSA]>; 1377def BNEGI_H : BNEGI_H_ENC, BNEGI_H_DESC, Requires<[HasMSA]>; 1378def BNEGI_W : BNEGI_W_ENC, BNEGI_W_DESC, Requires<[HasMSA]>; 1379def BNEGI_D : BNEGI_D_ENC, BNEGI_D_DESC, Requires<[HasMSA]>; 1380 1381def BSELI_B : BSELI_B_ENC, BSELI_B_DESC, Requires<[HasMSA]>; 1382 1383def BSET_B : BSET_B_ENC, BSET_B_DESC, Requires<[HasMSA]>; 1384def BSET_H : BSET_H_ENC, BSET_H_DESC, Requires<[HasMSA]>; 1385def BSET_W : BSET_W_ENC, BSET_W_DESC, Requires<[HasMSA]>; 1386def BSET_D : BSET_D_ENC, BSET_D_DESC, Requires<[HasMSA]>; 1387 1388def BSETI_B : BSETI_B_ENC, BSETI_B_DESC, Requires<[HasMSA]>; 1389def BSETI_H : BSETI_H_ENC, BSETI_H_DESC, Requires<[HasMSA]>; 1390def BSETI_W : BSETI_W_ENC, BSETI_W_DESC, Requires<[HasMSA]>; 1391def BSETI_D : BSETI_D_ENC, BSETI_D_DESC, Requires<[HasMSA]>; 1392 1393def CEQ_B : CEQ_B_ENC, CEQ_B_DESC, Requires<[HasMSA]>; 1394def CEQ_H : CEQ_H_ENC, CEQ_H_DESC, Requires<[HasMSA]>; 1395def CEQ_W : CEQ_W_ENC, CEQ_W_DESC, Requires<[HasMSA]>; 1396def CEQ_D : CEQ_D_ENC, CEQ_D_DESC, Requires<[HasMSA]>; 1397 1398def CEQI_B : CEQI_B_ENC, CEQI_B_DESC, Requires<[HasMSA]>; 1399def CEQI_H : CEQI_H_ENC, CEQI_H_DESC, Requires<[HasMSA]>; 1400def CEQI_W : CEQI_W_ENC, CEQI_W_DESC, Requires<[HasMSA]>; 1401def CEQI_D : CEQI_D_ENC, CEQI_D_DESC, Requires<[HasMSA]>; 1402 1403def CLE_S_B : CLE_S_B_ENC, CLE_S_B_DESC, Requires<[HasMSA]>; 1404def CLE_S_H : CLE_S_H_ENC, CLE_S_H_DESC, Requires<[HasMSA]>; 1405def CLE_S_W : CLE_S_W_ENC, CLE_S_W_DESC, Requires<[HasMSA]>; 1406def CLE_S_D : CLE_S_D_ENC, CLE_S_D_DESC, Requires<[HasMSA]>; 1407 1408def CLE_U_B : CLE_U_B_ENC, CLE_U_B_DESC, Requires<[HasMSA]>; 1409def CLE_U_H : CLE_U_H_ENC, CLE_U_H_DESC, Requires<[HasMSA]>; 1410def CLE_U_W : CLE_U_W_ENC, CLE_U_W_DESC, Requires<[HasMSA]>; 1411def CLE_U_D : CLE_U_D_ENC, CLE_U_D_DESC, Requires<[HasMSA]>; 1412 1413def CLEI_S_B : CLEI_S_B_ENC, CLEI_S_B_DESC, Requires<[HasMSA]>; 1414def CLEI_S_H : CLEI_S_H_ENC, CLEI_S_H_DESC, Requires<[HasMSA]>; 1415def CLEI_S_W : CLEI_S_W_ENC, CLEI_S_W_DESC, Requires<[HasMSA]>; 1416def CLEI_S_D : CLEI_S_D_ENC, CLEI_S_D_DESC, Requires<[HasMSA]>; 1417 1418def CLEI_U_B : CLEI_U_B_ENC, CLEI_U_B_DESC, Requires<[HasMSA]>; 1419def CLEI_U_H : CLEI_U_H_ENC, CLEI_U_H_DESC, Requires<[HasMSA]>; 1420def CLEI_U_W : CLEI_U_W_ENC, CLEI_U_W_DESC, Requires<[HasMSA]>; 1421def CLEI_U_D : CLEI_U_D_ENC, CLEI_U_D_DESC, Requires<[HasMSA]>; 1422 1423def CLT_S_B : CLT_S_B_ENC, CLT_S_B_DESC, Requires<[HasMSA]>; 1424def CLT_S_H : CLT_S_H_ENC, CLT_S_H_DESC, Requires<[HasMSA]>; 1425def CLT_S_W : CLT_S_W_ENC, CLT_S_W_DESC, Requires<[HasMSA]>; 1426def CLT_S_D : CLT_S_D_ENC, CLT_S_D_DESC, Requires<[HasMSA]>; 1427 1428def CLT_U_B : CLT_U_B_ENC, CLT_U_B_DESC, Requires<[HasMSA]>; 1429def CLT_U_H : CLT_U_H_ENC, CLT_U_H_DESC, Requires<[HasMSA]>; 1430def CLT_U_W : CLT_U_W_ENC, CLT_U_W_DESC, Requires<[HasMSA]>; 1431def CLT_U_D : CLT_U_D_ENC, CLT_U_D_DESC, Requires<[HasMSA]>; 1432 1433def CLTI_S_B : CLTI_S_B_ENC, CLTI_S_B_DESC, Requires<[HasMSA]>; 1434def CLTI_S_H : CLTI_S_H_ENC, CLTI_S_H_DESC, Requires<[HasMSA]>; 1435def CLTI_S_W : CLTI_S_W_ENC, CLTI_S_W_DESC, Requires<[HasMSA]>; 1436def CLTI_S_D : CLTI_S_D_ENC, CLTI_S_D_DESC, Requires<[HasMSA]>; 1437 1438def CLTI_U_B : CLTI_U_B_ENC, CLTI_U_B_DESC, Requires<[HasMSA]>; 1439def CLTI_U_H : CLTI_U_H_ENC, CLTI_U_H_DESC, Requires<[HasMSA]>; 1440def CLTI_U_W : CLTI_U_W_ENC, CLTI_U_W_DESC, Requires<[HasMSA]>; 1441def CLTI_U_D : CLTI_U_D_ENC, CLTI_U_D_DESC, Requires<[HasMSA]>; 1442 1443def COPY_S_B : COPY_S_B_ENC, COPY_S_B_DESC, Requires<[HasMSA]>; 1444def COPY_S_H : COPY_S_H_ENC, COPY_S_H_DESC, Requires<[HasMSA]>; 1445def COPY_S_W : COPY_S_W_ENC, COPY_S_W_DESC, Requires<[HasMSA]>; 1446 1447def COPY_U_B : COPY_U_B_ENC, COPY_U_B_DESC, Requires<[HasMSA]>; 1448def COPY_U_H : COPY_U_H_ENC, COPY_U_H_DESC, Requires<[HasMSA]>; 1449def COPY_U_W : COPY_U_W_ENC, COPY_U_W_DESC, Requires<[HasMSA]>; 1450 1451def DIV_S_B : DIV_S_B_ENC, DIV_S_B_DESC, Requires<[HasMSA]>; 1452def DIV_S_H : DIV_S_H_ENC, DIV_S_H_DESC, Requires<[HasMSA]>; 1453def DIV_S_W : DIV_S_W_ENC, DIV_S_W_DESC, Requires<[HasMSA]>; 1454def DIV_S_D : DIV_S_D_ENC, DIV_S_D_DESC, Requires<[HasMSA]>; 1455 1456def DIV_U_B : DIV_U_B_ENC, DIV_U_B_DESC, Requires<[HasMSA]>; 1457def DIV_U_H : DIV_U_H_ENC, DIV_U_H_DESC, Requires<[HasMSA]>; 1458def DIV_U_W : DIV_U_W_ENC, DIV_U_W_DESC, Requires<[HasMSA]>; 1459def DIV_U_D : DIV_U_D_ENC, DIV_U_D_DESC, Requires<[HasMSA]>; 1460 1461def DOTP_S_B : DOTP_S_B_ENC, DOTP_S_B_DESC, Requires<[HasMSA]>; 1462def DOTP_S_H : DOTP_S_H_ENC, DOTP_S_H_DESC, Requires<[HasMSA]>; 1463def DOTP_S_W : DOTP_S_W_ENC, DOTP_S_W_DESC, Requires<[HasMSA]>; 1464def DOTP_S_D : DOTP_S_D_ENC, DOTP_S_D_DESC, Requires<[HasMSA]>; 1465 1466def DOTP_U_B : DOTP_U_B_ENC, DOTP_U_B_DESC, Requires<[HasMSA]>; 1467def DOTP_U_H : DOTP_U_H_ENC, DOTP_U_H_DESC, Requires<[HasMSA]>; 1468def DOTP_U_W : DOTP_U_W_ENC, DOTP_U_W_DESC, Requires<[HasMSA]>; 1469def DOTP_U_D : DOTP_U_D_ENC, DOTP_U_D_DESC, Requires<[HasMSA]>; 1470 1471def DPADD_S_H : DPADD_S_H_ENC, DPADD_S_H_DESC, Requires<[HasMSA]>; 1472def DPADD_S_W : DPADD_S_W_ENC, DPADD_S_W_DESC, Requires<[HasMSA]>; 1473def DPADD_S_D : DPADD_S_D_ENC, DPADD_S_D_DESC, Requires<[HasMSA]>; 1474 1475def DPADD_U_H : DPADD_U_H_ENC, DPADD_U_H_DESC, Requires<[HasMSA]>; 1476def DPADD_U_W : DPADD_U_W_ENC, DPADD_U_W_DESC, Requires<[HasMSA]>; 1477def DPADD_U_D : DPADD_U_D_ENC, DPADD_U_D_DESC, Requires<[HasMSA]>; 1478 1479def DPSUB_S_H : DPSUB_S_H_ENC, DPSUB_S_H_DESC, Requires<[HasMSA]>; 1480def DPSUB_S_W : DPSUB_S_W_ENC, DPSUB_S_W_DESC, Requires<[HasMSA]>; 1481def DPSUB_S_D : DPSUB_S_D_ENC, DPSUB_S_D_DESC, Requires<[HasMSA]>; 1482 1483def DPSUB_U_H : DPSUB_U_H_ENC, DPSUB_U_H_DESC, Requires<[HasMSA]>; 1484def DPSUB_U_W : DPSUB_U_W_ENC, DPSUB_U_W_DESC, Requires<[HasMSA]>; 1485def DPSUB_U_D : DPSUB_U_D_ENC, DPSUB_U_D_DESC, Requires<[HasMSA]>; 1486 1487def FADD_W : FADD_W_ENC, FADD_W_DESC, Requires<[HasMSA]>; 1488def FADD_D : FADD_D_ENC, FADD_D_DESC, Requires<[HasMSA]>; 1489 1490def FCEQ_W : FCEQ_W_ENC, FCEQ_W_DESC, Requires<[HasMSA]>; 1491def FCEQ_D : FCEQ_D_ENC, FCEQ_D_DESC, Requires<[HasMSA]>; 1492 1493def FCLE_W : FCLE_W_ENC, FCLE_W_DESC, Requires<[HasMSA]>; 1494def FCLE_D : FCLE_D_ENC, FCLE_D_DESC, Requires<[HasMSA]>; 1495 1496def FCLT_W : FCLT_W_ENC, FCLT_W_DESC, Requires<[HasMSA]>; 1497def FCLT_D : FCLT_D_ENC, FCLT_D_DESC, Requires<[HasMSA]>; 1498 1499def FCLASS_W : FCLASS_W_ENC, FCLASS_W_DESC, Requires<[HasMSA]>; 1500def FCLASS_D : FCLASS_D_ENC, FCLASS_D_DESC, Requires<[HasMSA]>; 1501 1502def FCGE_W : FCGE_W_ENC, FCGE_W_DESC, Requires<[HasMSA]>; 1503def FCGE_D : FCGE_D_ENC, FCGE_D_DESC, Requires<[HasMSA]>; 1504 1505def FCGT_W : FCGT_W_ENC, FCGT_W_DESC, Requires<[HasMSA]>; 1506def FCGT_D : FCGT_D_ENC, FCGT_D_DESC, Requires<[HasMSA]>; 1507 1508def FCNE_W : FCNE_W_ENC, FCNE_W_DESC, Requires<[HasMSA]>; 1509def FCNE_D : FCNE_D_ENC, FCNE_D_DESC, Requires<[HasMSA]>; 1510 1511def FCUN_W : FCUN_W_ENC, FCUN_W_DESC, Requires<[HasMSA]>; 1512def FCUN_D : FCUN_D_ENC, FCUN_D_DESC, Requires<[HasMSA]>; 1513 1514def FDIV_W : FDIV_W_ENC, FDIV_W_DESC, Requires<[HasMSA]>; 1515def FDIV_D : FDIV_D_ENC, FDIV_D_DESC, Requires<[HasMSA]>; 1516 1517def FEXDO_H : FEXDO_H_ENC, FEXDO_H_DESC, Requires<[HasMSA]>; 1518def FEXDO_W : FEXDO_W_ENC, FEXDO_W_DESC, Requires<[HasMSA]>; 1519 1520def FEXP2_W : FEXP2_W_ENC, FEXP2_W_DESC, Requires<[HasMSA]>; 1521def FEXP2_D : FEXP2_D_ENC, FEXP2_D_DESC, Requires<[HasMSA]>; 1522 1523def FEXUPL_W : FEXUPL_W_ENC, FEXUPL_W_DESC, Requires<[HasMSA]>; 1524def FEXUPL_D : FEXUPL_D_ENC, FEXUPL_D_DESC, Requires<[HasMSA]>; 1525 1526def FEXUPR_W : FEXUPR_W_ENC, FEXUPR_W_DESC, Requires<[HasMSA]>; 1527def FEXUPR_D : FEXUPR_D_ENC, FEXUPR_D_DESC, Requires<[HasMSA]>; 1528 1529def FFINT_S_W : FFINT_S_W_ENC, FFINT_S_W_DESC, Requires<[HasMSA]>; 1530def FFINT_S_D : FFINT_S_D_ENC, FFINT_S_D_DESC, Requires<[HasMSA]>; 1531 1532def FFINT_U_W : FFINT_U_W_ENC, FFINT_U_W_DESC, Requires<[HasMSA]>; 1533def FFINT_U_D : FFINT_U_D_ENC, FFINT_U_D_DESC, Requires<[HasMSA]>; 1534 1535def FFQL_W : FFQL_W_ENC, FFQL_W_DESC, Requires<[HasMSA]>; 1536def FFQL_D : FFQL_D_ENC, FFQL_D_DESC, Requires<[HasMSA]>; 1537 1538def FFQR_W : FFQR_W_ENC, FFQR_W_DESC, Requires<[HasMSA]>; 1539def FFQR_D : FFQR_D_ENC, FFQR_D_DESC, Requires<[HasMSA]>; 1540 1541def FILL_B : FILL_B_ENC, FILL_B_DESC, Requires<[HasMSA]>; 1542def FILL_H : FILL_H_ENC, FILL_H_DESC, Requires<[HasMSA]>; 1543def FILL_W : FILL_W_ENC, FILL_W_DESC, Requires<[HasMSA]>; 1544 1545def FLOG2_W : FLOG2_W_ENC, FLOG2_W_DESC, Requires<[HasMSA]>; 1546def FLOG2_D : FLOG2_D_ENC, FLOG2_D_DESC, Requires<[HasMSA]>; 1547 1548def FMADD_W : FMADD_W_ENC, FMADD_W_DESC, Requires<[HasMSA]>; 1549def FMADD_D : FMADD_D_ENC, FMADD_D_DESC, Requires<[HasMSA]>; 1550 1551def FMAX_W : FMAX_W_ENC, FMAX_W_DESC, Requires<[HasMSA]>; 1552def FMAX_D : FMAX_D_ENC, FMAX_D_DESC, Requires<[HasMSA]>; 1553 1554def FMAX_A_W : FMAX_A_W_ENC, FMAX_A_W_DESC, Requires<[HasMSA]>; 1555def FMAX_A_D : FMAX_A_D_ENC, FMAX_A_D_DESC, Requires<[HasMSA]>; 1556 1557def FMIN_W : FMIN_W_ENC, FMIN_W_DESC, Requires<[HasMSA]>; 1558def FMIN_D : FMIN_D_ENC, FMIN_D_DESC, Requires<[HasMSA]>; 1559 1560def FMIN_A_W : FMIN_A_W_ENC, FMIN_A_W_DESC, Requires<[HasMSA]>; 1561def FMIN_A_D : FMIN_A_D_ENC, FMIN_A_D_DESC, Requires<[HasMSA]>; 1562 1563def FMSUB_W : FMSUB_W_ENC, FMSUB_W_DESC, Requires<[HasMSA]>; 1564def FMSUB_D : FMSUB_D_ENC, FMSUB_D_DESC, Requires<[HasMSA]>; 1565 1566def FMUL_W : FMUL_W_ENC, FMUL_W_DESC, Requires<[HasMSA]>; 1567def FMUL_D : FMUL_D_ENC, FMUL_D_DESC, Requires<[HasMSA]>; 1568 1569def FRINT_W : FRINT_W_ENC, FRINT_W_DESC, Requires<[HasMSA]>; 1570def FRINT_D : FRINT_D_ENC, FRINT_D_DESC, Requires<[HasMSA]>; 1571 1572def FRCP_W : FRCP_W_ENC, FRCP_W_DESC, Requires<[HasMSA]>; 1573def FRCP_D : FRCP_D_ENC, FRCP_D_DESC, Requires<[HasMSA]>; 1574 1575def FRSQRT_W : FRSQRT_W_ENC, FRSQRT_W_DESC, Requires<[HasMSA]>; 1576def FRSQRT_D : FRSQRT_D_ENC, FRSQRT_D_DESC, Requires<[HasMSA]>; 1577 1578def FSEQ_W : FSEQ_W_ENC, FSEQ_W_DESC, Requires<[HasMSA]>; 1579def FSEQ_D : FSEQ_D_ENC, FSEQ_D_DESC, Requires<[HasMSA]>; 1580 1581def FSLE_W : FSLE_W_ENC, FSLE_W_DESC, Requires<[HasMSA]>; 1582def FSLE_D : FSLE_D_ENC, FSLE_D_DESC, Requires<[HasMSA]>; 1583 1584def FSLT_W : FSLT_W_ENC, FSLT_W_DESC, Requires<[HasMSA]>; 1585def FSLT_D : FSLT_D_ENC, FSLT_D_DESC, Requires<[HasMSA]>; 1586 1587def FSGE_W : FSGE_W_ENC, FSGE_W_DESC, Requires<[HasMSA]>; 1588def FSGE_D : FSGE_D_ENC, FSGE_D_DESC, Requires<[HasMSA]>; 1589 1590def FSGT_W : FSGT_W_ENC, FSGT_W_DESC, Requires<[HasMSA]>; 1591def FSGT_D : FSGT_D_ENC, FSGT_D_DESC, Requires<[HasMSA]>; 1592 1593def FSNE_W : FSNE_W_ENC, FSNE_W_DESC, Requires<[HasMSA]>; 1594def FSNE_D : FSNE_D_ENC, FSNE_D_DESC, Requires<[HasMSA]>; 1595 1596def FSQRT_W : FSQRT_W_ENC, FSQRT_W_DESC, Requires<[HasMSA]>; 1597def FSQRT_D : FSQRT_D_ENC, FSQRT_D_DESC, Requires<[HasMSA]>; 1598 1599def FSUB_W : FSUB_W_ENC, FSUB_W_DESC, Requires<[HasMSA]>; 1600def FSUB_D : FSUB_D_ENC, FSUB_D_DESC, Requires<[HasMSA]>; 1601 1602def FTINT_S_W : FTINT_S_W_ENC, FTINT_S_W_DESC, Requires<[HasMSA]>; 1603def FTINT_S_D : FTINT_S_D_ENC, FTINT_S_D_DESC, Requires<[HasMSA]>; 1604 1605def FTINT_U_W : FTINT_U_W_ENC, FTINT_U_W_DESC, Requires<[HasMSA]>; 1606def FTINT_U_D : FTINT_U_D_ENC, FTINT_U_D_DESC, Requires<[HasMSA]>; 1607 1608def FTQ_H : FTQ_H_ENC, FTQ_H_DESC, Requires<[HasMSA]>; 1609def FTQ_W : FTQ_W_ENC, FTQ_W_DESC, Requires<[HasMSA]>; 1610 1611def ILVEV_B : ILVEV_B_ENC, ILVEV_B_DESC, Requires<[HasMSA]>; 1612def ILVEV_H : ILVEV_H_ENC, ILVEV_H_DESC, Requires<[HasMSA]>; 1613def ILVEV_W : ILVEV_W_ENC, ILVEV_W_DESC, Requires<[HasMSA]>; 1614def ILVEV_D : ILVEV_D_ENC, ILVEV_D_DESC, Requires<[HasMSA]>; 1615 1616def ILVL_B : ILVL_B_ENC, ILVL_B_DESC, Requires<[HasMSA]>; 1617def ILVL_H : ILVL_H_ENC, ILVL_H_DESC, Requires<[HasMSA]>; 1618def ILVL_W : ILVL_W_ENC, ILVL_W_DESC, Requires<[HasMSA]>; 1619def ILVL_D : ILVL_D_ENC, ILVL_D_DESC, Requires<[HasMSA]>; 1620 1621def ILVOD_B : ILVOD_B_ENC, ILVOD_B_DESC, Requires<[HasMSA]>; 1622def ILVOD_H : ILVOD_H_ENC, ILVOD_H_DESC, Requires<[HasMSA]>; 1623def ILVOD_W : ILVOD_W_ENC, ILVOD_W_DESC, Requires<[HasMSA]>; 1624def ILVOD_D : ILVOD_D_ENC, ILVOD_D_DESC, Requires<[HasMSA]>; 1625 1626def ILVR_B : ILVR_B_ENC, ILVR_B_DESC, Requires<[HasMSA]>; 1627def ILVR_H : ILVR_H_ENC, ILVR_H_DESC, Requires<[HasMSA]>; 1628def ILVR_W : ILVR_W_ENC, ILVR_W_DESC, Requires<[HasMSA]>; 1629def ILVR_D : ILVR_D_ENC, ILVR_D_DESC, Requires<[HasMSA]>; 1630 1631def INSERT_B : INSERT_B_ENC, INSERT_B_DESC, Requires<[HasMSA]>; 1632def INSERT_H : INSERT_H_ENC, INSERT_H_DESC, Requires<[HasMSA]>; 1633def INSERT_W : INSERT_W_ENC, INSERT_W_DESC, Requires<[HasMSA]>; 1634 1635def LD_B: LD_B_ENC, LD_B_DESC, Requires<[HasMSA]>; 1636def LD_H: LD_H_ENC, LD_H_DESC, Requires<[HasMSA]>; 1637def LD_W: LD_W_ENC, LD_W_DESC, Requires<[HasMSA]>; 1638def LD_D: LD_D_ENC, LD_D_DESC, Requires<[HasMSA]>; 1639 1640def LDI_B : LDI_B_ENC, LDI_B_DESC, Requires<[HasMSA]>; 1641def LDI_H : LDI_H_ENC, LDI_H_DESC, Requires<[HasMSA]>; 1642def LDI_W : LDI_W_ENC, LDI_W_DESC, Requires<[HasMSA]>; 1643 1644def ST_B: ST_B_ENC, ST_B_DESC, Requires<[HasMSA]>; 1645def ST_H: ST_H_ENC, ST_H_DESC, Requires<[HasMSA]>; 1646def ST_W: ST_W_ENC, ST_W_DESC, Requires<[HasMSA]>; 1647def ST_D: ST_D_ENC, ST_D_DESC, Requires<[HasMSA]>; 1648 1649// Patterns. 1650class MSAPat<dag pattern, dag result, Predicate pred = HasMSA> : 1651 Pat<pattern, result>, Requires<[pred]>; 1652 1653def LD_FH : MSAPat<(v8f16 (load addr:$addr)), 1654 (LD_H addr:$addr)>; 1655def LD_FW : MSAPat<(v4f32 (load addr:$addr)), 1656 (LD_W addr:$addr)>; 1657def LD_FD : MSAPat<(v2f64 (load addr:$addr)), 1658 (LD_D addr:$addr)>; 1659 1660def ST_FH : MSAPat<(store (v8f16 MSA128:$ws), addr:$addr), 1661 (ST_H MSA128:$ws, addr:$addr)>; 1662def ST_FW : MSAPat<(store (v4f32 MSA128:$ws), addr:$addr), 1663 (ST_W MSA128:$ws, addr:$addr)>; 1664def ST_FD : MSAPat<(store (v2f64 MSA128:$ws), addr:$addr), 1665 (ST_D MSA128:$ws, addr:$addr)>; 1666