add a thp-based huge page alloc fallback
[pcsx_rearmed.git] / deps / lightning / check / qalu_shift.tst
1 #define GENTABLE        0
2 #define EXPANDFULL      0
3
4 #if GENTABLE
5 .data   128
6 fmt:
7 #  if __WORDSIZE == 32
8 .c      "%s(%2d, 0x%08x, %2d, 0x%08x, 0x%08x)"
9 #  else
10 .c      "%s(%2d, 0x%016lx, %2d, 0x%016lx, 0x%016lx)"
11 #  endif
12 opt_start:
13 .c      "\tOPTIONAL("
14 opt_end:
15 .c      ")\n"
16 use_start:
17 .c      "\t"
18 use_end:
19 .c      "\n"
20 QLSH:
21 .c              " QLSH"
22 QLSHU:
23 .c              "QLSHU"
24 QRSH:
25 .c              " QRSH"
26 QRSHU:
27 .c              "QRSHU"
28 #else
29 #include "qalu.inc"
30 #endif
31
32 #define  QLSH(N, VAL, SH, LO, HI)       QALU(N,   , qlsh, VAL, SH, LO, HI)
33 #define QLSHU(N, VAL, SH, LO, HI)       QALU(N, _u, qlsh, VAL, SH, LO, HI)
34 #define  QRSH(N, VAL, SH, LO, HI)       QALU(N,   , qrsh, VAL, SH, LO, HI)
35 #define QRSHU(N, VAL, SH, LO, HI)       QALU(N, _u, qrsh, VAL, SH, LO, HI)
36
37 #if EXPANDFULL
38 #  define OPTIONAL(OPT)                 OPT
39 #else
40 #  define OPTIONAL(OPT)                 /**/
41 #endif
42
43 .code
44 #if GENTABLE
45         jmpi main
46 func_qlsh:
47         prolog
48         arg $value
49         arg $shift
50         getarg %v0 $value
51         getarg %v1 $shift
52         allocai $((__WORDSIZE >> 3) * 2) $buf
53         beqi func_qlsh_zero %v1 0
54         beqi func_qlsh_overflow %v1 __WORDSIZE
55         rsbi %r0 %v1 __WORDSIZE
56         rshr %r1 %v0 %r0
57         lshr %r0 %v0 %v1
58         jmpi func_qlsh_done
59 func_qlsh_overflow:
60         movr %r1 %v0
61         movi %r0 0
62         jmpi func_qlsh_done
63 func_qlsh_zero:
64         movr %r0 %v0
65         rshi %r1 %v0 $(__WORDSIZE - 1)
66 func_qlsh_done:
67         stxi $buf %fp %r0
68         stxi $($buf + (__WORDSIZE >> 3)) %fp %r1
69         beqi func_qlsh_not_optional %v1 0
70         beqi func_qlsh_not_optional %v1 1
71         beqi func_qlsh_not_optional %v1 $(__WORDSIZE / 2 - 1)
72         beqi func_qlsh_not_optional %v1 $(__WORDSIZE / 2)
73         beqi func_qlsh_not_optional %v1 $(__WORDSIZE / 2 + 1)
74         beqi func_qlsh_not_optional %v1 $(__WORDSIZE - 1)
75         beqi func_qlsh_not_optional %v1 $(__WORDSIZE)
76         jmpi func_qlsh_optional
77 func_qlsh_not_optional:
78         prepare
79                 pushargi use_start
80         finishi @printf
81         movi %v2 0
82         jmpi func_qlsh_printf
83 func_qlsh_optional:
84         prepare
85                 pushargi opt_start
86         finishi @printf
87         movi %v2 1
88 func_qlsh_printf:
89         ldxi %r0 %fp $buf
90         ldxi %r1 %fp $($buf + (__WORDSIZE >> 3))
91         prepare
92                 pushargi fmt
93                 ellipsis
94                 pushargi QLSH
95                 pushargr %v1
96                 pushargr %v0
97                 pushargr %v1
98                 pushargr %r0
99                 pushargr %r1
100         finishi @printf
101         beqi func_qlsh_not_optional_end %v2 0
102         prepare
103                 pushargi opt_end
104         finishi @printf
105         jmpi func_qlsh_ret
106 func_qlsh_not_optional_end:
107         prepare
108                 pushargi use_end
109         finishi @printf
110 func_qlsh_ret:
111         ret
112         epilog
113
114 func_qlsh_u:
115         prolog
116         arg $value
117         arg $shift
118         getarg %v0 $value
119         getarg %v1 $shift
120         allocai $((__WORDSIZE >> 3) * 2) $buf
121         beqi func_qlsh_u_zero %v1 0
122         beqi func_qlsh_u_overflow %v1 __WORDSIZE
123         rsbi %r0 %v1 __WORDSIZE
124         rshr_u %r1 %v0 %r0
125         lshr %r0 %v0 %v1
126         jmpi func_qlsh_u_done
127 func_qlsh_u_overflow:
128         movr %r1 %v0
129         movi %r0 0
130         jmpi func_qlsh_u_done
131 func_qlsh_u_zero:
132         movr %r0 %v0
133         movi %r1 0
134 func_qlsh_u_done:
135         stxi $buf %fp %r0
136         stxi $($buf + (__WORDSIZE >> 3)) %fp %r1
137         beqi func_qlsh_u_not_optional %v1 0
138         beqi func_qlsh_u_not_optional %v1 1
139         beqi func_qlsh_u_not_optional %v1 $(__WORDSIZE / 2 - 1)
140         beqi func_qlsh_u_not_optional %v1 $(__WORDSIZE / 2)
141         beqi func_qlsh_u_not_optional %v1 $(__WORDSIZE / 2 + 1)
142         beqi func_qlsh_u_not_optional %v1 $(__WORDSIZE - 1)
143         beqi func_qlsh_u_not_optional %v1 $(__WORDSIZE)
144         jmpi func_qlsh_u_optional
145 func_qlsh_u_not_optional:
146         prepare
147                 pushargi use_start
148         finishi @printf
149         movi %v2 0
150         jmpi func_qlsh_u_printf
151 func_qlsh_u_optional:
152         prepare
153                 pushargi opt_start
154         finishi @printf
155         movi %v2 1
156 func_qlsh_u_printf:
157         ldxi %r0 %fp $buf
158         ldxi %r1 %fp $($buf + (__WORDSIZE >> 3))
159         prepare
160                 pushargi fmt
161                 ellipsis
162                 pushargi QLSHU
163                 pushargr %v1
164                 pushargr %v0
165                 pushargr %v1
166                 pushargr %r0
167                 pushargr %r1
168         finishi @printf
169         beqi func_qlsh_u_not_optional_end %v2 0
170         prepare
171                 pushargi opt_end
172         finishi @printf
173         jmpi func_qlsh_u_ret
174 func_qlsh_u_not_optional_end:
175         prepare
176                 pushargi use_end
177         finishi @printf
178 func_qlsh_u_ret:
179         ret
180         epilog
181
182 func_qrsh:
183         prolog
184         arg $value
185         arg $shift
186         getarg %v0 $value
187         getarg %v1 $shift
188         allocai $((__WORDSIZE >> 3) * 2) $buf
189         beqi func_qrsh_zero %v1 0
190         beqi func_qrsh_overflow %v1 __WORDSIZE
191         rsbi %r0 %v1 __WORDSIZE
192         lshr %r1 %v0 %r0
193         rshr %r0 %v0 %v1
194         jmpi func_qrsh_done
195 func_qrsh_overflow:
196         movr %r1 %v0
197         rshi %r0 %v0 $(__WORDSIZE - 1)
198         jmpi func_qrsh_done
199 func_qrsh_zero:
200         movr %r0 %v0
201         rshi %r1 %v0 $(__WORDSIZE - 1)
202 func_qrsh_done:
203         stxi $buf %fp %r0
204         stxi $($buf + (__WORDSIZE >> 3)) %fp %r1
205         beqi func_qrsh_not_optional %v1 0
206         beqi func_qrsh_not_optional %v1 1
207         beqi func_qrsh_not_optional %v1 $(__WORDSIZE / 2 - 1)
208         beqi func_qrsh_not_optional %v1 $(__WORDSIZE / 2)
209         beqi func_qrsh_not_optional %v1 $(__WORDSIZE / 2 + 1)
210         beqi func_qrsh_not_optional %v1 $(__WORDSIZE - 1)
211         beqi func_qrsh_not_optional %v1 $(__WORDSIZE)
212         jmpi func_qrsh_optional
213 func_qrsh_not_optional:
214         prepare
215                 pushargi use_start
216         finishi @printf
217         movi %v2 0
218         jmpi func_qrsh_printf
219 func_qrsh_optional:
220         prepare
221                 pushargi opt_start
222         finishi @printf
223         movi %v2 1
224 func_qrsh_printf:
225         ldxi %r0 %fp $buf
226         ldxi %r1 %fp $($buf + (__WORDSIZE >> 3))
227         prepare
228                 pushargi fmt
229                 ellipsis
230                 pushargi QRSH
231                 pushargr %v1
232                 pushargr %v0
233                 pushargr %v1
234                 pushargr %r0
235                 pushargr %r1
236         finishi @printf
237         beqi func_qrsh_not_optional_end %v2 0
238         prepare
239                 pushargi opt_end
240         finishi @printf
241         jmpi func_qrsh_ret
242 func_qrsh_not_optional_end:
243         prepare
244                 pushargi use_end
245         finishi @printf
246 func_qrsh_ret:
247         ret
248         epilog
249
250 func_qrsh_u:
251         prolog
252         arg $value
253         arg $shift
254         getarg %v0 $value
255         getarg %v1 $shift
256         allocai $((__WORDSIZE >> 3) * 2) $buf
257         beqi func_qrsh_u_zero %v1 0
258         beqi func_qrsh_u_overflow %v1 __WORDSIZE
259         rsbi %r0 %v1 __WORDSIZE
260         lshr %r1 %v0 %r0
261         rshr_u %r0 %v0 %v1
262         jmpi func_qrsh_u_done
263 func_qrsh_u_overflow:
264         movr %r1 %v0
265         movi %r0 0
266         jmpi func_qrsh_u_done
267 func_qrsh_u_zero:
268         movr %r0 %v0
269         movi %r1 0
270 func_qrsh_u_done:
271         stxi $buf %fp %r0
272         stxi $($buf + (__WORDSIZE >> 3)) %fp %r1
273         beqi func_qrsh_u_not_optional %v1 0
274         beqi func_qrsh_u_not_optional %v1 1
275         beqi func_qrsh_u_not_optional %v1 $(__WORDSIZE / 2 - 1)
276         beqi func_qrsh_u_not_optional %v1 $(__WORDSIZE / 2)
277         beqi func_qrsh_u_not_optional %v1 $(__WORDSIZE / 2 + 1)
278         beqi func_qrsh_u_not_optional %v1 $(__WORDSIZE - 1)
279         beqi func_qrsh_u_not_optional %v1 $(__WORDSIZE)
280         jmpi func_qrsh_u_optional
281 func_qrsh_u_not_optional:
282         prepare
283                 pushargi use_start
284         finishi @printf
285         movi %v2 0
286         jmpi func_qrsh_u_printf
287 func_qrsh_u_optional:
288         prepare
289                 pushargi opt_start
290         finishi @printf
291         movi %v2 1
292 func_qrsh_u_printf:
293         ldxi %r0 %fp $buf
294         ldxi %r1 %fp $($buf + (__WORDSIZE >> 3))
295         prepare
296                 pushargi fmt
297                 ellipsis
298                 pushargi QRSHU
299                 pushargr %v1
300                 pushargr %v0
301                 pushargr %v1
302                 pushargr %r0
303                 pushargr %r1
304         finishi @printf
305         beqi func_qrsh_u_not_optional_end %v2 0
306         prepare
307                 pushargi opt_end
308         finishi @printf
309         jmpi func_qrsh_u_ret
310 func_qrsh_u_not_optional_end:
311         prepare
312                 pushargi use_end
313         finishi @printf
314 func_qrsh_u_ret:
315         epilog
316 #endif
317
318         name main
319 main:
320         prolog
321 #if GENTABLE
322 #  if __WORDSIZE == 32
323         movi %v0 0x89abcdef
324 #  else
325         movi %v0 0x89abcdef01234567
326 #  endif
327         movi %v1 0
328 loop:
329         prepare
330                 pushargr %v0
331                 pushargr %v1
332         finishi func_qlsh
333         prepare
334                 pushargr %v0
335                 pushargr %v1
336         finishi func_qlsh_u
337         prepare
338                 pushargr %v0
339                 pushargr %v1
340         finishi func_qrsh
341         prepare
342                 pushargr %v0
343                 pushargr %v1
344         finishi func_qrsh_u
345         addi %v1 %v1 1
346         blei loop %v1 __WORDSIZE
347 #else
348 #  if __WORDSIZE == 32
349          QLSH( 0, 0x89abcdef,  0, 0x89abcdef, 0xffffffff)
350         QLSHU( 0, 0x89abcdef,  0, 0x89abcdef, 0x00000000)
351          QRSH( 0, 0x89abcdef,  0, 0x89abcdef, 0xffffffff)
352         QRSHU( 0, 0x89abcdef,  0, 0x89abcdef, 0x00000000)
353          QLSH( 1, 0x89abcdef,  1, 0x13579bde, 0xffffffff)
354         QLSHU( 1, 0x89abcdef,  1, 0x13579bde, 0x00000001)
355          QRSH( 1, 0x89abcdef,  1, 0xc4d5e6f7, 0x80000000)
356         QRSHU( 1, 0x89abcdef,  1, 0x44d5e6f7, 0x80000000)
357         OPTIONAL( QLSH( 2, 0x89abcdef,  2, 0x26af37bc, 0xfffffffe))
358         OPTIONAL(QLSHU( 2, 0x89abcdef,  2, 0x26af37bc, 0x00000002))
359         OPTIONAL( QRSH( 2, 0x89abcdef,  2, 0xe26af37b, 0xc0000000))
360         OPTIONAL(QRSHU( 2, 0x89abcdef,  2, 0x226af37b, 0xc0000000))
361         OPTIONAL( QLSH( 3, 0x89abcdef,  3, 0x4d5e6f78, 0xfffffffc))
362         OPTIONAL(QLSHU( 3, 0x89abcdef,  3, 0x4d5e6f78, 0x00000004))
363         OPTIONAL( QRSH( 3, 0x89abcdef,  3, 0xf13579bd, 0xe0000000))
364         OPTIONAL(QRSHU( 3, 0x89abcdef,  3, 0x113579bd, 0xe0000000))
365         OPTIONAL( QLSH( 4, 0x89abcdef,  4, 0x9abcdef0, 0xfffffff8))
366         OPTIONAL(QLSHU( 4, 0x89abcdef,  4, 0x9abcdef0, 0x00000008))
367         OPTIONAL( QRSH( 4, 0x89abcdef,  4, 0xf89abcde, 0xf0000000))
368         OPTIONAL(QRSHU( 4, 0x89abcdef,  4, 0x089abcde, 0xf0000000))
369         OPTIONAL( QLSH( 5, 0x89abcdef,  5, 0x3579bde0, 0xfffffff1))
370         OPTIONAL(QLSHU( 5, 0x89abcdef,  5, 0x3579bde0, 0x00000011))
371         OPTIONAL( QRSH( 5, 0x89abcdef,  5, 0xfc4d5e6f, 0x78000000))
372         OPTIONAL(QRSHU( 5, 0x89abcdef,  5, 0x044d5e6f, 0x78000000))
373         OPTIONAL( QLSH( 6, 0x89abcdef,  6, 0x6af37bc0, 0xffffffe2))
374         OPTIONAL(QLSHU( 6, 0x89abcdef,  6, 0x6af37bc0, 0x00000022))
375         OPTIONAL( QRSH( 6, 0x89abcdef,  6, 0xfe26af37, 0xbc000000))
376         OPTIONAL(QRSHU( 6, 0x89abcdef,  6, 0x0226af37, 0xbc000000))
377         OPTIONAL( QLSH( 7, 0x89abcdef,  7, 0xd5e6f780, 0xffffffc4))
378         OPTIONAL(QLSHU( 7, 0x89abcdef,  7, 0xd5e6f780, 0x00000044))
379         OPTIONAL( QRSH( 7, 0x89abcdef,  7, 0xff13579b, 0xde000000))
380         OPTIONAL(QRSHU( 7, 0x89abcdef,  7, 0x0113579b, 0xde000000))
381         OPTIONAL( QLSH( 8, 0x89abcdef,  8, 0xabcdef00, 0xffffff89))
382         OPTIONAL(QLSHU( 8, 0x89abcdef,  8, 0xabcdef00, 0x00000089))
383         OPTIONAL( QRSH( 8, 0x89abcdef,  8, 0xff89abcd, 0xef000000))
384         OPTIONAL(QRSHU( 8, 0x89abcdef,  8, 0x0089abcd, 0xef000000))
385         OPTIONAL( QLSH( 9, 0x89abcdef,  9, 0x579bde00, 0xffffff13))
386         OPTIONAL(QLSHU( 9, 0x89abcdef,  9, 0x579bde00, 0x00000113))
387         OPTIONAL( QRSH( 9, 0x89abcdef,  9, 0xffc4d5e6, 0xf7800000))
388         OPTIONAL(QRSHU( 9, 0x89abcdef,  9, 0x0044d5e6, 0xf7800000))
389         OPTIONAL( QLSH(10, 0x89abcdef, 10, 0xaf37bc00, 0xfffffe26))
390         OPTIONAL(QLSHU(10, 0x89abcdef, 10, 0xaf37bc00, 0x00000226))
391         OPTIONAL( QRSH(10, 0x89abcdef, 10, 0xffe26af3, 0x7bc00000))
392         OPTIONAL(QRSHU(10, 0x89abcdef, 10, 0x00226af3, 0x7bc00000))
393         OPTIONAL( QLSH(11, 0x89abcdef, 11, 0x5e6f7800, 0xfffffc4d))
394         OPTIONAL(QLSHU(11, 0x89abcdef, 11, 0x5e6f7800, 0x0000044d))
395         OPTIONAL( QRSH(11, 0x89abcdef, 11, 0xfff13579, 0xbde00000))
396         OPTIONAL(QRSHU(11, 0x89abcdef, 11, 0x00113579, 0xbde00000))
397         OPTIONAL( QLSH(12, 0x89abcdef, 12, 0xbcdef000, 0xfffff89a))
398         OPTIONAL(QLSHU(12, 0x89abcdef, 12, 0xbcdef000, 0x0000089a))
399         OPTIONAL( QRSH(12, 0x89abcdef, 12, 0xfff89abc, 0xdef00000))
400         OPTIONAL(QRSHU(12, 0x89abcdef, 12, 0x00089abc, 0xdef00000))
401         OPTIONAL( QLSH(13, 0x89abcdef, 13, 0x79bde000, 0xfffff135))
402         OPTIONAL(QLSHU(13, 0x89abcdef, 13, 0x79bde000, 0x00001135))
403         OPTIONAL( QRSH(13, 0x89abcdef, 13, 0xfffc4d5e, 0x6f780000))
404         OPTIONAL(QRSHU(13, 0x89abcdef, 13, 0x00044d5e, 0x6f780000))
405         OPTIONAL( QLSH(14, 0x89abcdef, 14, 0xf37bc000, 0xffffe26a))
406         OPTIONAL(QLSHU(14, 0x89abcdef, 14, 0xf37bc000, 0x0000226a))
407         OPTIONAL( QRSH(14, 0x89abcdef, 14, 0xfffe26af, 0x37bc0000))
408         OPTIONAL(QRSHU(14, 0x89abcdef, 14, 0x000226af, 0x37bc0000))
409          QLSH(15, 0x89abcdef, 15, 0xe6f78000, 0xffffc4d5)
410         QLSHU(15, 0x89abcdef, 15, 0xe6f78000, 0x000044d5)
411          QRSH(15, 0x89abcdef, 15, 0xffff1357, 0x9bde0000)
412         QRSHU(15, 0x89abcdef, 15, 0x00011357, 0x9bde0000)
413          QLSH(16, 0x89abcdef, 16, 0xcdef0000, 0xffff89ab)
414         QLSHU(16, 0x89abcdef, 16, 0xcdef0000, 0x000089ab)
415          QRSH(16, 0x89abcdef, 16, 0xffff89ab, 0xcdef0000)
416         QRSHU(16, 0x89abcdef, 16, 0x000089ab, 0xcdef0000)
417          QLSH(17, 0x89abcdef, 17, 0x9bde0000, 0xffff1357)
418         QLSHU(17, 0x89abcdef, 17, 0x9bde0000, 0x00011357)
419          QRSH(17, 0x89abcdef, 17, 0xffffc4d5, 0xe6f78000)
420         QRSHU(17, 0x89abcdef, 17, 0x000044d5, 0xe6f78000)
421         OPTIONAL( QLSH(18, 0x89abcdef, 18, 0x37bc0000, 0xfffe26af))
422         OPTIONAL(QLSHU(18, 0x89abcdef, 18, 0x37bc0000, 0x000226af))
423         OPTIONAL( QRSH(18, 0x89abcdef, 18, 0xffffe26a, 0xf37bc000))
424         OPTIONAL(QRSHU(18, 0x89abcdef, 18, 0x0000226a, 0xf37bc000))
425         OPTIONAL( QLSH(19, 0x89abcdef, 19, 0x6f780000, 0xfffc4d5e))
426         OPTIONAL(QLSHU(19, 0x89abcdef, 19, 0x6f780000, 0x00044d5e))
427         OPTIONAL( QRSH(19, 0x89abcdef, 19, 0xfffff135, 0x79bde000))
428         OPTIONAL(QRSHU(19, 0x89abcdef, 19, 0x00001135, 0x79bde000))
429         OPTIONAL( QLSH(20, 0x89abcdef, 20, 0xdef00000, 0xfff89abc))
430         OPTIONAL(QLSHU(20, 0x89abcdef, 20, 0xdef00000, 0x00089abc))
431         OPTIONAL( QRSH(20, 0x89abcdef, 20, 0xfffff89a, 0xbcdef000))
432         OPTIONAL(QRSHU(20, 0x89abcdef, 20, 0x0000089a, 0xbcdef000))
433         OPTIONAL( QLSH(21, 0x89abcdef, 21, 0xbde00000, 0xfff13579))
434         OPTIONAL(QLSHU(21, 0x89abcdef, 21, 0xbde00000, 0x00113579))
435         OPTIONAL( QRSH(21, 0x89abcdef, 21, 0xfffffc4d, 0x5e6f7800))
436         OPTIONAL(QRSHU(21, 0x89abcdef, 21, 0x0000044d, 0x5e6f7800))
437         OPTIONAL( QLSH(22, 0x89abcdef, 22, 0x7bc00000, 0xffe26af3))
438         OPTIONAL(QLSHU(22, 0x89abcdef, 22, 0x7bc00000, 0x00226af3))
439         OPTIONAL( QRSH(22, 0x89abcdef, 22, 0xfffffe26, 0xaf37bc00))
440         OPTIONAL(QRSHU(22, 0x89abcdef, 22, 0x00000226, 0xaf37bc00))
441         OPTIONAL( QLSH(23, 0x89abcdef, 23, 0xf7800000, 0xffc4d5e6))
442         OPTIONAL(QLSHU(23, 0x89abcdef, 23, 0xf7800000, 0x0044d5e6))
443         OPTIONAL( QRSH(23, 0x89abcdef, 23, 0xffffff13, 0x579bde00))
444         OPTIONAL(QRSHU(23, 0x89abcdef, 23, 0x00000113, 0x579bde00))
445         OPTIONAL( QLSH(24, 0x89abcdef, 24, 0xef000000, 0xff89abcd))
446         OPTIONAL(QLSHU(24, 0x89abcdef, 24, 0xef000000, 0x0089abcd))
447         OPTIONAL( QRSH(24, 0x89abcdef, 24, 0xffffff89, 0xabcdef00))
448         OPTIONAL(QRSHU(24, 0x89abcdef, 24, 0x00000089, 0xabcdef00))
449         OPTIONAL( QLSH(25, 0x89abcdef, 25, 0xde000000, 0xff13579b))
450         OPTIONAL(QLSHU(25, 0x89abcdef, 25, 0xde000000, 0x0113579b))
451         OPTIONAL( QRSH(25, 0x89abcdef, 25, 0xffffffc4, 0xd5e6f780))
452         OPTIONAL(QRSHU(25, 0x89abcdef, 25, 0x00000044, 0xd5e6f780))
453         OPTIONAL( QLSH(26, 0x89abcdef, 26, 0xbc000000, 0xfe26af37))
454         OPTIONAL(QLSHU(26, 0x89abcdef, 26, 0xbc000000, 0x0226af37))
455         OPTIONAL( QRSH(26, 0x89abcdef, 26, 0xffffffe2, 0x6af37bc0))
456         OPTIONAL(QRSHU(26, 0x89abcdef, 26, 0x00000022, 0x6af37bc0))
457         OPTIONAL( QLSH(27, 0x89abcdef, 27, 0x78000000, 0xfc4d5e6f))
458         OPTIONAL(QLSHU(27, 0x89abcdef, 27, 0x78000000, 0x044d5e6f))
459         OPTIONAL( QRSH(27, 0x89abcdef, 27, 0xfffffff1, 0x3579bde0))
460         OPTIONAL(QRSHU(27, 0x89abcdef, 27, 0x00000011, 0x3579bde0))
461         OPTIONAL( QLSH(28, 0x89abcdef, 28, 0xf0000000, 0xf89abcde))
462         OPTIONAL(QLSHU(28, 0x89abcdef, 28, 0xf0000000, 0x089abcde))
463         OPTIONAL( QRSH(28, 0x89abcdef, 28, 0xfffffff8, 0x9abcdef0))
464         OPTIONAL(QRSHU(28, 0x89abcdef, 28, 0x00000008, 0x9abcdef0))
465         OPTIONAL( QLSH(29, 0x89abcdef, 29, 0xe0000000, 0xf13579bd))
466         OPTIONAL(QLSHU(29, 0x89abcdef, 29, 0xe0000000, 0x113579bd))
467         OPTIONAL( QRSH(29, 0x89abcdef, 29, 0xfffffffc, 0x4d5e6f78))
468         OPTIONAL(QRSHU(29, 0x89abcdef, 29, 0x00000004, 0x4d5e6f78))
469         OPTIONAL( QLSH(30, 0x89abcdef, 30, 0xc0000000, 0xe26af37b))
470         OPTIONAL(QLSHU(30, 0x89abcdef, 30, 0xc0000000, 0x226af37b))
471         OPTIONAL( QRSH(30, 0x89abcdef, 30, 0xfffffffe, 0x26af37bc))
472         OPTIONAL(QRSHU(30, 0x89abcdef, 30, 0x00000002, 0x26af37bc))
473          QLSH(31, 0x89abcdef, 31, 0x80000000, 0xc4d5e6f7)
474         QLSHU(31, 0x89abcdef, 31, 0x80000000, 0x44d5e6f7)
475          QRSH(31, 0x89abcdef, 31, 0xffffffff, 0x13579bde)
476         QRSHU(31, 0x89abcdef, 31, 0x00000001, 0x13579bde)
477          QLSH(32, 0x89abcdef, 32, 0x00000000, 0x89abcdef)
478         QLSHU(32, 0x89abcdef, 32, 0x00000000, 0x89abcdef)
479          QRSH(32, 0x89abcdef, 32, 0xffffffff, 0x89abcdef)
480         QRSHU(32, 0x89abcdef, 32, 0x00000000, 0x89abcdef)
481 #  else
482          QLSH( 0, 0x89abcdef01234567,  0, 0x89abcdef01234567, 0xffffffffffffffff)
483         QLSHU( 0, 0x89abcdef01234567,  0, 0x89abcdef01234567, 0x0000000000000000)
484          QRSH( 0, 0x89abcdef01234567,  0, 0x89abcdef01234567, 0xffffffffffffffff)
485         QRSHU( 0, 0x89abcdef01234567,  0, 0x89abcdef01234567, 0x0000000000000000)
486          QLSH( 1, 0x89abcdef01234567,  1, 0x13579bde02468ace, 0xffffffffffffffff)
487         QLSHU( 1, 0x89abcdef01234567,  1, 0x13579bde02468ace, 0x0000000000000001)
488          QRSH( 1, 0x89abcdef01234567,  1, 0xc4d5e6f78091a2b3, 0x8000000000000000)
489         QRSHU( 1, 0x89abcdef01234567,  1, 0x44d5e6f78091a2b3, 0x8000000000000000)
490         OPTIONAL( QLSH( 2, 0x89abcdef01234567,  2, 0x26af37bc048d159c, 0xfffffffffffffffe))
491         OPTIONAL(QLSHU( 2, 0x89abcdef01234567,  2, 0x26af37bc048d159c, 0x0000000000000002))
492         OPTIONAL( QRSH( 2, 0x89abcdef01234567,  2, 0xe26af37bc048d159, 0xc000000000000000))
493         OPTIONAL(QRSHU( 2, 0x89abcdef01234567,  2, 0x226af37bc048d159, 0xc000000000000000))
494         OPTIONAL( QLSH( 3, 0x89abcdef01234567,  3, 0x4d5e6f78091a2b38, 0xfffffffffffffffc))
495         OPTIONAL(QLSHU( 3, 0x89abcdef01234567,  3, 0x4d5e6f78091a2b38, 0x0000000000000004))
496         OPTIONAL( QRSH( 3, 0x89abcdef01234567,  3, 0xf13579bde02468ac, 0xe000000000000000))
497         OPTIONAL(QRSHU( 3, 0x89abcdef01234567,  3, 0x113579bde02468ac, 0xe000000000000000))
498         OPTIONAL( QLSH( 4, 0x89abcdef01234567,  4, 0x9abcdef012345670, 0xfffffffffffffff8))
499         OPTIONAL(QLSHU( 4, 0x89abcdef01234567,  4, 0x9abcdef012345670, 0x0000000000000008))
500         OPTIONAL( QRSH( 4, 0x89abcdef01234567,  4, 0xf89abcdef0123456, 0x7000000000000000))
501         OPTIONAL(QRSHU( 4, 0x89abcdef01234567,  4, 0x089abcdef0123456, 0x7000000000000000))
502         OPTIONAL( QLSH( 5, 0x89abcdef01234567,  5, 0x3579bde02468ace0, 0xfffffffffffffff1))
503         OPTIONAL(QLSHU( 5, 0x89abcdef01234567,  5, 0x3579bde02468ace0, 0x0000000000000011))
504         OPTIONAL( QRSH( 5, 0x89abcdef01234567,  5, 0xfc4d5e6f78091a2b, 0x3800000000000000))
505         OPTIONAL(QRSHU( 5, 0x89abcdef01234567,  5, 0x044d5e6f78091a2b, 0x3800000000000000))
506         OPTIONAL( QLSH( 6, 0x89abcdef01234567,  6, 0x6af37bc048d159c0, 0xffffffffffffffe2))
507         OPTIONAL(QLSHU( 6, 0x89abcdef01234567,  6, 0x6af37bc048d159c0, 0x0000000000000022))
508         OPTIONAL( QRSH( 6, 0x89abcdef01234567,  6, 0xfe26af37bc048d15, 0x9c00000000000000))
509         OPTIONAL(QRSHU( 6, 0x89abcdef01234567,  6, 0x0226af37bc048d15, 0x9c00000000000000))
510         OPTIONAL( QLSH( 7, 0x89abcdef01234567,  7, 0xd5e6f78091a2b380, 0xffffffffffffffc4))
511         OPTIONAL(QLSHU( 7, 0x89abcdef01234567,  7, 0xd5e6f78091a2b380, 0x0000000000000044))
512         OPTIONAL( QRSH( 7, 0x89abcdef01234567,  7, 0xff13579bde02468a, 0xce00000000000000))
513         OPTIONAL(QRSHU( 7, 0x89abcdef01234567,  7, 0x0113579bde02468a, 0xce00000000000000))
514         OPTIONAL( QLSH( 8, 0x89abcdef01234567,  8, 0xabcdef0123456700, 0xffffffffffffff89))
515         OPTIONAL(QLSHU( 8, 0x89abcdef01234567,  8, 0xabcdef0123456700, 0x0000000000000089))
516         OPTIONAL( QRSH( 8, 0x89abcdef01234567,  8, 0xff89abcdef012345, 0x6700000000000000))
517         OPTIONAL(QRSHU( 8, 0x89abcdef01234567,  8, 0x0089abcdef012345, 0x6700000000000000))
518         OPTIONAL( QLSH( 9, 0x89abcdef01234567,  9, 0x579bde02468ace00, 0xffffffffffffff13))
519         OPTIONAL(QLSHU( 9, 0x89abcdef01234567,  9, 0x579bde02468ace00, 0x0000000000000113))
520         OPTIONAL( QRSH( 9, 0x89abcdef01234567,  9, 0xffc4d5e6f78091a2, 0xb380000000000000))
521         OPTIONAL(QRSHU( 9, 0x89abcdef01234567,  9, 0x0044d5e6f78091a2, 0xb380000000000000))
522         OPTIONAL( QLSH(10, 0x89abcdef01234567, 10, 0xaf37bc048d159c00, 0xfffffffffffffe26))
523         OPTIONAL(QLSHU(10, 0x89abcdef01234567, 10, 0xaf37bc048d159c00, 0x0000000000000226))
524         OPTIONAL( QRSH(10, 0x89abcdef01234567, 10, 0xffe26af37bc048d1, 0x59c0000000000000))
525         OPTIONAL(QRSHU(10, 0x89abcdef01234567, 10, 0x00226af37bc048d1, 0x59c0000000000000))
526         OPTIONAL( QLSH(11, 0x89abcdef01234567, 11, 0x5e6f78091a2b3800, 0xfffffffffffffc4d))
527         OPTIONAL(QLSHU(11, 0x89abcdef01234567, 11, 0x5e6f78091a2b3800, 0x000000000000044d))
528         OPTIONAL( QRSH(11, 0x89abcdef01234567, 11, 0xfff13579bde02468, 0xace0000000000000))
529         OPTIONAL(QRSHU(11, 0x89abcdef01234567, 11, 0x00113579bde02468, 0xace0000000000000))
530         OPTIONAL( QLSH(12, 0x89abcdef01234567, 12, 0xbcdef01234567000, 0xfffffffffffff89a))
531         OPTIONAL(QLSHU(12, 0x89abcdef01234567, 12, 0xbcdef01234567000, 0x000000000000089a))
532         OPTIONAL( QRSH(12, 0x89abcdef01234567, 12, 0xfff89abcdef01234, 0x5670000000000000))
533         OPTIONAL(QRSHU(12, 0x89abcdef01234567, 12, 0x00089abcdef01234, 0x5670000000000000))
534         OPTIONAL( QLSH(13, 0x89abcdef01234567, 13, 0x79bde02468ace000, 0xfffffffffffff135))
535         OPTIONAL(QLSHU(13, 0x89abcdef01234567, 13, 0x79bde02468ace000, 0x0000000000001135))
536         OPTIONAL( QRSH(13, 0x89abcdef01234567, 13, 0xfffc4d5e6f78091a, 0x2b38000000000000))
537         OPTIONAL(QRSHU(13, 0x89abcdef01234567, 13, 0x00044d5e6f78091a, 0x2b38000000000000))
538         OPTIONAL( QLSH(14, 0x89abcdef01234567, 14, 0xf37bc048d159c000, 0xffffffffffffe26a))
539         OPTIONAL(QLSHU(14, 0x89abcdef01234567, 14, 0xf37bc048d159c000, 0x000000000000226a))
540         OPTIONAL( QRSH(14, 0x89abcdef01234567, 14, 0xfffe26af37bc048d, 0x159c000000000000))
541         OPTIONAL(QRSHU(14, 0x89abcdef01234567, 14, 0x000226af37bc048d, 0x159c000000000000))
542         OPTIONAL( QLSH(15, 0x89abcdef01234567, 15, 0xe6f78091a2b38000, 0xffffffffffffc4d5))
543         OPTIONAL(QLSHU(15, 0x89abcdef01234567, 15, 0xe6f78091a2b38000, 0x00000000000044d5))
544         OPTIONAL( QRSH(15, 0x89abcdef01234567, 15, 0xffff13579bde0246, 0x8ace000000000000))
545         OPTIONAL(QRSHU(15, 0x89abcdef01234567, 15, 0x000113579bde0246, 0x8ace000000000000))
546         OPTIONAL( QLSH(16, 0x89abcdef01234567, 16, 0xcdef012345670000, 0xffffffffffff89ab))
547         OPTIONAL(QLSHU(16, 0x89abcdef01234567, 16, 0xcdef012345670000, 0x00000000000089ab))
548         OPTIONAL( QRSH(16, 0x89abcdef01234567, 16, 0xffff89abcdef0123, 0x4567000000000000))
549         OPTIONAL(QRSHU(16, 0x89abcdef01234567, 16, 0x000089abcdef0123, 0x4567000000000000))
550         OPTIONAL( QLSH(17, 0x89abcdef01234567, 17, 0x9bde02468ace0000, 0xffffffffffff1357))
551         OPTIONAL(QLSHU(17, 0x89abcdef01234567, 17, 0x9bde02468ace0000, 0x0000000000011357))
552         OPTIONAL( QRSH(17, 0x89abcdef01234567, 17, 0xffffc4d5e6f78091, 0xa2b3800000000000))
553         OPTIONAL(QRSHU(17, 0x89abcdef01234567, 17, 0x000044d5e6f78091, 0xa2b3800000000000))
554         OPTIONAL( QLSH(18, 0x89abcdef01234567, 18, 0x37bc048d159c0000, 0xfffffffffffe26af))
555         OPTIONAL(QLSHU(18, 0x89abcdef01234567, 18, 0x37bc048d159c0000, 0x00000000000226af))
556         OPTIONAL( QRSH(18, 0x89abcdef01234567, 18, 0xffffe26af37bc048, 0xd159c00000000000))
557         OPTIONAL(QRSHU(18, 0x89abcdef01234567, 18, 0x0000226af37bc048, 0xd159c00000000000))
558         OPTIONAL( QLSH(19, 0x89abcdef01234567, 19, 0x6f78091a2b380000, 0xfffffffffffc4d5e))
559         OPTIONAL(QLSHU(19, 0x89abcdef01234567, 19, 0x6f78091a2b380000, 0x0000000000044d5e))
560         OPTIONAL( QRSH(19, 0x89abcdef01234567, 19, 0xfffff13579bde024, 0x68ace00000000000))
561         OPTIONAL(QRSHU(19, 0x89abcdef01234567, 19, 0x0000113579bde024, 0x68ace00000000000))
562         OPTIONAL( QLSH(20, 0x89abcdef01234567, 20, 0xdef0123456700000, 0xfffffffffff89abc))
563         OPTIONAL(QLSHU(20, 0x89abcdef01234567, 20, 0xdef0123456700000, 0x0000000000089abc))
564         OPTIONAL( QRSH(20, 0x89abcdef01234567, 20, 0xfffff89abcdef012, 0x3456700000000000))
565         OPTIONAL(QRSHU(20, 0x89abcdef01234567, 20, 0x0000089abcdef012, 0x3456700000000000))
566         OPTIONAL( QLSH(21, 0x89abcdef01234567, 21, 0xbde02468ace00000, 0xfffffffffff13579))
567         OPTIONAL(QLSHU(21, 0x89abcdef01234567, 21, 0xbde02468ace00000, 0x0000000000113579))
568         OPTIONAL( QRSH(21, 0x89abcdef01234567, 21, 0xfffffc4d5e6f7809, 0x1a2b380000000000))
569         OPTIONAL(QRSHU(21, 0x89abcdef01234567, 21, 0x0000044d5e6f7809, 0x1a2b380000000000))
570         OPTIONAL( QLSH(22, 0x89abcdef01234567, 22, 0x7bc048d159c00000, 0xffffffffffe26af3))
571         OPTIONAL(QLSHU(22, 0x89abcdef01234567, 22, 0x7bc048d159c00000, 0x0000000000226af3))
572         OPTIONAL( QRSH(22, 0x89abcdef01234567, 22, 0xfffffe26af37bc04, 0x8d159c0000000000))
573         OPTIONAL(QRSHU(22, 0x89abcdef01234567, 22, 0x00000226af37bc04, 0x8d159c0000000000))
574         OPTIONAL( QLSH(23, 0x89abcdef01234567, 23, 0xf78091a2b3800000, 0xffffffffffc4d5e6))
575         OPTIONAL(QLSHU(23, 0x89abcdef01234567, 23, 0xf78091a2b3800000, 0x000000000044d5e6))
576         OPTIONAL( QRSH(23, 0x89abcdef01234567, 23, 0xffffff13579bde02, 0x468ace0000000000))
577         OPTIONAL(QRSHU(23, 0x89abcdef01234567, 23, 0x00000113579bde02, 0x468ace0000000000))
578         OPTIONAL( QLSH(24, 0x89abcdef01234567, 24, 0xef01234567000000, 0xffffffffff89abcd))
579         OPTIONAL(QLSHU(24, 0x89abcdef01234567, 24, 0xef01234567000000, 0x000000000089abcd))
580         OPTIONAL( QRSH(24, 0x89abcdef01234567, 24, 0xffffff89abcdef01, 0x2345670000000000))
581         OPTIONAL(QRSHU(24, 0x89abcdef01234567, 24, 0x00000089abcdef01, 0x2345670000000000))
582         OPTIONAL( QLSH(25, 0x89abcdef01234567, 25, 0xde02468ace000000, 0xffffffffff13579b))
583         OPTIONAL(QLSHU(25, 0x89abcdef01234567, 25, 0xde02468ace000000, 0x000000000113579b))
584         OPTIONAL( QRSH(25, 0x89abcdef01234567, 25, 0xffffffc4d5e6f780, 0x91a2b38000000000))
585         OPTIONAL(QRSHU(25, 0x89abcdef01234567, 25, 0x00000044d5e6f780, 0x91a2b38000000000))
586         OPTIONAL( QLSH(26, 0x89abcdef01234567, 26, 0xbc048d159c000000, 0xfffffffffe26af37))
587         OPTIONAL(QLSHU(26, 0x89abcdef01234567, 26, 0xbc048d159c000000, 0x000000000226af37))
588         OPTIONAL( QRSH(26, 0x89abcdef01234567, 26, 0xffffffe26af37bc0, 0x48d159c000000000))
589         OPTIONAL(QRSHU(26, 0x89abcdef01234567, 26, 0x000000226af37bc0, 0x48d159c000000000))
590         OPTIONAL( QLSH(27, 0x89abcdef01234567, 27, 0x78091a2b38000000, 0xfffffffffc4d5e6f))
591         OPTIONAL(QLSHU(27, 0x89abcdef01234567, 27, 0x78091a2b38000000, 0x00000000044d5e6f))
592         OPTIONAL( QRSH(27, 0x89abcdef01234567, 27, 0xfffffff13579bde0, 0x2468ace000000000))
593         OPTIONAL(QRSHU(27, 0x89abcdef01234567, 27, 0x000000113579bde0, 0x2468ace000000000))
594         OPTIONAL( QLSH(28, 0x89abcdef01234567, 28, 0xf012345670000000, 0xfffffffff89abcde))
595         OPTIONAL(QLSHU(28, 0x89abcdef01234567, 28, 0xf012345670000000, 0x00000000089abcde))
596         OPTIONAL( QRSH(28, 0x89abcdef01234567, 28, 0xfffffff89abcdef0, 0x1234567000000000))
597         OPTIONAL(QRSHU(28, 0x89abcdef01234567, 28, 0x000000089abcdef0, 0x1234567000000000))
598         OPTIONAL( QLSH(29, 0x89abcdef01234567, 29, 0xe02468ace0000000, 0xfffffffff13579bd))
599         OPTIONAL(QLSHU(29, 0x89abcdef01234567, 29, 0xe02468ace0000000, 0x00000000113579bd))
600         OPTIONAL( QRSH(29, 0x89abcdef01234567, 29, 0xfffffffc4d5e6f78, 0x091a2b3800000000))
601         OPTIONAL(QRSHU(29, 0x89abcdef01234567, 29, 0x000000044d5e6f78, 0x091a2b3800000000))
602         OPTIONAL( QLSH(30, 0x89abcdef01234567, 30, 0xc048d159c0000000, 0xffffffffe26af37b))
603         OPTIONAL(QLSHU(30, 0x89abcdef01234567, 30, 0xc048d159c0000000, 0x00000000226af37b))
604         OPTIONAL( QRSH(30, 0x89abcdef01234567, 30, 0xfffffffe26af37bc, 0x048d159c00000000))
605         OPTIONAL(QRSHU(30, 0x89abcdef01234567, 30, 0x0000000226af37bc, 0x048d159c00000000))
606          QLSH(31, 0x89abcdef01234567, 31, 0x8091a2b380000000, 0xffffffffc4d5e6f7)
607         QLSHU(31, 0x89abcdef01234567, 31, 0x8091a2b380000000, 0x0000000044d5e6f7)
608          QRSH(31, 0x89abcdef01234567, 31, 0xffffffff13579bde, 0x02468ace00000000)
609         QRSHU(31, 0x89abcdef01234567, 31, 0x0000000113579bde, 0x02468ace00000000)
610          QLSH(32, 0x89abcdef01234567, 32, 0x0123456700000000, 0xffffffff89abcdef)
611         QLSHU(32, 0x89abcdef01234567, 32, 0x0123456700000000, 0x0000000089abcdef)
612          QRSH(32, 0x89abcdef01234567, 32, 0xffffffff89abcdef, 0x0123456700000000)
613         QRSHU(32, 0x89abcdef01234567, 32, 0x0000000089abcdef, 0x0123456700000000)
614          QLSH(33, 0x89abcdef01234567, 33, 0x02468ace00000000, 0xffffffff13579bde)
615         QLSHU(33, 0x89abcdef01234567, 33, 0x02468ace00000000, 0x0000000113579bde)
616          QRSH(33, 0x89abcdef01234567, 33, 0xffffffffc4d5e6f7, 0x8091a2b380000000)
617         QRSHU(33, 0x89abcdef01234567, 33, 0x0000000044d5e6f7, 0x8091a2b380000000)
618         OPTIONAL( QLSH(34, 0x89abcdef01234567, 34, 0x048d159c00000000, 0xfffffffe26af37bc))
619         OPTIONAL(QLSHU(34, 0x89abcdef01234567, 34, 0x048d159c00000000, 0x0000000226af37bc))
620         OPTIONAL( QRSH(34, 0x89abcdef01234567, 34, 0xffffffffe26af37b, 0xc048d159c0000000))
621         OPTIONAL(QRSHU(34, 0x89abcdef01234567, 34, 0x00000000226af37b, 0xc048d159c0000000))
622         OPTIONAL( QLSH(35, 0x89abcdef01234567, 35, 0x091a2b3800000000, 0xfffffffc4d5e6f78))
623         OPTIONAL(QLSHU(35, 0x89abcdef01234567, 35, 0x091a2b3800000000, 0x000000044d5e6f78))
624         OPTIONAL( QRSH(35, 0x89abcdef01234567, 35, 0xfffffffff13579bd, 0xe02468ace0000000))
625         OPTIONAL(QRSHU(35, 0x89abcdef01234567, 35, 0x00000000113579bd, 0xe02468ace0000000))
626         OPTIONAL( QLSH(36, 0x89abcdef01234567, 36, 0x1234567000000000, 0xfffffff89abcdef0))
627         OPTIONAL(QLSHU(36, 0x89abcdef01234567, 36, 0x1234567000000000, 0x000000089abcdef0))
628         OPTIONAL( QRSH(36, 0x89abcdef01234567, 36, 0xfffffffff89abcde, 0xf012345670000000))
629         OPTIONAL(QRSHU(36, 0x89abcdef01234567, 36, 0x00000000089abcde, 0xf012345670000000))
630         OPTIONAL( QLSH(37, 0x89abcdef01234567, 37, 0x2468ace000000000, 0xfffffff13579bde0))
631         OPTIONAL(QLSHU(37, 0x89abcdef01234567, 37, 0x2468ace000000000, 0x000000113579bde0))
632         OPTIONAL( QRSH(37, 0x89abcdef01234567, 37, 0xfffffffffc4d5e6f, 0x78091a2b38000000))
633         OPTIONAL(QRSHU(37, 0x89abcdef01234567, 37, 0x00000000044d5e6f, 0x78091a2b38000000))
634         OPTIONAL( QLSH(38, 0x89abcdef01234567, 38, 0x48d159c000000000, 0xffffffe26af37bc0))
635         OPTIONAL(QLSHU(38, 0x89abcdef01234567, 38, 0x48d159c000000000, 0x000000226af37bc0))
636         OPTIONAL( QRSH(38, 0x89abcdef01234567, 38, 0xfffffffffe26af37, 0xbc048d159c000000))
637         OPTIONAL(QRSHU(38, 0x89abcdef01234567, 38, 0x000000000226af37, 0xbc048d159c000000))
638         OPTIONAL( QLSH(39, 0x89abcdef01234567, 39, 0x91a2b38000000000, 0xffffffc4d5e6f780))
639         OPTIONAL(QLSHU(39, 0x89abcdef01234567, 39, 0x91a2b38000000000, 0x00000044d5e6f780))
640         OPTIONAL( QRSH(39, 0x89abcdef01234567, 39, 0xffffffffff13579b, 0xde02468ace000000))
641         OPTIONAL(QRSHU(39, 0x89abcdef01234567, 39, 0x000000000113579b, 0xde02468ace000000))
642         OPTIONAL( QLSH(40, 0x89abcdef01234567, 40, 0x2345670000000000, 0xffffff89abcdef01))
643         OPTIONAL(QLSHU(40, 0x89abcdef01234567, 40, 0x2345670000000000, 0x00000089abcdef01))
644         OPTIONAL( QRSH(40, 0x89abcdef01234567, 40, 0xffffffffff89abcd, 0xef01234567000000))
645         OPTIONAL(QRSHU(40, 0x89abcdef01234567, 40, 0x000000000089abcd, 0xef01234567000000))
646         OPTIONAL( QLSH(41, 0x89abcdef01234567, 41, 0x468ace0000000000, 0xffffff13579bde02))
647         OPTIONAL(QLSHU(41, 0x89abcdef01234567, 41, 0x468ace0000000000, 0x00000113579bde02))
648         OPTIONAL( QRSH(41, 0x89abcdef01234567, 41, 0xffffffffffc4d5e6, 0xf78091a2b3800000))
649         OPTIONAL(QRSHU(41, 0x89abcdef01234567, 41, 0x000000000044d5e6, 0xf78091a2b3800000))
650         OPTIONAL( QLSH(42, 0x89abcdef01234567, 42, 0x8d159c0000000000, 0xfffffe26af37bc04))
651         OPTIONAL(QLSHU(42, 0x89abcdef01234567, 42, 0x8d159c0000000000, 0x00000226af37bc04))
652         OPTIONAL( QRSH(42, 0x89abcdef01234567, 42, 0xffffffffffe26af3, 0x7bc048d159c00000))
653         OPTIONAL(QRSHU(42, 0x89abcdef01234567, 42, 0x0000000000226af3, 0x7bc048d159c00000))
654         OPTIONAL( QLSH(43, 0x89abcdef01234567, 43, 0x1a2b380000000000, 0xfffffc4d5e6f7809))
655         OPTIONAL(QLSHU(43, 0x89abcdef01234567, 43, 0x1a2b380000000000, 0x0000044d5e6f7809))
656         OPTIONAL( QRSH(43, 0x89abcdef01234567, 43, 0xfffffffffff13579, 0xbde02468ace00000))
657         OPTIONAL(QRSHU(43, 0x89abcdef01234567, 43, 0x0000000000113579, 0xbde02468ace00000))
658         OPTIONAL( QLSH(44, 0x89abcdef01234567, 44, 0x3456700000000000, 0xfffff89abcdef012))
659         OPTIONAL(QLSHU(44, 0x89abcdef01234567, 44, 0x3456700000000000, 0x0000089abcdef012))
660         OPTIONAL( QRSH(44, 0x89abcdef01234567, 44, 0xfffffffffff89abc, 0xdef0123456700000))
661         OPTIONAL(QRSHU(44, 0x89abcdef01234567, 44, 0x0000000000089abc, 0xdef0123456700000))
662         OPTIONAL( QLSH(45, 0x89abcdef01234567, 45, 0x68ace00000000000, 0xfffff13579bde024))
663         OPTIONAL(QLSHU(45, 0x89abcdef01234567, 45, 0x68ace00000000000, 0x0000113579bde024))
664         OPTIONAL( QRSH(45, 0x89abcdef01234567, 45, 0xfffffffffffc4d5e, 0x6f78091a2b380000))
665         OPTIONAL(QRSHU(45, 0x89abcdef01234567, 45, 0x0000000000044d5e, 0x6f78091a2b380000))
666         OPTIONAL( QLSH(46, 0x89abcdef01234567, 46, 0xd159c00000000000, 0xffffe26af37bc048))
667         OPTIONAL(QLSHU(46, 0x89abcdef01234567, 46, 0xd159c00000000000, 0x0000226af37bc048))
668         OPTIONAL( QRSH(46, 0x89abcdef01234567, 46, 0xfffffffffffe26af, 0x37bc048d159c0000))
669         OPTIONAL(QRSHU(46, 0x89abcdef01234567, 46, 0x00000000000226af, 0x37bc048d159c0000))
670         OPTIONAL( QLSH(47, 0x89abcdef01234567, 47, 0xa2b3800000000000, 0xffffc4d5e6f78091))
671         OPTIONAL(QLSHU(47, 0x89abcdef01234567, 47, 0xa2b3800000000000, 0x000044d5e6f78091))
672         OPTIONAL( QRSH(47, 0x89abcdef01234567, 47, 0xffffffffffff1357, 0x9bde02468ace0000))
673         OPTIONAL(QRSHU(47, 0x89abcdef01234567, 47, 0x0000000000011357, 0x9bde02468ace0000))
674         OPTIONAL( QLSH(48, 0x89abcdef01234567, 48, 0x4567000000000000, 0xffff89abcdef0123))
675         OPTIONAL(QLSHU(48, 0x89abcdef01234567, 48, 0x4567000000000000, 0x000089abcdef0123))
676         OPTIONAL( QRSH(48, 0x89abcdef01234567, 48, 0xffffffffffff89ab, 0xcdef012345670000))
677         OPTIONAL(QRSHU(48, 0x89abcdef01234567, 48, 0x00000000000089ab, 0xcdef012345670000))
678         OPTIONAL( QLSH(49, 0x89abcdef01234567, 49, 0x8ace000000000000, 0xffff13579bde0246))
679         OPTIONAL(QLSHU(49, 0x89abcdef01234567, 49, 0x8ace000000000000, 0x000113579bde0246))
680         OPTIONAL( QRSH(49, 0x89abcdef01234567, 49, 0xffffffffffffc4d5, 0xe6f78091a2b38000))
681         OPTIONAL(QRSHU(49, 0x89abcdef01234567, 49, 0x00000000000044d5, 0xe6f78091a2b38000))
682         OPTIONAL( QLSH(50, 0x89abcdef01234567, 50, 0x159c000000000000, 0xfffe26af37bc048d))
683         OPTIONAL(QLSHU(50, 0x89abcdef01234567, 50, 0x159c000000000000, 0x000226af37bc048d))
684         OPTIONAL( QRSH(50, 0x89abcdef01234567, 50, 0xffffffffffffe26a, 0xf37bc048d159c000))
685         OPTIONAL(QRSHU(50, 0x89abcdef01234567, 50, 0x000000000000226a, 0xf37bc048d159c000))
686         OPTIONAL( QLSH(51, 0x89abcdef01234567, 51, 0x2b38000000000000, 0xfffc4d5e6f78091a))
687         OPTIONAL(QLSHU(51, 0x89abcdef01234567, 51, 0x2b38000000000000, 0x00044d5e6f78091a))
688         OPTIONAL( QRSH(51, 0x89abcdef01234567, 51, 0xfffffffffffff135, 0x79bde02468ace000))
689         OPTIONAL(QRSHU(51, 0x89abcdef01234567, 51, 0x0000000000001135, 0x79bde02468ace000))
690         OPTIONAL( QLSH(52, 0x89abcdef01234567, 52, 0x5670000000000000, 0xfff89abcdef01234))
691         OPTIONAL(QLSHU(52, 0x89abcdef01234567, 52, 0x5670000000000000, 0x00089abcdef01234))
692         OPTIONAL( QRSH(52, 0x89abcdef01234567, 52, 0xfffffffffffff89a, 0xbcdef01234567000))
693         OPTIONAL(QRSHU(52, 0x89abcdef01234567, 52, 0x000000000000089a, 0xbcdef01234567000))
694         OPTIONAL( QLSH(53, 0x89abcdef01234567, 53, 0xace0000000000000, 0xfff13579bde02468))
695         OPTIONAL(QLSHU(53, 0x89abcdef01234567, 53, 0xace0000000000000, 0x00113579bde02468))
696         OPTIONAL( QRSH(53, 0x89abcdef01234567, 53, 0xfffffffffffffc4d, 0x5e6f78091a2b3800))
697         OPTIONAL(QRSHU(53, 0x89abcdef01234567, 53, 0x000000000000044d, 0x5e6f78091a2b3800))
698         OPTIONAL( QLSH(54, 0x89abcdef01234567, 54, 0x59c0000000000000, 0xffe26af37bc048d1))
699         OPTIONAL(QLSHU(54, 0x89abcdef01234567, 54, 0x59c0000000000000, 0x00226af37bc048d1))
700         OPTIONAL( QRSH(54, 0x89abcdef01234567, 54, 0xfffffffffffffe26, 0xaf37bc048d159c00))
701         OPTIONAL(QRSHU(54, 0x89abcdef01234567, 54, 0x0000000000000226, 0xaf37bc048d159c00))
702         OPTIONAL( QLSH(55, 0x89abcdef01234567, 55, 0xb380000000000000, 0xffc4d5e6f78091a2))
703         OPTIONAL(QLSHU(55, 0x89abcdef01234567, 55, 0xb380000000000000, 0x0044d5e6f78091a2))
704         OPTIONAL( QRSH(55, 0x89abcdef01234567, 55, 0xffffffffffffff13, 0x579bde02468ace00))
705         OPTIONAL(QRSHU(55, 0x89abcdef01234567, 55, 0x0000000000000113, 0x579bde02468ace00))
706         OPTIONAL( QLSH(56, 0x89abcdef01234567, 56, 0x6700000000000000, 0xff89abcdef012345))
707         OPTIONAL(QLSHU(56, 0x89abcdef01234567, 56, 0x6700000000000000, 0x0089abcdef012345))
708         OPTIONAL( QRSH(56, 0x89abcdef01234567, 56, 0xffffffffffffff89, 0xabcdef0123456700))
709         OPTIONAL(QRSHU(56, 0x89abcdef01234567, 56, 0x0000000000000089, 0xabcdef0123456700))
710         OPTIONAL( QLSH(57, 0x89abcdef01234567, 57, 0xce00000000000000, 0xff13579bde02468a))
711         OPTIONAL(QLSHU(57, 0x89abcdef01234567, 57, 0xce00000000000000, 0x0113579bde02468a))
712         OPTIONAL( QRSH(57, 0x89abcdef01234567, 57, 0xffffffffffffffc4, 0xd5e6f78091a2b380))
713         OPTIONAL(QRSHU(57, 0x89abcdef01234567, 57, 0x0000000000000044, 0xd5e6f78091a2b380))
714         OPTIONAL( QLSH(58, 0x89abcdef01234567, 58, 0x9c00000000000000, 0xfe26af37bc048d15))
715         OPTIONAL(QLSHU(58, 0x89abcdef01234567, 58, 0x9c00000000000000, 0x0226af37bc048d15))
716         OPTIONAL( QRSH(58, 0x89abcdef01234567, 58, 0xffffffffffffffe2, 0x6af37bc048d159c0))
717         OPTIONAL(QRSHU(58, 0x89abcdef01234567, 58, 0x0000000000000022, 0x6af37bc048d159c0))
718         OPTIONAL( QLSH(59, 0x89abcdef01234567, 59, 0x3800000000000000, 0xfc4d5e6f78091a2b))
719         OPTIONAL(QLSHU(59, 0x89abcdef01234567, 59, 0x3800000000000000, 0x044d5e6f78091a2b))
720         OPTIONAL( QRSH(59, 0x89abcdef01234567, 59, 0xfffffffffffffff1, 0x3579bde02468ace0))
721         OPTIONAL(QRSHU(59, 0x89abcdef01234567, 59, 0x0000000000000011, 0x3579bde02468ace0))
722         OPTIONAL( QLSH(60, 0x89abcdef01234567, 60, 0x7000000000000000, 0xf89abcdef0123456))
723         OPTIONAL(QLSHU(60, 0x89abcdef01234567, 60, 0x7000000000000000, 0x089abcdef0123456))
724         OPTIONAL( QRSH(60, 0x89abcdef01234567, 60, 0xfffffffffffffff8, 0x9abcdef012345670))
725         OPTIONAL(QRSHU(60, 0x89abcdef01234567, 60, 0x0000000000000008, 0x9abcdef012345670))
726         OPTIONAL( QLSH(61, 0x89abcdef01234567, 61, 0xe000000000000000, 0xf13579bde02468ac))
727         OPTIONAL(QLSHU(61, 0x89abcdef01234567, 61, 0xe000000000000000, 0x113579bde02468ac))
728         OPTIONAL( QRSH(61, 0x89abcdef01234567, 61, 0xfffffffffffffffc, 0x4d5e6f78091a2b38))
729         OPTIONAL(QRSHU(61, 0x89abcdef01234567, 61, 0x0000000000000004, 0x4d5e6f78091a2b38))
730         OPTIONAL( QLSH(62, 0x89abcdef01234567, 62, 0xc000000000000000, 0xe26af37bc048d159))
731         OPTIONAL(QLSHU(62, 0x89abcdef01234567, 62, 0xc000000000000000, 0x226af37bc048d159))
732         OPTIONAL( QRSH(62, 0x89abcdef01234567, 62, 0xfffffffffffffffe, 0x26af37bc048d159c))
733         OPTIONAL(QRSHU(62, 0x89abcdef01234567, 62, 0x0000000000000002, 0x26af37bc048d159c))
734          QLSH(63, 0x89abcdef01234567, 63, 0x8000000000000000, 0xc4d5e6f78091a2b3)
735         QLSHU(63, 0x89abcdef01234567, 63, 0x8000000000000000, 0x44d5e6f78091a2b3)
736          QRSH(63, 0x89abcdef01234567, 63, 0xffffffffffffffff, 0x13579bde02468ace)
737         QRSHU(63, 0x89abcdef01234567, 63, 0x0000000000000001, 0x13579bde02468ace)
738          QLSH(64, 0x89abcdef01234567, 64, 0x0000000000000000, 0x89abcdef01234567)
739         QLSHU(64, 0x89abcdef01234567, 64, 0x0000000000000000, 0x89abcdef01234567)
740          QRSH(64, 0x89abcdef01234567, 64, 0xffffffffffffffff, 0x89abcdef01234567)
741         QRSHU(64, 0x89abcdef01234567, 64, 0x0000000000000000, 0x89abcdef01234567)
742   #endif
743 #endif
744         prepare
745                 pushargi ok
746         finishi @printf
747         ret
748         epilog