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
getPassName() const390b57cec5SDimitry 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
NVPTXReplaceImageHandles()520b57cec5SDimitry Andric NVPTXReplaceImageHandles::NVPTXReplaceImageHandles()
530b57cec5SDimitry Andric : MachineFunctionPass(ID) {}
540b57cec5SDimitry Andric
runOnMachineFunction(MachineFunction & MF)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
suldRegisterToIndexOpcode(unsigned RegOC)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
sustRegisterToIndexOpcode(unsigned RegOC)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
texRegisterToIndexOpcode(unsigned RegOC)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
samplerRegisterToIndexOpcode(unsigned RegOC)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
queryRegisterToIndexOpcode(unsigned RegOC)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
processInstr(MachineInstr & MI)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
replaceImageHandle(MachineOperand & Op,MachineFunction & MF)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::
findIndexForHandle(MachineOperand & Op,MachineFunction & MF,unsigned & Idx)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
createNVPTXReplaceImageHandlesPass()18590b57cec5SDimitry Andric MachineFunctionPass *llvm::createNVPTXReplaceImageHandlesPass() {
18600b57cec5SDimitry Andric return new NVPTXReplaceImageHandles();
18610b57cec5SDimitry Andric }
1862