[all-commits] [llvm/llvm-project] 1a1e76: [CodeGen] Improve handling -Ofast generated code b...

Igor Kirillov via All-commits all-commits at lists.llvm.org
Wed May 31 11:32:43 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 1a1e76100e3f99c2bf0babcab52da333c12631e2
      https://github.com/llvm/llvm-project/commit/1a1e76100e3f99c2bf0babcab52da333c12631e2
  Author: Igor Kirillov <igor.kirillov at arm.com>
  Date:   2023-05-31 (Wed, 31 May 2023)

  Changed paths:
    M llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp
    M llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-fixed-fast.ll
    M llvm/test/CodeGen/AArch64/complex-deinterleaving-add-mull-scalable-fast.ll
    M llvm/test/CodeGen/AArch64/complex-deinterleaving-mixed-cases.ll
    M llvm/test/CodeGen/AArch64/complex-deinterleaving-multiuses.ll
    M llvm/test/CodeGen/AArch64/complex-deinterleaving-uniform-cases.ll
    M llvm/test/CodeGen/Thumb2/mve-complex-deinterleaving-mixed-cases.ll
    M llvm/test/CodeGen/Thumb2/mve-complex-deinterleaving-uniform-cases.ll

  Log Message:
  -----------
  [CodeGen] Improve handling -Ofast generated code by ComplexDeinterleaving pass

Code generated with -Ofast and -O3 -ffp-contract=fast (add
-ffinite-math-only to enable vectorization) can differ significantly.
Code compiled with -O3 can be deinterleaved using patterns as the
instruction order is preserved. However, with the -Ofast flag, there
can be multiple changes in the computation sequence, and even the real
and imaginary parts may not be calculated in parallel.
For more details, refer to
llvm/test/CodeGen/AArch64/complex-deinterleaving-*-fast.ll and
llvm/test/CodeGen/AArch64/complex-deinterleaving-*-contract.ll tests.
This patch implements a more general approach and enables handling most
-Ofast cases.

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




More information about the All-commits mailing list