Module: xenomai-2.6 Branch: master Commit: f9cf6b52ee89a71da5e3a0fb31bd13a4a682c009 URL: http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=f9cf6b52ee89a71da5e3a0fb31bd13a4a682c009
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Wed Jul 6 20:17:57 2016 +0200 x86/fptest: add missing asm constraints as per 3.x commit 13a1bf515b25ce6e3a5499c800d50032c4679b96 --- include/asm-x86/fptest.h | 115 +++++++++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 48 deletions(-) diff --git a/include/asm-x86/fptest.h b/include/asm-x86/fptest.h index c3d620c..af623a7 100644 --- a/include/asm-x86/fptest.h +++ b/include/asm-x86/fptest.h @@ -120,34 +120,44 @@ static inline void fp_regs_set(unsigned val) vec[i][0] = val++; vec[i][2] = val++; } - if (cpu_has_avx) + if (cpu_has_avx) { __asm__ __volatile__( "vmovupd %0,%%ymm0;" - "vmovupd %1,%%ymm1;" - "vmovupd %2,%%ymm2;" - "vmovupd %3,%%ymm3;" - "vmovupd %4,%%ymm4;" - "vmovupd %5,%%ymm5;" - "vmovupd %6,%%ymm6;" - "vmovupd %7,%%ymm7;" - : : "m" (vec[0][0]), "m" (vec[1][0]), - "m" (vec[2][0]), "m" (vec[3][0]), - "m" (vec[4][0]), "m" (vec[5][0]), - "m" (vec[6][0]), "m" (vec[7][0])); - else if (cpu_has_xmm2) + "vmovupd %4,%%ymm1;" + "vmovupd %8,%%ymm2;" + "vmovupd %12,%%ymm3;" + : : "m" (vec[0][0]), "m" (vec[0][1]), "m" (vec[0][2]), "m" (vec[0][3]), + "m" (vec[1][0]), "m" (vec[1][1]), "m" (vec[1][2]), "m" (vec[1][3]), + "m" (vec[2][0]), "m" (vec[2][1]), "m" (vec[2][2]), "m" (vec[2][3]), + "m" (vec[3][0]), "m" (vec[3][1]), "m" (vec[3][2]), "m" (vec[3][3])); + __asm__ __volatile__( + "vmovupd %0,%%ymm4;" + "vmovupd %4,%%ymm5;" + "vmovupd %8,%%ymm6;" + "vmovupd %12,%%ymm7;" + : : "m" (vec[4][0]), "m" (vec[4][1]), "m" (vec[4][2]), "m" (vec[4][3]), + "m" (vec[5][0]), "m" (vec[5][1]), "m" (vec[5][2]), "m" (vec[5][3]), + "m" (vec[6][0]), "m" (vec[6][1]), "m" (vec[6][2]), "m" (vec[6][3]), + "m" (vec[7][0]), "m" (vec[7][1]), "m" (vec[7][2]), "m" (vec[7][3])); + + } else if (cpu_has_xmm2) __asm__ __volatile__( "movupd %0,%%xmm0;" - "movupd %1,%%xmm1;" - "movupd %2,%%xmm2;" - "movupd %3,%%xmm3;" - "movupd %4,%%xmm4;" - "movupd %5,%%xmm5;" - "movupd %6,%%xmm6;" - "movupd %7,%%xmm7;" - : : "m" (vec[0][0]), "m" (vec[1][0]), - "m" (vec[2][0]), "m" (vec[3][0]), - "m" (vec[4][0]), "m" (vec[5][0]), - "m" (vec[6][0]), "m" (vec[7][0])); + "movupd %2,%%xmm1;" + "movupd %4,%%xmm2;" + "movupd %6,%%xmm3;" + "movupd %8,%%xmm4;" + "movupd %10,%%xmm5;" + "movupd %12,%%xmm6;" + "movupd %14,%%xmm7;" + : : "m" (vec[0][0]), "m" (vec[0][1]), + "m" (vec[1][0]), "m" (vec[1][1]), + "m" (vec[2][0]), "m" (vec[2][1]), + "m" (vec[3][0]), "m" (vec[3][1]), + "m" (vec[4][0]), "m" (vec[4][1]), + "m" (vec[5][0]), "m" (vec[5][1]), + "m" (vec[6][0]), "m" (vec[6][1]), + "m" (vec[7][0]), "m" (vec[7][1])); } static inline unsigned fp_regs_check(unsigned val) @@ -162,32 +172,41 @@ static inline unsigned fp_regs_check(unsigned val) if (cpu_has_avx) { __asm__ __volatile__( "vmovupd %%ymm0,%0;" - "vmovupd %%ymm1,%1;" - "vmovupd %%ymm2,%2;" - "vmovupd %%ymm3,%3;" - "vmovupd %%ymm4,%4;" - "vmovupd %%ymm5,%5;" - "vmovupd %%ymm6,%6;" - "vmovupd %%ymm7,%7;" - : "=m" (vec[0][0]), "=m" (vec[1][0]), - "=m" (vec[2][0]), "=m" (vec[3][0]), - "=m" (vec[4][0]), "=m" (vec[5][0]), - "=m" (vec[6][0]), "=m" (vec[7][0])); - } else if (cpu_has_xmm2) { + "vmovupd %%ymm1,%4;" + "vmovupd %%ymm2,%8;" + "vmovupd %%ymm3,%12;" + : "=m" (vec[0][0]), "=m" (vec[0][1]), "=m" (vec[0][2]), "=m" (vec[0][3]), + "=m" (vec[1][0]), "=m" (vec[1][1]), "=m" (vec[1][2]), "=m" (vec[1][3]), + "=m" (vec[2][0]), "=m" (vec[2][1]), "=m" (vec[2][2]), "=m" (vec[2][3]), + "=m" (vec[3][0]), "=m" (vec[3][1]), "=m" (vec[3][2]), "=m" (vec[3][3])); + __asm__ __volatile__( + "vmovupd %%ymm4,%0;" + "vmovupd %%ymm5,%4;" + "vmovupd %%ymm6,%8;" + "vmovupd %%ymm7,%12;" + : "=m" (vec[4][0]), "=m" (vec[4][1]), "=m" (vec[4][2]), "=m" (vec[4][3]), + "=m" (vec[5][0]), "=m" (vec[5][1]), "=m" (vec[5][2]), "=m" (vec[5][3]), + "=m" (vec[6][0]), "=m" (vec[6][1]), "=m" (vec[6][2]), "=m" (vec[6][3]), + "=m" (vec[7][0]), "=m" (vec[7][1]), "=m" (vec[7][2]), "=m" (vec[7][3])); + + } else if (cpu_has_xmm2) __asm__ __volatile__( "movupd %%xmm0,%0;" - "movupd %%xmm1,%1;" - "movupd %%xmm2,%2;" - "movupd %%xmm3,%3;" - "movupd %%xmm4,%4;" - "movupd %%xmm5,%5;" - "movupd %%xmm6,%6;" - "movupd %%xmm7,%7;" - : "=m" (vec[0][0]), "=m" (vec[1][0]), - "=m" (vec[2][0]), "=m" (vec[3][0]), - "=m" (vec[4][0]), "=m" (vec[5][0]), - "=m" (vec[6][0]), "=m" (vec[7][0])); - } + "movupd %%xmm1,%2;" + "movupd %%xmm2,%4;" + "movupd %%xmm3,%6;" + "movupd %%xmm4,%8;" + "movupd %%xmm5,%10;" + "movupd %%xmm6,%12;" + "movupd %%xmm7,%14;" + : "=m" (vec[0][0]), "=m" (vec[0][1]), + "=m" (vec[1][0]), "=m" (vec[1][1]), + "=m" (vec[2][0]), "=m" (vec[2][1]), + "=m" (vec[3][0]), "=m" (vec[3][1]), + "=m" (vec[4][0]), "=m" (vec[4][1]), + "=m" (vec[5][0]), "=m" (vec[5][1]), + "=m" (vec[6][0]), "=m" (vec[6][1]), + "=m" (vec[7][0]), "=m" (vec[7][1])); for (i = 0, val_offset = 0; i < 8; i++, val_offset++) if (e[i] != val + val_offset) { _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git