@@ -110,55 +110,16 @@ static INLINE void add512(union uint512_u * RESTRICT x,
110110#endif /* __GOST3411_BIG_ENDIAN__ */
111111}
112112
113- static void g (union uint512_u * h , const union uint512_u * RESTRICT N ,
114- const union uint512_u * RESTRICT m )
113+ _internal
114+ void g (union uint512_u * h , const union uint512_u * RESTRICT N ,
115+ const union uint512_u * RESTRICT m )
115116{
116- #ifdef __GOST3411_HAS_SSE2__
117- __m128i xmm0 , xmm2 , xmm4 , xmm6 ; /* XMMR0-quadruple */
118- __m128i xmm1 , xmm3 , xmm5 , xmm7 ; /* XMMR1-quadruple */
119- unsigned int i ;
120-
121- LOAD (N , xmm0 , xmm2 , xmm4 , xmm6 );
122- XLPS128M (h , xmm0 , xmm2 , xmm4 , xmm6 );
123-
124- ULOAD (m , xmm1 , xmm3 , xmm5 , xmm7 );
125- XLPS128R (xmm0 , xmm2 , xmm4 , xmm6 , xmm1 , xmm3 , xmm5 , xmm7 );
126-
127- for (i = 0 ; i < 11 ; i ++ )
128- ROUND128 (i , xmm0 , xmm2 , xmm4 , xmm6 , xmm1 , xmm3 , xmm5 , xmm7 );
129-
130- XLPS128M ((& C [11 ]), xmm0 , xmm2 , xmm4 , xmm6 );
131- X128R (xmm0 , xmm2 , xmm4 , xmm6 , xmm1 , xmm3 , xmm5 , xmm7 );
132-
133- X128M (h , xmm0 , xmm2 , xmm4 , xmm6 );
134- ULOAD (m , xmm1 , xmm3 , xmm5 , xmm7 );
135- X128R (xmm0 , xmm2 , xmm4 , xmm6 , xmm1 , xmm3 , xmm5 , xmm7 );
136-
137- STORE (h , xmm0 , xmm2 , xmm4 , xmm6 );
138- # ifdef __i386__
139- /* Restore the Floating-point status on the CPU */
140- /* This is only required on MMX, but EXTRACT32 is using MMX */
141- _mm_empty ();
142- # endif
117+ #if defined __GOST3411_HAS_SSE2__
118+ g_sse2 (h , N , m );
119+ #elif defined __GOST3411_HAS_REF__
120+ g_ref (h , N , m );
143121#else
144- union uint512_u Ki , data ;
145- unsigned int i ;
146-
147- XLPS (h , N , (& data ));
148-
149- /* Starting E() */
150- Ki = data ;
151- XLPS ((& Ki ), ((const union uint512_u * )& m [0 ]), (& data ));
152-
153- for (i = 0 ; i < 11 ; i ++ )
154- ROUND (i , (& Ki ), (& data ));
155-
156- XLPS ((& Ki ), (& C [11 ]), (& Ki ));
157- X ((& Ki ), (& data ), (& data ));
158- /* E() done */
159-
160- X ((& data ), h , (& data ));
161- X ((& data ), m , h );
122+ # error "No implementation of g() is selected."
162123#endif
163124}
164125
0 commit comments