https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70525

            Bug ID: 70525
           Summary: generating 'vpandn' without the mode suffix, gnu as
                    fails to assemble (-mavx512bw)
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Keywords: assemble-failure
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zsojka at seznam dot cz
  Target Milestone: ---
            Target: x86_64-pc-linux-gnu

Created attachment 38174
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38174&action=edit
reduced testcase

Output:
$ gcc -O -mavx512bw testcase.c
/tmp/ccuJjUxJ.s: Assembler messages:
/tmp/ccuJjUxJ.s:8: Error: operand type mismatch for `vpandn'

@@ -5,7 +5,7 @@
foo:                                                                           
  .LFB0:
        .cfi_startproc
-       vpandn  %zmm0, %zmm1, %zmm0
+       vpandnq %zmm0, %zmm1, %zmm0
        ret
        .cfi_endproc
 .LFE0:


Fixes the assembly (similar fix applies for the intel syntax). (vpandnd can be
used as well)

Both the "vpandnq" and "vpandnd" instructions should be available in the
"foundation" instruction set with -mavx512f, but -mavx512bw is needed to force
generation of the instruction. I will create a missed-optimization for this,
unless I am wrong.

Reply via email to