Force gcc to inline these functions. This should help satisfy the constraints for the instructions that take immediate arguments.
This commit is contained in:
@@ -244,7 +244,7 @@ asm __volatile__ ( \
|
|||||||
|
|
||||||
#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(INTEL_CC) && !defined(LTC_NO_ASM)
|
#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(INTEL_CC) && !defined(LTC_NO_ASM)
|
||||||
|
|
||||||
static inline unsigned ROL(unsigned word, int i)
|
static inline __attribute__((always_inline)) unsigned ROL(unsigned word, int i)
|
||||||
{
|
{
|
||||||
asm ("roll %%cl,%0"
|
asm ("roll %%cl,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -252,7 +252,7 @@ static inline unsigned ROL(unsigned word, int i)
|
|||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned ROR(unsigned word, int i)
|
static inline __attribute__((always_inline)) unsigned ROR(unsigned word, int i)
|
||||||
{
|
{
|
||||||
asm ("rorl %%cl,%0"
|
asm ("rorl %%cl,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -262,7 +262,7 @@ static inline unsigned ROR(unsigned word, int i)
|
|||||||
|
|
||||||
#ifndef LTC_NO_ROLC
|
#ifndef LTC_NO_ROLC
|
||||||
|
|
||||||
static inline unsigned ROLc(unsigned word, const int i)
|
static inline __attribute__((always_inline)) unsigned ROLc(unsigned word, const int i)
|
||||||
{
|
{
|
||||||
asm ("roll %2,%0"
|
asm ("roll %2,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -270,7 +270,7 @@ static inline unsigned ROLc(unsigned word, const int i)
|
|||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned RORc(unsigned word, const int i)
|
static inline __attribute__((always_inline)) unsigned RORc(unsigned word, const int i)
|
||||||
{
|
{
|
||||||
asm ("rorl %2,%0"
|
asm ("rorl %2,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -287,7 +287,7 @@ static inline unsigned RORc(unsigned word, const int i)
|
|||||||
|
|
||||||
#elif !defined(__STRICT_ANSI__) && defined(LTC_PPC32)
|
#elif !defined(__STRICT_ANSI__) && defined(LTC_PPC32)
|
||||||
|
|
||||||
static inline unsigned ROL(unsigned word, int i)
|
static inline __attribute__((always_inline)) unsigned ROL(unsigned word, int i)
|
||||||
{
|
{
|
||||||
asm ("rotlw %0,%0,%2"
|
asm ("rotlw %0,%0,%2"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -295,7 +295,7 @@ static inline unsigned ROL(unsigned word, int i)
|
|||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned ROR(unsigned word, int i)
|
static inline __attribute__((always_inline)) unsigned ROR(unsigned word, int i)
|
||||||
{
|
{
|
||||||
asm ("rotlw %0,%0,%2"
|
asm ("rotlw %0,%0,%2"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -305,7 +305,7 @@ static inline unsigned ROR(unsigned word, int i)
|
|||||||
|
|
||||||
#ifndef LTC_NO_ROLC
|
#ifndef LTC_NO_ROLC
|
||||||
|
|
||||||
static inline unsigned ROLc(unsigned word, const int i)
|
static inline __attribute__((always_inline)) unsigned ROLc(unsigned word, const int i)
|
||||||
{
|
{
|
||||||
asm ("rotlwi %0,%0,%2"
|
asm ("rotlwi %0,%0,%2"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -313,7 +313,7 @@ static inline unsigned ROLc(unsigned word, const int i)
|
|||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned RORc(unsigned word, const int i)
|
static inline __attribute__((always_inline)) unsigned RORc(unsigned word, const int i)
|
||||||
{
|
{
|
||||||
asm ("rotrwi %0,%0,%2"
|
asm ("rotrwi %0,%0,%2"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -343,7 +343,7 @@ static inline unsigned RORc(unsigned word, const int i)
|
|||||||
/* 64-bit Rotates */
|
/* 64-bit Rotates */
|
||||||
#if !defined(__STRICT_ANSI__) && defined(__GNUC__) && defined(__x86_64__) && !defined(LTC_NO_ASM)
|
#if !defined(__STRICT_ANSI__) && defined(__GNUC__) && defined(__x86_64__) && !defined(LTC_NO_ASM)
|
||||||
|
|
||||||
static inline unsigned long ROL64(unsigned long word, int i)
|
static inline __attribute__((always_inline)) unsigned long ROL64(unsigned long word, int i)
|
||||||
{
|
{
|
||||||
asm("rolq %%cl,%0"
|
asm("rolq %%cl,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -351,7 +351,7 @@ static inline unsigned long ROL64(unsigned long word, int i)
|
|||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long ROR64(unsigned long word, int i)
|
static inline __attribute__((always_inline)) unsigned long ROR64(unsigned long word, int i)
|
||||||
{
|
{
|
||||||
asm("rorq %%cl,%0"
|
asm("rorq %%cl,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -361,7 +361,7 @@ static inline unsigned long ROR64(unsigned long word, int i)
|
|||||||
|
|
||||||
#ifndef LTC_NO_ROLC
|
#ifndef LTC_NO_ROLC
|
||||||
|
|
||||||
static inline unsigned long ROL64c(unsigned long word, const int i)
|
static inline __attribute__((always_inline)) unsigned long ROL64c(unsigned long word, const int i)
|
||||||
{
|
{
|
||||||
asm("rolq %2,%0"
|
asm("rolq %2,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
@@ -369,7 +369,7 @@ static inline unsigned long ROL64c(unsigned long word, const int i)
|
|||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long ROR64c(unsigned long word, const int i)
|
static inline __attribute__((always_inline)) unsigned long ROR64c(unsigned long word, const int i)
|
||||||
{
|
{
|
||||||
asm("rorq %2,%0"
|
asm("rorq %2,%0"
|
||||||
:"=r" (word)
|
:"=r" (word)
|
||||||
|
|||||||
Reference in New Issue
Block a user