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