0001
0002 #ifndef _OPCODES_H
0003 #define _OPCODES_H
0004
0005 #define SPARC_CR_OPCODE_PRIORITY 300
0006
0007 #define F3F(x,y,z) (((x)<<30)|((y)<<19)|((z)<<5))
0008
0009 #define FPD_ENCODE(x) (((x) >> 5) | ((x) & ~(0x20)))
0010
0011 #define RS1(x) (FPD_ENCODE(x) << 14)
0012 #define RS2(x) (FPD_ENCODE(x) << 0)
0013 #define RS3(x) (FPD_ENCODE(x) << 9)
0014 #define RD(x) (FPD_ENCODE(x) << 25)
0015 #define IMM5_0(x) ((x) << 0)
0016 #define IMM5_9(x) ((x) << 9)
0017
0018 #define CRC32C(a,b,c) \
0019 .word (F3F(2,0x36,0x147)|RS1(a)|RS2(b)|RD(c));
0020
0021 #define MD5 \
0022 .word 0x81b02800;
0023 #define SHA1 \
0024 .word 0x81b02820;
0025 #define SHA256 \
0026 .word 0x81b02840;
0027 #define SHA512 \
0028 .word 0x81b02860;
0029
0030 #define AES_EROUND01(a,b,c,d) \
0031 .word (F3F(2, 0x19, 0)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0032 #define AES_EROUND23(a,b,c,d) \
0033 .word (F3F(2, 0x19, 1)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0034 #define AES_DROUND01(a,b,c,d) \
0035 .word (F3F(2, 0x19, 2)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0036 #define AES_DROUND23(a,b,c,d) \
0037 .word (F3F(2, 0x19, 3)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0038 #define AES_EROUND01_L(a,b,c,d) \
0039 .word (F3F(2, 0x19, 4)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0040 #define AES_EROUND23_L(a,b,c,d) \
0041 .word (F3F(2, 0x19, 5)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0042 #define AES_DROUND01_L(a,b,c,d) \
0043 .word (F3F(2, 0x19, 6)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0044 #define AES_DROUND23_L(a,b,c,d) \
0045 .word (F3F(2, 0x19, 7)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0046 #define AES_KEXPAND1(a,b,c,d) \
0047 .word (F3F(2, 0x19, 8)|RS1(a)|RS2(b)|IMM5_9(c)|RD(d));
0048 #define AES_KEXPAND0(a,b,c) \
0049 .word (F3F(2, 0x36, 0x130)|RS1(a)|RS2(b)|RD(c));
0050 #define AES_KEXPAND2(a,b,c) \
0051 .word (F3F(2, 0x36, 0x131)|RS1(a)|RS2(b)|RD(c));
0052
0053 #define DES_IP(a,b) \
0054 .word (F3F(2, 0x36, 0x134)|RS1(a)|RD(b));
0055 #define DES_IIP(a,b) \
0056 .word (F3F(2, 0x36, 0x135)|RS1(a)|RD(b));
0057 #define DES_KEXPAND(a,b,c) \
0058 .word (F3F(2, 0x36, 0x136)|RS1(a)|IMM5_0(b)|RD(c));
0059 #define DES_ROUND(a,b,c,d) \
0060 .word (F3F(2, 0x19, 0x009)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0061
0062 #define CAMELLIA_F(a,b,c,d) \
0063 .word (F3F(2, 0x19, 0x00c)|RS1(a)|RS2(b)|RS3(c)|RD(d));
0064 #define CAMELLIA_FL(a,b,c) \
0065 .word (F3F(2, 0x36, 0x13c)|RS1(a)|RS2(b)|RD(c));
0066 #define CAMELLIA_FLI(a,b,c) \
0067 .word (F3F(2, 0x36, 0x13d)|RS1(a)|RS2(b)|RD(c));
0068
0069 #define MOVDTOX_F0_O4 \
0070 .word 0x99b02200
0071 #define MOVDTOX_F2_O5 \
0072 .word 0x9bb02202
0073 #define MOVXTOD_G1_F60 \
0074 .word 0xbbb02301
0075 #define MOVXTOD_G1_F62 \
0076 .word 0xbfb02301
0077 #define MOVXTOD_G3_F4 \
0078 .word 0x89b02303;
0079 #define MOVXTOD_G7_F6 \
0080 .word 0x8db02307;
0081 #define MOVXTOD_G3_F0 \
0082 .word 0x81b02303;
0083 #define MOVXTOD_G7_F2 \
0084 .word 0x85b02307;
0085 #define MOVXTOD_O0_F0 \
0086 .word 0x81b02308;
0087 #define MOVXTOD_O5_F0 \
0088 .word 0x81b0230d;
0089 #define MOVXTOD_O5_F2 \
0090 .word 0x85b0230d;
0091 #define MOVXTOD_O5_F4 \
0092 .word 0x89b0230d;
0093 #define MOVXTOD_O5_F6 \
0094 .word 0x8db0230d;
0095 #define MOVXTOD_G3_F60 \
0096 .word 0xbbb02303;
0097 #define MOVXTOD_G7_F62 \
0098 .word 0xbfb02307;
0099
0100 #endif