s390x optimizations.
This commit is contained in:
parent
b900df5258
commit
b38c0add30
@ -178,6 +178,13 @@
|
|||||||
: "r"(a), "I"(n)); \
|
: "r"(a), "I"(n)); \
|
||||||
ret; \
|
ret; \
|
||||||
})
|
})
|
||||||
|
# elif defined(__s390__) || defined(__s390x__)
|
||||||
|
# define ROTATE(a,n) ({ register unsigned int ret; \
|
||||||
|
asm ("rll %0,%1,%2" \
|
||||||
|
: "=r"(ret) \
|
||||||
|
: "r"(a), "I"(n):"cc"); \
|
||||||
|
ret; \
|
||||||
|
})
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif /* PEDANTIC */
|
#endif /* PEDANTIC */
|
||||||
@ -209,6 +216,10 @@
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(__s390__) || defined(__s390x__)
|
||||||
|
# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, (l))
|
||||||
|
# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, (l))
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HOST_c2l
|
#ifndef HOST_c2l
|
||||||
#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \
|
#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \
|
||||||
@ -227,6 +238,18 @@
|
|||||||
|
|
||||||
#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
|
#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
|
||||||
|
|
||||||
|
#ifndef PEDANTIC
|
||||||
|
# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
|
||||||
|
# if defined(__s390x__)
|
||||||
|
# define HOST_c2l(c,l) ({ asm ("lrv %0,0(%1)" \
|
||||||
|
:"=r"(l) : "r"(c)); \
|
||||||
|
(c)+=4; (l); })
|
||||||
|
# define HOST_l2c(l,c) ({ asm ("strv %0,0(%1)" \
|
||||||
|
: : "r"(l),"r"(c) : "memory"); \
|
||||||
|
(c)+=4; (l); })
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
|
#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
|
||||||
# ifndef B_ENDIAN
|
# ifndef B_ENDIAN
|
||||||
/* See comment in DATA_ORDER_IS_BIG_ENDIAN section. */
|
/* See comment in DATA_ORDER_IS_BIG_ENDIAN section. */
|
||||||
|
@ -52,7 +52,9 @@
|
|||||||
|
|
||||||
const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT;
|
const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT;
|
||||||
|
|
||||||
#if defined(_M_IX86) || defined(_M_AMD64) || defined(__i386) || defined(__x86_64)
|
#if defined(__i386) || defined(__i386__) || defined(_M_IX87) || \
|
||||||
|
defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || \
|
||||||
|
defined(__s390__) || defined(__s390x__)
|
||||||
#define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
|
#define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user