I have a piece of code that does an register dereference to an in-memory array "offset(base, index, scale)", the intel compiler says it supports at&t syntax so maybe I'm going about this the wrong way or require some intel-specific provisions in order to acheive this - in gcc this works fine (mingw and gcc native) but when trying with the intel compiler (via VS2010) it gives errors and refuses to compile, "error : expected an expression".
movq T0(,%%rdi,8), %%mm1
Maybe somebody can tell me if there's a better way to achieve this or why the intel compiler doesn't work on this particular AS which works fine in gcc?
T0 declaration:
__declspec(align(16)) static const u64 T0[256] = {...}
asm declaration:
void asmfunc(u64 *x) {
__asm__ volatile(
...
: /*no output, only memory is modified */
: "r"(x)
: "%rax", "%rbx", "%rcx", "%rdx", "%rdi", "%rsi", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "memory" , "%mm0", "%mm1", "%mm2" , "%mm3" , "%mm4" , "%mm5" , "%mm6" , "%mm7" );
}