[all-commits] [llvm/llvm-project] a1121c: [SVE] Fix incorrect code generation for bitcasts o...

paulwalker-arm via All-commits all-commits at lists.llvm.org
Wed Jun 8 02:31:43 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: a1121c31d8408e1ae859acf6946ddd28cbdd7a82
      https://github.com/llvm/llvm-project/commit/a1121c31d8408e1ae859acf6946ddd28cbdd7a82
  Author: Paul Walker <paul.walker at arm.com>
  Date:   2022-06-08 (Wed, 08 Jun 2022)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/sve-bitcast.ll

  Log Message:
  -----------
  [SVE] Fix incorrect code generation for bitcasts of unpacked vector types.

Bitcasting between unpacked scalable vector types of different
element counts is not a NOP because the live elements are laid out
differently.
               01234567
e.g. nxv2i32 = XX??XX??
     nxv4f16 = X?X?X?X?

Differential Revision: https://reviews.llvm.org/D126957


  Commit: d88354213cbbbbb55b4e2c00b86432fe7acb21c3
      https://github.com/llvm/llvm-project/commit/d88354213cbbbbb55b4e2c00b86432fe7acb21c3
  Author: Paul Walker <paul.walker at arm.com>
  Date:   2022-06-08 (Wed, 08 Jun 2022)

  Changed paths:
    M llvm/include/llvm/Support/TypeSize.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    M llvm/test/CodeGen/AArch64/sve-bitcast.ll

  Log Message:
  -----------
  [SelectionDAG] Remove invalid TypeSize conversion from PromoteIntRes_BITCAST.

Extend the TypeWidenVector case of PromoteIntRes_BITCAST to work
with TypeSize directly rather than silently casting to unsigned.

To accomplish this I've extended TypeSize with an interface that
essentially allows TypeSize division when both operands have the
same number of dimensions.

There still exists combinations of scalable vector bitcasts that
cause compiler crashes. I call these out by adding "is missing"
entries to sve-bitcast.

Depends on D126957.
Fixes: #55114

Differential Revision: https://reviews.llvm.org/D127126


Compare: https://github.com/llvm/llvm-project/compare/471bfb701669...d88354213cbb


More information about the All-commits mailing list