
Uniformity analysis needs to be the fundamental basis for regbank decisions. The considerations of the default pass are secondary, but potentially useful for some edge cases (e.g. selecting AGPRs when arbitrary loads and stores can directly use them). This needs to be a separate pass since it requires new analysis dependencies. Boilerplate to subclass the existing pass which does nothing different.
30 lines
872 B
C++
30 lines
872 B
C++
//===- AMDGPURegBankSelect.h -------------------------------------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUREGBANKSELECT_H
|
|
#define LLVM_LIB_TARGET_AMDGPU_AMDGPUREGBANKSELECT_H
|
|
|
|
#include "llvm/CodeGen/GlobalISel/RegBankSelect.h"
|
|
|
|
namespace llvm {
|
|
|
|
class AMDGPURegBankSelect final : public RegBankSelect {
|
|
public:
|
|
static char ID;
|
|
|
|
AMDGPURegBankSelect(Mode RunningMode = Fast);
|
|
|
|
StringRef getPassName() const override;
|
|
|
|
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
|
bool runOnMachineFunction(MachineFunction &MF) override;
|
|
};
|
|
|
|
} // namespace llvm
|
|
#endif
|