Home | History | Annotate | Download | only in Hexagon
      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  : Type<9>;
     21 def TypeNV     : Type<10>;
     22 def TypePREFIX : Type<30>;
     23 
     24 //----------------------------------------------------------------------------//
     25 //                         Intruction Classes Definitions +
     26 //----------------------------------------------------------------------------//
     27 
     28 //
     29 // NV type instructions.
     30 //
     31 class NVInst_V4<dag outs, dag ins, string asmstr, list<dag> pattern>
     32   : InstHexagon<outs, ins, asmstr, pattern, "", NV_V4, TypeNV> {
     33   bits<5> rd;
     34   bits<5> rs;
     35   bits<13> imm13;
     36 }
     37 
     38 // Definition of Post increment new value store.
     39 class NVInstPost_V4<dag outs, dag ins, string asmstr, list<dag> pattern,
     40                     string cstr>
     41   : InstHexagon<outs, ins, asmstr, pattern, cstr, NV_V4, TypeNV> {
     42   bits<5> rd;
     43   bits<5> rs;
     44   bits<5> rt;
     45   bits<13> imm13;
     46 }
     47 
     48 // Post increment ST Instruction.
     49 class NVInstPI_V4<dag outs, dag ins, string asmstr, list<dag> pattern,
     50                   string cstr>
     51   : NVInstPost_V4<outs, ins, asmstr, pattern, cstr> {
     52   let rt{0-4} = 0;
     53 }
     54 
     55 class MEMInst_V4<dag outs, dag ins, string asmstr, list<dag> pattern>
     56   : InstHexagon<outs, ins, asmstr, pattern, "", MEM_V4, TypeMEMOP> {
     57   bits<5> rd;
     58   bits<5> rs;
     59   bits<6> imm6;
     60 }
     61 
     62 class Immext<dag outs, dag ins, string asmstr, list<dag> pattern>
     63   : InstHexagon<outs, ins, asmstr, pattern, "", PREFIX, TypePREFIX> {
     64   let isCodeGenOnly = 1;
     65 
     66   bits<26> imm26;
     67 }
     68