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

--- Comment #6 from vries at gcc dot gnu.org ---
avx512f-kandnw-1.c fails with -fpic, because there's no kandnw instruction in
the .s file. In postreload, it's still there:
...
(insn 17 40 39 2 (parallel [
            (set (reg:HI 0 ax [105])
        (and:HI (not:HI (reg:HI 0 ax [105]))
                    (reg:HI 2 cx [orig:103 k2 ] [103])))
            (clobber (reg:CC 17 flags))
        ]) build/gcc/include/avx512fintrin.h:9995 386 {kandnhi}
     (nil))
...

Immediately afterwards, in split2, it disappears:
...
Splitting with gen_split_5282
scanning new insn with uid = 42.
scanning new insn with uid = 43.
deleting insn with uid = 17.
...

This is due to this split in i386.md (introduced in r202491):
...
(define_split
  [(set (match_operand:SWI12 0 "general_reg_operand")
        (and:SWI12
          (not:SWI12
            (match_dup 0))
          (match_operand:SWI12 1 "general_reg_operand")))
   (clobber (reg:CC FLAGS_REG))]
  "TARGET_AVX512F && !TARGET_BMI && reload_completed"
  [(set (match_dup 0)
        (not:HI (match_dup 0)))
   (parallel [(set (match_dup 0)
                   (and:HI (match_dup 0)
                           (match_dup 1)))
              (clobber (reg:CC FLAGS_REG))])])
...

Reply via email to