[all-commits] [llvm/llvm-project] 785b16: [RISCV][GISel] Support G_MERGE_VALUES/G_UNMERGE_VA...

Craig Topper via All-commits all-commits at lists.llvm.org
Tue Jan 7 07:51:12 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 785b16ad04a741dce65ebaa11ee86d9dd19dd699
      https://github.com/llvm/llvm-project/commit/785b16ad04a741dce65ebaa11ee86d9dd19dd699
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2025-01-07 (Tue, 07 Jan 2025)

  Changed paths:
    M llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
    M llvm/lib/Target/RISCV/RISCVInstrInfoD.td
    M llvm/test/CodeGen/RISCV/GlobalISel/double-zfa.ll

  Log Message:
  -----------
  [RISCV][GISel] Support G_MERGE_VALUES/G_UNMERGE_VALUES with Zfa. (#120379)

Without Zfa we use pseudos that are lowered to a stack load/store. With
Zfa we have instructions that can move a pair of registers to an FPR. Or
move the high or low half of an FPR to a GPR.

I've used a GINodeEquiv to make use of 3 of the 4 tablegen patterns. The
split case with Zfa requires 2 instructions which I'm doing through
custom isel like we do in SelectionDAG.



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