[gmx-developers] MSVC 32bit + SSE
Alexey Shvetsov
alexxyum at gmail.com
Tue Jul 27 01:49:20 CEST 2010
Hi all!
Seems after commit 0648cdb56793bae5ec3f205add0a95330d08ae19 gromacs
dont builds anymore on linux x86_64
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxlib/n
onbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c: In function
‘nb_kernel_allvsall_sse2_double’:
/var/tmp/portage/sci-chemistry/gromacs-999
9/work/gromacs-9999/src/gmxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allv
sall_sse2_double.c:694: error: incompatible types when assigning to type
‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:695:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:702:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:703:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:794:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:795:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:798:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:799:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:892:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:893:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:899:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:900:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
make[5]: *** [nb_kernel_allvsall_sse2_double.lo] Error 1
make[5]: ***
Waiting for unfinished
jobs....
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/g
mxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:40:2
9: error: gmx_sse2_double.h: No such file or
directory
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/
gmxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c: In
function
‘nb_kernel_allvsallgb_sse2_double’:
/var/tmp/portage/sci-chemistry/gromacs-9
999/work/gromacs-9999/src/gmxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_al
lvsallgb_sse2_double.c:735: error: incompatible types when assigning to type
‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:736:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:743:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:744:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:933:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:934:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:937:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:938:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1129:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1130:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1137:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1138:
error: incompatible types when assigning to type ‘__m128d’ from type
‘int’
make[5]: *** [nb_kernel_allvsallgb_sse2_double.lo] Error 1
make[5]:
Leaving directory
`/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src/gm
xlib/nonbonded/nb_kernel_x86_64_sse2'
make[4]: *** [all-recursive] Error
1
make[4]: Leaving directory
`/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src/gm
xlib/nonbonded'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving
directory
`/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src/gm
xlib'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory
`/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src'
m
ake[1]: *** [all] Error 2
make[1]: Leaving directory
`/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src'
m
ake: *** [all-recursive] Error 1
On Monday 26 of July 2010 09:00:46
Roland Schulz wrote:
> Hi,
>
> gmx_sse2_single.h doesn't compile with MSVC
2010 on 32bit. As the COMPILER
> RANT in the file states MSVC doesn't
support more than 3 __m128 parameters.
> In the rant it also says that some
compilers don't support pointers to
> __m128. For what compiler is this
still true? If none, I suggest to change
> the arguments to const
pointers.
>
> If there are still, some: Are there also compilers which
don't support
> either pointers nor unlimited __m128 parameters?
>
> If
not, I suggest a mixed approach. Where we detect which version is
>
supported and use macros to have to write each function only once. See the
>
below example. I think this is much less error prone than converting all
>
functions to macros as the rant suggests. Mainly because of the double
>
evaluation pitfall of macros.
>
> Roland
>
> sample:
> #include
<xmmintrin.h>
>
> #ifdef SSE_POINTER
> #define SSE_M128(a) const __m128
*a
> #define SSE_REF(a) (&a)
> #define SSE_IND(a) (*a)
> #else
> #define
SSE_M128(a) __m128 a
> #define SSE_REF(a) (a)
> #define SSE_IND(a) (a)
>
#endif
>
> static inline void f(SSE_M128(b)) {
> __m128 x = SSE_IND(b);
>
}
>
> int main() {
> __m128 x;
> f(SSE_REF(x));
> return 0;
> }
--
Best Regards,
Alexey 'Alexxy' Shvetsov
Petersburg Nuclear Physics
Institute, Russia
Department of Molecular and Radiation Biophysics
Gentoo
Team Ru
Gentoo Linux
Dev
mailto:alexxyum at gmail.com
mailto:alexxy at gentoo.org
mailto:alexxy at omrb.pn
pi.spb.ru
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20100727/816566e5/attachment.sig>
More information about the gromacs.org_gmx-developers
mailing list