//===-- PPCInstrInfo.h - PowerPC Instruction Information --------*- 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 PowerPC implementation of the TargetInstrInfo class. // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_TARGET_POWERPC_PPCINSTRINFO_H #define LLVM_LIB_TARGET_POWERPC_PPCINSTRINFO_H #include "MCTargetDesc/PPCMCTargetDesc.h" #include "PPC.h" #include "PPCRegisterInfo.h" #include "llvm/ADT/SmallSet.h" #include "llvm/CodeGen/TargetInstrInfo.h" #define GET_INSTRINFO_HEADER #include "PPCGenInstrInfo.inc" namespace llvm { // Instructions that have an immediate form might be convertible to that // form if the correct input is a result of a load immediate. In order to // know whether the transformation is special, we might need to know some // of the details of the two forms. struct ImmInstrInfo { … }; // Information required to convert an instruction to just a materialized // immediate. struct LoadImmediateInfo { … }; // Index into the OpcodesForSpill array. enum SpillOpcodeKey { … }; // PPC MachineCombiner patterns enum PPCMachineCombinerPattern : unsigned { … }; // Define list of load and store spill opcodes. #define NoInstr … #define Pwr8LoadOpcodes … #define Pwr9LoadOpcodes … #define Pwr10LoadOpcodes … #define FutureLoadOpcodes … #define Pwr8StoreOpcodes … #define Pwr9StoreOpcodes … #define Pwr10StoreOpcodes … #define FutureStoreOpcodes … // Initialize arrays for load and store spill opcodes on supported subtargets. #define StoreOpcodesForSpill … #define LoadOpcodesForSpill … class PPCSubtarget; class PPCInstrInfo : public PPCGenInstrInfo { … }; } #endif