[all-commits] [llvm/llvm-project] bba83e: [AArch64] LowerMUL - use SDValue directly instead ...

Simon Pilgrim via All-commits all-commits at lists.llvm.org
Fri Sep 22 02:45:31 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bba83e20deec28572dbec4288cd0a135b4386c25
      https://github.com/llvm/llvm-project/commit/bba83e20deec28572dbec4288cd0a135b4386c25
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2023-09-22 (Fri, 22 Sep 2023)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

  Log Message:
  -----------
  [AArch64] LowerMUL - use SDValue directly instead of SDNode. NFC.

As discussed on D159537, using the SDValue operands directly instead of peeking inside to the SDNode prevents any issues where a non-zero result index has been used.


  Commit: 6d2679992e58bdb2ab74f354b0b8c9ce2a31f247
      https://github.com/llvm/llvm-project/commit/6d2679992e58bdb2ab74f354b0b8c9ce2a31f247
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2023-09-22 (Fri, 22 Sep 2023)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

  Log Message:
  -----------
  [AArch64] Don't rely on (zext (trunc x)) pattern to detect zext_inreg MULL patterns - use value tracking directly

As explained on D159533, I'm trying to generalize the "(zext (trunc x)) -> x iff the upper bits are known zero" fold in getNode() and I was seeing assertions in the aarch64 mull matching code as it was assuming these 'zero-extend-inreg' patterns will remain from earlier in LowerMUL.

Instead I've updated selectUmullSmull/skipExtensionForVectorMULL to just use value tracking to detect when the upper bits are known zero, and to insert the truncation nodes later if necessary.

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


Compare: https://github.com/llvm/llvm-project/compare/23ea98f155b0...6d2679992e58


More information about the All-commits mailing list