Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.h
- This file was added.
//===- AMDGPUMCInstLower.h - Lower AMDGPU MachineInstr to an MCInst -------===// | |||||
// | |||||
// 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 | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
// | |||||
/// \file | |||||
/// Header of lower AMDGPU MachineInstrs to their corresponding MCInst. | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
// | |||||
#ifndef LLVM_LIB_TARGET_AMDGPUMCINSTLOWER_H | |||||
Lint: Pre-merge checks: clang-tidy: warning: header guard does not follow preferred style [llvm-header-guard]
[[https… | |||||
#define LLVM_LIB_TARGET_AMDGPUMCINSTLOWER_H | |||||
#include "AMDGPUTargetMachine.h" | |||||
#include "llvm/IR/Constants.h" | |||||
#include "llvm/Support/Casting.h" | |||||
namespace llvm { | |||||
class AsmPrinter; | |||||
class MCContext; | |||||
} // namespace llvm | |||||
using namespace llvm; | |||||
class AMDGPUMCInstLower { | |||||
MCContext &Ctx; | |||||
const TargetSubtargetInfo &ST; | |||||
const AsmPrinter ≈ | |||||
public: | |||||
AMDGPUMCInstLower(MCContext &ctx, const TargetSubtargetInfo &ST, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for parameter 'ctx' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for parameter 'ctx' [readability-identifier-naming]… | |||||
const AsmPrinter &AP); | |||||
bool lowerOperand(const MachineOperand &MO, MCOperand &MCOp) const; | |||||
/// Lower a MachineInstr to an MCInst | |||||
void lower(const MachineInstr *MI, MCInst &OutMI) const; | |||||
}; | |||||
namespace { | |||||
const MCExpr *lowerAddrSpaceCast(const TargetMachine &TM, const Constant *CV, | |||||
Lint: Pre-merge checks clang-tidy: warning: unused function 'lowerAddrSpaceCast' [clang-diagnostic-unused-function] Lint: Pre-merge checks: clang-tidy: warning: unused function 'lowerAddrSpaceCast' [clang-diagnostic-unused-function]… | |||||
MCContext &OutContext) { | |||||
// TargetMachine does not support llvm-style cast. Use C++-style cast. | |||||
// This is safe since TM is always of type AMDGPUTargetMachine or its | |||||
// derived class. | |||||
auto &AT = static_cast<const AMDGPUTargetMachine &>(TM); | |||||
auto *CE = dyn_cast<ConstantExpr>(CV); | |||||
// Lower null pointers in private and local address space. | |||||
// Clang generates addrspacecast for null pointers in private and local | |||||
// address space, which needs to be lowered. | |||||
if (CE && CE->getOpcode() == Instruction::AddrSpaceCast) { | |||||
auto Op = CE->getOperand(0); | |||||
Lint: Pre-merge checks clang-tidy: warning: 'auto Op' can be declared as 'auto *Op' [llvm-qualified-auto] Lint: Pre-merge checks: clang-tidy: warning: 'auto Op' can be declared as 'auto *Op' [llvm-qualified-auto]
[[https… | |||||
auto SrcAddr = Op->getType()->getPointerAddressSpace(); | |||||
if (Op->isNullValue() && AT.getNullPointerValue(SrcAddr) == 0) { | |||||
auto DstAddr = CE->getType()->getPointerAddressSpace(); | |||||
return MCConstantExpr::create(AT.getNullPointerValue(DstAddr), | |||||
OutContext); | |||||
} | |||||
} | |||||
return nullptr; | |||||
} | |||||
} // namespace | |||||
#endif // LLVM_LIB_TARGET_AMDGPUMCINSTLOWER_H |
clang-tidy: warning: header guard does not follow preferred style [llvm-header-guard]
not useful