Path: blob/21.2-virgl/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_gv100.h
4574 views
/*1* Copyright 2020 Red Hat Inc.2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice shall be included in11* all copies or substantial portions of the Software.12*13* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR14* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,15* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL16* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR17* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,18* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR19* OTHER DEALINGS IN THE SOFTWARE.20*/21#ifndef __NV50_IR_LOWERING_GV100_H__22#define __NV50_IR_LOWERING_GV100_H__23#include "codegen/nv50_ir_lowering_gm107.h"2425namespace nv50_ir {2627class GV100LoweringPass : public Pass28{29public:30GV100LoweringPass(Program *p) {31bld.setProgram(p);32}3334private:35BuildUtil bld;3637virtual bool visit(Instruction *);3839bool handleDMNMX(Instruction *);40bool handleEXTBF(Instruction *);41bool handleFLOW(Instruction *);42bool handleI2I(Instruction *);43bool handleINSBF(Instruction *);44bool handlePINTERP(Instruction *);45bool handlePREFLOW(Instruction *);46bool handlePRESIN(Instruction *);47};4849class GV100LegalizeSSA : public GM107LegalizeSSA50{51public:52GV100LegalizeSSA(Program *p) {53bld.setProgram(p);54}5556private:57virtual bool visit(Function *) { return true; }58virtual bool visit(BasicBlock *) { return true; }59virtual bool visit(Instruction *);6061bool handleCMP(Instruction *);62bool handleIADD64(Instruction *);63bool handleIMAD_HIGH(Instruction *);64bool handleIMNMX(Instruction *);65bool handleIMUL(Instruction *);66bool handleLOP2(Instruction *);67bool handleNOT(Instruction *);68bool handlePREEX2(Instruction *);69bool handleQUADON(Instruction *);70bool handleQUADPOP(Instruction *);71bool handleSET(Instruction *);72bool handleSHFL(Instruction *);73bool handleShift(Instruction *);74bool handleSUB(Instruction *);75};76}77#endif787980