mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 19:59:05 +08:00
make custom asm directive volatile
This commit is contained in:
parent
fe813911f2
commit
ef55e7f4ce
@ -191,22 +191,22 @@ template<> EIGEN_STRONG_INLINE Packet4i ei_ploadu<int>(const int* from) { return
|
|||||||
template<> EIGEN_STRONG_INLINE Packet4f ei_ploadu(const float* from)
|
template<> EIGEN_STRONG_INLINE Packet4f ei_ploadu(const float* from)
|
||||||
{
|
{
|
||||||
__m128 res;
|
__m128 res;
|
||||||
asm("movsd %[from0], %[r]" : [r] "=x" (res) : [from0] "m" (*from), [dummy] "m" (*(from+1)) );
|
asm volatile ("movsd %[from0], %[r]" : [r] "=x" (res) : [from0] "m" (*from), [dummy] "m" (*(from+1)) );
|
||||||
asm("movhps %[from2], %[r]" : [r] "+x" (res) : [from2] "m" (*(from+2)), [dummy] "m" (*(from+3)) );
|
asm volatile ("movhps %[from2], %[r]" : [r] "+x" (res) : [from2] "m" (*(from+2)), [dummy] "m" (*(from+3)) );
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
template<> EIGEN_STRONG_INLINE Packet2d ei_ploadu(const double* from)
|
template<> EIGEN_STRONG_INLINE Packet2d ei_ploadu(const double* from)
|
||||||
{
|
{
|
||||||
__m128d res;
|
__m128d res;
|
||||||
asm("movsd %[from0], %[r]" : [r] "=x" (res) : [from0] "m" (*from) );
|
asm volatile ("movsd %[from0], %[r]" : [r] "=x" (res) : [from0] "m" (*from) );
|
||||||
asm("movhpd %[from1], %[r]" : [r] "+x" (res) : [from1] "m" (*(from+1)) );
|
asm volatile ("movhpd %[from1], %[r]" : [r] "+x" (res) : [from1] "m" (*(from+1)) );
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
template<> EIGEN_STRONG_INLINE Packet4i ei_ploadu(const int* from)
|
template<> EIGEN_STRONG_INLINE Packet4i ei_ploadu(const int* from)
|
||||||
{
|
{
|
||||||
__m128i res;
|
__m128i res;
|
||||||
asm("movsd %[from0], %[r]" : [r] "=x" (res) : [from0] "m" (*from), [dummy] "m" (*(from+1)) );
|
asm volatile ("movsd %[from0], %[r]" : [r] "=x" (res) : [from0] "m" (*from), [dummy] "m" (*(from+1)) );
|
||||||
asm("movhps %[from2], %[r]" : [r] "+x" (res) : [from2] "m" (*(from+2)), [dummy] "m" (*(from+3)) );
|
asm volatile ("movhps %[from2], %[r]" : [r] "+x" (res) : [from2] "m" (*(from+2)), [dummy] "m" (*(from+3)) );
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user