10b57cec5SDimitry Andric //===-- NVPTXReplaceImageHandles.cpp - Replace image handles for Fermi ----===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric // 90b57cec5SDimitry Andric // On Fermi, image handles are not supported. To work around this, we traverse 100b57cec5SDimitry Andric // the machine code and replace image handles with concrete symbols. For this 110b57cec5SDimitry Andric // to work reliably, inlining of all function call must be performed. 120b57cec5SDimitry Andric // 130b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 140b57cec5SDimitry Andric 150b57cec5SDimitry Andric #include "NVPTX.h" 160b57cec5SDimitry Andric #include "NVPTXMachineFunctionInfo.h" 170b57cec5SDimitry Andric #include "NVPTXSubtarget.h" 180b57cec5SDimitry Andric #include "NVPTXTargetMachine.h" 190b57cec5SDimitry Andric #include "MCTargetDesc/NVPTXBaseInfo.h" 200b57cec5SDimitry Andric #include "llvm/ADT/DenseSet.h" 210b57cec5SDimitry Andric #include "llvm/CodeGen/MachineFunction.h" 220b57cec5SDimitry Andric #include "llvm/CodeGen/MachineFunctionPass.h" 230b57cec5SDimitry Andric #include "llvm/CodeGen/MachineRegisterInfo.h" 240b57cec5SDimitry Andric #include "llvm/Support/raw_ostream.h" 250b57cec5SDimitry Andric 260b57cec5SDimitry Andric using namespace llvm; 270b57cec5SDimitry Andric 280b57cec5SDimitry Andric namespace { 290b57cec5SDimitry Andric class NVPTXReplaceImageHandles : public MachineFunctionPass { 300b57cec5SDimitry Andric private: 310b57cec5SDimitry Andric static char ID; 320b57cec5SDimitry Andric DenseSet<MachineInstr *> InstrsToRemove; 330b57cec5SDimitry Andric 340b57cec5SDimitry Andric public: 350b57cec5SDimitry Andric NVPTXReplaceImageHandles(); 360b57cec5SDimitry Andric 370b57cec5SDimitry Andric bool runOnMachineFunction(MachineFunction &MF) override; 380b57cec5SDimitry Andric 390b57cec5SDimitry Andric StringRef getPassName() const override { 400b57cec5SDimitry Andric return "NVPTX Replace Image Handles"; 410b57cec5SDimitry Andric } 420b57cec5SDimitry Andric private: 430b57cec5SDimitry Andric bool processInstr(MachineInstr &MI); 44349cc55cSDimitry Andric bool replaceImageHandle(MachineOperand &Op, MachineFunction &MF); 450b57cec5SDimitry Andric bool findIndexForHandle(MachineOperand &Op, MachineFunction &MF, 460b57cec5SDimitry Andric unsigned &Idx); 470b57cec5SDimitry Andric }; 480b57cec5SDimitry Andric } 490b57cec5SDimitry Andric 500b57cec5SDimitry Andric char NVPTXReplaceImageHandles::ID = 0; 510b57cec5SDimitry Andric 520b57cec5SDimitry Andric NVPTXReplaceImageHandles::NVPTXReplaceImageHandles() 530b57cec5SDimitry Andric : MachineFunctionPass(ID) {} 540b57cec5SDimitry Andric 550b57cec5SDimitry Andric bool NVPTXReplaceImageHandles::runOnMachineFunction(MachineFunction &MF) { 560b57cec5SDimitry Andric bool Changed = false; 570b57cec5SDimitry Andric InstrsToRemove.clear(); 580b57cec5SDimitry Andric 594824e7fdSDimitry Andric for (MachineBasicBlock &MBB : MF) 604824e7fdSDimitry Andric for (MachineInstr &MI : MBB) 610b57cec5SDimitry Andric Changed |= processInstr(MI); 620b57cec5SDimitry Andric 630b57cec5SDimitry Andric // Now clean up any handle-access instructions 640b57cec5SDimitry Andric // This is needed in debug mode when code cleanup passes are not executed, 650b57cec5SDimitry Andric // but we need the handle access to be eliminated because they are not 660b57cec5SDimitry Andric // valid instructions when image handles are disabled. 6781ad6265SDimitry Andric for (MachineInstr *MI : InstrsToRemove) { 6881ad6265SDimitry Andric unsigned DefReg = MI->getOperand(0).getReg(); 6981ad6265SDimitry Andric // Only these that are not used can be removed. 7081ad6265SDimitry Andric if (MF.getRegInfo().use_nodbg_empty(DefReg)) 714824e7fdSDimitry Andric MI->eraseFromParent(); 7281ad6265SDimitry Andric } 730b57cec5SDimitry Andric return Changed; 740b57cec5SDimitry Andric } 750b57cec5SDimitry Andric 76349cc55cSDimitry Andric static unsigned suldRegisterToIndexOpcode(unsigned RegOC) { 77349cc55cSDimitry Andric switch (RegOC) { 78349cc55cSDimitry Andric case NVPTX::SULD_1D_I8_CLAMP_R: 79349cc55cSDimitry Andric return NVPTX::SULD_1D_I8_CLAMP_I; 80349cc55cSDimitry Andric case NVPTX::SULD_1D_I16_CLAMP_R: 81349cc55cSDimitry Andric return NVPTX::SULD_1D_I16_CLAMP_I; 82349cc55cSDimitry Andric case NVPTX::SULD_1D_I32_CLAMP_R: 83349cc55cSDimitry Andric return NVPTX::SULD_1D_I32_CLAMP_I; 84349cc55cSDimitry Andric case NVPTX::SULD_1D_I64_CLAMP_R: 85349cc55cSDimitry Andric return NVPTX::SULD_1D_I64_CLAMP_I; 86349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I8_CLAMP_R: 87349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I8_CLAMP_I; 88349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I16_CLAMP_R: 89349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I16_CLAMP_I; 90349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I32_CLAMP_R: 91349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I32_CLAMP_I; 92349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I64_CLAMP_R: 93349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I64_CLAMP_I; 94349cc55cSDimitry Andric case NVPTX::SULD_2D_I8_CLAMP_R: 95349cc55cSDimitry Andric return NVPTX::SULD_2D_I8_CLAMP_I; 96349cc55cSDimitry Andric case NVPTX::SULD_2D_I16_CLAMP_R: 97349cc55cSDimitry Andric return NVPTX::SULD_2D_I16_CLAMP_I; 98349cc55cSDimitry Andric case NVPTX::SULD_2D_I32_CLAMP_R: 99349cc55cSDimitry Andric return NVPTX::SULD_2D_I32_CLAMP_I; 100349cc55cSDimitry Andric case NVPTX::SULD_2D_I64_CLAMP_R: 101349cc55cSDimitry Andric return NVPTX::SULD_2D_I64_CLAMP_I; 102349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I8_CLAMP_R: 103349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I8_CLAMP_I; 104349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I16_CLAMP_R: 105349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I16_CLAMP_I; 106349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I32_CLAMP_R: 107349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I32_CLAMP_I; 108349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I64_CLAMP_R: 109349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I64_CLAMP_I; 110349cc55cSDimitry Andric case NVPTX::SULD_3D_I8_CLAMP_R: 111349cc55cSDimitry Andric return NVPTX::SULD_3D_I8_CLAMP_I; 112349cc55cSDimitry Andric case NVPTX::SULD_3D_I16_CLAMP_R: 113349cc55cSDimitry Andric return NVPTX::SULD_3D_I16_CLAMP_I; 114349cc55cSDimitry Andric case NVPTX::SULD_3D_I32_CLAMP_R: 115349cc55cSDimitry Andric return NVPTX::SULD_3D_I32_CLAMP_I; 116349cc55cSDimitry Andric case NVPTX::SULD_3D_I64_CLAMP_R: 117349cc55cSDimitry Andric return NVPTX::SULD_3D_I64_CLAMP_I; 118349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I8_CLAMP_R: 119349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I8_CLAMP_I; 120349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I16_CLAMP_R: 121349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I16_CLAMP_I; 122349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I32_CLAMP_R: 123349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I32_CLAMP_I; 124349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I64_CLAMP_R: 125349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I64_CLAMP_I; 126349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I8_CLAMP_R: 127349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I8_CLAMP_I; 128349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I16_CLAMP_R: 129349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I16_CLAMP_I; 130349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I32_CLAMP_R: 131349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I32_CLAMP_I; 132349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I64_CLAMP_R: 133349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I64_CLAMP_I; 134349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I8_CLAMP_R: 135349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I8_CLAMP_I; 136349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I16_CLAMP_R: 137349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I16_CLAMP_I; 138349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I32_CLAMP_R: 139349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I32_CLAMP_I; 140349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I64_CLAMP_R: 141349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I64_CLAMP_I; 142349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I8_CLAMP_R: 143349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I8_CLAMP_I; 144349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I16_CLAMP_R: 145349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I16_CLAMP_I; 146349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I32_CLAMP_R: 147349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I32_CLAMP_I; 148349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I64_CLAMP_R: 149349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I64_CLAMP_I; 150349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I8_CLAMP_R: 151349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I8_CLAMP_I; 152349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I16_CLAMP_R: 153349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I16_CLAMP_I; 154349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I32_CLAMP_R: 155349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I32_CLAMP_I; 156349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I64_CLAMP_R: 157349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I64_CLAMP_I; 158349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I8_CLAMP_R: 159349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I8_CLAMP_I; 160349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I16_CLAMP_R: 161349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I16_CLAMP_I; 162349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I32_CLAMP_R: 163349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I32_CLAMP_I; 164349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I8_CLAMP_R: 165349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I8_CLAMP_I; 166349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I16_CLAMP_R: 167349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I16_CLAMP_I; 168349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I32_CLAMP_R: 169349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I32_CLAMP_I; 170349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I8_CLAMP_R: 171349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I8_CLAMP_I; 172349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I16_CLAMP_R: 173349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I16_CLAMP_I; 174349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I32_CLAMP_R: 175349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I32_CLAMP_I; 176349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I8_CLAMP_R: 177349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I8_CLAMP_I; 178349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I16_CLAMP_R: 179349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I16_CLAMP_I; 180349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I32_CLAMP_R: 181349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I32_CLAMP_I; 182349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I8_CLAMP_R: 183349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I8_CLAMP_I; 184349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I16_CLAMP_R: 185349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I16_CLAMP_I; 186349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I32_CLAMP_R: 187349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I32_CLAMP_I; 188349cc55cSDimitry Andric case NVPTX::SULD_1D_I8_TRAP_R: 189349cc55cSDimitry Andric return NVPTX::SULD_1D_I8_TRAP_I; 190349cc55cSDimitry Andric case NVPTX::SULD_1D_I16_TRAP_R: 191349cc55cSDimitry Andric return NVPTX::SULD_1D_I16_TRAP_I; 192349cc55cSDimitry Andric case NVPTX::SULD_1D_I32_TRAP_R: 193349cc55cSDimitry Andric return NVPTX::SULD_1D_I32_TRAP_I; 194349cc55cSDimitry Andric case NVPTX::SULD_1D_I64_TRAP_R: 195349cc55cSDimitry Andric return NVPTX::SULD_1D_I64_TRAP_I; 196349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I8_TRAP_R: 197349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I8_TRAP_I; 198349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I16_TRAP_R: 199349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I16_TRAP_I; 200349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I32_TRAP_R: 201349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I32_TRAP_I; 202349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I64_TRAP_R: 203349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I64_TRAP_I; 204349cc55cSDimitry Andric case NVPTX::SULD_2D_I8_TRAP_R: 205349cc55cSDimitry Andric return NVPTX::SULD_2D_I8_TRAP_I; 206349cc55cSDimitry Andric case NVPTX::SULD_2D_I16_TRAP_R: 207349cc55cSDimitry Andric return NVPTX::SULD_2D_I16_TRAP_I; 208349cc55cSDimitry Andric case NVPTX::SULD_2D_I32_TRAP_R: 209349cc55cSDimitry Andric return NVPTX::SULD_2D_I32_TRAP_I; 210349cc55cSDimitry Andric case NVPTX::SULD_2D_I64_TRAP_R: 211349cc55cSDimitry Andric return NVPTX::SULD_2D_I64_TRAP_I; 212349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I8_TRAP_R: 213349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I8_TRAP_I; 214349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I16_TRAP_R: 215349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I16_TRAP_I; 216349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I32_TRAP_R: 217349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I32_TRAP_I; 218349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I64_TRAP_R: 219349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I64_TRAP_I; 220349cc55cSDimitry Andric case NVPTX::SULD_3D_I8_TRAP_R: 221349cc55cSDimitry Andric return NVPTX::SULD_3D_I8_TRAP_I; 222349cc55cSDimitry Andric case NVPTX::SULD_3D_I16_TRAP_R: 223349cc55cSDimitry Andric return NVPTX::SULD_3D_I16_TRAP_I; 224349cc55cSDimitry Andric case NVPTX::SULD_3D_I32_TRAP_R: 225349cc55cSDimitry Andric return NVPTX::SULD_3D_I32_TRAP_I; 226349cc55cSDimitry Andric case NVPTX::SULD_3D_I64_TRAP_R: 227349cc55cSDimitry Andric return NVPTX::SULD_3D_I64_TRAP_I; 228349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I8_TRAP_R: 229349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I8_TRAP_I; 230349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I16_TRAP_R: 231349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I16_TRAP_I; 232349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I32_TRAP_R: 233349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I32_TRAP_I; 234349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I64_TRAP_R: 235349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I64_TRAP_I; 236349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I8_TRAP_R: 237349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I8_TRAP_I; 238349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I16_TRAP_R: 239349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I16_TRAP_I; 240349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I32_TRAP_R: 241349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I32_TRAP_I; 242349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I64_TRAP_R: 243349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I64_TRAP_I; 244349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I8_TRAP_R: 245349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I8_TRAP_I; 246349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I16_TRAP_R: 247349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I16_TRAP_I; 248349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I32_TRAP_R: 249349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I32_TRAP_I; 250349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I64_TRAP_R: 251349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I64_TRAP_I; 252349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I8_TRAP_R: 253349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I8_TRAP_I; 254349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I16_TRAP_R: 255349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I16_TRAP_I; 256349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I32_TRAP_R: 257349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I32_TRAP_I; 258349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I64_TRAP_R: 259349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I64_TRAP_I; 260349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I8_TRAP_R: 261349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I8_TRAP_I; 262349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I16_TRAP_R: 263349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I16_TRAP_I; 264349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I32_TRAP_R: 265349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I32_TRAP_I; 266349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I64_TRAP_R: 267349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I64_TRAP_I; 268349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I8_TRAP_R: 269349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I8_TRAP_I; 270349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I16_TRAP_R: 271349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I16_TRAP_I; 272349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I32_TRAP_R: 273349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I32_TRAP_I; 274349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I8_TRAP_R: 275349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I8_TRAP_I; 276349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I16_TRAP_R: 277349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I16_TRAP_I; 278349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I32_TRAP_R: 279349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I32_TRAP_I; 280349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I8_TRAP_R: 281349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I8_TRAP_I; 282349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I16_TRAP_R: 283349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I16_TRAP_I; 284349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I32_TRAP_R: 285349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I32_TRAP_I; 286349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I8_TRAP_R: 287349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I8_TRAP_I; 288349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I16_TRAP_R: 289349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I16_TRAP_I; 290349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I32_TRAP_R: 291349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I32_TRAP_I; 292349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I8_TRAP_R: 293349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I8_TRAP_I; 294349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I16_TRAP_R: 295349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I16_TRAP_I; 296349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I32_TRAP_R: 297349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I32_TRAP_I; 298349cc55cSDimitry Andric case NVPTX::SULD_1D_I8_ZERO_R: 299349cc55cSDimitry Andric return NVPTX::SULD_1D_I8_ZERO_I; 300349cc55cSDimitry Andric case NVPTX::SULD_1D_I16_ZERO_R: 301349cc55cSDimitry Andric return NVPTX::SULD_1D_I16_ZERO_I; 302349cc55cSDimitry Andric case NVPTX::SULD_1D_I32_ZERO_R: 303349cc55cSDimitry Andric return NVPTX::SULD_1D_I32_ZERO_I; 304349cc55cSDimitry Andric case NVPTX::SULD_1D_I64_ZERO_R: 305349cc55cSDimitry Andric return NVPTX::SULD_1D_I64_ZERO_I; 306349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I8_ZERO_R: 307349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I8_ZERO_I; 308349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I16_ZERO_R: 309349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I16_ZERO_I; 310349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I32_ZERO_R: 311349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I32_ZERO_I; 312349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_I64_ZERO_R: 313349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_I64_ZERO_I; 314349cc55cSDimitry Andric case NVPTX::SULD_2D_I8_ZERO_R: 315349cc55cSDimitry Andric return NVPTX::SULD_2D_I8_ZERO_I; 316349cc55cSDimitry Andric case NVPTX::SULD_2D_I16_ZERO_R: 317349cc55cSDimitry Andric return NVPTX::SULD_2D_I16_ZERO_I; 318349cc55cSDimitry Andric case NVPTX::SULD_2D_I32_ZERO_R: 319349cc55cSDimitry Andric return NVPTX::SULD_2D_I32_ZERO_I; 320349cc55cSDimitry Andric case NVPTX::SULD_2D_I64_ZERO_R: 321349cc55cSDimitry Andric return NVPTX::SULD_2D_I64_ZERO_I; 322349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I8_ZERO_R: 323349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I8_ZERO_I; 324349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I16_ZERO_R: 325349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I16_ZERO_I; 326349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I32_ZERO_R: 327349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I32_ZERO_I; 328349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_I64_ZERO_R: 329349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_I64_ZERO_I; 330349cc55cSDimitry Andric case NVPTX::SULD_3D_I8_ZERO_R: 331349cc55cSDimitry Andric return NVPTX::SULD_3D_I8_ZERO_I; 332349cc55cSDimitry Andric case NVPTX::SULD_3D_I16_ZERO_R: 333349cc55cSDimitry Andric return NVPTX::SULD_3D_I16_ZERO_I; 334349cc55cSDimitry Andric case NVPTX::SULD_3D_I32_ZERO_R: 335349cc55cSDimitry Andric return NVPTX::SULD_3D_I32_ZERO_I; 336349cc55cSDimitry Andric case NVPTX::SULD_3D_I64_ZERO_R: 337349cc55cSDimitry Andric return NVPTX::SULD_3D_I64_ZERO_I; 338349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I8_ZERO_R: 339349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I8_ZERO_I; 340349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I16_ZERO_R: 341349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I16_ZERO_I; 342349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I32_ZERO_R: 343349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I32_ZERO_I; 344349cc55cSDimitry Andric case NVPTX::SULD_1D_V2I64_ZERO_R: 345349cc55cSDimitry Andric return NVPTX::SULD_1D_V2I64_ZERO_I; 346349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I8_ZERO_R: 347349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I8_ZERO_I; 348349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I16_ZERO_R: 349349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I16_ZERO_I; 350349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I32_ZERO_R: 351349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I32_ZERO_I; 352349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V2I64_ZERO_R: 353349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V2I64_ZERO_I; 354349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I8_ZERO_R: 355349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I8_ZERO_I; 356349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I16_ZERO_R: 357349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I16_ZERO_I; 358349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I32_ZERO_R: 359349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I32_ZERO_I; 360349cc55cSDimitry Andric case NVPTX::SULD_2D_V2I64_ZERO_R: 361349cc55cSDimitry Andric return NVPTX::SULD_2D_V2I64_ZERO_I; 362349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I8_ZERO_R: 363349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I8_ZERO_I; 364349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I16_ZERO_R: 365349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I16_ZERO_I; 366349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I32_ZERO_R: 367349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I32_ZERO_I; 368349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V2I64_ZERO_R: 369349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V2I64_ZERO_I; 370349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I8_ZERO_R: 371349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I8_ZERO_I; 372349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I16_ZERO_R: 373349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I16_ZERO_I; 374349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I32_ZERO_R: 375349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I32_ZERO_I; 376349cc55cSDimitry Andric case NVPTX::SULD_3D_V2I64_ZERO_R: 377349cc55cSDimitry Andric return NVPTX::SULD_3D_V2I64_ZERO_I; 378349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I8_ZERO_R: 379349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I8_ZERO_I; 380349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I16_ZERO_R: 381349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I16_ZERO_I; 382349cc55cSDimitry Andric case NVPTX::SULD_1D_V4I32_ZERO_R: 383349cc55cSDimitry Andric return NVPTX::SULD_1D_V4I32_ZERO_I; 384349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I8_ZERO_R: 385349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I8_ZERO_I; 386349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I16_ZERO_R: 387349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I16_ZERO_I; 388349cc55cSDimitry Andric case NVPTX::SULD_1D_ARRAY_V4I32_ZERO_R: 389349cc55cSDimitry Andric return NVPTX::SULD_1D_ARRAY_V4I32_ZERO_I; 390349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I8_ZERO_R: 391349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I8_ZERO_I; 392349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I16_ZERO_R: 393349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I16_ZERO_I; 394349cc55cSDimitry Andric case NVPTX::SULD_2D_V4I32_ZERO_R: 395349cc55cSDimitry Andric return NVPTX::SULD_2D_V4I32_ZERO_I; 396349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I8_ZERO_R: 397349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I8_ZERO_I; 398349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I16_ZERO_R: 399349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I16_ZERO_I; 400349cc55cSDimitry Andric case NVPTX::SULD_2D_ARRAY_V4I32_ZERO_R: 401349cc55cSDimitry Andric return NVPTX::SULD_2D_ARRAY_V4I32_ZERO_I; 402349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I8_ZERO_R: 403349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I8_ZERO_I; 404349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I16_ZERO_R: 405349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I16_ZERO_I; 406349cc55cSDimitry Andric case NVPTX::SULD_3D_V4I32_ZERO_R: 407349cc55cSDimitry Andric return NVPTX::SULD_3D_V4I32_ZERO_I; 408349cc55cSDimitry Andric default: 409349cc55cSDimitry Andric llvm_unreachable("Unhandled SULD opcode"); 410349cc55cSDimitry Andric } 411349cc55cSDimitry Andric } 412349cc55cSDimitry Andric 413349cc55cSDimitry Andric static unsigned sustRegisterToIndexOpcode(unsigned RegOC) { 414349cc55cSDimitry Andric switch (RegOC) { 415349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B8_CLAMP_R: 416349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B8_CLAMP_I; 417349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B16_CLAMP_R: 418349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B16_CLAMP_I; 419349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B32_CLAMP_R: 420349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B32_CLAMP_I; 421349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B64_CLAMP_R: 422349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B64_CLAMP_I; 423349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B8_CLAMP_R: 424349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B8_CLAMP_I; 425349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B16_CLAMP_R: 426349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B16_CLAMP_I; 427349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B32_CLAMP_R: 428349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B32_CLAMP_I; 429349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B64_CLAMP_R: 430349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B64_CLAMP_I; 431349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B8_CLAMP_R: 432349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B8_CLAMP_I; 433349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B16_CLAMP_R: 434349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B16_CLAMP_I; 435349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B32_CLAMP_R: 436349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B32_CLAMP_I; 437349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B8_CLAMP_R: 438349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B8_CLAMP_I; 439349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B16_CLAMP_R: 440349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B16_CLAMP_I; 441349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B32_CLAMP_R: 442349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B32_CLAMP_I; 443349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B64_CLAMP_R: 444349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B64_CLAMP_I; 445349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B8_CLAMP_R: 446349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B8_CLAMP_I; 447349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B16_CLAMP_R: 448349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B16_CLAMP_I; 449349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B32_CLAMP_R: 450349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B32_CLAMP_I; 451349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B64_CLAMP_R: 452349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B64_CLAMP_I; 453349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B8_CLAMP_R: 454349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B8_CLAMP_I; 455349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B16_CLAMP_R: 456349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B16_CLAMP_I; 457349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B32_CLAMP_R: 458349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B32_CLAMP_I; 459349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B8_CLAMP_R: 460349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B8_CLAMP_I; 461349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B16_CLAMP_R: 462349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B16_CLAMP_I; 463349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B32_CLAMP_R: 464349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B32_CLAMP_I; 465349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B64_CLAMP_R: 466349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B64_CLAMP_I; 467349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B8_CLAMP_R: 468349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B8_CLAMP_I; 469349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B16_CLAMP_R: 470349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B16_CLAMP_I; 471349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B32_CLAMP_R: 472349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B32_CLAMP_I; 473349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B64_CLAMP_R: 474349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B64_CLAMP_I; 475349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B8_CLAMP_R: 476349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B8_CLAMP_I; 477349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B16_CLAMP_R: 478349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B16_CLAMP_I; 479349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B32_CLAMP_R: 480349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B32_CLAMP_I; 481349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B8_CLAMP_R: 482349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B8_CLAMP_I; 483349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B16_CLAMP_R: 484349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B16_CLAMP_I; 485349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B32_CLAMP_R: 486349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B32_CLAMP_I; 487349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B64_CLAMP_R: 488349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B64_CLAMP_I; 489349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B8_CLAMP_R: 490349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B8_CLAMP_I; 491349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B16_CLAMP_R: 492349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B16_CLAMP_I; 493349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B32_CLAMP_R: 494349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B32_CLAMP_I; 495349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B64_CLAMP_R: 496349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B64_CLAMP_I; 497349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B8_CLAMP_R: 498349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B8_CLAMP_I; 499349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B16_CLAMP_R: 500349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B16_CLAMP_I; 501349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B32_CLAMP_R: 502349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B32_CLAMP_I; 503349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B8_CLAMP_R: 504349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B8_CLAMP_I; 505349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B16_CLAMP_R: 506349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B16_CLAMP_I; 507349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B32_CLAMP_R: 508349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B32_CLAMP_I; 509349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B64_CLAMP_R: 510349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B64_CLAMP_I; 511349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B8_CLAMP_R: 512349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B8_CLAMP_I; 513349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B16_CLAMP_R: 514349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B16_CLAMP_I; 515349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B32_CLAMP_R: 516349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B32_CLAMP_I; 517349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B64_CLAMP_R: 518349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B64_CLAMP_I; 519349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B8_CLAMP_R: 520349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B8_CLAMP_I; 521349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B16_CLAMP_R: 522349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B16_CLAMP_I; 523349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B32_CLAMP_R: 524349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B32_CLAMP_I; 525349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B8_TRAP_R: 526349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B8_TRAP_I; 527349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B16_TRAP_R: 528349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B16_TRAP_I; 529349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B32_TRAP_R: 530349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B32_TRAP_I; 531349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B64_TRAP_R: 532349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B64_TRAP_I; 533349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B8_TRAP_R: 534349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B8_TRAP_I; 535349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B16_TRAP_R: 536349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B16_TRAP_I; 537349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B32_TRAP_R: 538349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B32_TRAP_I; 539349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B64_TRAP_R: 540349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B64_TRAP_I; 541349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B8_TRAP_R: 542349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B8_TRAP_I; 543349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B16_TRAP_R: 544349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B16_TRAP_I; 545349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B32_TRAP_R: 546349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B32_TRAP_I; 547349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B8_TRAP_R: 548349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B8_TRAP_I; 549349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B16_TRAP_R: 550349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B16_TRAP_I; 551349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B32_TRAP_R: 552349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B32_TRAP_I; 553349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B64_TRAP_R: 554349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B64_TRAP_I; 555349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B8_TRAP_R: 556349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B8_TRAP_I; 557349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B16_TRAP_R: 558349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B16_TRAP_I; 559349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B32_TRAP_R: 560349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B32_TRAP_I; 561349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B64_TRAP_R: 562349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B64_TRAP_I; 563349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B8_TRAP_R: 564349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B8_TRAP_I; 565349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B16_TRAP_R: 566349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B16_TRAP_I; 567349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B32_TRAP_R: 568349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B32_TRAP_I; 569349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B8_TRAP_R: 570349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B8_TRAP_I; 571349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B16_TRAP_R: 572349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B16_TRAP_I; 573349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B32_TRAP_R: 574349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B32_TRAP_I; 575349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B64_TRAP_R: 576349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B64_TRAP_I; 577349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B8_TRAP_R: 578349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B8_TRAP_I; 579349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B16_TRAP_R: 580349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B16_TRAP_I; 581349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B32_TRAP_R: 582349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B32_TRAP_I; 583349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B64_TRAP_R: 584349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B64_TRAP_I; 585349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B8_TRAP_R: 586349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B8_TRAP_I; 587349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B16_TRAP_R: 588349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B16_TRAP_I; 589349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B32_TRAP_R: 590349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B32_TRAP_I; 591349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B8_TRAP_R: 592349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B8_TRAP_I; 593349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B16_TRAP_R: 594349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B16_TRAP_I; 595349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B32_TRAP_R: 596349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B32_TRAP_I; 597349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B64_TRAP_R: 598349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B64_TRAP_I; 599349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B8_TRAP_R: 600349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B8_TRAP_I; 601349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B16_TRAP_R: 602349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B16_TRAP_I; 603349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B32_TRAP_R: 604349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B32_TRAP_I; 605349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B64_TRAP_R: 606349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B64_TRAP_I; 607349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B8_TRAP_R: 608349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B8_TRAP_I; 609349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B16_TRAP_R: 610349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B16_TRAP_I; 611349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B32_TRAP_R: 612349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B32_TRAP_I; 613349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B8_TRAP_R: 614349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B8_TRAP_I; 615349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B16_TRAP_R: 616349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B16_TRAP_I; 617349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B32_TRAP_R: 618349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B32_TRAP_I; 619349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B64_TRAP_R: 620349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B64_TRAP_I; 621349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B8_TRAP_R: 622349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B8_TRAP_I; 623349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B16_TRAP_R: 624349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B16_TRAP_I; 625349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B32_TRAP_R: 626349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B32_TRAP_I; 627349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B64_TRAP_R: 628349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B64_TRAP_I; 629349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B8_TRAP_R: 630349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B8_TRAP_I; 631349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B16_TRAP_R: 632349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B16_TRAP_I; 633349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B32_TRAP_R: 634349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B32_TRAP_I; 635349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B8_ZERO_R: 636349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B8_ZERO_I; 637349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B16_ZERO_R: 638349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B16_ZERO_I; 639349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B32_ZERO_R: 640349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B32_ZERO_I; 641349cc55cSDimitry Andric case NVPTX::SUST_B_1D_B64_ZERO_R: 642349cc55cSDimitry Andric return NVPTX::SUST_B_1D_B64_ZERO_I; 643349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B8_ZERO_R: 644349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B8_ZERO_I; 645349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B16_ZERO_R: 646349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B16_ZERO_I; 647349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B32_ZERO_R: 648349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B32_ZERO_I; 649349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V2B64_ZERO_R: 650349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V2B64_ZERO_I; 651349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B8_ZERO_R: 652349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B8_ZERO_I; 653349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B16_ZERO_R: 654349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B16_ZERO_I; 655349cc55cSDimitry Andric case NVPTX::SUST_B_1D_V4B32_ZERO_R: 656349cc55cSDimitry Andric return NVPTX::SUST_B_1D_V4B32_ZERO_I; 657349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B8_ZERO_R: 658349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B8_ZERO_I; 659349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B16_ZERO_R: 660349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B16_ZERO_I; 661349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B32_ZERO_R: 662349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B32_ZERO_I; 663349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_B64_ZERO_R: 664349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_B64_ZERO_I; 665349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B8_ZERO_R: 666349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B8_ZERO_I; 667349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B16_ZERO_R: 668349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B16_ZERO_I; 669349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B32_ZERO_R: 670349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B32_ZERO_I; 671349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V2B64_ZERO_R: 672349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V2B64_ZERO_I; 673349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B8_ZERO_R: 674349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B8_ZERO_I; 675349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B16_ZERO_R: 676349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B16_ZERO_I; 677349cc55cSDimitry Andric case NVPTX::SUST_B_1D_ARRAY_V4B32_ZERO_R: 678349cc55cSDimitry Andric return NVPTX::SUST_B_1D_ARRAY_V4B32_ZERO_I; 679349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B8_ZERO_R: 680349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B8_ZERO_I; 681349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B16_ZERO_R: 682349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B16_ZERO_I; 683349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B32_ZERO_R: 684349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B32_ZERO_I; 685349cc55cSDimitry Andric case NVPTX::SUST_B_2D_B64_ZERO_R: 686349cc55cSDimitry Andric return NVPTX::SUST_B_2D_B64_ZERO_I; 687349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B8_ZERO_R: 688349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B8_ZERO_I; 689349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B16_ZERO_R: 690349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B16_ZERO_I; 691349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B32_ZERO_R: 692349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B32_ZERO_I; 693349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V2B64_ZERO_R: 694349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V2B64_ZERO_I; 695349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B8_ZERO_R: 696349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B8_ZERO_I; 697349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B16_ZERO_R: 698349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B16_ZERO_I; 699349cc55cSDimitry Andric case NVPTX::SUST_B_2D_V4B32_ZERO_R: 700349cc55cSDimitry Andric return NVPTX::SUST_B_2D_V4B32_ZERO_I; 701349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B8_ZERO_R: 702349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B8_ZERO_I; 703349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B16_ZERO_R: 704349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B16_ZERO_I; 705349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B32_ZERO_R: 706349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B32_ZERO_I; 707349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_B64_ZERO_R: 708349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_B64_ZERO_I; 709349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B8_ZERO_R: 710349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B8_ZERO_I; 711349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B16_ZERO_R: 712349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B16_ZERO_I; 713349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B32_ZERO_R: 714349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B32_ZERO_I; 715349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V2B64_ZERO_R: 716349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V2B64_ZERO_I; 717349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B8_ZERO_R: 718349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B8_ZERO_I; 719349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B16_ZERO_R: 720349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B16_ZERO_I; 721349cc55cSDimitry Andric case NVPTX::SUST_B_2D_ARRAY_V4B32_ZERO_R: 722349cc55cSDimitry Andric return NVPTX::SUST_B_2D_ARRAY_V4B32_ZERO_I; 723349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B8_ZERO_R: 724349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B8_ZERO_I; 725349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B16_ZERO_R: 726349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B16_ZERO_I; 727349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B32_ZERO_R: 728349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B32_ZERO_I; 729349cc55cSDimitry Andric case NVPTX::SUST_B_3D_B64_ZERO_R: 730349cc55cSDimitry Andric return NVPTX::SUST_B_3D_B64_ZERO_I; 731349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B8_ZERO_R: 732349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B8_ZERO_I; 733349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B16_ZERO_R: 734349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B16_ZERO_I; 735349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B32_ZERO_R: 736349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B32_ZERO_I; 737349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V2B64_ZERO_R: 738349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V2B64_ZERO_I; 739349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B8_ZERO_R: 740349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B8_ZERO_I; 741349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B16_ZERO_R: 742349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B16_ZERO_I; 743349cc55cSDimitry Andric case NVPTX::SUST_B_3D_V4B32_ZERO_R: 744349cc55cSDimitry Andric return NVPTX::SUST_B_3D_V4B32_ZERO_I; 745349cc55cSDimitry Andric case NVPTX::SUST_P_1D_B8_TRAP_R: 746349cc55cSDimitry Andric return NVPTX::SUST_P_1D_B8_TRAP_I; 747349cc55cSDimitry Andric case NVPTX::SUST_P_1D_B16_TRAP_R: 748349cc55cSDimitry Andric return NVPTX::SUST_P_1D_B16_TRAP_I; 749349cc55cSDimitry Andric case NVPTX::SUST_P_1D_B32_TRAP_R: 750349cc55cSDimitry Andric return NVPTX::SUST_P_1D_B32_TRAP_I; 751349cc55cSDimitry Andric case NVPTX::SUST_P_1D_V2B8_TRAP_R: 752349cc55cSDimitry Andric return NVPTX::SUST_P_1D_V2B8_TRAP_I; 753349cc55cSDimitry Andric case NVPTX::SUST_P_1D_V2B16_TRAP_R: 754349cc55cSDimitry Andric return NVPTX::SUST_P_1D_V2B16_TRAP_I; 755349cc55cSDimitry Andric case NVPTX::SUST_P_1D_V2B32_TRAP_R: 756349cc55cSDimitry Andric return NVPTX::SUST_P_1D_V2B32_TRAP_I; 757349cc55cSDimitry Andric case NVPTX::SUST_P_1D_V4B8_TRAP_R: 758349cc55cSDimitry Andric return NVPTX::SUST_P_1D_V4B8_TRAP_I; 759349cc55cSDimitry Andric case NVPTX::SUST_P_1D_V4B16_TRAP_R: 760349cc55cSDimitry Andric return NVPTX::SUST_P_1D_V4B16_TRAP_I; 761349cc55cSDimitry Andric case NVPTX::SUST_P_1D_V4B32_TRAP_R: 762349cc55cSDimitry Andric return NVPTX::SUST_P_1D_V4B32_TRAP_I; 763349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_B8_TRAP_R: 764349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_B8_TRAP_I; 765349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_B16_TRAP_R: 766349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_B16_TRAP_I; 767349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_B32_TRAP_R: 768349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_B32_TRAP_I; 769349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_V2B8_TRAP_R: 770349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_V2B8_TRAP_I; 771349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_V2B16_TRAP_R: 772349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_V2B16_TRAP_I; 773349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_V2B32_TRAP_R: 774349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_V2B32_TRAP_I; 775349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_V4B8_TRAP_R: 776349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_V4B8_TRAP_I; 777349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_V4B16_TRAP_R: 778349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_V4B16_TRAP_I; 779349cc55cSDimitry Andric case NVPTX::SUST_P_1D_ARRAY_V4B32_TRAP_R: 780349cc55cSDimitry Andric return NVPTX::SUST_P_1D_ARRAY_V4B32_TRAP_I; 781349cc55cSDimitry Andric case NVPTX::SUST_P_2D_B8_TRAP_R: 782349cc55cSDimitry Andric return NVPTX::SUST_P_2D_B8_TRAP_I; 783349cc55cSDimitry Andric case NVPTX::SUST_P_2D_B16_TRAP_R: 784349cc55cSDimitry Andric return NVPTX::SUST_P_2D_B16_TRAP_I; 785349cc55cSDimitry Andric case NVPTX::SUST_P_2D_B32_TRAP_R: 786349cc55cSDimitry Andric return NVPTX::SUST_P_2D_B32_TRAP_I; 787349cc55cSDimitry Andric case NVPTX::SUST_P_2D_V2B8_TRAP_R: 788349cc55cSDimitry Andric return NVPTX::SUST_P_2D_V2B8_TRAP_I; 789349cc55cSDimitry Andric case NVPTX::SUST_P_2D_V2B16_TRAP_R: 790349cc55cSDimitry Andric return NVPTX::SUST_P_2D_V2B16_TRAP_I; 791349cc55cSDimitry Andric case NVPTX::SUST_P_2D_V2B32_TRAP_R: 792349cc55cSDimitry Andric return NVPTX::SUST_P_2D_V2B32_TRAP_I; 793349cc55cSDimitry Andric case NVPTX::SUST_P_2D_V4B8_TRAP_R: 794349cc55cSDimitry Andric return NVPTX::SUST_P_2D_V4B8_TRAP_I; 795349cc55cSDimitry Andric case NVPTX::SUST_P_2D_V4B16_TRAP_R: 796349cc55cSDimitry Andric return NVPTX::SUST_P_2D_V4B16_TRAP_I; 797349cc55cSDimitry Andric case NVPTX::SUST_P_2D_V4B32_TRAP_R: 798349cc55cSDimitry Andric return NVPTX::SUST_P_2D_V4B32_TRAP_I; 799349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_B8_TRAP_R: 800349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_B8_TRAP_I; 801349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_B16_TRAP_R: 802349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_B16_TRAP_I; 803349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_B32_TRAP_R: 804349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_B32_TRAP_I; 805349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_V2B8_TRAP_R: 806349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_V2B8_TRAP_I; 807349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_V2B16_TRAP_R: 808349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_V2B16_TRAP_I; 809349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_V2B32_TRAP_R: 810349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_V2B32_TRAP_I; 811349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_V4B8_TRAP_R: 812349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_V4B8_TRAP_I; 813349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_V4B16_TRAP_R: 814349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_V4B16_TRAP_I; 815349cc55cSDimitry Andric case NVPTX::SUST_P_2D_ARRAY_V4B32_TRAP_R: 816349cc55cSDimitry Andric return NVPTX::SUST_P_2D_ARRAY_V4B32_TRAP_I; 817349cc55cSDimitry Andric case NVPTX::SUST_P_3D_B8_TRAP_R: 818349cc55cSDimitry Andric return NVPTX::SUST_P_3D_B8_TRAP_I; 819349cc55cSDimitry Andric case NVPTX::SUST_P_3D_B16_TRAP_R: 820349cc55cSDimitry Andric return NVPTX::SUST_P_3D_B16_TRAP_I; 821349cc55cSDimitry Andric case NVPTX::SUST_P_3D_B32_TRAP_R: 822349cc55cSDimitry Andric return NVPTX::SUST_P_3D_B32_TRAP_I; 823349cc55cSDimitry Andric case NVPTX::SUST_P_3D_V2B8_TRAP_R: 824349cc55cSDimitry Andric return NVPTX::SUST_P_3D_V2B8_TRAP_I; 825349cc55cSDimitry Andric case NVPTX::SUST_P_3D_V2B16_TRAP_R: 826349cc55cSDimitry Andric return NVPTX::SUST_P_3D_V2B16_TRAP_I; 827349cc55cSDimitry Andric case NVPTX::SUST_P_3D_V2B32_TRAP_R: 828349cc55cSDimitry Andric return NVPTX::SUST_P_3D_V2B32_TRAP_I; 829349cc55cSDimitry Andric case NVPTX::SUST_P_3D_V4B8_TRAP_R: 830349cc55cSDimitry Andric return NVPTX::SUST_P_3D_V4B8_TRAP_I; 831349cc55cSDimitry Andric case NVPTX::SUST_P_3D_V4B16_TRAP_R: 832349cc55cSDimitry Andric return NVPTX::SUST_P_3D_V4B16_TRAP_I; 833349cc55cSDimitry Andric case NVPTX::SUST_P_3D_V4B32_TRAP_R: 834349cc55cSDimitry Andric return NVPTX::SUST_P_3D_V4B32_TRAP_I; 835349cc55cSDimitry Andric default: 836349cc55cSDimitry Andric llvm_unreachable("Unhandled SUST opcode"); 837349cc55cSDimitry Andric } 838349cc55cSDimitry Andric } 839349cc55cSDimitry Andric 840349cc55cSDimitry Andric static unsigned texRegisterToIndexOpcode(unsigned RegOC) { 841349cc55cSDimitry Andric switch (RegOC) { 842349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_S32_RR: 843349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_S32_IR; 844349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_S32_RI: 845349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_S32_II; 846349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_RR: 847349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_IR; 848349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_RI: 849349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_II; 850349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_LEVEL_RR: 851349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_LEVEL_IR; 852349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_LEVEL_RI: 853349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_LEVEL_II; 854349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_GRAD_RR: 855349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_GRAD_IR; 856349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_GRAD_RI: 857349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_GRAD_II; 858349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_S32_RR: 859349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_S32_IR; 860349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_S32_RI: 861349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_S32_II; 862349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_RR: 863349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_IR; 864349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_RI: 865349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_II; 866349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_LEVEL_RR: 867349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_LEVEL_IR; 868349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_LEVEL_RI: 869349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_LEVEL_II; 870349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_GRAD_RR: 871349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_GRAD_IR; 872349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_GRAD_RI: 873349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_GRAD_II; 874349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_S32_RR: 875349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_S32_IR; 876349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_S32_RI: 877349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_S32_II; 878349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_RR: 879349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_IR; 880349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_RI: 881349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_II; 882349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_LEVEL_RR: 883349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_LEVEL_IR; 884349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_LEVEL_RI: 885349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_LEVEL_II; 886349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_GRAD_RR: 887349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_GRAD_IR; 888349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_GRAD_RI: 889349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_GRAD_II; 890349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_S32_RR: 891349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_S32_IR; 892349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_S32_RI: 893349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_S32_II; 894349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_RR: 895349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_IR; 896349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_RI: 897349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_II; 898349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_RR: 899349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_IR; 900349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_RI: 901349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_II; 902349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_RR: 903349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_IR; 904349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_RI: 905349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_II; 906349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_S32_RR: 907349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_S32_IR; 908349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_S32_RI: 909349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_S32_II; 910349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_RR: 911349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_IR; 912349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_RI: 913349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_II; 914349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_RR: 915349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_IR; 916349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_RI: 917349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_II; 918349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_RR: 919349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_IR; 920349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_RI: 921349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_II; 922349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_S32_RR: 923349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_S32_IR; 924349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_S32_RI: 925349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_S32_II; 926349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_RR: 927349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_IR; 928349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_RI: 929349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_II; 930349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_RR: 931349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_IR; 932349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_RI: 933349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_II; 934349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_RR: 935349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_IR; 936349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_RI: 937349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_II; 938349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_S32_RR: 939349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_S32_IR; 940349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_S32_RI: 941349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_S32_II; 942349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_RR: 943349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_IR; 944349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_RI: 945349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_II; 946349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_LEVEL_RR: 947349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_LEVEL_IR; 948349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_LEVEL_RI: 949349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_LEVEL_II; 950349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_GRAD_RR: 951349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_GRAD_IR; 952349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_GRAD_RI: 953349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_GRAD_II; 954349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_S32_RR: 955349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_S32_IR; 956349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_S32_RI: 957349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_S32_II; 958349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_RR: 959349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_IR; 960349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_RI: 961349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_II; 962349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_LEVEL_RR: 963349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_LEVEL_IR; 964349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_LEVEL_RI: 965349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_LEVEL_II; 966349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_GRAD_RR: 967349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_GRAD_IR; 968349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_GRAD_RI: 969349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_GRAD_II; 970349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_S32_RR: 971349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_S32_IR; 972349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_S32_RI: 973349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_S32_II; 974349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_RR: 975349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_IR; 976349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_RI: 977349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_II; 978349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_LEVEL_RR: 979349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_LEVEL_IR; 980349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_LEVEL_RI: 981349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_LEVEL_II; 982349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_GRAD_RR: 983349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_GRAD_IR; 984349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_GRAD_RI: 985349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_GRAD_II; 986349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_S32_RR: 987349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_S32_IR; 988349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_S32_RI: 989349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_S32_II; 990349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_RR: 991349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_IR; 992349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_RI: 993349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_II; 994349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_RR: 995349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_IR; 996349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_RI: 997349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_II; 998349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_RR: 999349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_IR; 1000349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_RI: 1001349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_II; 1002349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_S32_RR: 1003349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_S32_IR; 1004349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_S32_RI: 1005349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_S32_II; 1006349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_RR: 1007349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_IR; 1008349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_RI: 1009349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_II; 1010349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_RR: 1011349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_IR; 1012349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_RI: 1013349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_II; 1014349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_RR: 1015349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_IR; 1016349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_RI: 1017349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_II; 1018349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_S32_RR: 1019349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_S32_IR; 1020349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_S32_RI: 1021349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_S32_II; 1022349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_RR: 1023349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_IR; 1024349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_RI: 1025349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_II; 1026349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_RR: 1027349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_IR; 1028349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_RI: 1029349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_II; 1030349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_RR: 1031349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_IR; 1032349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_RI: 1033349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_II; 1034349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_S32_RR: 1035349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_S32_IR; 1036349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_S32_RI: 1037349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_S32_II; 1038349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_RR: 1039349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_IR; 1040349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_RI: 1041349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_II; 1042349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_LEVEL_RR: 1043349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_LEVEL_IR; 1044349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_LEVEL_RI: 1045349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_LEVEL_II; 1046349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_GRAD_RR: 1047349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_GRAD_IR; 1048349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_GRAD_RI: 1049349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_GRAD_II; 1050349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_S32_RR: 1051349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_S32_IR; 1052349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_S32_RI: 1053349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_S32_II; 1054349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_RR: 1055349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_IR; 1056349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_RI: 1057349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_II; 1058349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_LEVEL_RR: 1059349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_LEVEL_IR; 1060349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_LEVEL_RI: 1061349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_LEVEL_II; 1062349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_GRAD_RR: 1063349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_GRAD_IR; 1064349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_GRAD_RI: 1065349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_GRAD_II; 1066349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_S32_RR: 1067349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_S32_IR; 1068349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_S32_RI: 1069349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_S32_II; 1070349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_RR: 1071349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_IR; 1072349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_RI: 1073349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_II; 1074349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_LEVEL_RR: 1075349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_LEVEL_IR; 1076349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_LEVEL_RI: 1077349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_LEVEL_II; 1078349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_GRAD_RR: 1079349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_GRAD_IR; 1080349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_GRAD_RI: 1081349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_GRAD_II; 1082349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_RR: 1083349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_IR; 1084349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_RI: 1085349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_II; 1086349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_LEVEL_RR: 1087349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_LEVEL_IR; 1088349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_LEVEL_RI: 1089349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_LEVEL_II; 1090349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_RR: 1091349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_IR; 1092349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_RI: 1093349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_II; 1094349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_LEVEL_RR: 1095349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_LEVEL_IR; 1096349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_LEVEL_RI: 1097349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_LEVEL_II; 1098349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_RR: 1099349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_IR; 1100349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_RI: 1101349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_II; 1102349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_LEVEL_RR: 1103349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_LEVEL_IR; 1104349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_LEVEL_RI: 1105349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_LEVEL_II; 1106349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_RR: 1107349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_IR; 1108349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_RI: 1109349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_II; 1110349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_RR: 1111349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_IR; 1112349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_RI: 1113349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_II; 1114349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_RR: 1115349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_IR; 1116349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_RI: 1117349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_II; 1118349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_RR: 1119349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_IR; 1120349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_RI: 1121349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_II; 1122349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_RR: 1123349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_IR; 1124349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_RI: 1125349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_II; 1126349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_RR: 1127349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_IR; 1128349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_RI: 1129349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_II; 1130349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_F32_F32_RR: 1131349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_F32_F32_IR; 1132349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_F32_F32_RI: 1133349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_F32_F32_II; 1134349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_F32_F32_RR: 1135349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_F32_F32_IR; 1136349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_F32_F32_RI: 1137349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_F32_F32_II; 1138349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_F32_F32_RR: 1139349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_F32_F32_IR; 1140349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_F32_F32_RI: 1141349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_F32_F32_II; 1142349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_F32_F32_RR: 1143349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_F32_F32_IR; 1144349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_F32_F32_RI: 1145349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_F32_F32_II; 1146349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_S32_F32_RR: 1147349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_S32_F32_IR; 1148349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_S32_F32_RI: 1149349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_S32_F32_II; 1150349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_S32_F32_RR: 1151349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_S32_F32_IR; 1152349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_S32_F32_RI: 1153349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_S32_F32_II; 1154349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_S32_F32_RR: 1155349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_S32_F32_IR; 1156349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_S32_F32_RI: 1157349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_S32_F32_II; 1158349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_S32_F32_RR: 1159349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_S32_F32_IR; 1160349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_S32_F32_RI: 1161349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_S32_F32_II; 1162349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_U32_F32_RR: 1163349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_U32_F32_IR; 1164349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_U32_F32_RI: 1165349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_U32_F32_II; 1166349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_U32_F32_RR: 1167349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_U32_F32_IR; 1168349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_U32_F32_RI: 1169349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_U32_F32_II; 1170349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_U32_F32_RR: 1171349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_U32_F32_IR; 1172349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_U32_F32_RI: 1173349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_U32_F32_II; 1174349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_U32_F32_RR: 1175349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_U32_F32_IR; 1176349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_U32_F32_RI: 1177349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_U32_F32_II; 1178349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_F32_S32_R: 1179349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_F32_S32_I; 1180349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_F32_F32_R: 1181349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_F32_F32_I; 1182349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_F32_F32_LEVEL_R: 1183349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_F32_F32_LEVEL_I; 1184349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_F32_F32_GRAD_R: 1185349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_F32_F32_GRAD_I; 1186349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_S32_S32_R: 1187349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_S32_S32_I; 1188349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_S32_F32_R: 1189349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_S32_F32_I; 1190349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_S32_F32_LEVEL_R: 1191349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_S32_F32_LEVEL_I; 1192349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_S32_F32_GRAD_R: 1193349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_S32_F32_GRAD_I; 1194349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_U32_S32_R: 1195349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_U32_S32_I; 1196349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_U32_F32_R: 1197349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_U32_F32_I; 1198349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_U32_F32_LEVEL_R: 1199349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_U32_F32_LEVEL_I; 1200349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_U32_F32_GRAD_R: 1201349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_U32_F32_GRAD_I; 1202349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_F32_S32_R: 1203349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_F32_S32_I; 1204349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_F32_F32_R: 1205349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_F32_F32_I; 1206349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_F32_F32_LEVEL_R: 1207349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_F32_F32_LEVEL_I; 1208349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_F32_F32_GRAD_R: 1209349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_F32_F32_GRAD_I; 1210349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_S32_S32_R: 1211349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_S32_S32_I; 1212349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_S32_F32_R: 1213349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_S32_F32_I; 1214349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_S32_F32_LEVEL_R: 1215349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_S32_F32_LEVEL_I; 1216349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_S32_F32_GRAD_R: 1217349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_S32_F32_GRAD_I; 1218349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_U32_S32_R: 1219349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_U32_S32_I; 1220349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_U32_F32_R: 1221349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_U32_F32_I; 1222349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_U32_F32_LEVEL_R: 1223349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_U32_F32_LEVEL_I; 1224349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_1D_ARRAY_U32_F32_GRAD_R: 1225349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_1D_ARRAY_U32_F32_GRAD_I; 1226349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_F32_S32_R: 1227349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_F32_S32_I; 1228349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_F32_F32_R: 1229349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_F32_F32_I; 1230349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_F32_F32_LEVEL_R: 1231349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_F32_F32_LEVEL_I; 1232349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_F32_F32_GRAD_R: 1233349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_F32_F32_GRAD_I; 1234349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_S32_S32_R: 1235349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_S32_S32_I; 1236349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_S32_F32_R: 1237349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_S32_F32_I; 1238349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_S32_F32_LEVEL_R: 1239349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_S32_F32_LEVEL_I; 1240349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_S32_F32_GRAD_R: 1241349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_S32_F32_GRAD_I; 1242349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_U32_S32_R: 1243349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_U32_S32_I; 1244349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_U32_F32_R: 1245349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_U32_F32_I; 1246349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_U32_F32_LEVEL_R: 1247349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_U32_F32_LEVEL_I; 1248349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_U32_F32_GRAD_R: 1249349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_U32_F32_GRAD_I; 1250349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_F32_S32_R: 1251349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_F32_S32_I; 1252349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_F32_F32_R: 1253349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_F32_F32_I; 1254349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_F32_F32_LEVEL_R: 1255349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_F32_F32_LEVEL_I; 1256349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_F32_F32_GRAD_R: 1257349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_F32_F32_GRAD_I; 1258349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_S32_S32_R: 1259349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_S32_S32_I; 1260349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_S32_F32_R: 1261349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_S32_F32_I; 1262349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_S32_F32_LEVEL_R: 1263349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_S32_F32_LEVEL_I; 1264349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_S32_F32_GRAD_R: 1265349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_S32_F32_GRAD_I; 1266349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_U32_S32_R: 1267349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_U32_S32_I; 1268349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_U32_F32_R: 1269349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_U32_F32_I; 1270349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_U32_F32_LEVEL_R: 1271349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_U32_F32_LEVEL_I; 1272349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_2D_ARRAY_U32_F32_GRAD_R: 1273349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_2D_ARRAY_U32_F32_GRAD_I; 1274349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_F32_S32_R: 1275349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_F32_S32_I; 1276349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_F32_F32_R: 1277349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_F32_F32_I; 1278349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_F32_F32_LEVEL_R: 1279349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_F32_F32_LEVEL_I; 1280349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_F32_F32_GRAD_R: 1281349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_F32_F32_GRAD_I; 1282349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_S32_S32_R: 1283349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_S32_S32_I; 1284349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_S32_F32_R: 1285349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_S32_F32_I; 1286349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_S32_F32_LEVEL_R: 1287349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_S32_F32_LEVEL_I; 1288349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_S32_F32_GRAD_R: 1289349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_S32_F32_GRAD_I; 1290349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_U32_S32_R: 1291349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_U32_S32_I; 1292349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_U32_F32_R: 1293349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_U32_F32_I; 1294349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_U32_F32_LEVEL_R: 1295349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_U32_F32_LEVEL_I; 1296349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_3D_U32_F32_GRAD_R: 1297349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_3D_U32_F32_GRAD_I; 1298349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_F32_F32_R: 1299349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_F32_F32_I; 1300349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_F32_F32_LEVEL_R: 1301349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_F32_F32_LEVEL_I; 1302349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_S32_F32_R: 1303349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_S32_F32_I; 1304349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_S32_F32_LEVEL_R: 1305349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_S32_F32_LEVEL_I; 1306349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_U32_F32_R: 1307349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_U32_F32_I; 1308349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_U32_F32_LEVEL_R: 1309349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_U32_F32_LEVEL_I; 1310349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_F32_F32_R: 1311349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_F32_F32_I; 1312349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_F32_F32_LEVEL_R: 1313349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_F32_F32_LEVEL_I; 1314349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_S32_F32_R: 1315349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_S32_F32_I; 1316349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_S32_F32_LEVEL_R: 1317349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_S32_F32_LEVEL_I; 1318349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_U32_F32_R: 1319349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_U32_F32_I; 1320349cc55cSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_U32_F32_LEVEL_R: 1321349cc55cSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_U32_F32_LEVEL_I; 1322*7a6dacacSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_F32_F32_GRAD_R: 1323*7a6dacacSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_F32_F32_GRAD_I; 1324*7a6dacacSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_S32_F32_GRAD_R: 1325*7a6dacacSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_S32_F32_GRAD_I; 1326*7a6dacacSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_U32_F32_GRAD_R: 1327*7a6dacacSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_U32_F32_GRAD_I; 1328*7a6dacacSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_F32_F32_GRAD_R: 1329*7a6dacacSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_F32_F32_GRAD_I; 1330*7a6dacacSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_S32_F32_GRAD_R: 1331*7a6dacacSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_S32_F32_GRAD_I; 1332*7a6dacacSDimitry Andric case NVPTX::TEX_UNIFIED_CUBE_ARRAY_U32_F32_GRAD_R: 1333*7a6dacacSDimitry Andric return NVPTX::TEX_UNIFIED_CUBE_ARRAY_U32_F32_GRAD_I; 1334349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_R_2D_F32_F32_R: 1335349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_R_2D_F32_F32_I; 1336349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_G_2D_F32_F32_R: 1337349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_G_2D_F32_F32_I; 1338349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_B_2D_F32_F32_R: 1339349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_B_2D_F32_F32_I; 1340349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_A_2D_F32_F32_R: 1341349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_A_2D_F32_F32_I; 1342349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_R_2D_S32_F32_R: 1343349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_R_2D_S32_F32_I; 1344349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_G_2D_S32_F32_R: 1345349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_G_2D_S32_F32_I; 1346349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_B_2D_S32_F32_R: 1347349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_B_2D_S32_F32_I; 1348349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_A_2D_S32_F32_R: 1349349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_A_2D_S32_F32_I; 1350349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_R_2D_U32_F32_R: 1351349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_R_2D_U32_F32_I; 1352349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_G_2D_U32_F32_R: 1353349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_G_2D_U32_F32_I; 1354349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_B_2D_U32_F32_R: 1355349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_B_2D_U32_F32_I; 1356349cc55cSDimitry Andric case NVPTX::TLD4_UNIFIED_A_2D_U32_F32_R: 1357349cc55cSDimitry Andric return NVPTX::TLD4_UNIFIED_A_2D_U32_F32_I; 1358349cc55cSDimitry Andric default: 1359349cc55cSDimitry Andric llvm_unreachable("Unhandled TEX opcode"); 1360349cc55cSDimitry Andric }; 1361349cc55cSDimitry Andric } 1362349cc55cSDimitry Andric 1363349cc55cSDimitry Andric static unsigned samplerRegisterToIndexOpcode(unsigned RegOC) { 1364349cc55cSDimitry Andric switch (RegOC) { 1365349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_S32_RR: 1366349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_S32_RI; 1367349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_S32_IR: 1368349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_S32_II; 1369349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_RR: 1370349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_RI; 1371349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_IR: 1372349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_II; 1373349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_LEVEL_RR: 1374349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_LEVEL_RI; 1375349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_LEVEL_IR: 1376349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_LEVEL_II; 1377349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_GRAD_RR: 1378349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_GRAD_RI; 1379349cc55cSDimitry Andric case NVPTX::TEX_1D_F32_F32_GRAD_IR: 1380349cc55cSDimitry Andric return NVPTX::TEX_1D_F32_F32_GRAD_II; 1381349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_S32_RR: 1382349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_S32_RI; 1383349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_S32_IR: 1384349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_S32_II; 1385349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_RR: 1386349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_RI; 1387349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_IR: 1388349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_II; 1389349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_LEVEL_RR: 1390349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_LEVEL_RI; 1391349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_LEVEL_IR: 1392349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_LEVEL_II; 1393349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_GRAD_RR: 1394349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_GRAD_RI; 1395349cc55cSDimitry Andric case NVPTX::TEX_1D_S32_F32_GRAD_IR: 1396349cc55cSDimitry Andric return NVPTX::TEX_1D_S32_F32_GRAD_II; 1397349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_S32_RR: 1398349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_S32_RI; 1399349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_S32_IR: 1400349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_S32_II; 1401349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_RR: 1402349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_RI; 1403349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_IR: 1404349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_II; 1405349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_LEVEL_RR: 1406349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_LEVEL_RI; 1407349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_LEVEL_IR: 1408349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_LEVEL_II; 1409349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_GRAD_RR: 1410349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_GRAD_RI; 1411349cc55cSDimitry Andric case NVPTX::TEX_1D_U32_F32_GRAD_IR: 1412349cc55cSDimitry Andric return NVPTX::TEX_1D_U32_F32_GRAD_II; 1413349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_S32_RR: 1414349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_S32_RI; 1415349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_S32_IR: 1416349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_S32_II; 1417349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_RR: 1418349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_RI; 1419349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_IR: 1420349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_II; 1421349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_RR: 1422349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_RI; 1423349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_IR: 1424349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_LEVEL_II; 1425349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_RR: 1426349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_RI; 1427349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_IR: 1428349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_F32_F32_GRAD_II; 1429349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_S32_RR: 1430349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_S32_RI; 1431349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_S32_IR: 1432349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_S32_II; 1433349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_RR: 1434349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_RI; 1435349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_IR: 1436349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_II; 1437349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_RR: 1438349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_RI; 1439349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_IR: 1440349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_LEVEL_II; 1441349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_RR: 1442349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_RI; 1443349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_IR: 1444349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_S32_F32_GRAD_II; 1445349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_S32_RR: 1446349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_S32_RI; 1447349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_S32_IR: 1448349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_S32_II; 1449349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_RR: 1450349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_RI; 1451349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_IR: 1452349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_II; 1453349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_RR: 1454349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_RI; 1455349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_IR: 1456349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_LEVEL_II; 1457349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_RR: 1458349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_RI; 1459349cc55cSDimitry Andric case NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_IR: 1460349cc55cSDimitry Andric return NVPTX::TEX_1D_ARRAY_U32_F32_GRAD_II; 1461349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_S32_RR: 1462349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_S32_RI; 1463349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_S32_IR: 1464349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_S32_II; 1465349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_RR: 1466349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_RI; 1467349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_IR: 1468349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_II; 1469349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_LEVEL_RR: 1470349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_LEVEL_RI; 1471349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_LEVEL_IR: 1472349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_LEVEL_II; 1473349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_GRAD_RR: 1474349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_GRAD_RI; 1475349cc55cSDimitry Andric case NVPTX::TEX_2D_F32_F32_GRAD_IR: 1476349cc55cSDimitry Andric return NVPTX::TEX_2D_F32_F32_GRAD_II; 1477349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_S32_RR: 1478349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_S32_RI; 1479349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_S32_IR: 1480349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_S32_II; 1481349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_RR: 1482349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_RI; 1483349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_IR: 1484349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_II; 1485349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_LEVEL_RR: 1486349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_LEVEL_RI; 1487349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_LEVEL_IR: 1488349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_LEVEL_II; 1489349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_GRAD_RR: 1490349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_GRAD_RI; 1491349cc55cSDimitry Andric case NVPTX::TEX_2D_S32_F32_GRAD_IR: 1492349cc55cSDimitry Andric return NVPTX::TEX_2D_S32_F32_GRAD_II; 1493349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_S32_RR: 1494349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_S32_RI; 1495349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_S32_IR: 1496349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_S32_II; 1497349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_RR: 1498349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_RI; 1499349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_IR: 1500349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_II; 1501349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_LEVEL_RR: 1502349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_LEVEL_RI; 1503349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_LEVEL_IR: 1504349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_LEVEL_II; 1505349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_GRAD_RR: 1506349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_GRAD_RI; 1507349cc55cSDimitry Andric case NVPTX::TEX_2D_U32_F32_GRAD_IR: 1508349cc55cSDimitry Andric return NVPTX::TEX_2D_U32_F32_GRAD_II; 1509349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_S32_RR: 1510349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_S32_RI; 1511349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_S32_IR: 1512349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_S32_II; 1513349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_RR: 1514349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_RI; 1515349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_IR: 1516349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_II; 1517349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_RR: 1518349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_RI; 1519349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_IR: 1520349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_LEVEL_II; 1521349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_RR: 1522349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_RI; 1523349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_IR: 1524349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_F32_F32_GRAD_II; 1525349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_S32_RR: 1526349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_S32_RI; 1527349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_S32_IR: 1528349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_S32_II; 1529349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_RR: 1530349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_RI; 1531349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_IR: 1532349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_II; 1533349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_RR: 1534349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_RI; 1535349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_IR: 1536349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_LEVEL_II; 1537349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_RR: 1538349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_RI; 1539349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_IR: 1540349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_S32_F32_GRAD_II; 1541349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_S32_RR: 1542349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_S32_RI; 1543349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_S32_IR: 1544349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_S32_II; 1545349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_RR: 1546349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_RI; 1547349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_IR: 1548349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_II; 1549349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_RR: 1550349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_RI; 1551349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_IR: 1552349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_LEVEL_II; 1553349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_RR: 1554349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_RI; 1555349cc55cSDimitry Andric case NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_IR: 1556349cc55cSDimitry Andric return NVPTX::TEX_2D_ARRAY_U32_F32_GRAD_II; 1557349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_S32_RR: 1558349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_S32_RI; 1559349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_S32_IR: 1560349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_S32_II; 1561349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_RR: 1562349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_RI; 1563349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_IR: 1564349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_II; 1565349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_LEVEL_RR: 1566349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_LEVEL_RI; 1567349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_LEVEL_IR: 1568349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_LEVEL_II; 1569349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_GRAD_RR: 1570349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_GRAD_RI; 1571349cc55cSDimitry Andric case NVPTX::TEX_3D_F32_F32_GRAD_IR: 1572349cc55cSDimitry Andric return NVPTX::TEX_3D_F32_F32_GRAD_II; 1573349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_S32_RR: 1574349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_S32_RI; 1575349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_S32_IR: 1576349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_S32_II; 1577349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_RR: 1578349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_RI; 1579349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_IR: 1580349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_II; 1581349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_LEVEL_RR: 1582349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_LEVEL_RI; 1583349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_LEVEL_IR: 1584349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_LEVEL_II; 1585349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_GRAD_RR: 1586349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_GRAD_RI; 1587349cc55cSDimitry Andric case NVPTX::TEX_3D_S32_F32_GRAD_IR: 1588349cc55cSDimitry Andric return NVPTX::TEX_3D_S32_F32_GRAD_II; 1589349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_S32_RR: 1590349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_S32_RI; 1591349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_S32_IR: 1592349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_S32_II; 1593349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_RR: 1594349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_RI; 1595349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_IR: 1596349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_II; 1597349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_LEVEL_RR: 1598349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_LEVEL_RI; 1599349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_LEVEL_IR: 1600349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_LEVEL_II; 1601349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_GRAD_RR: 1602349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_GRAD_RI; 1603349cc55cSDimitry Andric case NVPTX::TEX_3D_U32_F32_GRAD_IR: 1604349cc55cSDimitry Andric return NVPTX::TEX_3D_U32_F32_GRAD_II; 1605349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_RR: 1606349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_RI; 1607349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_IR: 1608349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_II; 1609349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_LEVEL_RR: 1610349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_LEVEL_RI; 1611349cc55cSDimitry Andric case NVPTX::TEX_CUBE_F32_F32_LEVEL_IR: 1612349cc55cSDimitry Andric return NVPTX::TEX_CUBE_F32_F32_LEVEL_II; 1613349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_RR: 1614349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_RI; 1615349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_IR: 1616349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_II; 1617349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_LEVEL_RR: 1618349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_LEVEL_RI; 1619349cc55cSDimitry Andric case NVPTX::TEX_CUBE_S32_F32_LEVEL_IR: 1620349cc55cSDimitry Andric return NVPTX::TEX_CUBE_S32_F32_LEVEL_II; 1621349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_RR: 1622349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_RI; 1623349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_IR: 1624349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_II; 1625349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_LEVEL_RR: 1626349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_LEVEL_RI; 1627349cc55cSDimitry Andric case NVPTX::TEX_CUBE_U32_F32_LEVEL_IR: 1628349cc55cSDimitry Andric return NVPTX::TEX_CUBE_U32_F32_LEVEL_II; 1629349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_RR: 1630349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_RI; 1631349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_IR: 1632349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_II; 1633349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_RR: 1634349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_RI; 1635349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_IR: 1636349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_F32_F32_LEVEL_II; 1637349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_RR: 1638349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_RI; 1639349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_IR: 1640349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_II; 1641349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_RR: 1642349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_RI; 1643349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_IR: 1644349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_S32_F32_LEVEL_II; 1645349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_RR: 1646349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_RI; 1647349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_IR: 1648349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_II; 1649349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_RR: 1650349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_RI; 1651349cc55cSDimitry Andric case NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_IR: 1652349cc55cSDimitry Andric return NVPTX::TEX_CUBE_ARRAY_U32_F32_LEVEL_II; 1653349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_F32_F32_RR: 1654349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_F32_F32_RI; 1655349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_F32_F32_IR: 1656349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_F32_F32_II; 1657349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_F32_F32_RR: 1658349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_F32_F32_RI; 1659349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_F32_F32_IR: 1660349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_F32_F32_II; 1661349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_F32_F32_RR: 1662349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_F32_F32_RI; 1663349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_F32_F32_IR: 1664349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_F32_F32_II; 1665349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_F32_F32_RR: 1666349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_F32_F32_RI; 1667349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_F32_F32_IR: 1668349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_F32_F32_II; 1669349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_S32_F32_RR: 1670349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_S32_F32_RI; 1671349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_S32_F32_IR: 1672349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_S32_F32_II; 1673349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_S32_F32_RR: 1674349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_S32_F32_RI; 1675349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_S32_F32_IR: 1676349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_S32_F32_II; 1677349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_S32_F32_RR: 1678349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_S32_F32_RI; 1679349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_S32_F32_IR: 1680349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_S32_F32_II; 1681349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_S32_F32_RR: 1682349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_S32_F32_RI; 1683349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_S32_F32_IR: 1684349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_S32_F32_II; 1685349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_U32_F32_RR: 1686349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_U32_F32_RI; 1687349cc55cSDimitry Andric case NVPTX::TLD4_R_2D_U32_F32_IR: 1688349cc55cSDimitry Andric return NVPTX::TLD4_R_2D_U32_F32_II; 1689349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_U32_F32_RR: 1690349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_U32_F32_RI; 1691349cc55cSDimitry Andric case NVPTX::TLD4_G_2D_U32_F32_IR: 1692349cc55cSDimitry Andric return NVPTX::TLD4_G_2D_U32_F32_II; 1693349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_U32_F32_RR: 1694349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_U32_F32_RI; 1695349cc55cSDimitry Andric case NVPTX::TLD4_B_2D_U32_F32_IR: 1696349cc55cSDimitry Andric return NVPTX::TLD4_B_2D_U32_F32_II; 1697349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_U32_F32_RR: 1698349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_U32_F32_RI; 1699349cc55cSDimitry Andric case NVPTX::TLD4_A_2D_U32_F32_IR: 1700349cc55cSDimitry Andric return NVPTX::TLD4_A_2D_U32_F32_II; 1701349cc55cSDimitry Andric default: 1702349cc55cSDimitry Andric llvm_unreachable("Unhandled TEX opcode"); 1703349cc55cSDimitry Andric }; 1704349cc55cSDimitry Andric } 1705349cc55cSDimitry Andric 1706349cc55cSDimitry Andric static unsigned queryRegisterToIndexOpcode(unsigned RegOC) { 1707349cc55cSDimitry Andric switch (RegOC) { 1708349cc55cSDimitry Andric case NVPTX::TXQ_CHANNEL_ORDER_R: 1709349cc55cSDimitry Andric return NVPTX::TXQ_CHANNEL_ORDER_I; 1710349cc55cSDimitry Andric case NVPTX::TXQ_CHANNEL_DATA_TYPE_R: 1711349cc55cSDimitry Andric return NVPTX::TXQ_CHANNEL_DATA_TYPE_I; 1712349cc55cSDimitry Andric case NVPTX::TXQ_WIDTH_R: 1713349cc55cSDimitry Andric return NVPTX::TXQ_WIDTH_I; 1714349cc55cSDimitry Andric case NVPTX::TXQ_HEIGHT_R: 1715349cc55cSDimitry Andric return NVPTX::TXQ_HEIGHT_I; 1716349cc55cSDimitry Andric case NVPTX::TXQ_DEPTH_R: 1717349cc55cSDimitry Andric return NVPTX::TXQ_DEPTH_I; 1718349cc55cSDimitry Andric case NVPTX::TXQ_ARRAY_SIZE_R: 1719349cc55cSDimitry Andric return NVPTX::TXQ_ARRAY_SIZE_I; 1720349cc55cSDimitry Andric case NVPTX::TXQ_NUM_SAMPLES_R: 1721349cc55cSDimitry Andric return NVPTX::TXQ_NUM_SAMPLES_I; 1722349cc55cSDimitry Andric case NVPTX::TXQ_NUM_MIPMAP_LEVELS_R: 1723349cc55cSDimitry Andric return NVPTX::TXQ_NUM_MIPMAP_LEVELS_I; 1724349cc55cSDimitry Andric case NVPTX::SUQ_CHANNEL_ORDER_R: 1725349cc55cSDimitry Andric return NVPTX::SUQ_CHANNEL_ORDER_I; 1726349cc55cSDimitry Andric case NVPTX::SUQ_CHANNEL_DATA_TYPE_R: 1727349cc55cSDimitry Andric return NVPTX::SUQ_CHANNEL_DATA_TYPE_I; 1728349cc55cSDimitry Andric case NVPTX::SUQ_WIDTH_R: 1729349cc55cSDimitry Andric return NVPTX::SUQ_WIDTH_I; 1730349cc55cSDimitry Andric case NVPTX::SUQ_HEIGHT_R: 1731349cc55cSDimitry Andric return NVPTX::SUQ_HEIGHT_I; 1732349cc55cSDimitry Andric case NVPTX::SUQ_DEPTH_R: 1733349cc55cSDimitry Andric return NVPTX::SUQ_DEPTH_I; 1734349cc55cSDimitry Andric case NVPTX::SUQ_ARRAY_SIZE_R: 1735349cc55cSDimitry Andric return NVPTX::SUQ_ARRAY_SIZE_I; 1736349cc55cSDimitry Andric default: 1737349cc55cSDimitry Andric llvm_unreachable("Unhandled TXQ/SUQ opcode"); 1738349cc55cSDimitry Andric }; 1739349cc55cSDimitry Andric } 1740349cc55cSDimitry Andric 17410b57cec5SDimitry Andric bool NVPTXReplaceImageHandles::processInstr(MachineInstr &MI) { 17420b57cec5SDimitry Andric MachineFunction &MF = *MI.getParent()->getParent(); 17430b57cec5SDimitry Andric const MCInstrDesc &MCID = MI.getDesc(); 1744349cc55cSDimitry Andric const NVPTXInstrInfo *TII = MF.getSubtarget<NVPTXSubtarget>().getInstrInfo(); 17450b57cec5SDimitry Andric 17460b57cec5SDimitry Andric if (MCID.TSFlags & NVPTXII::IsTexFlag) { 17470b57cec5SDimitry Andric // This is a texture fetch, so operand 4 is a texref and operand 5 is 17480b57cec5SDimitry Andric // a samplerref 17490b57cec5SDimitry Andric MachineOperand &TexHandle = MI.getOperand(4); 1750349cc55cSDimitry Andric if (replaceImageHandle(TexHandle, MF)) 1751349cc55cSDimitry Andric MI.setDesc(TII->get(texRegisterToIndexOpcode(MI.getOpcode()))); 17520b57cec5SDimitry Andric 17530b57cec5SDimitry Andric if (!(MCID.TSFlags & NVPTXII::IsTexModeUnifiedFlag)) { 17540b57cec5SDimitry Andric MachineOperand &SampHandle = MI.getOperand(5); 1755349cc55cSDimitry Andric if (replaceImageHandle(SampHandle, MF)) 1756349cc55cSDimitry Andric MI.setDesc(TII->get(samplerRegisterToIndexOpcode(MI.getOpcode()))); 17570b57cec5SDimitry Andric } 17580b57cec5SDimitry Andric 17590b57cec5SDimitry Andric return true; 17600b57cec5SDimitry Andric } else if (MCID.TSFlags & NVPTXII::IsSuldMask) { 17610b57cec5SDimitry Andric unsigned VecSize = 17620b57cec5SDimitry Andric 1 << (((MCID.TSFlags & NVPTXII::IsSuldMask) >> NVPTXII::IsSuldShift) - 1); 17630b57cec5SDimitry Andric 17640b57cec5SDimitry Andric // For a surface load of vector size N, the Nth operand will be the surfref 17650b57cec5SDimitry Andric MachineOperand &SurfHandle = MI.getOperand(VecSize); 17660b57cec5SDimitry Andric 1767349cc55cSDimitry Andric if (replaceImageHandle(SurfHandle, MF)) 1768349cc55cSDimitry Andric MI.setDesc(TII->get(suldRegisterToIndexOpcode(MI.getOpcode()))); 17690b57cec5SDimitry Andric 17700b57cec5SDimitry Andric return true; 17710b57cec5SDimitry Andric } else if (MCID.TSFlags & NVPTXII::IsSustFlag) { 17720b57cec5SDimitry Andric // This is a surface store, so operand 0 is a surfref 17730b57cec5SDimitry Andric MachineOperand &SurfHandle = MI.getOperand(0); 17740b57cec5SDimitry Andric 1775349cc55cSDimitry Andric if (replaceImageHandle(SurfHandle, MF)) 1776349cc55cSDimitry Andric MI.setDesc(TII->get(sustRegisterToIndexOpcode(MI.getOpcode()))); 17770b57cec5SDimitry Andric 17780b57cec5SDimitry Andric return true; 17790b57cec5SDimitry Andric } else if (MCID.TSFlags & NVPTXII::IsSurfTexQueryFlag) { 17800b57cec5SDimitry Andric // This is a query, so operand 1 is a surfref/texref 17810b57cec5SDimitry Andric MachineOperand &Handle = MI.getOperand(1); 17820b57cec5SDimitry Andric 1783349cc55cSDimitry Andric if (replaceImageHandle(Handle, MF)) 1784349cc55cSDimitry Andric MI.setDesc(TII->get(queryRegisterToIndexOpcode(MI.getOpcode()))); 17850b57cec5SDimitry Andric 17860b57cec5SDimitry Andric return true; 17870b57cec5SDimitry Andric } 17880b57cec5SDimitry Andric 17890b57cec5SDimitry Andric return false; 17900b57cec5SDimitry Andric } 17910b57cec5SDimitry Andric 1792349cc55cSDimitry Andric bool NVPTXReplaceImageHandles::replaceImageHandle(MachineOperand &Op, 1793349cc55cSDimitry Andric MachineFunction &MF) { 17940b57cec5SDimitry Andric unsigned Idx; 17950b57cec5SDimitry Andric if (findIndexForHandle(Op, MF, Idx)) { 17960b57cec5SDimitry Andric Op.ChangeToImmediate(Idx); 1797349cc55cSDimitry Andric return true; 17980b57cec5SDimitry Andric } 1799349cc55cSDimitry Andric return false; 18000b57cec5SDimitry Andric } 18010b57cec5SDimitry Andric 18020b57cec5SDimitry Andric bool NVPTXReplaceImageHandles:: 18030b57cec5SDimitry Andric findIndexForHandle(MachineOperand &Op, MachineFunction &MF, unsigned &Idx) { 18040b57cec5SDimitry Andric const MachineRegisterInfo &MRI = MF.getRegInfo(); 18050b57cec5SDimitry Andric NVPTXMachineFunctionInfo *MFI = MF.getInfo<NVPTXMachineFunctionInfo>(); 18060b57cec5SDimitry Andric 18070b57cec5SDimitry Andric assert(Op.isReg() && "Handle is not in a reg?"); 18080b57cec5SDimitry Andric 18090b57cec5SDimitry Andric // Which instruction defines the handle? 18100b57cec5SDimitry Andric MachineInstr &TexHandleDef = *MRI.getVRegDef(Op.getReg()); 18110b57cec5SDimitry Andric 18120b57cec5SDimitry Andric switch (TexHandleDef.getOpcode()) { 18130b57cec5SDimitry Andric case NVPTX::LD_i64_avar: { 18140b57cec5SDimitry Andric // The handle is a parameter value being loaded, replace with the 18150b57cec5SDimitry Andric // parameter symbol 18160b57cec5SDimitry Andric const NVPTXTargetMachine &TM = 18170b57cec5SDimitry Andric static_cast<const NVPTXTargetMachine &>(MF.getTarget()); 18180b57cec5SDimitry Andric if (TM.getDrvInterface() == NVPTX::CUDA) { 18190b57cec5SDimitry Andric // For CUDA, we preserve the param loads coming from function arguments 18200b57cec5SDimitry Andric return false; 18210b57cec5SDimitry Andric } 18220b57cec5SDimitry Andric 18230b57cec5SDimitry Andric assert(TexHandleDef.getOperand(6).isSymbol() && "Load is not a symbol!"); 18240b57cec5SDimitry Andric StringRef Sym = TexHandleDef.getOperand(6).getSymbolName(); 18255ffd83dbSDimitry Andric std::string ParamBaseName = std::string(MF.getName()); 18260b57cec5SDimitry Andric ParamBaseName += "_param_"; 18275f757f3fSDimitry Andric assert(Sym.starts_with(ParamBaseName) && "Invalid symbol reference"); 18280b57cec5SDimitry Andric unsigned Param = atoi(Sym.data()+ParamBaseName.size()); 18290b57cec5SDimitry Andric std::string NewSym; 18300b57cec5SDimitry Andric raw_string_ostream NewSymStr(NewSym); 18310b57cec5SDimitry Andric NewSymStr << MF.getName() << "_param_" << Param; 18320b57cec5SDimitry Andric 18330b57cec5SDimitry Andric InstrsToRemove.insert(&TexHandleDef); 18340b57cec5SDimitry Andric Idx = MFI->getImageHandleSymbolIndex(NewSymStr.str().c_str()); 18350b57cec5SDimitry Andric return true; 18360b57cec5SDimitry Andric } 18370b57cec5SDimitry Andric case NVPTX::texsurf_handles: { 18380b57cec5SDimitry Andric // The handle is a global variable, replace with the global variable name 18390b57cec5SDimitry Andric assert(TexHandleDef.getOperand(1).isGlobal() && "Load is not a global!"); 18400b57cec5SDimitry Andric const GlobalValue *GV = TexHandleDef.getOperand(1).getGlobal(); 18410b57cec5SDimitry Andric assert(GV->hasName() && "Global sampler must be named!"); 18420b57cec5SDimitry Andric InstrsToRemove.insert(&TexHandleDef); 18430b57cec5SDimitry Andric Idx = MFI->getImageHandleSymbolIndex(GV->getName().data()); 18440b57cec5SDimitry Andric return true; 18450b57cec5SDimitry Andric } 18460b57cec5SDimitry Andric case NVPTX::nvvm_move_i64: 18470b57cec5SDimitry Andric case TargetOpcode::COPY: { 18480b57cec5SDimitry Andric bool Res = findIndexForHandle(TexHandleDef.getOperand(1), MF, Idx); 18490b57cec5SDimitry Andric if (Res) { 18500b57cec5SDimitry Andric InstrsToRemove.insert(&TexHandleDef); 18510b57cec5SDimitry Andric } 18520b57cec5SDimitry Andric return Res; 18530b57cec5SDimitry Andric } 18540b57cec5SDimitry Andric default: 18550b57cec5SDimitry Andric llvm_unreachable("Unknown instruction operating on handle"); 18560b57cec5SDimitry Andric } 18570b57cec5SDimitry Andric } 18580b57cec5SDimitry Andric 18590b57cec5SDimitry Andric MachineFunctionPass *llvm::createNVPTXReplaceImageHandlesPass() { 18600b57cec5SDimitry Andric return new NVPTXReplaceImageHandles(); 18610b57cec5SDimitry Andric } 1862