1 //===- SystemZInstrInfo.td - SystemZ Instruction defs ---------*- tblgen-*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file describes the SystemZ instructions in TableGen format.
12 //===----------------------------------------------------------------------===//
14 include "SystemZInstrFormats.td"
16 //===----------------------------------------------------------------------===//
17 // SystemZ Specific Node Definitions.
18 //===----------------------------------------------------------------------===//
19 def SystemZretflag : SDNode<"SystemZISD::RET_FLAG", SDTNone,
20 [SDNPHasChain, SDNPOptInFlag]>;
22 let neverHasSideEffects = 1 in
23 def NOP : Pseudo<(outs), (ins), "# no-op", []>;
25 //===----------------------------------------------------------------------===//
26 // Control Flow Instructions...
29 // FIXME: Provide proper encoding!
30 let isReturn = 1, isTerminator = 1 in {
31 def RET : Pseudo<(outs), (ins), "br\t%r14", [(SystemZretflag)]>;
34 //===----------------------------------------------------------------------===//
37 // FIXME: Provide proper encoding!
38 let neverHasSideEffects = 1 in {
39 def MOV64rr : Pseudo<(outs GR64:$dst), (ins GR64:$src),
44 // FIXME: Provide proper encoding!
45 let isReMaterializable = 1, isAsCheapAsAMove = 1 in {
46 def MOV64ri : Pseudo<(outs GR64:$dst), (ins i64imm:$src),
48 [(set GR64:$dst, imm:$src)]>;