1 //==- HexagonInstrFormats.td - Hexagon Instruction Formats --*- tablegen -*-==// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file describes the Hexagon V4 instruction classes in TableGen format. 11 // 12 //===----------------------------------------------------------------------===// 13 14 //----------------------------------------------------------------------------// 15 // Hexagon Intruction Flags + 16 // 17 // *** Must match BaseInfo.h *** 18 //----------------------------------------------------------------------------// 19 20 def TypeMEMOP : IType<9>; 21 def TypeNV : IType<10>; 22 def TypePREFIX : IType<30>; 23 24 //----------------------------------------------------------------------------// 25 // Intruction Classes Definitions + 26 //----------------------------------------------------------------------------// 27 28 // 29 // NV type instructions. 30 // 31 class NVInst<dag outs, dag ins, string asmstr, list<dag> pattern = [], 32 string cstr = ""> 33 : InstHexagon<outs, ins, asmstr, pattern, cstr, NV_V4, TypeNV>; 34 35 class NVInst_V4<dag outs, dag ins, string asmstr, list<dag> pattern = [], 36 string cstr = ""> 37 : NVInst<outs, ins, asmstr, pattern, cstr>; 38 39 // Definition of Post increment new value store. 40 class NVInstPost_V4<dag outs, dag ins, string asmstr, list<dag> pattern = [], 41 string cstr = ""> 42 : NVInst<outs, ins, asmstr, pattern, cstr>; 43 44 // Post increment ST Instruction. 45 let mayStore = 1 in 46 class NVInstPI_V4<dag outs, dag ins, string asmstr, list<dag> pattern = [], 47 string cstr = ""> 48 : NVInst<outs, ins, asmstr, pattern, cstr>; 49 50 // New-value conditional branch. 51 class NCJInst<dag outs, dag ins, string asmstr, list<dag> pattern = [], 52 string cstr = ""> 53 : NVInst<outs, ins, asmstr, pattern, cstr>; 54 55 let mayLoad = 1, mayStore = 1 in 56 class MEMInst<dag outs, dag ins, string asmstr, list<dag> pattern = [], 57 string cstr = ""> 58 : InstHexagon<outs, ins, asmstr, pattern, cstr, MEM_V4, TypeMEMOP>; 59 60 class MEMInst_V4<dag outs, dag ins, string asmstr, list<dag> pattern = [], 61 string cstr = ""> 62 : MEMInst<outs, ins, asmstr, pattern, cstr>; 63 64 let isCodeGenOnly = 1 in 65 class EXTENDERInst<dag outs, dag ins, string asmstr, list<dag> pattern = []> 66 : InstHexagon<outs, ins, asmstr, pattern, "", PREFIX, TypePREFIX>; 67