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