llvm/llvm-project

[AArch64][GlobalISel] ABD operations and combines

Open

#118.085 geöffnet am 29. Nov. 2024

Auf GitHub ansehen
 (17 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C++ (10.782 Forks)batch import
backend:AArch64good first issuellvm:globaliselmissed-optimization

Repository-Metriken

Stars
 (26.378 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 1T 2h) (1.000 gemergte PRs in 30 T)

Beschreibung

SDAG, via these nodes can pattern-recognise and optimise abd nodes. We should add the same operations for global isel.

  /// ABDS/ABDU - Absolute difference - Return the absolute difference between
  /// two numbers interpreted as signed/unsigned.
  /// i.e trunc(abs(sext(Op0) - sext(Op1))) becomes abds(Op0, Op1)
  ///  or trunc(abs(zext(Op0) - zext(Op1))) becomes abdu(Op0, Op1)
  ABDS,
  ABDU,

There are tests in, for example, llvm/test/CodeGen/AArch64/abd-combine.ll. https://godbolt.org/z/71PGjf486

Contributor Guide