opcodes.h 2.8 KB

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