annotate lib/Target/SystemZ/SystemZInstrDFP.td @ 121:803732b1fca8

LLVM 5.0
author kono
date Fri, 27 Oct 2017 17:07:41 +0900
parents
children c2174574ed3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1 //==- SystemZInstrDFP.td - Floating-point SystemZ instructions -*- tblgen-*-==//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
2 //
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
3 // The LLVM Compiler Infrastructure
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
4 //
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
5 // This file is distributed under the University of Illinois Open Source
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
6 // License. See LICENSE.TXT for details.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
7 //
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
8 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
9 //
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
10 // The instructions in this file implement SystemZ decimal floating-point
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
11 // arithmetic. These instructions are inot currently used for code generation,
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
12 // are provided for use with the assembler and disassembler only. If LLVM
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
13 // ever supports decimal floating-point types (_Decimal64 etc.), they can
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
14 // also be used for code generation for those types.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
15 //
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
16 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
17
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
18 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
19 // Move instructions
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
20 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
21
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
22 // Load and test.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
23 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
24 def LTDTR : UnaryRRE<"ltdtr", 0xB3D6, null_frag, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
25 def LTXTR : UnaryRRE<"ltxtr", 0xB3DE, null_frag, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
26 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
27
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
29 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
30 // Conversion instructions
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
31 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
33 // Convert floating-point values to narrower representations. The destination
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
34 // of LDXTR is a 128-bit value, but only the first register of the pair is used.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
35 def LEDTR : TernaryRRFe<"ledtr", 0xB3D5, FP32, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
36 def LDXTR : TernaryRRFe<"ldxtr", 0xB3DD, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
37
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
38 // Extend floating-point values to wider representations.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
39 def LDETR : BinaryRRFd<"ldetr", 0xB3D4, FP64, FP32>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
40 def LXDTR : BinaryRRFd<"lxdtr", 0xB3DC, FP128, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
41
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
42 // Convert a signed integer value to a floating-point one.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
43 def CDGTR : UnaryRRE<"cdgtr", 0xB3F1, null_frag, FP64, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
44 def CXGTR : UnaryRRE<"cxgtr", 0xB3F9, null_frag, FP128, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
45 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
46 def CDGTRA : TernaryRRFe<"cdgtra", 0xB3F1, FP64, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
47 def CXGTRA : TernaryRRFe<"cxgtra", 0xB3F9, FP128, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
48 def CDFTR : TernaryRRFe<"cdftr", 0xB951, FP64, GR32>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
49 def CXFTR : TernaryRRFe<"cxftr", 0xB959, FP128, GR32>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
50 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
51
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
52 // Convert an unsigned integer value to a floating-point one.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
53 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
54 def CDLGTR : TernaryRRFe<"cdlgtr", 0xB952, FP64, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
55 def CXLGTR : TernaryRRFe<"cxlgtr", 0xB95A, FP128, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
56 def CDLFTR : TernaryRRFe<"cdlftr", 0xB953, FP64, GR32>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
57 def CXLFTR : TernaryRRFe<"cxlftr", 0xB95B, FP128, GR32>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
58 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
59
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
60 // Convert a floating-point value to a signed integer value.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
61 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
62 def CGDTR : BinaryRRFe<"cgdtr", 0xB3E1, GR64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
63 def CGXTR : BinaryRRFe<"cgxtr", 0xB3E9, GR64, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
64 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
65 def CGDTRA : TernaryRRFe<"cgdtra", 0xB3E1, GR64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
66 def CGXTRA : TernaryRRFe<"cgxtra", 0xB3E9, GR64, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
67 def CFDTR : TernaryRRFe<"cfdtr", 0xB941, GR32, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
68 def CFXTR : TernaryRRFe<"cfxtr", 0xB949, GR32, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
69 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
70 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
71
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
72 // Convert a floating-point value to an unsigned integer value.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
73 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
74 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
75 def CLGDTR : TernaryRRFe<"clgdtr", 0xB942, GR64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
76 def CLGXTR : TernaryRRFe<"clgxtr", 0xB94A, GR64, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
77 def CLFDTR : TernaryRRFe<"clfdtr", 0xB943, GR32, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
78 def CLFXTR : TernaryRRFe<"clfxtr", 0xB94B, GR32, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
79 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
80 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
81
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
82 // Convert a packed value to a floating-point one.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
83 def CDSTR : UnaryRRE<"cdstr", 0xB3F3, null_frag, FP64, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
84 def CXSTR : UnaryRRE<"cxstr", 0xB3FB, null_frag, FP128, GR128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
85 def CDUTR : UnaryRRE<"cdutr", 0xB3F2, null_frag, FP64, GR64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
86 def CXUTR : UnaryRRE<"cxutr", 0xB3FA, null_frag, FP128, GR128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
87
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
88 // Convert a floating-point value to a packed value.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
89 def CSDTR : BinaryRRFd<"csdtr", 0xB3E3, GR64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
90 def CSXTR : BinaryRRFd<"csxtr", 0xB3EB, GR128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
91 def CUDTR : UnaryRRE<"cudtr", 0xB3E2, null_frag, GR64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
92 def CUXTR : UnaryRRE<"cuxtr", 0xB3EA, null_frag, GR128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
93
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
94 // Convert from/to memory values in the zoned format.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
95 let Predicates = [FeatureDFPZonedConversion] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
96 def CDZT : BinaryRSL<"cdzt", 0xEDAA, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
97 def CXZT : BinaryRSL<"cxzt", 0xEDAB, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
98 def CZDT : StoreBinaryRSL<"czdt", 0xEDA8, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
99 def CZXT : StoreBinaryRSL<"czxt", 0xEDA9, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
100 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
101
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
102 // Convert from/to memory values in the packed format.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
103 let Predicates = [FeatureDFPPackedConversion] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
104 def CDPT : BinaryRSL<"cdpt", 0xEDAE, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
105 def CXPT : BinaryRSL<"cxpt", 0xEDAF, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
106 def CPDT : StoreBinaryRSL<"cpdt", 0xEDAC, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
107 def CPXT : StoreBinaryRSL<"cpxt", 0xEDAD, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
108 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
109
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
110 // Perform floating-point operation.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
111 let Defs = [CC, R1L, F0Q], Uses = [R0L, F4Q] in
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
112 def PFPO : SideEffectInherentE<"pfpo", 0x010A>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
113
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
114
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
115 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
116 // Unary arithmetic
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
117 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
118
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
119 // Round to an integer, with the second operand (M3) specifying the rounding
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
120 // mode. M4 can be set to 4 to suppress detection of inexact conditions.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
121 def FIDTR : TernaryRRFe<"fidtr", 0xB3D7, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
122 def FIXTR : TernaryRRFe<"fixtr", 0xB3DF, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
123
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
124 // Extract biased exponent.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
125 def EEDTR : UnaryRRE<"eedtr", 0xB3E5, null_frag, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
126 def EEXTR : UnaryRRE<"eextr", 0xB3ED, null_frag, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
127
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
128 // Extract significance.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
129 def ESDTR : UnaryRRE<"esdtr", 0xB3E7, null_frag, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
130 def ESXTR : UnaryRRE<"esxtr", 0xB3EF, null_frag, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
131
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
132
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
133 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
134 // Binary arithmetic
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
135 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
136
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
137 // Addition.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
138 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
139 let isCommutable = 1 in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
140 def ADTR : BinaryRRFa<"adtr", 0xB3D2, null_frag, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
141 def AXTR : BinaryRRFa<"axtr", 0xB3DA, null_frag, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
142 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
143 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
144 def ADTRA : TernaryRRFa<"adtra", 0xB3D2, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
145 def AXTRA : TernaryRRFa<"axtra", 0xB3DA, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
146 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
147 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
148
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
149 // Subtraction.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
150 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
151 def SDTR : BinaryRRFa<"sdtr", 0xB3D3, null_frag, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
152 def SXTR : BinaryRRFa<"sxtr", 0xB3DB, null_frag, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
153 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
154 def SDTRA : TernaryRRFa<"sdtra", 0xB3D3, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
155 def SXTRA : TernaryRRFa<"sxtra", 0xB3DB, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
156 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
157 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
158
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
159 // Multiplication.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
160 let isCommutable = 1 in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
161 def MDTR : BinaryRRFa<"mdtr", 0xB3D0, null_frag, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
162 def MXTR : BinaryRRFa<"mxtr", 0xB3D8, null_frag, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
163 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
164 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
165 def MDTRA : TernaryRRFa<"mdtra", 0xB3D0, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
166 def MXTRA : TernaryRRFa<"mxtra", 0xB3D8, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
167 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
168
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
169 // Division.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
170 def DDTR : BinaryRRFa<"ddtr", 0xB3D1, null_frag, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
171 def DXTR : BinaryRRFa<"dxtr", 0xB3D9, null_frag, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
172 let Predicates = [FeatureFPExtension] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
173 def DDTRA : TernaryRRFa<"ddtra", 0xB3D1, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
174 def DXTRA : TernaryRRFa<"dxtra", 0xB3D9, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
175 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
176
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
177 // Quantize.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
178 def QADTR : TernaryRRFb<"qadtr", 0xB3F5, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
179 def QAXTR : TernaryRRFb<"qaxtr", 0xB3FD, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
180
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
181 // Reround.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
182 def RRDTR : TernaryRRFb<"rrdtr", 0xB3F7, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
183 def RRXTR : TernaryRRFb<"rrxtr", 0xB3FF, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
184
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
185 // Shift significand left/right.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
186 def SLDT : BinaryRXF<"sldt", 0xED40, null_frag, FP64, FP64, null_frag, 0>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
187 def SLXT : BinaryRXF<"slxt", 0xED48, null_frag, FP128, FP128, null_frag, 0>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
188 def SRDT : BinaryRXF<"srdt", 0xED41, null_frag, FP64, FP64, null_frag, 0>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
189 def SRXT : BinaryRXF<"srxt", 0xED49, null_frag, FP128, FP128, null_frag, 0>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
190
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
191 // Insert biased exponent.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
192 def IEDTR : BinaryRRFb<"iedtr", 0xB3F6, null_frag, FP64, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
193 def IEXTR : BinaryRRFb<"iextr", 0xB3FE, null_frag, FP128, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
194
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
195
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
196 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
197 // Comparisons
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
198 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
199
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
200 // Compare.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
201 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
202 def CDTR : CompareRRE<"cdtr", 0xB3E4, null_frag, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
203 def CXTR : CompareRRE<"cxtr", 0xB3EC, null_frag, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
204 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
205
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
206 // Compare and signal.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
207 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
208 def KDTR : CompareRRE<"kdtr", 0xB3E0, null_frag, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
209 def KXTR : CompareRRE<"kxtr", 0xB3E8, null_frag, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
210 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
211
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
212 // Compare biased exponent.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
213 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
214 def CEDTR : CompareRRE<"cedtr", 0xB3F4, null_frag, FP64, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
215 def CEXTR : CompareRRE<"cextr", 0xB3FC, null_frag, FP128, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
216 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
217
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
218 // Test Data Class.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
219 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
220 def TDCET : TestRXE<"tdcet", 0xED50, null_frag, FP32>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
221 def TDCDT : TestRXE<"tdcdt", 0xED54, null_frag, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
222 def TDCXT : TestRXE<"tdcxt", 0xED58, null_frag, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
223 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
224
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
225 // Test Data Group.
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
226 let Defs = [CC] in {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
227 def TDGET : TestRXE<"tdget", 0xED51, null_frag, FP32>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
228 def TDGDT : TestRXE<"tdgdt", 0xED55, null_frag, FP64>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
229 def TDGXT : TestRXE<"tdgxt", 0xED59, null_frag, FP128>;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
230 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
231