Hi all,I'm looking for sources of s@h_enhanced 5.21, compilable with ICC. Current sources give full of intrinsics errors, even intrinsics are disabled.(and that Eric doesn't guarantee ICC w/o intrinsics works). And that it should be compiled on Window$ also. And that currently it's still under development...Then anyone (me?) must edit intrinsics.....regards,-Tetsuji
Hi, Crunch3r & Simon,Thank you for warm welcome!And thank you for the source 2.4. However it looks like it's still developing (at least Alex seems to developing AKfoldSSE.cpp which isn't present yet! AK stands for Alex Kan, right?).
You are indeed welcome here.The origin of AKfoldSSE was Alex's 6.x SSE2 folding routine, but I adapted it to my folding scheme sometime last year. The .cpp file should be in the 2.4 sources Optimizer directory.All intrinsics I've used have been per Intel instruction set documentation, they should work with the Intel compiler. Simon and Crunch3r have been able to take what I've written and tested with DevC++/MinGW and get it working with their Intel builds fairly quickly. But I think they have moved to very recent versions of the Intel tools. Joe
vector/analyzeFuncs_sse.cpp(803): error: argument of type "x86_m128={__m128}" is incompatible with parameter of type "__m128" s = _mm_add_ps(s, SS2); ^vector/analyzeFuncs_sse.cpp(803): error: argument of type "const_float4" is incompatible with parameter of type "__m128" s = _mm_add_ps(s, SS2); ^vector/analyzeFuncs_sse.cpp(803): error: a value of type "__m128" cannot be assigned to an entity of type "x86_m128={__m128}" s = _mm_add_ps(s, SS2); ^
#define __SSE__#define __MMX__#include <xmmintrin.h>__m128 a,b,c;voidfunc(){ a = _mm_add_ps(b,c);}
...The problem is incompatibility of argument types. For exampleCode: [Select]vector/analyzeFuncs_sse.cpp(803): error: argument of type "x86_m128={__m128}" is incompatible with parameter of type "__m128" s = _mm_add_ps(s, SS2); ^vector/analyzeFuncs_sse.cpp(803): error: argument of type "const_float4" is incompatible with parameter of type "__m128" s = _mm_add_ps(s, SS2); ^vector/analyzeFuncs_sse.cpp(803): error: a value of type "__m128" cannot be assigned to an entity of type "x86_m128={__m128}" s = _mm_add_ps(s, SS2); ^I don't see anything wrong and I'm at a loss, but once solved, it will be easy.Thanks in advance....
The x86_m128 type shouldn't be in use in that module, it looks like xmmintrin.h isn't being included at the top of x86_ops.h so __m128 is being replaced by x86_m128 at the bottom. For a Linux build, the sah_config.h file should have a line#define HAVE_XMMINTRIN_H 1That line was added June 1, but changes in that file aren't showing on the [seti_cvs] list, the most recent is June 18. I suppose that's because the file should be auto-generated rather than manually edited.I don't know if that will resolve the issue with const_float4 types. Those are Eric's method of ensuring that the compiler won't generate SSE initialization code for vector constants, running SSE before entry to main() and crashing on systems which don't have SSE. If they continue to be a problem, maybe copying those constants as is done in analyzeFuncs_x86_64.cpp will be necessary, but I'd try casting them first. Joe
vector/analyzeFuncs_sse.cpp(803): error: argument of type "x86_m128={__m128}" is incompatible with parameter of type "__m128" s = (__m128)_mm_add_ps((__m128)s, (__m128)SS2); ^vector/analyzeFuncs_sse.cpp(803): error: argument of type "x86_m128={__m128}" is incompatible with parameter of type "__m128" s = (__m128)_mm_add_ps((__m128)s, (__m128)SS2); ^vector/analyzeFuncs_sse.cpp(803): error: type of cast must be integral or enum s = (__m128)_mm_add_ps((__m128)s, (__m128)SS2); ^
#ifndef __INTEL_COMPILER#ifndef __m128d #define __m128d x86_m128d#endif#ifndef __m128i#define __m128i x86_m128i#endif#ifndef __m128#define __m128 x86_m128#endif
vector/analyzeFuncs_x86_64.cpp(76): error: a value of type "__m128" cannot be assigned to an entity of type "x86_m128={__m128}" zz = _mm_setzero_ps (); ^vector/analyzeFuncs_x86_64.cpp(120): error: a value of type "__m128d" cannot be assigned to an entity of type "x86_m128d={__m128}" CC = _mm_loadu_pd (aC); ^vector/analyzeFuncs_x86_64.cpp(121): error: a value of type "__m128d" cannot be assigned to an entity of type "x86_m128d={__m128}" DD = _mm_loadu_pd (aD); ^vector/analyzeFuncs_x86_64.cpp(123): error: argument of type "x86_m128d={__m128}" is incompatible with p!bameter of type "__m128d" cc = _mm_cvtpd_ps (CC); ^