Intrinsic.cs
1 using System; 2 using System.Diagnostics.CodeAnalysis; 3 4 namespace ARMeilleure.IntermediateRepresentation 5 { 6 [Flags] 7 [SuppressMessage("Design", "CA1069: Enums values should not be duplicated")] 8 enum Intrinsic : ushort 9 { 10 // X86 (SSE and AVX) 11 12 X86Addpd, 13 X86Addps, 14 X86Addsd, 15 X86Addss, 16 X86Aesdec, 17 X86Aesdeclast, 18 X86Aesenc, 19 X86Aesenclast, 20 X86Aesimc, 21 X86Andnpd, 22 X86Andnps, 23 X86Andpd, 24 X86Andps, 25 X86Blendvpd, 26 X86Blendvps, 27 X86Cmppd, 28 X86Cmpps, 29 X86Cmpsd, 30 X86Cmpss, 31 X86Comisdeq, 32 X86Comisdge, 33 X86Comisdlt, 34 X86Comisseq, 35 X86Comissge, 36 X86Comisslt, 37 X86Crc32, 38 X86Crc32_16, 39 X86Crc32_8, 40 X86Cvtdq2pd, 41 X86Cvtdq2ps, 42 X86Cvtpd2dq, 43 X86Cvtpd2ps, 44 X86Cvtps2dq, 45 X86Cvtps2pd, 46 X86Cvtsd2si, 47 X86Cvtsd2ss, 48 X86Cvtsi2sd, 49 X86Cvtsi2si, 50 X86Cvtsi2ss, 51 X86Cvtss2sd, 52 X86Cvtss2si, 53 X86Divpd, 54 X86Divps, 55 X86Divsd, 56 X86Divss, 57 X86Gf2p8affineqb, 58 X86Haddpd, 59 X86Haddps, 60 X86Insertps, 61 X86Ldmxcsr, 62 X86Maxpd, 63 X86Maxps, 64 X86Maxsd, 65 X86Maxss, 66 X86Minpd, 67 X86Minps, 68 X86Minsd, 69 X86Minss, 70 X86Movhlps, 71 X86Movlhps, 72 X86Movss, 73 X86Mulpd, 74 X86Mulps, 75 X86Mulsd, 76 X86Mulss, 77 X86Paddb, 78 X86Paddd, 79 X86Paddq, 80 X86Paddw, 81 X86Palignr, 82 X86Pand, 83 X86Pandn, 84 X86Pavgb, 85 X86Pavgw, 86 X86Pblendvb, 87 X86Pclmulqdq, 88 X86Pcmpeqb, 89 X86Pcmpeqd, 90 X86Pcmpeqq, 91 X86Pcmpeqw, 92 X86Pcmpgtb, 93 X86Pcmpgtd, 94 X86Pcmpgtq, 95 X86Pcmpgtw, 96 X86Pmaxsb, 97 X86Pmaxsd, 98 X86Pmaxsw, 99 X86Pmaxub, 100 X86Pmaxud, 101 X86Pmaxuw, 102 X86Pminsb, 103 X86Pminsd, 104 X86Pminsw, 105 X86Pminub, 106 X86Pminud, 107 X86Pminuw, 108 X86Pmovsxbw, 109 X86Pmovsxdq, 110 X86Pmovsxwd, 111 X86Pmovzxbw, 112 X86Pmovzxdq, 113 X86Pmovzxwd, 114 X86Pmulld, 115 X86Pmullw, 116 X86Popcnt, 117 X86Por, 118 X86Pshufb, 119 X86Pshufd, 120 X86Pslld, 121 X86Pslldq, 122 X86Psllq, 123 X86Psllw, 124 X86Psrad, 125 X86Psraw, 126 X86Psrld, 127 X86Psrlq, 128 X86Psrldq, 129 X86Psrlw, 130 X86Psubb, 131 X86Psubd, 132 X86Psubq, 133 X86Psubw, 134 X86Punpckhbw, 135 X86Punpckhdq, 136 X86Punpckhqdq, 137 X86Punpckhwd, 138 X86Punpcklbw, 139 X86Punpckldq, 140 X86Punpcklqdq, 141 X86Punpcklwd, 142 X86Pxor, 143 X86Rcpps, 144 X86Rcpss, 145 X86Roundpd, 146 X86Roundps, 147 X86Roundsd, 148 X86Roundss, 149 X86Rsqrtps, 150 X86Rsqrtss, 151 X86Sha256Msg1, 152 X86Sha256Msg2, 153 X86Sha256Rnds2, 154 X86Shufpd, 155 X86Shufps, 156 X86Sqrtpd, 157 X86Sqrtps, 158 X86Sqrtsd, 159 X86Sqrtss, 160 X86Stmxcsr, 161 X86Subpd, 162 X86Subps, 163 X86Subsd, 164 X86Subss, 165 X86Unpckhpd, 166 X86Unpckhps, 167 X86Unpcklpd, 168 X86Unpcklps, 169 X86Vcvtph2ps, 170 X86Vcvtps2ph, 171 X86Vfmadd231pd, 172 X86Vfmadd231ps, 173 X86Vfmadd231sd, 174 X86Vfmadd231ss, 175 X86Vfmsub231sd, 176 X86Vfmsub231ss, 177 X86Vfnmadd231pd, 178 X86Vfnmadd231ps, 179 X86Vfnmadd231sd, 180 X86Vfnmadd231ss, 181 X86Vfnmsub231sd, 182 X86Vfnmsub231ss, 183 X86Vpternlogd, 184 X86Xorpd, 185 X86Xorps, 186 187 // Arm64 (FP and Advanced SIMD) 188 189 Arm64AbsS, 190 Arm64AbsV, 191 Arm64AddhnV, 192 Arm64AddpS, 193 Arm64AddpV, 194 Arm64AddvV, 195 Arm64AddS, 196 Arm64AddV, 197 Arm64AesdV, 198 Arm64AeseV, 199 Arm64AesimcV, 200 Arm64AesmcV, 201 Arm64AndV, 202 Arm64BicVi, 203 Arm64BicV, 204 Arm64BifV, 205 Arm64BitV, 206 Arm64BslV, 207 Arm64ClsV, 208 Arm64ClzV, 209 Arm64CmeqS, 210 Arm64CmeqV, 211 Arm64CmeqSz, 212 Arm64CmeqVz, 213 Arm64CmgeS, 214 Arm64CmgeV, 215 Arm64CmgeSz, 216 Arm64CmgeVz, 217 Arm64CmgtS, 218 Arm64CmgtV, 219 Arm64CmgtSz, 220 Arm64CmgtVz, 221 Arm64CmhiS, 222 Arm64CmhiV, 223 Arm64CmhsS, 224 Arm64CmhsV, 225 Arm64CmleSz, 226 Arm64CmleVz, 227 Arm64CmltSz, 228 Arm64CmltVz, 229 Arm64CmtstS, 230 Arm64CmtstV, 231 Arm64CntV, 232 Arm64DupSe, 233 Arm64DupVe, 234 Arm64DupGp, 235 Arm64EorV, 236 Arm64ExtV, 237 Arm64FabdS, 238 Arm64FabdV, 239 Arm64FabsV, 240 Arm64FabsS, 241 Arm64FacgeS, 242 Arm64FacgeV, 243 Arm64FacgtS, 244 Arm64FacgtV, 245 Arm64FaddpS, 246 Arm64FaddpV, 247 Arm64FaddV, 248 Arm64FaddS, 249 Arm64FccmpeS, 250 Arm64FccmpS, 251 Arm64FcmeqS, 252 Arm64FcmeqV, 253 Arm64FcmeqSz, 254 Arm64FcmeqVz, 255 Arm64FcmgeS, 256 Arm64FcmgeV, 257 Arm64FcmgeSz, 258 Arm64FcmgeVz, 259 Arm64FcmgtS, 260 Arm64FcmgtV, 261 Arm64FcmgtSz, 262 Arm64FcmgtVz, 263 Arm64FcmleSz, 264 Arm64FcmleVz, 265 Arm64FcmltSz, 266 Arm64FcmltVz, 267 Arm64FcmpeS, 268 Arm64FcmpS, 269 Arm64FcselS, 270 Arm64FcvtasS, 271 Arm64FcvtasV, 272 Arm64FcvtasGp, 273 Arm64FcvtauS, 274 Arm64FcvtauV, 275 Arm64FcvtauGp, 276 Arm64FcvtlV, 277 Arm64FcvtmsS, 278 Arm64FcvtmsV, 279 Arm64FcvtmsGp, 280 Arm64FcvtmuS, 281 Arm64FcvtmuV, 282 Arm64FcvtmuGp, 283 Arm64FcvtnsS, 284 Arm64FcvtnsV, 285 Arm64FcvtnsGp, 286 Arm64FcvtnuS, 287 Arm64FcvtnuV, 288 Arm64FcvtnuGp, 289 Arm64FcvtnV, 290 Arm64FcvtpsS, 291 Arm64FcvtpsV, 292 Arm64FcvtpsGp, 293 Arm64FcvtpuS, 294 Arm64FcvtpuV, 295 Arm64FcvtpuGp, 296 Arm64FcvtxnS, 297 Arm64FcvtxnV, 298 Arm64FcvtzsSFixed, 299 Arm64FcvtzsVFixed, 300 Arm64FcvtzsS, 301 Arm64FcvtzsV, 302 Arm64FcvtzsGpFixed, 303 Arm64FcvtzsGp, 304 Arm64FcvtzuSFixed, 305 Arm64FcvtzuVFixed, 306 Arm64FcvtzuS, 307 Arm64FcvtzuV, 308 Arm64FcvtzuGpFixed, 309 Arm64FcvtzuGp, 310 Arm64FcvtS, 311 Arm64FdivV, 312 Arm64FdivS, 313 Arm64FmaddS, 314 Arm64FmaxnmpS, 315 Arm64FmaxnmpV, 316 Arm64FmaxnmvV, 317 Arm64FmaxnmV, 318 Arm64FmaxnmS, 319 Arm64FmaxpS, 320 Arm64FmaxpV, 321 Arm64FmaxvV, 322 Arm64FmaxV, 323 Arm64FmaxS, 324 Arm64FminnmpS, 325 Arm64FminnmpV, 326 Arm64FminnmvV, 327 Arm64FminnmV, 328 Arm64FminnmS, 329 Arm64FminpS, 330 Arm64FminpV, 331 Arm64FminvV, 332 Arm64FminV, 333 Arm64FminS, 334 Arm64FmlaSe, 335 Arm64FmlaVe, 336 Arm64FmlaV, 337 Arm64FmlsSe, 338 Arm64FmlsVe, 339 Arm64FmlsV, 340 Arm64FmovVi, 341 Arm64FmovS, 342 Arm64FmovGp, 343 Arm64FmovSi, 344 Arm64FmsubS, 345 Arm64FmulxSe, 346 Arm64FmulxVe, 347 Arm64FmulxS, 348 Arm64FmulxV, 349 Arm64FmulSe, 350 Arm64FmulVe, 351 Arm64FmulV, 352 Arm64FmulS, 353 Arm64FnegV, 354 Arm64FnegS, 355 Arm64FnmaddS, 356 Arm64FnmsubS, 357 Arm64FnmulS, 358 Arm64FrecpeS, 359 Arm64FrecpeV, 360 Arm64FrecpsS, 361 Arm64FrecpsV, 362 Arm64FrecpxS, 363 Arm64FrintaV, 364 Arm64FrintaS, 365 Arm64FrintiV, 366 Arm64FrintiS, 367 Arm64FrintmV, 368 Arm64FrintmS, 369 Arm64FrintnV, 370 Arm64FrintnS, 371 Arm64FrintpV, 372 Arm64FrintpS, 373 Arm64FrintxV, 374 Arm64FrintxS, 375 Arm64FrintzV, 376 Arm64FrintzS, 377 Arm64FrsqrteS, 378 Arm64FrsqrteV, 379 Arm64FrsqrtsS, 380 Arm64FrsqrtsV, 381 Arm64FsqrtV, 382 Arm64FsqrtS, 383 Arm64FsubV, 384 Arm64FsubS, 385 Arm64InsVe, 386 Arm64InsGp, 387 Arm64Ld1rV, 388 Arm64Ld1Vms, 389 Arm64Ld1Vss, 390 Arm64Ld2rV, 391 Arm64Ld2Vms, 392 Arm64Ld2Vss, 393 Arm64Ld3rV, 394 Arm64Ld3Vms, 395 Arm64Ld3Vss, 396 Arm64Ld4rV, 397 Arm64Ld4Vms, 398 Arm64Ld4Vss, 399 Arm64MlaVe, 400 Arm64MlaV, 401 Arm64MlsVe, 402 Arm64MlsV, 403 Arm64MoviV, 404 Arm64MrsFpcr, 405 Arm64MsrFpcr, 406 Arm64MrsFpsr, 407 Arm64MsrFpsr, 408 Arm64MulVe, 409 Arm64MulV, 410 Arm64MvniV, 411 Arm64NegS, 412 Arm64NegV, 413 Arm64NotV, 414 Arm64OrnV, 415 Arm64OrrVi, 416 Arm64OrrV, 417 Arm64PmullV, 418 Arm64PmulV, 419 Arm64RaddhnV, 420 Arm64RbitV, 421 Arm64Rev16V, 422 Arm64Rev32V, 423 Arm64Rev64V, 424 Arm64RshrnV, 425 Arm64RsubhnV, 426 Arm64SabalV, 427 Arm64SabaV, 428 Arm64SabdlV, 429 Arm64SabdV, 430 Arm64SadalpV, 431 Arm64SaddlpV, 432 Arm64SaddlvV, 433 Arm64SaddlV, 434 Arm64SaddwV, 435 Arm64ScvtfSFixed, 436 Arm64ScvtfVFixed, 437 Arm64ScvtfS, 438 Arm64ScvtfV, 439 Arm64ScvtfGpFixed, 440 Arm64ScvtfGp, 441 Arm64Sha1cV, 442 Arm64Sha1hV, 443 Arm64Sha1mV, 444 Arm64Sha1pV, 445 Arm64Sha1su0V, 446 Arm64Sha1su1V, 447 Arm64Sha256h2V, 448 Arm64Sha256hV, 449 Arm64Sha256su0V, 450 Arm64Sha256su1V, 451 Arm64ShaddV, 452 Arm64ShllV, 453 Arm64ShlS, 454 Arm64ShlV, 455 Arm64ShrnV, 456 Arm64ShsubV, 457 Arm64SliS, 458 Arm64SliV, 459 Arm64SmaxpV, 460 Arm64SmaxvV, 461 Arm64SmaxV, 462 Arm64SminpV, 463 Arm64SminvV, 464 Arm64SminV, 465 Arm64SmlalVe, 466 Arm64SmlalV, 467 Arm64SmlslVe, 468 Arm64SmlslV, 469 Arm64SmovV, 470 Arm64SmullVe, 471 Arm64SmullV, 472 Arm64SqabsS, 473 Arm64SqabsV, 474 Arm64SqaddS, 475 Arm64SqaddV, 476 Arm64SqdmlalSe, 477 Arm64SqdmlalVe, 478 Arm64SqdmlalS, 479 Arm64SqdmlalV, 480 Arm64SqdmlslSe, 481 Arm64SqdmlslVe, 482 Arm64SqdmlslS, 483 Arm64SqdmlslV, 484 Arm64SqdmulhSe, 485 Arm64SqdmulhVe, 486 Arm64SqdmulhS, 487 Arm64SqdmulhV, 488 Arm64SqdmullSe, 489 Arm64SqdmullVe, 490 Arm64SqdmullS, 491 Arm64SqdmullV, 492 Arm64SqnegS, 493 Arm64SqnegV, 494 Arm64SqrdmulhSe, 495 Arm64SqrdmulhVe, 496 Arm64SqrdmulhS, 497 Arm64SqrdmulhV, 498 Arm64SqrshlS, 499 Arm64SqrshlV, 500 Arm64SqrshrnS, 501 Arm64SqrshrnV, 502 Arm64SqrshrunS, 503 Arm64SqrshrunV, 504 Arm64SqshluS, 505 Arm64SqshluV, 506 Arm64SqshlSi, 507 Arm64SqshlVi, 508 Arm64SqshlS, 509 Arm64SqshlV, 510 Arm64SqshrnS, 511 Arm64SqshrnV, 512 Arm64SqshrunS, 513 Arm64SqshrunV, 514 Arm64SqsubS, 515 Arm64SqsubV, 516 Arm64SqxtnS, 517 Arm64SqxtnV, 518 Arm64SqxtunS, 519 Arm64SqxtunV, 520 Arm64SrhaddV, 521 Arm64SriS, 522 Arm64SriV, 523 Arm64SrshlS, 524 Arm64SrshlV, 525 Arm64SrshrS, 526 Arm64SrshrV, 527 Arm64SrsraS, 528 Arm64SrsraV, 529 Arm64SshllV, 530 Arm64SshlS, 531 Arm64SshlV, 532 Arm64SshrS, 533 Arm64SshrV, 534 Arm64SsraS, 535 Arm64SsraV, 536 Arm64SsublV, 537 Arm64SsubwV, 538 Arm64St1Vms, 539 Arm64St1Vss, 540 Arm64St2Vms, 541 Arm64St2Vss, 542 Arm64St3Vms, 543 Arm64St3Vss, 544 Arm64St4Vms, 545 Arm64St4Vss, 546 Arm64SubhnV, 547 Arm64SubS, 548 Arm64SubV, 549 Arm64SuqaddS, 550 Arm64SuqaddV, 551 Arm64TblV, 552 Arm64TbxV, 553 Arm64Trn1V, 554 Arm64Trn2V, 555 Arm64UabalV, 556 Arm64UabaV, 557 Arm64UabdlV, 558 Arm64UabdV, 559 Arm64UadalpV, 560 Arm64UaddlpV, 561 Arm64UaddlvV, 562 Arm64UaddlV, 563 Arm64UaddwV, 564 Arm64UcvtfSFixed, 565 Arm64UcvtfVFixed, 566 Arm64UcvtfS, 567 Arm64UcvtfV, 568 Arm64UcvtfGpFixed, 569 Arm64UcvtfGp, 570 Arm64UhaddV, 571 Arm64UhsubV, 572 Arm64UmaxpV, 573 Arm64UmaxvV, 574 Arm64UmaxV, 575 Arm64UminpV, 576 Arm64UminvV, 577 Arm64UminV, 578 Arm64UmlalVe, 579 Arm64UmlalV, 580 Arm64UmlslVe, 581 Arm64UmlslV, 582 Arm64UmovV, 583 Arm64UmullVe, 584 Arm64UmullV, 585 Arm64UqaddS, 586 Arm64UqaddV, 587 Arm64UqrshlS, 588 Arm64UqrshlV, 589 Arm64UqrshrnS, 590 Arm64UqrshrnV, 591 Arm64UqshlSi, 592 Arm64UqshlVi, 593 Arm64UqshlS, 594 Arm64UqshlV, 595 Arm64UqshrnS, 596 Arm64UqshrnV, 597 Arm64UqsubS, 598 Arm64UqsubV, 599 Arm64UqxtnS, 600 Arm64UqxtnV, 601 Arm64UrecpeV, 602 Arm64UrhaddV, 603 Arm64UrshlS, 604 Arm64UrshlV, 605 Arm64UrshrS, 606 Arm64UrshrV, 607 Arm64UrsqrteV, 608 Arm64UrsraS, 609 Arm64UrsraV, 610 Arm64UshllV, 611 Arm64UshlS, 612 Arm64UshlV, 613 Arm64UshrS, 614 Arm64UshrV, 615 Arm64UsqaddS, 616 Arm64UsqaddV, 617 Arm64UsraS, 618 Arm64UsraV, 619 Arm64UsublV, 620 Arm64UsubwV, 621 Arm64Uzp1V, 622 Arm64Uzp2V, 623 Arm64XtnV, 624 Arm64Zip1V, 625 Arm64Zip2V, 626 627 Arm64VTypeShift = 13, 628 Arm64VTypeMask = 1 << Arm64VTypeShift, 629 Arm64V64 = 0 << Arm64VTypeShift, 630 Arm64V128 = 1 << Arm64VTypeShift, 631 632 Arm64VSizeShift = 14, 633 Arm64VSizeMask = 3 << Arm64VSizeShift, 634 Arm64VFloat = 0 << Arm64VSizeShift, 635 Arm64VDouble = 1 << Arm64VSizeShift, 636 Arm64VByte = 0 << Arm64VSizeShift, 637 Arm64VHWord = 1 << Arm64VSizeShift, 638 Arm64VWord = 2 << Arm64VSizeShift, 639 Arm64VDWord = 3 << Arm64VSizeShift, 640 } 641 }