[all-commits] [llvm/llvm-project] db73bc: ARM-NEON: separate soon-to-be conflicting f16 patt...

Tim Northover via All-commits all-commits at lists.llvm.org
Wed Nov 20 05:20:09 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: db73bcd98ef4ffbe91405a5adfcfdcd83bc007f4
      https://github.com/llvm/llvm-project/commit/db73bcd98ef4ffbe91405a5adfcfdcd83bc007f4
  Author: Tim Northover <t.p.northover at gmail.com>
  Date:   2019-11-20 (Wed, 20 Nov 2019)

  Changed paths:
    M clang/include/clang/Basic/arm_fp16.td

  Log Message:
  -----------
  ARM-NEON: separate soon-to-be conflicting f16 patterns. NFC.

This separates some intrinsic definitions into multiple instantiations because
they use a modifier that forces the float size to a given value. That modifier
won't work in the new NeonEmitter modifier scheme and committing this
separately allows the Python script to be run on the .td files to perform the
conversion automatically.


  Commit: e23d6f3184d365a9e72a67dddd870d98e80f998d
      https://github.com/llvm/llvm-project/commit/e23d6f3184d365a9e72a67dddd870d98e80f998d
  Author: Tim Northover <t.p.northover at gmail.com>
  Date:   2019-11-20 (Wed, 20 Nov 2019)

  Changed paths:
    M clang/lib/CodeGen/CGBuiltin.cpp
    M clang/utils/TableGen/NeonEmitter.cpp

  Log Message:
  -----------
  NeonEmitter: remove special case on casting polymorphic builtins.

For some reason we were not casting a fairly obscure class of builtin calls we
expected to be polymorphic to vectors of char. It worked because the only
affected intrinsics weren't actually polymorphic after all, but is
unnecessarily complicated.


  Commit: 3f91705ca54bc76b50c35f9e0831ab356d653c5c
      https://github.com/llvm/llvm-project/commit/3f91705ca54bc76b50c35f9e0831ab356d653c5c
  Author: Tim Northover <t.p.northover at gmail.com>
  Date:   2019-11-20 (Wed, 20 Nov 2019)

  Changed paths:
    M clang/include/clang/Basic/arm_fp16.td
    M clang/include/clang/Basic/arm_neon.td
    M clang/include/clang/Basic/arm_neon_incl.td
    M clang/test/CodeGen/aarch64-neon-intrinsics.c
    M clang/test/CodeGen/aarch64-neon-scalar-x-indexed-elem.c
    M clang/utils/TableGen/NeonEmitter.cpp
    A clang/utils/convert_arm_neon.py

  Log Message:
  -----------
  ARM-NEON: make type modifiers orthogonal and allow multiple modifiers.

The modifier system used to mutate types on NEON intrinsic definitions had a
separate letter for all kinds of transformations that might be needed, and we
were quite quickly running out of letters to use. This patch converts to a much
smaller set of orthogonal modifiers that can be applied together to achieve the
desired effect.

When merging with downstream it is likely to cause a conflict with any local
modifications to the .td files. There is a new script in
utils/convert_arm_neon.py that was used to convert all .td definitions and I
would suggest running it on the last downstream version of those files before
this commit rather than resolving conflicts manually.


Compare: https://github.com/llvm/llvm-project/compare/c34478f5f6c7...3f91705ca54b


More information about the All-commits mailing list