1833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#include <stdio.h>
2833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#include "opcodes.h"
3833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#include "dfp_utils.h"
4833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define __STDC_WANT_DEC_FP__ 1
5833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#include <float.h>
6833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
7833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define L2D(insn,  initial, target,round)                               \
8833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
9833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register unsigned long source asm("2") =  initial;                  \
10833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register typeof(target) _t asm("f0");                               \
11833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    asm volatile(insn(round,0,0,2) :"=f" (_t):"d"(source));             \
12833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    _t;                                                                 \
13833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
14833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
15833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define I2D(insn,  initial, target,round)                               \
16833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
17833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register int source asm("2") =  initial;                            \
18833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register typeof(target) _t asm("f0");                               \
19833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    asm volatile(insn(round,0,0,2) :"=f" (_t):"d"(source));             \
20833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    _t;                                                                 \
21833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian})
22833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
23833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define D2L(insn, initial, type, round, cc)                             \
24833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
25833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register type source asm("f0") =  initial;                          \
26833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register unsigned long target asm ("2") = 0;                        \
27833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    asm volatile(insn(round,0,2,0)                                      \
28833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian                 "ipm %1\n\t"                                           \
29833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian                 "srl %1,28\n\t"                                        \
30833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian                 :"=d" (target), "=d" (cc) :"f"(source):"cc");          \
31833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    target;                                                             \
32833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
33833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
34833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define D2I(insn, initial, type, round, cc)                             \
35833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
36833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register type source asm("f0") =  initial;                          \
37833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    register int target asm ("2") = 0;                                  \
38833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    asm volatile(insn(round,0,2,0)                                      \
39833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian                 "ipm %1\n\t"                                           \
40833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian                 "srl %1,28\n\t"                                        \
41833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian                 :"=d" (target), "=d" (cc) :"f"(source):"cc");          \
42833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    target;                                                             \
43833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian})
44833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
45833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
46833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_PRINT_L2D(insn, l, d, round)                                 \
47833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
48833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf(#insn " round=%d %lu -> ", 0x##round, l);                    \
49833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = L2D(insn, l, d, round);                                         \
50833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DFP_VAL_PRINT(d, typeof(d));                                        \
51833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf("\n");                                                       \
52833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
53833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
54833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_INSN_L2D(insn, round, type)                                  \
55833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
56833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    type d;                                                             \
57833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0UL, d, round);                                  \
58833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 1UL, d, round);                                  \
59833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0xffffffffUL, d, round);                         \
60833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0x80000000UL, d, round);                         \
61833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0x7fffffffUL, d, round);                         \
62833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0x100000000UL, d, round);                        \
63833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0xffffffffffffffffUL, d, round);                 \
64833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0x8000000000000000UL, d, round);                 \
65833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_L2D(insn, 0x7fffffffffffffffUL, d, round);                 \
66833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
67833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
68833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_PRINT_I2D(insn, l, d, round)                                 \
69833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
70833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf(#insn " round=%d %d -> ", 0x##round, l);                     \
71833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = I2D(insn, l, d, round);                                         \
72833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DFP_VAL_PRINT(d, typeof(d));                                        \
73833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf("\n");                                                       \
74833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
75833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
76833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_INSN_I2D(insn, round, type)                                  \
77833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
78833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    type d;                                                             \
79833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_I2D(insn, 0, d, round);                                    \
80833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_I2D(insn, 1, d, round);                                    \
81833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_I2D(insn, 0xffffffff, d, round);                           \
82833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_I2D(insn, 0x80000000, d, round);                           \
83833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_I2D(insn, 0x7fffffff, d, round);                           \
84833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian   })
85833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
86833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_PRINT_D2L(insn, d, type, round, cc)                          \
87833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
88833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf(#insn " round=%d ", 0x##round);                              \
89833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DFP_VAL_PRINT(d, type);                                             \
90833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf(" -> %lu ", D2L(insn, d, type, round, cc));                  \
91833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf("cc=%d\n", cc);                                              \
92833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
93833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
94833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_INSN_D2L(insn, round, type)                                  \
95833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
96833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    int cc;                                                             \
97833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    type d;                                                             \
98833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = -1.1DD;                                                         \
99833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
100833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 0.DD;                                                           \
101833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
102833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.DD;                                                           \
103833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
104833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.4DD;                                                          \
105833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
106833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.5DD;                                                          \
107833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
108833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6DD;                                                          \
109833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
110833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+4DD;                                                       \
111833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
112833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+8DD;                                                       \
113833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
114833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+4DD;                                                       \
115833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
116833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+12DD;                                                      \
117833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
118833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+20DD;                                                      \
119833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
120833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+200DD;                                                     \
121833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
122833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E-4DD;                                                       \
123833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
124833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC32_MIN;                                                      \
125833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
126833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC32_MAX;                                                      \
127833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
128833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC64_MIN;                                                      \
129833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
130833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC64_MAX;                                                      \
131833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2L(insn, d, type, round, cc);                             \
132833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
133833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
134833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_PRINT_D2I(insn, d, type, round, cc)                          \
135833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
136833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf(#insn " round=%d ", 0x##round);                              \
137833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DFP_VAL_PRINT(d, type);                                             \
138833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf(" -> %d ", D2I(insn, d, type, round, cc));                   \
139833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    printf("cc=%d\n", cc);                                              \
140833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
141833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
142833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_INSN_D2I(insn, round, type)                                  \
143833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
144833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    int cc;                                                             \
145833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    type d;                                                             \
146833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = -1.1DD;                                                         \
147833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
148833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 0.DD;                                                           \
149833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
150833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.DD;                                                           \
151833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
152833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.4DD;                                                          \
153833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
154833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.5DD;                                                          \
155833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
156833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6DD;                                                          \
157833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
158833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+4DD;                                                       \
159833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
160833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+8DD;                                                       \
161833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
162833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+4DD;                                                       \
163833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
164833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+12DD;                                                      \
165833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
166833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+20DD;                                                      \
167833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
168833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E+200DD;                                                     \
169833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
170833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = 1.6E-4DD;                                                       \
171833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
172833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC32_MIN;                                                      \
173833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
174833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC32_MAX;                                                      \
175833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
176833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC64_MIN;                                                      \
177833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
178833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    d = DEC64_MAX;                                                      \
179833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_PRINT_D2I(insn, d, type, round, cc);                             \
180833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
181833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
182833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian#define DO_D2L(round)                                                   \
183833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  ({                                                                    \
184833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_INSN_D2L(CLFDTR, round, _Decimal64);                             \
185833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_INSN_D2L(CLGDTR, round, _Decimal64);                             \
186833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_INSN_D2I(CFDTR,  round, _Decimal64);                             \
187833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_INSN_D2L(CLFXTR, round, _Decimal128);                            \
188833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_INSN_D2L(CLGXTR, round, _Decimal128);                            \
189833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian    DO_INSN_D2I(CFXTR,  round, _Decimal128);                            \
190833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  })
191833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
192833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
193833d01c0dc8151c0d27c6e5f8d366e16480be5e6florianint main()
194833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian{
195833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  /* rounding mode is not used for the following insns */
196833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_I2D(CDFTR,  0, _Decimal64);
197833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_I2D(CXFTR,  0, _Decimal128);
198833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLFTR, 0, _Decimal64);
199833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CXLFTR, 0, _Decimal128);
200833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CXLGTR, 0, _Decimal128);
201833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
202833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  /* Omit rounding mode value 0 and 2 as the current DFP rounding
203833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian     mode is chosen for these values. */
204833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 1, _Decimal64);
205833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(1);
206833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
207833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 3, _Decimal64);
208833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(3);
209833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
210833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 4, _Decimal64);
211833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(4);
212833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
213833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 5, _Decimal64);
214833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(5);
215833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
216833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 6, _Decimal64);
217833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(6);
218833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
219833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 7, _Decimal64);
220833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(7);
221833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
222833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 8, _Decimal64);
223833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(8);
224833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
225833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, 9, _Decimal64);
226833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(9);
227833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
228833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, a, _Decimal64);
229833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(a);
230833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
231833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, b, _Decimal64);
232833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(b);
233833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
234833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, c, _Decimal64);
235833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(c);
236833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
237833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, d, _Decimal64);
238833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(d);
239833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
240833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, e, _Decimal64);
241833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(e);
242833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
243833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_INSN_L2D(CDLGTR, f, _Decimal64);
244833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  DO_D2L(f);
245833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian
246833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian  return 0;
247833d01c0dc8151c0d27c6e5f8d366e16480be5e6florian}
248