mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
9ed3d57a44
This is a replacement for D101938 for inserting vsetvli instructions where needed. This new version changes how we track the information in such a way that we can extend it to be aware of VL/VTYPE changes in other blocks. Given how much it changes the previous patch, I've decided to abandon the previous patch and post this from scratch. For now the pass consists of a single phase that assumes the incoming state from other basic blocks is unknown. A follow up patch will extend this with a phase to collect information about how VL/VTYPE change in each block and a second phase to propagate this information to the entire function. This will be used by a third phase to do the vsetvli insertion. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D102737
58 lines
1.9 KiB
C++
58 lines
1.9 KiB
C++
//===-- RISCV.h - Top-level interface for RISCV -----------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains the entry points for global functions defined in the LLVM
|
|
// RISC-V back-end.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_RISCV_RISCV_H
|
|
#define LLVM_LIB_TARGET_RISCV_RISCV_H
|
|
|
|
#include "MCTargetDesc/RISCVBaseInfo.h"
|
|
#include "llvm/Target/TargetMachine.h"
|
|
|
|
namespace llvm {
|
|
class RISCVRegisterBankInfo;
|
|
class RISCVSubtarget;
|
|
class RISCVTargetMachine;
|
|
class AsmPrinter;
|
|
class FunctionPass;
|
|
class InstructionSelector;
|
|
class MCInst;
|
|
class MCOperand;
|
|
class MachineInstr;
|
|
class MachineOperand;
|
|
class PassRegistry;
|
|
|
|
bool lowerRISCVMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
|
|
AsmPrinter &AP);
|
|
bool LowerRISCVMachineOperandToMCOperand(const MachineOperand &MO,
|
|
MCOperand &MCOp, const AsmPrinter &AP);
|
|
|
|
FunctionPass *createRISCVISelDag(RISCVTargetMachine &TM);
|
|
|
|
FunctionPass *createRISCVMergeBaseOffsetOptPass();
|
|
void initializeRISCVMergeBaseOffsetOptPass(PassRegistry &);
|
|
|
|
FunctionPass *createRISCVExpandPseudoPass();
|
|
void initializeRISCVExpandPseudoPass(PassRegistry &);
|
|
|
|
FunctionPass *createRISCVExpandAtomicPseudoPass();
|
|
void initializeRISCVExpandAtomicPseudoPass(PassRegistry &);
|
|
|
|
FunctionPass *createRISCVInsertVSETVLIPass();
|
|
void initializeRISCVInsertVSETVLIPass(PassRegistry &);
|
|
|
|
InstructionSelector *createRISCVInstructionSelector(const RISCVTargetMachine &,
|
|
RISCVSubtarget &,
|
|
RISCVRegisterBankInfo &);
|
|
}
|
|
|
|
#endif
|