clan -x assembler fails on vcvttsd2siq instruction

Dear llvm developers,

I am trying to run clang assembler to use avx instructions on Mac.

I use gcc 4.7.1 to generate .s files from .c files. I can assemble foo.s by

clang -c -x assembler foo.s

to get foo.o but

clang -c -x assembler foo_long.s

fails with

$clang -x assembler foo_long.s
foo_long.s:27:2: error: invalid instruction mnemonic 'vcvttsd2siq'
        vcvttsd2siq %xmm0, %rax
        ^~~~~~~~~~~

clang can assemble many other .s files with avx instructions. I tried the default clang, clang+llvm 3.1 binary and svn checked out llvm/clang. All same.

Have you any idea?

Thank you so much!

Nobu

Nobu Katayama
nobu.katayama@ipmu.jp

foo.c

void foo(int *a, double *b, int n){
   int i;
   for (i=0; i<8*n; i++){
      a[i] = b[i];
   }
}

foo_long.c

void foo(long *a, double *b, int n){
   int i;
   for (i=0; i<8*n; i++){
      a[i] = b[i];
   }
}

diff foo.s foo_long.s
17c17
< leaq 0(,%rax,4), %rdx

片山 伸彦 <nobu.katayama <at> ipmu.jp> writes:

Dear llvm developers,

I am trying to run clang assembler to use avx instructions on Mac.

I use gcc 4.7.1 to generate .s files from .c files. I can assemble foo.s by

clang -c -x assembler foo.s

to get foo.o but

clang -c -x assembler foo_long.s

fails with

$clang -x assembler foo_long.s
foo_long.s:27:2: error: invalid instruction mnemonic 'vcvttsd2siq'
        vcvttsd2siq %xmm0, %rax
        ^~~~~~~~~~~

clang can assemble many other .s files with avx instructions. I tried the

default clang, clang+llvm 3.1

binary and svn checked out llvm/clang. All same.

Have you any idea?

Thank you so much!

Nobu

Nobu Katayama
nobu.katayama <at> ipmu.jp

Same problem here. I have used clang (both OS X 10.6.8 native clang-2.9 and
Macports clang-3.1) in a wrapper script along with GCC 4.7.1 to build ATLAS
(tuned BLAS and LAPACK libraries). I ran into this error as well.

error: invalid instruction mnemonic 'vcvttsd2siq'
        vcvttsd2siq %xmm0, %rax

The wrapper script is described here:
http://old.nabble.com/Re%3A-gcc,-as,-AVX,-binutils-and-MacOS-X-10.7-p32584737.html

JJ

It looks like LLVM expects both versions to be spelled without the "q".

-Eli

Hi all,

Thanks for response. Will this be fixed sometime soon?
Is there anything I can do to make it work in my copy of the latest llvm source?

Best,
Nobu

Hi Nobu,

Thanks for response. Will this be fixed sometime soon?

did you open a bug report?

Is there anything I can do to make it work in my copy of the latest llvm source?

Are you sure that

  vcvttsd2siq %xmm0, %rax

is correct and this isn't a gcc bug?

Ciao, Duncan.

Fixed in r160775. The AVX form was named differently than the non-AVX form. I’ve fixed all the AVX cvt instructions to match the suffixes of their non-AVX counterparts.