inst.go raw

   1  // Code generated by parse_opcodes -go; DO NOT EDIT.
   2  
   3  package riscv
   4  
   5  import "github.com/twitchyliquid64/golang-asm/obj"
   6  
   7  type inst struct {
   8  	opcode uint32
   9  	funct3 uint32
  10  	rs2    uint32
  11  	csr    int64
  12  	funct7 uint32
  13  }
  14  
  15  func encode(a obj.As) *inst {
  16  	switch a {
  17  	case ABEQ:
  18  		return &inst{0x63, 0x0, 0x0, 0, 0x0}
  19  	case ABNE:
  20  		return &inst{0x63, 0x1, 0x0, 0, 0x0}
  21  	case ABLT:
  22  		return &inst{0x63, 0x4, 0x0, 0, 0x0}
  23  	case ABGE:
  24  		return &inst{0x63, 0x5, 0x0, 0, 0x0}
  25  	case ABLTU:
  26  		return &inst{0x63, 0x6, 0x0, 0, 0x0}
  27  	case ABGEU:
  28  		return &inst{0x63, 0x7, 0x0, 0, 0x0}
  29  	case AJALR:
  30  		return &inst{0x67, 0x0, 0x0, 0, 0x0}
  31  	case AJAL:
  32  		return &inst{0x6f, 0x0, 0x0, 0, 0x0}
  33  	case ALUI:
  34  		return &inst{0x37, 0x0, 0x0, 0, 0x0}
  35  	case AAUIPC:
  36  		return &inst{0x17, 0x0, 0x0, 0, 0x0}
  37  	case AADDI:
  38  		return &inst{0x13, 0x0, 0x0, 0, 0x0}
  39  	case ASLLI:
  40  		return &inst{0x13, 0x1, 0x0, 0, 0x0}
  41  	case ASLTI:
  42  		return &inst{0x13, 0x2, 0x0, 0, 0x0}
  43  	case ASLTIU:
  44  		return &inst{0x13, 0x3, 0x0, 0, 0x0}
  45  	case AXORI:
  46  		return &inst{0x13, 0x4, 0x0, 0, 0x0}
  47  	case ASRLI:
  48  		return &inst{0x13, 0x5, 0x0, 0, 0x0}
  49  	case ASRAI:
  50  		return &inst{0x13, 0x5, 0x0, 1024, 0x20}
  51  	case AORI:
  52  		return &inst{0x13, 0x6, 0x0, 0, 0x0}
  53  	case AANDI:
  54  		return &inst{0x13, 0x7, 0x0, 0, 0x0}
  55  	case AADD:
  56  		return &inst{0x33, 0x0, 0x0, 0, 0x0}
  57  	case ASUB:
  58  		return &inst{0x33, 0x0, 0x0, 1024, 0x20}
  59  	case ASLL:
  60  		return &inst{0x33, 0x1, 0x0, 0, 0x0}
  61  	case ASLT:
  62  		return &inst{0x33, 0x2, 0x0, 0, 0x0}
  63  	case ASLTU:
  64  		return &inst{0x33, 0x3, 0x0, 0, 0x0}
  65  	case AXOR:
  66  		return &inst{0x33, 0x4, 0x0, 0, 0x0}
  67  	case ASRL:
  68  		return &inst{0x33, 0x5, 0x0, 0, 0x0}
  69  	case ASRA:
  70  		return &inst{0x33, 0x5, 0x0, 1024, 0x20}
  71  	case AOR:
  72  		return &inst{0x33, 0x6, 0x0, 0, 0x0}
  73  	case AAND:
  74  		return &inst{0x33, 0x7, 0x0, 0, 0x0}
  75  	case AADDIW:
  76  		return &inst{0x1b, 0x0, 0x0, 0, 0x0}
  77  	case ASLLIW:
  78  		return &inst{0x1b, 0x1, 0x0, 0, 0x0}
  79  	case ASRLIW:
  80  		return &inst{0x1b, 0x5, 0x0, 0, 0x0}
  81  	case ASRAIW:
  82  		return &inst{0x1b, 0x5, 0x0, 1024, 0x20}
  83  	case AADDW:
  84  		return &inst{0x3b, 0x0, 0x0, 0, 0x0}
  85  	case ASUBW:
  86  		return &inst{0x3b, 0x0, 0x0, 1024, 0x20}
  87  	case ASLLW:
  88  		return &inst{0x3b, 0x1, 0x0, 0, 0x0}
  89  	case ASRLW:
  90  		return &inst{0x3b, 0x5, 0x0, 0, 0x0}
  91  	case ASRAW:
  92  		return &inst{0x3b, 0x5, 0x0, 1024, 0x20}
  93  	case ALB:
  94  		return &inst{0x3, 0x0, 0x0, 0, 0x0}
  95  	case ALH:
  96  		return &inst{0x3, 0x1, 0x0, 0, 0x0}
  97  	case ALW:
  98  		return &inst{0x3, 0x2, 0x0, 0, 0x0}
  99  	case ALD:
 100  		return &inst{0x3, 0x3, 0x0, 0, 0x0}
 101  	case ALBU:
 102  		return &inst{0x3, 0x4, 0x0, 0, 0x0}
 103  	case ALHU:
 104  		return &inst{0x3, 0x5, 0x0, 0, 0x0}
 105  	case ALWU:
 106  		return &inst{0x3, 0x6, 0x0, 0, 0x0}
 107  	case ASB:
 108  		return &inst{0x23, 0x0, 0x0, 0, 0x0}
 109  	case ASH:
 110  		return &inst{0x23, 0x1, 0x0, 0, 0x0}
 111  	case ASW:
 112  		return &inst{0x23, 0x2, 0x0, 0, 0x0}
 113  	case ASD:
 114  		return &inst{0x23, 0x3, 0x0, 0, 0x0}
 115  	case AFENCE:
 116  		return &inst{0xf, 0x0, 0x0, 0, 0x0}
 117  	case AFENCEI:
 118  		return &inst{0xf, 0x1, 0x0, 0, 0x0}
 119  	case AMUL:
 120  		return &inst{0x33, 0x0, 0x0, 32, 0x1}
 121  	case AMULH:
 122  		return &inst{0x33, 0x1, 0x0, 32, 0x1}
 123  	case AMULHSU:
 124  		return &inst{0x33, 0x2, 0x0, 32, 0x1}
 125  	case AMULHU:
 126  		return &inst{0x33, 0x3, 0x0, 32, 0x1}
 127  	case ADIV:
 128  		return &inst{0x33, 0x4, 0x0, 32, 0x1}
 129  	case ADIVU:
 130  		return &inst{0x33, 0x5, 0x0, 32, 0x1}
 131  	case AREM:
 132  		return &inst{0x33, 0x6, 0x0, 32, 0x1}
 133  	case AREMU:
 134  		return &inst{0x33, 0x7, 0x0, 32, 0x1}
 135  	case AMULW:
 136  		return &inst{0x3b, 0x0, 0x0, 32, 0x1}
 137  	case ADIVW:
 138  		return &inst{0x3b, 0x4, 0x0, 32, 0x1}
 139  	case ADIVUW:
 140  		return &inst{0x3b, 0x5, 0x0, 32, 0x1}
 141  	case AREMW:
 142  		return &inst{0x3b, 0x6, 0x0, 32, 0x1}
 143  	case AREMUW:
 144  		return &inst{0x3b, 0x7, 0x0, 32, 0x1}
 145  	case AAMOADDW:
 146  		return &inst{0x2f, 0x2, 0x0, 0, 0x0}
 147  	case AAMOXORW:
 148  		return &inst{0x2f, 0x2, 0x0, 512, 0x10}
 149  	case AAMOORW:
 150  		return &inst{0x2f, 0x2, 0x0, 1024, 0x20}
 151  	case AAMOANDW:
 152  		return &inst{0x2f, 0x2, 0x0, 1536, 0x30}
 153  	case AAMOMINW:
 154  		return &inst{0x2f, 0x2, 0x0, -2048, 0x40}
 155  	case AAMOMAXW:
 156  		return &inst{0x2f, 0x2, 0x0, -1536, 0x50}
 157  	case AAMOMINUW:
 158  		return &inst{0x2f, 0x2, 0x0, -1024, 0x60}
 159  	case AAMOMAXUW:
 160  		return &inst{0x2f, 0x2, 0x0, -512, 0x70}
 161  	case AAMOSWAPW:
 162  		return &inst{0x2f, 0x2, 0x0, 128, 0x4}
 163  	case ALRW:
 164  		return &inst{0x2f, 0x2, 0x0, 256, 0x8}
 165  	case ASCW:
 166  		return &inst{0x2f, 0x2, 0x0, 384, 0xc}
 167  	case AAMOADDD:
 168  		return &inst{0x2f, 0x3, 0x0, 0, 0x0}
 169  	case AAMOXORD:
 170  		return &inst{0x2f, 0x3, 0x0, 512, 0x10}
 171  	case AAMOORD:
 172  		return &inst{0x2f, 0x3, 0x0, 1024, 0x20}
 173  	case AAMOANDD:
 174  		return &inst{0x2f, 0x3, 0x0, 1536, 0x30}
 175  	case AAMOMIND:
 176  		return &inst{0x2f, 0x3, 0x0, -2048, 0x40}
 177  	case AAMOMAXD:
 178  		return &inst{0x2f, 0x3, 0x0, -1536, 0x50}
 179  	case AAMOMINUD:
 180  		return &inst{0x2f, 0x3, 0x0, -1024, 0x60}
 181  	case AAMOMAXUD:
 182  		return &inst{0x2f, 0x3, 0x0, -512, 0x70}
 183  	case AAMOSWAPD:
 184  		return &inst{0x2f, 0x3, 0x0, 128, 0x4}
 185  	case ALRD:
 186  		return &inst{0x2f, 0x3, 0x0, 256, 0x8}
 187  	case ASCD:
 188  		return &inst{0x2f, 0x3, 0x0, 384, 0xc}
 189  	case AECALL:
 190  		return &inst{0x73, 0x0, 0x0, 0, 0x0}
 191  	case AEBREAK:
 192  		return &inst{0x73, 0x0, 0x1, 1, 0x0}
 193  	case AURET:
 194  		return &inst{0x73, 0x0, 0x2, 2, 0x0}
 195  	case ASRET:
 196  		return &inst{0x73, 0x0, 0x2, 258, 0x8}
 197  	case AMRET:
 198  		return &inst{0x73, 0x0, 0x2, 770, 0x18}
 199  	case ADRET:
 200  		return &inst{0x73, 0x0, 0x12, 1970, 0x3d}
 201  	case ASFENCEVMA:
 202  		return &inst{0x73, 0x0, 0x0, 288, 0x9}
 203  	case AWFI:
 204  		return &inst{0x73, 0x0, 0x5, 261, 0x8}
 205  	case ACSRRW:
 206  		return &inst{0x73, 0x1, 0x0, 0, 0x0}
 207  	case ACSRRS:
 208  		return &inst{0x73, 0x2, 0x0, 0, 0x0}
 209  	case ACSRRC:
 210  		return &inst{0x73, 0x3, 0x0, 0, 0x0}
 211  	case ACSRRWI:
 212  		return &inst{0x73, 0x5, 0x0, 0, 0x0}
 213  	case ACSRRSI:
 214  		return &inst{0x73, 0x6, 0x0, 0, 0x0}
 215  	case ACSRRCI:
 216  		return &inst{0x73, 0x7, 0x0, 0, 0x0}
 217  	case AHFENCEVVMA:
 218  		return &inst{0x73, 0x0, 0x0, 544, 0x11}
 219  	case AHFENCEGVMA:
 220  		return &inst{0x73, 0x0, 0x0, 1568, 0x31}
 221  	case AFADDS:
 222  		return &inst{0x53, 0x0, 0x0, 0, 0x0}
 223  	case AFSUBS:
 224  		return &inst{0x53, 0x0, 0x0, 128, 0x4}
 225  	case AFMULS:
 226  		return &inst{0x53, 0x0, 0x0, 256, 0x8}
 227  	case AFDIVS:
 228  		return &inst{0x53, 0x0, 0x0, 384, 0xc}
 229  	case AFSGNJS:
 230  		return &inst{0x53, 0x0, 0x0, 512, 0x10}
 231  	case AFSGNJNS:
 232  		return &inst{0x53, 0x1, 0x0, 512, 0x10}
 233  	case AFSGNJXS:
 234  		return &inst{0x53, 0x2, 0x0, 512, 0x10}
 235  	case AFMINS:
 236  		return &inst{0x53, 0x0, 0x0, 640, 0x14}
 237  	case AFMAXS:
 238  		return &inst{0x53, 0x1, 0x0, 640, 0x14}
 239  	case AFSQRTS:
 240  		return &inst{0x53, 0x0, 0x0, 1408, 0x2c}
 241  	case AFADDD:
 242  		return &inst{0x53, 0x0, 0x0, 32, 0x1}
 243  	case AFSUBD:
 244  		return &inst{0x53, 0x0, 0x0, 160, 0x5}
 245  	case AFMULD:
 246  		return &inst{0x53, 0x0, 0x0, 288, 0x9}
 247  	case AFDIVD:
 248  		return &inst{0x53, 0x0, 0x0, 416, 0xd}
 249  	case AFSGNJD:
 250  		return &inst{0x53, 0x0, 0x0, 544, 0x11}
 251  	case AFSGNJND:
 252  		return &inst{0x53, 0x1, 0x0, 544, 0x11}
 253  	case AFSGNJXD:
 254  		return &inst{0x53, 0x2, 0x0, 544, 0x11}
 255  	case AFMIND:
 256  		return &inst{0x53, 0x0, 0x0, 672, 0x15}
 257  	case AFMAXD:
 258  		return &inst{0x53, 0x1, 0x0, 672, 0x15}
 259  	case AFCVTSD:
 260  		return &inst{0x53, 0x0, 0x1, 1025, 0x20}
 261  	case AFCVTDS:
 262  		return &inst{0x53, 0x0, 0x0, 1056, 0x21}
 263  	case AFSQRTD:
 264  		return &inst{0x53, 0x0, 0x0, 1440, 0x2d}
 265  	case AFADDQ:
 266  		return &inst{0x53, 0x0, 0x0, 96, 0x3}
 267  	case AFSUBQ:
 268  		return &inst{0x53, 0x0, 0x0, 224, 0x7}
 269  	case AFMULQ:
 270  		return &inst{0x53, 0x0, 0x0, 352, 0xb}
 271  	case AFDIVQ:
 272  		return &inst{0x53, 0x0, 0x0, 480, 0xf}
 273  	case AFSGNJQ:
 274  		return &inst{0x53, 0x0, 0x0, 608, 0x13}
 275  	case AFSGNJNQ:
 276  		return &inst{0x53, 0x1, 0x0, 608, 0x13}
 277  	case AFSGNJXQ:
 278  		return &inst{0x53, 0x2, 0x0, 608, 0x13}
 279  	case AFMINQ:
 280  		return &inst{0x53, 0x0, 0x0, 736, 0x17}
 281  	case AFMAXQ:
 282  		return &inst{0x53, 0x1, 0x0, 736, 0x17}
 283  	case AFCVTSQ:
 284  		return &inst{0x53, 0x0, 0x3, 1027, 0x20}
 285  	case AFCVTQS:
 286  		return &inst{0x53, 0x0, 0x0, 1120, 0x23}
 287  	case AFCVTDQ:
 288  		return &inst{0x53, 0x0, 0x3, 1059, 0x21}
 289  	case AFCVTQD:
 290  		return &inst{0x53, 0x0, 0x1, 1121, 0x23}
 291  	case AFSQRTQ:
 292  		return &inst{0x53, 0x0, 0x0, 1504, 0x2f}
 293  	case AFLES:
 294  		return &inst{0x53, 0x0, 0x0, -1536, 0x50}
 295  	case AFLTS:
 296  		return &inst{0x53, 0x1, 0x0, -1536, 0x50}
 297  	case AFEQS:
 298  		return &inst{0x53, 0x2, 0x0, -1536, 0x50}
 299  	case AFLED:
 300  		return &inst{0x53, 0x0, 0x0, -1504, 0x51}
 301  	case AFLTD:
 302  		return &inst{0x53, 0x1, 0x0, -1504, 0x51}
 303  	case AFEQD:
 304  		return &inst{0x53, 0x2, 0x0, -1504, 0x51}
 305  	case AFLEQ:
 306  		return &inst{0x53, 0x0, 0x0, -1440, 0x53}
 307  	case AFLTQ:
 308  		return &inst{0x53, 0x1, 0x0, -1440, 0x53}
 309  	case AFEQQ:
 310  		return &inst{0x53, 0x2, 0x0, -1440, 0x53}
 311  	case AFCVTWS:
 312  		return &inst{0x53, 0x0, 0x0, -1024, 0x60}
 313  	case AFCVTWUS:
 314  		return &inst{0x53, 0x0, 0x1, -1023, 0x60}
 315  	case AFCVTLS:
 316  		return &inst{0x53, 0x0, 0x2, -1022, 0x60}
 317  	case AFCVTLUS:
 318  		return &inst{0x53, 0x0, 0x3, -1021, 0x60}
 319  	case AFMVXW:
 320  		return &inst{0x53, 0x0, 0x0, -512, 0x70}
 321  	case AFCLASSS:
 322  		return &inst{0x53, 0x1, 0x0, -512, 0x70}
 323  	case AFCVTWD:
 324  		return &inst{0x53, 0x0, 0x0, -992, 0x61}
 325  	case AFCVTWUD:
 326  		return &inst{0x53, 0x0, 0x1, -991, 0x61}
 327  	case AFCVTLD:
 328  		return &inst{0x53, 0x0, 0x2, -990, 0x61}
 329  	case AFCVTLUD:
 330  		return &inst{0x53, 0x0, 0x3, -989, 0x61}
 331  	case AFMVXD:
 332  		return &inst{0x53, 0x0, 0x0, -480, 0x71}
 333  	case AFCLASSD:
 334  		return &inst{0x53, 0x1, 0x0, -480, 0x71}
 335  	case AFCVTWQ:
 336  		return &inst{0x53, 0x0, 0x0, -928, 0x63}
 337  	case AFCVTWUQ:
 338  		return &inst{0x53, 0x0, 0x1, -927, 0x63}
 339  	case AFCVTLQ:
 340  		return &inst{0x53, 0x0, 0x2, -926, 0x63}
 341  	case AFCVTLUQ:
 342  		return &inst{0x53, 0x0, 0x3, -925, 0x63}
 343  	case AFMVXQ:
 344  		return &inst{0x53, 0x0, 0x0, -416, 0x73}
 345  	case AFCLASSQ:
 346  		return &inst{0x53, 0x1, 0x0, -416, 0x73}
 347  	case AFCVTSW:
 348  		return &inst{0x53, 0x0, 0x0, -768, 0x68}
 349  	case AFCVTSWU:
 350  		return &inst{0x53, 0x0, 0x1, -767, 0x68}
 351  	case AFCVTSL:
 352  		return &inst{0x53, 0x0, 0x2, -766, 0x68}
 353  	case AFCVTSLU:
 354  		return &inst{0x53, 0x0, 0x3, -765, 0x68}
 355  	case AFMVWX:
 356  		return &inst{0x53, 0x0, 0x0, -256, 0x78}
 357  	case AFCVTDW:
 358  		return &inst{0x53, 0x0, 0x0, -736, 0x69}
 359  	case AFCVTDWU:
 360  		return &inst{0x53, 0x0, 0x1, -735, 0x69}
 361  	case AFCVTDL:
 362  		return &inst{0x53, 0x0, 0x2, -734, 0x69}
 363  	case AFCVTDLU:
 364  		return &inst{0x53, 0x0, 0x3, -733, 0x69}
 365  	case AFMVDX:
 366  		return &inst{0x53, 0x0, 0x0, -224, 0x79}
 367  	case AFCVTQW:
 368  		return &inst{0x53, 0x0, 0x0, -672, 0x6b}
 369  	case AFCVTQWU:
 370  		return &inst{0x53, 0x0, 0x1, -671, 0x6b}
 371  	case AFCVTQL:
 372  		return &inst{0x53, 0x0, 0x2, -670, 0x6b}
 373  	case AFCVTQLU:
 374  		return &inst{0x53, 0x0, 0x3, -669, 0x6b}
 375  	case AFMVQX:
 376  		return &inst{0x53, 0x0, 0x0, -160, 0x7b}
 377  	case AFLW:
 378  		return &inst{0x7, 0x2, 0x0, 0, 0x0}
 379  	case AFLD:
 380  		return &inst{0x7, 0x3, 0x0, 0, 0x0}
 381  	case AFLQ:
 382  		return &inst{0x7, 0x4, 0x0, 0, 0x0}
 383  	case AFSW:
 384  		return &inst{0x27, 0x2, 0x0, 0, 0x0}
 385  	case AFSD:
 386  		return &inst{0x27, 0x3, 0x0, 0, 0x0}
 387  	case AFSQ:
 388  		return &inst{0x27, 0x4, 0x0, 0, 0x0}
 389  	case AFMADDS:
 390  		return &inst{0x43, 0x0, 0x0, 0, 0x0}
 391  	case AFMSUBS:
 392  		return &inst{0x47, 0x0, 0x0, 0, 0x0}
 393  	case AFNMSUBS:
 394  		return &inst{0x4b, 0x0, 0x0, 0, 0x0}
 395  	case AFNMADDS:
 396  		return &inst{0x4f, 0x0, 0x0, 0, 0x0}
 397  	case AFMADDD:
 398  		return &inst{0x43, 0x0, 0x0, 32, 0x1}
 399  	case AFMSUBD:
 400  		return &inst{0x47, 0x0, 0x0, 32, 0x1}
 401  	case AFNMSUBD:
 402  		return &inst{0x4b, 0x0, 0x0, 32, 0x1}
 403  	case AFNMADDD:
 404  		return &inst{0x4f, 0x0, 0x0, 32, 0x1}
 405  	case AFMADDQ:
 406  		return &inst{0x43, 0x0, 0x0, 96, 0x3}
 407  	case AFMSUBQ:
 408  		return &inst{0x47, 0x0, 0x0, 96, 0x3}
 409  	case AFNMSUBQ:
 410  		return &inst{0x4b, 0x0, 0x0, 96, 0x3}
 411  	case AFNMADDQ:
 412  		return &inst{0x4f, 0x0, 0x0, 96, 0x3}
 413  	case ASLLIRV32:
 414  		return &inst{0x13, 0x1, 0x0, 0, 0x0}
 415  	case ASRLIRV32:
 416  		return &inst{0x13, 0x5, 0x0, 0, 0x0}
 417  	case ASRAIRV32:
 418  		return &inst{0x13, 0x5, 0x0, 1024, 0x20}
 419  	case AFRFLAGS:
 420  		return &inst{0x73, 0x2, 0x1, 1, 0x0}
 421  	case AFSFLAGS:
 422  		return &inst{0x73, 0x1, 0x1, 1, 0x0}
 423  	case AFSFLAGSI:
 424  		return &inst{0x73, 0x5, 0x1, 1, 0x0}
 425  	case AFRRM:
 426  		return &inst{0x73, 0x2, 0x2, 2, 0x0}
 427  	case AFSRM:
 428  		return &inst{0x73, 0x1, 0x2, 2, 0x0}
 429  	case AFSRMI:
 430  		return &inst{0x73, 0x5, 0x2, 2, 0x0}
 431  	case AFSCSR:
 432  		return &inst{0x73, 0x1, 0x3, 3, 0x0}
 433  	case AFRCSR:
 434  		return &inst{0x73, 0x2, 0x3, 3, 0x0}
 435  	case ARDCYCLE:
 436  		return &inst{0x73, 0x2, 0x0, -1024, 0x60}
 437  	case ARDTIME:
 438  		return &inst{0x73, 0x2, 0x1, -1023, 0x60}
 439  	case ARDINSTRET:
 440  		return &inst{0x73, 0x2, 0x2, -1022, 0x60}
 441  	case ARDCYCLEH:
 442  		return &inst{0x73, 0x2, 0x0, -896, 0x64}
 443  	case ARDTIMEH:
 444  		return &inst{0x73, 0x2, 0x1, -895, 0x64}
 445  	case ARDINSTRETH:
 446  		return &inst{0x73, 0x2, 0x2, -894, 0x64}
 447  	case ASCALL:
 448  		return &inst{0x73, 0x0, 0x0, 0, 0x0}
 449  	case ASBREAK:
 450  		return &inst{0x73, 0x0, 0x1, 1, 0x0}
 451  	case AFMVXS:
 452  		return &inst{0x53, 0x0, 0x0, -512, 0x70}
 453  	case AFMVSX:
 454  		return &inst{0x53, 0x0, 0x0, -256, 0x78}
 455  	case AFENCETSO:
 456  		return &inst{0xf, 0x0, 0x13, -1997, 0x41}
 457  	}
 458  	return nil
 459  }
 460