[all-commits] [llvm/llvm-project] 67496c: DAG/GlobalISel: Set disjoint for or in copysign lo...

Matt Arsenault via All-commits all-commits at lists.llvm.org
Fri Jun 28 11:35:34 PDT 2024


  Branch: refs/heads/users/arsenm/dag-set-disjoint-on-lowered-copysign
  Home:   https://github.com/llvm/llvm-project
  Commit: 67496c093274b0a9e1b760d8fb2a32676c9ccad9
      https://github.com/llvm/llvm-project/commit/67496c093274b0a9e1b760d8fb2a32676c9ccad9
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2024-06-28 (Fri, 28 Jun 2024)

  Changed paths:
    M llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    M llvm/test/CodeGen/AArch64/GlobalISel/legalize-fcopysign.mir
    M llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fcopysign.mir
    M llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-intrinsic-round.mir

  Log Message:
  -----------
  DAG/GlobalISel: Set disjoint for or in copysign lowering

We masked out the sign bit from one value, and the non-sign bits
from the other so there should be no common bits set.

No idea how to test this on the DAG path, other than scraping
the debug logs. A few targets hit this path with f16 values, but
the resulting i16 ors get anyext promoted and lose the disjoint
flag. In the fp128 case, PPC gets further and the or loses the flag
somewhere else later. Adding a haveNoCommonBits assert shows this
works though.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list