Convert feature of the simple isel over for the pattern isel to use.
[oota-llvm.git] / lib / Target / Skeleton / SkeletonInstrInfo.td
1 //===- SkeletonInstrInfo.td - Describe the Instruction Set ------*- C++ -*-===//
2 // 
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
7 // 
8 //===----------------------------------------------------------------------===//
9 //
10 // Skeleton instruction information.  Fill in stuff here.
11 //
12 //===----------------------------------------------------------------------===//
13
14 class Format<bits<4> val> {
15   bits<4> Value = val;
16 }
17
18 // Some of the powerpc instruction formats, plus a pseudo-instruction format:
19 def Pseudo : Format<0>;
20 def IForm : Format<1>;
21 def BForm : Format<2>;
22
23 // Look at how other targets factor commonality between instructions.
24 class SkelInst<string nm, bits<6> opcd, dag ops, Format f> : Instruction {
25   let Namespace = "Skeleton";
26
27   let Name = nm;
28   let OperandList = ops;
29   bits<6> Opcode = opcd;
30   Format Form = f;
31   bits<4> FormBits = Form.Value;
32 }
33
34 // Pseudo-instructions:
35 def PHI : SkelInst<"PHI", 0, (ops), Pseudo>;          // PHI node...
36 def NOP : SkelInst<"NOP", 0, (ops), Pseudo>;          // No-op
37 def ADJCALLSTACKDOWN : SkelInst<"ADJCALLSTACKDOWN", 0, (ops), Pseudo>;
38 def ADJCALLSTACKUP : SkelInst<"ADJCALLSTACKUP", 0, (ops), Pseudo>;
39
40