Re: postgreSQL-8.0.1 compilation with icc-8.1 on Itanium-2 gives "error: asm statements not supported" - Mailing list pgsql-hackers
From | Vikram Kalsi |
---|---|
Subject | Re: postgreSQL-8.0.1 compilation with icc-8.1 on Itanium-2 gives "error: asm statements not supported" |
Date | |
Msg-id | ed5f0fd705030321576628b411@mail.gmail.com Whole thread Raw |
In response to | Re: postgreSQL-8.0.1 compilation with icc-8.1 on Itanium-2 gives "error: asm statements not supported" (Peter Eisentraut <peter_e@gmx.net>) |
Responses |
Re: postgreSQL-8.0.1 compilation with icc-8.1 on Itanium-2 gives "error: asm statements not supported"
Re: postgreSQL-8.0.1 compilation with icc-8.1 on Itanium-2 |
List | pgsql-hackers |
Tom, Peter, I have been able to compile and sucessfully run pgSQL after replacing the asm statement in postgresql-8.0.1/src/include/storage/s_lock.h with an equivalent intrinsic for the Itanium platform- ------------------------------------------BEGIN OLD s_lock.h---------------------------------------------------------- #if defined(__ia64__) || defined(__ia64) /* __ia64 used by ICC compiler? */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { long int ret; __asm__ __volatile__( " xchg4 %0=%1,%2 \n" : "=r"(ret), "+m"(*lock) : "r"(1) : "memory"); return (int) ret; } #endif /* __ia64__ || __ia64 */ -----------------------------------------------END OLD s_lock.h---------------------------------------------------------- ------------------------------------------BEGIN NEW s_lock.h---------------------------------------------------------- #if defined(__ia64__) || defined(__ia64) /* __ia64 used by ICC compiler? */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { int ret; ret = _InterlockedExchange(lock,1); return ret; } #endif /* __ia64__ || __ia64 */ ----------------------------------------------END NEW s_lock.h---------------------------------------------------------- The binary appears to be stable and the tpc-H benchmark executed successfully against it as well. I also ran the regression test but the following tests failed, the reasons for which I haven't investigated yet (http://www.cse.psu.edu/~kalsi/files/regression.diffs)- test create_function_1 ... FAILED test create_type ... FAILED test create_table ... FAILED test create_function_2 ... FAILED test triggers ... FAILED test create_operator ... FAILED test create_view ... FAILED test transactions ... FAILED test misc ... FAILED test select_views ... FAILED test rules ... FAILED test plpgsql ... failed (ignored) test copy2 ... FAILED test rangefuncs ... FAILED test conversion ... FAILED test stats ... FAILED The _InterlockedExchange() function is defined in ia64intrin.h header file int _InterlockedExchange(volatile int *Target, long value) Do an exchange operation atomically. Maps to the xchg4 instruction. More information is available at http://www.intel.com/software/products/compilers/clin/docs/ug_cpp/lin1072.htm Also, some other points to note, _ICC wasn't defined on my installation when I was using icc by setting env var CC=icc. So, when I tried to put a "#if defined" for using asm() for gcc and _InterlockedExchange(), it didn't work. So, after this change gcc compilation fails. As of now, I am trying to test the binary further to see if it is stable. Would you be knowing some good way to test this change? I am not aware of the procedure of building patches but if this resolves this issue and you would like me to make some sort of a patch, then please let me know. Thanks, -Vikram On Thu, 3 Mar 2005 09:55:18 +0100, Peter Eisentraut <peter_e@gmx.net> wrote: > Tom Lane wrote: > > #if defined(__GNUC__) || defined(__ICC) > > > > Can anyone say a reason why the above #if is not wrong ... ie, > > are there any platforms where icc does handle gcc asm syntax, > > and if so exactly which ones are they? > > I believe I added that a few releases ago. The platform is IA32. > Evidently, the GCC compatibility on IA64 is not quite as far yet. > > -- > Peter Eisentraut > http://developer.postgresql.org/~petere/ >
pgsql-hackers by date: