[all-commits] [llvm/llvm-project] 9f0295: [ARM] Allow spilling FPSCR for MVE adc/sbc intrins...

Oliver Stannard via All-commits all-commits at lists.llvm.org
Thu Nov 7 03:24:10 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 9f02950a1589ebfc542f4f5a2475c2cc03e4e2e9
      https://github.com/llvm/llvm-project/commit/9f02950a1589ebfc542f4f5a2475c2cc03e4e2e9
  Author: Oliver Stannard <oliver.stannard at arm.com>
  Date:   2024-11-07 (Thu, 07 Nov 2024)

  Changed paths:
    M llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
    M llvm/lib/Target/ARM/ARMInstrVFP.td
    M llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
    A llvm/test/CodeGen/Thumb2/mve-vadc-vsbc-spill.ll

  Log Message:
  -----------
  [ARM] Allow spilling FPSCR for MVE adc/sbc intrinsics (#115174)

The MVE VADC and VSBC instructions read and write a carry bit in FPSCR,
which is exposed through the intrinsics. This makes it possible to write
code which has the FPSCR live across a function call, or which uses the
same value twice, so it needs to be possible to spill and reload it.

There is a missed optimisation in one of the test cases, where we reload
the FPSCR from the stack despite it still being live, I've not found a
simple way to prevent the register allocator from doing this.



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