From c0aefd561e17471037fa3d043dc83bb2e388099c Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Mon, 12 Mar 2018 13:35:49 +0000 Subject: AMDGPU/GlobalISel: InstrMapping for G_MERGE_VALUES llvm-svn: 327268 --- llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'llvm/lib/Target/AMDGPU') diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp index 59b4712cfa9..72d5d6d09fe 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp @@ -317,6 +317,18 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const { OpdsMapping[2] = nullptr; break; } + case AMDGPU::G_MERGE_VALUES: { + unsigned Bank = isSALUMapping(MI) ? + AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID; + unsigned DstSize = MRI.getType(MI.getOperand(0).getReg()).getSizeInBits(); + unsigned SrcSize = MRI.getType(MI.getOperand(1).getReg()).getSizeInBits(); + + OpdsMapping[0] = AMDGPU::getValueMapping(Bank, DstSize); + // Op1 and Dst should use the same register bank. + for (unsigned i = 1, e = MI.getNumOperands(); i != e; ++i) + OpdsMapping[i] = AMDGPU::getValueMapping(Bank, SrcSize); + break; + } case AMDGPU::G_BITCAST: { unsigned Size = MRI.getType(MI.getOperand(0).getReg()).getSizeInBits(); unsigned BankID = getRegBankID(MI.getOperand(1).getReg(), MRI, *TRI); -- cgit v1.2.3