zpu: managed to compile program that writes constant to global variable
[llvm/zpu.git] / lib / Target / ZPU / ZPUInstrInfo.td
blob03fc27491d00cc2f536293b43863d2dac0016e37
1 //===- ZPUInstrInfo.td - ZPU Register defs ---------------*- 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 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
11 // Instruction format superclass
12 //===----------------------------------------------------------------------===//
14 include "ZPUInstrFormats.td"
16 // Address operands
17 def memdst : Operand<i32> {
18   let PrintMethod = "printOperand";
19   let MIOperandInfo = (ops i32imm);
22 // Address operand
23 def memaddr : Operand<i32> {
24   let PrintMethod = "printOperand";
25   let MIOperandInfo = (ops i32imm);
28 def ZPUWrapper: SDNode<"ZPUISD::Wrapper", SDTIntUnaryOp>;
30 // addressing mode
31 //def addr : ComplexPattern<i32, 1, "SelectAddr", [store], []>;
34 def IM : ZPUIm <(outs CPURegs:$dst), (ins i32imm:$a),
35                  "im $a",
36                  [(set CPURegs:$dst, imm:$a)]>;
38 // First operands, in the DAG the addressing modes                 
39 def ZPUSTORE : ZPUIm <(outs), (ins memdst:$dst, i32imm:$a),
40                  "store $a $dst",
41                  [(store imm:$a, tglobaladdr:$dst)]>;