3939void mld_keccakf1600_extract_bytes (uint64_t * state , unsigned char * data ,
4040 unsigned offset , unsigned length )
4141{
42+ #if defined(MLD_USE_FIPS202_X1_XOR_NATIVE )
43+ mld_keccakf1600_extract_bytes_native (state , data , offset , length );
44+ #elif defined(MLD_SYS_LITTLE_ENDIAN )
4245 unsigned i ;
43- #if defined(MLD_SYS_LITTLE_ENDIAN )
4446 uint8_t * state_ptr = (uint8_t * )state + offset ;
4547 for (i = 0 ; i < length ; i ++ )
4648 __loop__ (invariant (i <= length ))
4749 {
4850 data [i ] = state_ptr [i ];
4951 }
50- #else /* MLD_SYS_LITTLE_ENDIAN */
52+ #else /* !MLD_USE_FIPS202_X1_XOR_NATIVE && MLD_SYS_LITTLE_ENDIAN */
53+ unsigned i ;
5154 /* Portable version */
5255 for (i = 0 ; i < length ; i ++ )
5356 __loop__ (invariant (i <= length ))
5457 {
5558 data [i ] = (state [(offset + i ) >> 3 ] >> (8 * ((offset + i ) & 0x07 ))) & 0xFF ;
5659 }
57- #endif /* !MLD_SYS_LITTLE_ENDIAN */
60+ #endif /* !MLD_USE_FIPS202_X1_XOR_NATIVE && ! MLD_SYS_LITTLE_ENDIAN */
5861}
5962
6063void mld_keccakf1600_xor_bytes (uint64_t * state , const unsigned char * data ,
6164 unsigned offset , unsigned length )
6265{
66+ #if defined(MLD_USE_FIPS202_X1_XOR_NATIVE )
67+ mld_keccakf1600_xor_bytes_native (state , data , offset , length );
68+ #elif defined(MLD_SYS_LITTLE_ENDIAN )
6369 unsigned i ;
64- #if defined(MLD_SYS_LITTLE_ENDIAN )
6570 uint8_t * state_ptr = (uint8_t * )state + offset ;
6671 for (i = 0 ; i < length ; i ++ )
6772 __loop__ (invariant (i <= length ))
6873 {
6974 state_ptr [i ] ^= data [i ];
7075 }
71- #else /* MLD_SYS_LITTLE_ENDIAN */
76+ #else /* !MLD_USE_FIPS202_X1_XOR_NATIVE && MLD_SYS_LITTLE_ENDIAN */
77+ unsigned i ;
7278 /* Portable version */
7379 for (i = 0 ; i < length ; i ++ )
7480 __loop__ (invariant (i <= length ))
7581 {
7682 state [(offset + i ) >> 3 ] ^= (uint64_t )data [i ]
7783 << (8 * ((offset + i ) & 0x07 ));
7884 }
79- #endif /* !MLD_SYS_LITTLE_ENDIAN */
85+ #endif /* !MLD_USE_FIPS202_X1_XOR_NATIVE && ! MLD_SYS_LITTLE_ENDIAN */
8086}
8187
8288void mld_keccakf1600x4_extract_bytes (uint64_t * state , unsigned char * data0 ,
8389 unsigned char * data1 , unsigned char * data2 ,
8490 unsigned char * data3 , unsigned offset ,
8591 unsigned length )
8692{
93+ #if defined(MLD_USE_FIPS202_X4_XOR_NATIVE )
94+ mld_keccakf1600_extract_bytes_x4_native (state , data0 , data1 , data2 , data3 ,
95+ offset , length );
96+ #else
8797 mld_keccakf1600_extract_bytes (state + MLD_KECCAK_LANES * 0 , data0 , offset ,
8898 length );
8999 mld_keccakf1600_extract_bytes (state + MLD_KECCAK_LANES * 1 , data1 , offset ,
@@ -92,6 +102,7 @@ void mld_keccakf1600x4_extract_bytes(uint64_t *state, unsigned char *data0,
92102 length );
93103 mld_keccakf1600_extract_bytes (state + MLD_KECCAK_LANES * 3 , data3 , offset ,
94104 length );
105+ #endif /* !MLD_USE_FIPS202_X4_XOR_NATIVE */
95106}
96107
97108void mld_keccakf1600x4_xor_bytes (uint64_t * state , const unsigned char * data0 ,
@@ -100,6 +111,10 @@ void mld_keccakf1600x4_xor_bytes(uint64_t *state, const unsigned char *data0,
100111 const unsigned char * data3 , unsigned offset ,
101112 unsigned length )
102113{
114+ #if defined(MLD_USE_FIPS202_X4_XOR_NATIVE )
115+ mld_keccakf1600_xor_bytes_x4_native (state , data0 , data1 , data2 , data3 , offset ,
116+ length );
117+ #else
103118 mld_keccakf1600_xor_bytes (state + MLD_KECCAK_LANES * 0 , data0 , offset ,
104119 length );
105120 mld_keccakf1600_xor_bytes (state + MLD_KECCAK_LANES * 1 , data1 , offset ,
@@ -108,6 +123,7 @@ void mld_keccakf1600x4_xor_bytes(uint64_t *state, const unsigned char *data0,
108123 length );
109124 mld_keccakf1600_xor_bytes (state + MLD_KECCAK_LANES * 3 , data3 , offset ,
110125 length );
126+ #endif /* !MLD_USE_FIPS202_X4_XOR_NATIVE */
111127}
112128
113129void mld_keccakf1600x4_permute (uint64_t * state )
0 commit comments