15#ifndef LLVM_LIB_TARGET_AMDGPU_VOPDUTILS_H
16#define LLVM_LIB_TARGET_AMDGPU_VOPDUTILS_H
63 MachineInstr &FirstMI,
64 MachineInstr &SecondMI);
const HexagonInstrInfo * TII
This file defines the SmallVector class.
MCRegisterClass - Base class of TargetRegisterClass.
Representation of each machine instruction.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This is an optimization pass for GlobalISel generic memory operations.
std::unique_ptr< ScheduleDAGMutation > createVOPDPairingMutation()
std::optional< VOPDMatchInfo > tryMatchVOPDPair(const SIInstrInfo &TII, MachineInstr &FirstMI, MachineInstr &SecondMI)
Check whether FirstMI and SecondMI can be combined into a VOPD instruction.
A 32-bit immediate which the VOPD encoding cannot hold.
int32_t Imm
Value which has to be placed in a register.
const MCRegisterClass * SlotRC
Scalar registers the VOPD source slot can read.
unsigned CompIdx
Component holding the immediate, AMDGPU::VOPD::X or AMDGPU::VOPD::Y.
unsigned OpIdx
Index of the immediate operand within that component.
Describes a matched VOPD pair.
SmallVector< VOPDLiteralFixup, 2 > LiteralFixups
Immediates which have to be moved into scalar registers before the pair can be built.
MachineInstr * getMIX() const
unsigned XIdx
Which entry in InOrder is the X component.
MachineInstr * getMIY() const
MachineInstr * InOrder[2]
The component instructions in program order.