On Mon, Apr 9, 2018 at 11:37 AM, Jakub Jelinek <ja...@redhat.com> wrote: > Hi! > > I've tested make check-gcc > RUNTESTFLAGS='--target_board=unix\{-m32/-masm=intel,-m64/-masm=intel\} > i386.exp vect.exp' > testing and looked solely at assembly Error: (there are many scan-assembler* > directives that just fail, and some tests use e.g. only att inline asm > etc.). > > The following patch fixes what I found that way. Bootstrapped/regtested on > x86_64-linux and i686-linux, ok for trunk? > > The patch fixes: > -FAIL: gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512dq-vreducesd-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512dq-vreducess-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512f-vcvtsd2usi-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512f-vcvtsd2usi64-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512f-vcvtss2usi-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512f-vcvtss2usi64-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512f-vfixupimmsd-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512f-vfixupimmss-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512f-vrndscaless-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512vl-vcvtudq2pd-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512vl-vpmovswb-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512vl-vpmovuswb-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512vl-vpmovwb-2.c (test for excess errors) > -FAIL: gcc.target/i386/avx512vl-vshufpd-2.c (test for excess errors) > > BTW, -masm=intel seems to be in quite bad shape even in the assembler, in > various testcases I'm getting errors like on the following reduced one: > int k1, xmm0; > int foo (void) { return k1; } > int bar (void) { return xmm0; } > gcc -masm=intel -O2 > /tmp/cch0mo1K.s: Assembler messages: > /tmp/cch0mo1K.s:10: Error: invalid use of register > /tmp/cch0mo1K.s:21: Error: invalid use of register > As ICC generates the same assembly on the instructions: > mov eax, DWORD PTR k1[rip] > ... > mov eax, DWORD PTR xmm0[rip] > I think either the intel syntax spec is faulty, or gas is buggy and should > figure out that after *WORD PTR and before [ there is symbol rather than > register name. Some testcases e.g. have k1 as function name and that > results in other asm errors (about .size directive). >
Hi Jan, How does Intel syntax support symbols like eax, k1 and xmm0 with ".intel_syntax noprefix"? -- H.J.