opcodes.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef _OPCODES_H
  2. #define _OPCODES_H
  3. #define F3F(x,y,z) (((x)<<30)|((y)<<19)|((z)<<5))
  4. #define FPD_ENCODE(x) (((x) >> 5) | ((x) & ~(0x20)))
  5. #define RS1(x) (FPD_ENCODE(x) << 14)
  6. #define RS2(x) (FPD_ENCODE(x) << 0)
  7. #define RS3(x) (FPD_ENCODE(x) << 9)
  8. #define RD(x) (FPD_ENCODE(x) << 25)
  9. #define IMM5_0(x) ((x) << 0)
  10. #define IMM5_9(x) ((x) << 9)
  11. #define CRC32C(a,b,c) \
  12. .word (F3F(2,0x36,0x147)|RS1(a)|RS2(b)|RD(c));
  13. #define MD5 \
  14. .word 0x81b02800;
  15. #define SHA1 \
  16. .word 0x81b02820;
  17. #define SHA256 \
  18. .word 0x81b02840;
  19. #define SHA512 \
  20. .word 0x81b02860;
  21. #define AES_EROUND01(a,b,c,d) \
  22. .word (F3F(2, 0x19, 0)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  23. #define AES_EROUND23(a,b,c,d) \
  24. .word (F3F(2, 0x19, 1)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  25. #define AES_DROUND01(a,b,c,d) \
  26. .word (F3F(2, 0x19, 2)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  27. #define AES_DROUND23(a,b,c,d) \
  28. .word (F3F(2, 0x19, 3)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  29. #define AES_EROUND01_L(a,b,c,d) \
  30. .word (F3F(2, 0x19, 4)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  31. #define AES_EROUND23_L(a,b,c,d) \
  32. .word (F3F(2, 0x19, 5)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  33. #define AES_DROUND01_L(a,b,c,d) \
  34. .word (F3F(2, 0x19, 6)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  35. #define AES_DROUND23_L(a,b,c,d) \
  36. .word (F3F(2, 0x19, 7)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  37. #define AES_KEXPAND1(a,b,c,d) \
  38. .word (F3F(2, 0x19, 8)|RS1(a)|RS2(b)|IMM5_9(c)|RD(d));
  39. #define AES_KEXPAND0(a,b,c) \
  40. .word (F3F(2, 0x36, 0x130)|RS1(a)|RS2(b)|RD(c));
  41. #define AES_KEXPAND2(a,b,c) \
  42. .word (F3F(2, 0x36, 0x131)|RS1(a)|RS2(b)|RD(c));
  43. #define DES_IP(a,b) \
  44. .word (F3F(2, 0x36, 0x134)|RS1(a)|RD(b));
  45. #define DES_IIP(a,b) \
  46. .word (F3F(2, 0x36, 0x135)|RS1(a)|RD(b));
  47. #define DES_KEXPAND(a,b,c) \
  48. .word (F3F(2, 0x36, 0x136)|RS1(a)|IMM5_0(b)|RD(c));
  49. #define DES_ROUND(a,b,c,d) \
  50. .word (F3F(2, 0x19, 0x009)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  51. #define CAMELLIA_F(a,b,c,d) \
  52. .word (F3F(2, 0x19, 0x00c)|RS1(a)|RS2(b)|RS3(c)|RD(d));
  53. #define CAMELLIA_FL(a,b,c) \
  54. .word (F3F(2, 0x36, 0x13c)|RS1(a)|RS2(b)|RD(c));
  55. #define CAMELLIA_FLI(a,b,c) \
  56. .word (F3F(2, 0x36, 0x13d)|RS1(a)|RS2(b)|RD(c));
  57. #define MOVDTOX_F0_O4 \
  58. .word 0x99b02200
  59. #define MOVDTOX_F2_O5 \
  60. .word 0x9bb02202
  61. #define MOVXTOD_G1_F60 \
  62. .word 0xbbb02301
  63. #define MOVXTOD_G1_F62 \
  64. .word 0xbfb02301
  65. #define MOVXTOD_G3_F4 \
  66. .word 0x89b02303;
  67. #define MOVXTOD_G7_F6 \
  68. .word 0x8db02307;
  69. #define MOVXTOD_G3_F0 \
  70. .word 0x81b02303;
  71. #define MOVXTOD_G7_F2 \
  72. .word 0x85b02307;
  73. #define MOVXTOD_O0_F0 \
  74. .word 0x81b02308;
  75. #define MOVXTOD_O5_F0 \
  76. .word 0x81b0230d;
  77. #define MOVXTOD_O5_F2 \
  78. .word 0x85b0230d;
  79. #define MOVXTOD_O5_F4 \
  80. .word 0x89b0230d;
  81. #define MOVXTOD_O5_F6 \
  82. .word 0x8db0230d;
  83. #define MOVXTOD_G3_F60 \
  84. .word 0xbbb02303;
  85. #define MOVXTOD_G7_F62 \
  86. .word 0xbfb02307;
  87. #endif /* _OPCODES_H */