CT_01_013 - Move vsetvli insertion later in pipeline (LLVM)

CT_01_013 - Move vsetvli insertion later in pipeline (LLVM)

About

The vsetvli insertion pass currently runs late in the SSA portion of the pre-RA pipeline. This is before instruction sheduling and register allocation.

The vsetvli instruction act as instruction scheduling barriers. The physical register dependencies on VL and VTYPE introduced prevent register allocation from re-materializing instructions like vmv.v.i.

At the LLVM developer meeting in the fall 2023, we discussed a pipeline structure like this

  • Leave SSA form

  • Machine scheduling

  • Register allocate vector registers

  • vsetvli insertion

  • Register allocate scalar registers

    • This allows us to allocate the GPR updates needed for registers needed by vsetvli instructions.

Stakeholders/Partners

RISE:

SiFive: Piyou Chen (Lead Developer), Craig Topper

External:

Igalia: Luke Lau

Dependencies

 

Status

Development

Complete

 

Development Timeline

NA

 

Upstreaming

complete

 

Upstream Version

 

 

 

 

Contacts

Piyou Chen (SiFive)

Craig Topper(SiFive)

 

Dependencies

 

 

 

Updates

Jul 11, 2024 

  • Main patch landed May 20. 

Apr 11, 2024