53 { 0x7fff, 16,
false },
54 { 0xffff, 16,
false },
55 { 0x10000, 16,
true },
58 { 0x7fffffff, 32,
false },
59 {
uint64_t(-0x7fffffff), 32,
false },
60 { 0xffffffff, 32,
false },
61 { 0x100000000ull, 32,
true },
65 { 0x7fffffff, 64,
false },
66 { 0xffffffffffffffffull, 64,
false },
67 { 0x80000000, 64,
true },
68 { 0xffffffff, 64,
true },
72 const int bit =
tbl[i].bit;
90 const size_t alignSize = 16;
91 for (
int padding = 0; padding < 20; padding++) {
92 for (
int i = 0; i < padding; i++) {
122 0x62, 0xf2, 0x3f, 0x48, 0x9a, 0x4a, 0x04,
123 0x62, 0x72, 0x3f, 0x08, 0x9b, 0x78, 0x04,
124 0x62, 0xf2, 0x6f, 0x4d, 0xaa, 0x69, 0x08,
125 0x62, 0x62, 0x6f, 0x08, 0xab, 0x7c, 0x24, 0x08,
126 0x62, 0xe2, 0x77, 0xcf, 0x52, 0x78, 0x04,
127 0x62, 0x72, 0x67, 0x4c, 0x53, 0x54, 0x84, 0x04,
129 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
156 0x62, 0xE2, 0x0D, 0x00, 0xDE, 0x61, 0x04,
157 0xC4, 0xE2, 0x6D, 0xDE, 0x49, 0x40,
158 0x62, 0xF2, 0x6D, 0x48, 0xDE, 0x49, 0x01,
160 0x62, 0xE2, 0x0D, 0x00, 0xDF, 0x60, 0x04,
161 0x62, 0xE2, 0x0D, 0x20, 0xDF, 0x60, 0x02,
162 0x62, 0xE2, 0x0D, 0x40, 0xDF, 0x60, 0x01,
164 0x62, 0xE2, 0x0D, 0x00, 0xDC, 0x61, 0x04,
165 0xC4, 0xE2, 0x6D, 0xDC, 0x49, 0x40,
166 0x62, 0xF2, 0x6D, 0x48, 0xDC, 0x49, 0x01,
168 0x62, 0xE2, 0x0D, 0x00, 0xDD, 0x60, 0x04,
169 0x62, 0xE2, 0x0D, 0x20, 0xDD, 0x60, 0x02,
170 0x62, 0xE2, 0x0D, 0x40, 0xDD, 0x60, 0x01,
172 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
191 0xc4, 0xe3, 0x61, 0x44, 0x50, 0x40, 0x03,
192 0xc4, 0xe3, 0x65, 0x44, 0x50, 0x40, 0x03,
193 0x62, 0xf3, 0x65, 0x48, 0x44, 0x50, 0x01, 0x03,
194 0x62, 0xe3, 0x65, 0x08, 0x44, 0x60, 0x04, 0x03,
195 0x62, 0xe3, 0x65, 0x28, 0x44, 0x60, 0x02, 0x03,
196 0x62, 0xe3, 0x65, 0x48, 0x44, 0x60, 0x01, 0x03,
198 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
223 0x62, 0xf2, 0x7d, 0x08, 0x63, 0x48, 0x40,
224 0x62, 0x92, 0x7d, 0x0d, 0x63, 0xce,
225 0x62, 0xf2, 0x7d, 0x28, 0x63, 0x48, 0x40,
226 0x62, 0x92, 0x7d, 0xab, 0x63, 0xce,
227 0x62, 0xf2, 0x7d, 0x48, 0x63, 0x48, 0x40,
228 0x62, 0x92, 0x7d, 0xca, 0x63, 0xce,
230 0x62, 0xf2, 0xfd, 0x08, 0x63, 0x48, 0x20,
231 0x62, 0x92, 0xfd, 0x0d, 0x63, 0xce,
232 0x62, 0xf2, 0xfd, 0x28, 0x63, 0x48, 0x20,
233 0x62, 0x92, 0xfd, 0xab, 0x63, 0xce,
234 0x62, 0xf2, 0xfd, 0x48, 0x63, 0x48, 0x20,
235 0x62, 0x92, 0xfd, 0xca, 0x63, 0xce,
237 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
272 0x62, 0xf3, 0xed, 0x8b, 0x70, 0x68, 0x04, 0x05,
273 0x62, 0xf3, 0xed, 0xab, 0x70, 0x68, 0x02, 0x05,
274 0x62, 0xf3, 0xed, 0xcb, 0x70, 0x68, 0x01, 0x05,
276 0x62, 0xf3, 0x6d, 0x8b, 0x71, 0x68, 0x04, 0x05,
277 0x62, 0xf3, 0x6d, 0xab, 0x71, 0x68, 0x02, 0x05,
278 0x62, 0xf3, 0x6d, 0xcb, 0x71, 0x68, 0x01, 0x05,
280 0x62, 0xf3, 0xed, 0x8b, 0x71, 0x68, 0x04, 0x05,
281 0x62, 0xf3, 0xed, 0xab, 0x71, 0x68, 0x02, 0x05,
282 0x62, 0xf3, 0xed, 0xcb, 0x71, 0x68, 0x01, 0x05,
284 0x62, 0xf2, 0xed, 0x8b, 0x70, 0x68, 0x04,
285 0x62, 0xf2, 0xed, 0xab, 0x70, 0x68, 0x02,
286 0x62, 0xf2, 0xed, 0xcb, 0x70, 0x68, 0x01,
288 0x62, 0xf2, 0x6d, 0x8b, 0x71, 0x68, 0x04,
289 0x62, 0xf2, 0x6d, 0xab, 0x71, 0x68, 0x02,
290 0x62, 0xf2, 0x6d, 0xcb, 0x71, 0x68, 0x01,
292 0x62, 0xf2, 0xed, 0x8b, 0x71, 0x68, 0x04,
293 0x62, 0xf2, 0xed, 0xab, 0x71, 0x68, 0x02,
294 0x62, 0xf2, 0xed, 0xcb, 0x71, 0x68, 0x01,
296 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
347 0x62, 0xf3, 0xed, 0x8b, 0x72, 0x68, 0x04, 0x05,
348 0x62, 0xf3, 0xed, 0xab, 0x72, 0x68, 0x02, 0x05,
349 0x62, 0xf3, 0xed, 0xcb, 0x72, 0x68, 0x01, 0x05,
351 0x62, 0xf3, 0x6d, 0x8b, 0x73, 0x68, 0x04, 0x05,
352 0x62, 0xf3, 0x6d, 0xab, 0x73, 0x68, 0x02, 0x05,
353 0x62, 0xf3, 0x6d, 0xcb, 0x73, 0x68, 0x01, 0x05,
355 0x62, 0xf3, 0xed, 0x8b, 0x73, 0x68, 0x04, 0x05,
356 0x62, 0xf3, 0xed, 0xab, 0x73, 0x68, 0x02, 0x05,
357 0x62, 0xf3, 0xed, 0xcb, 0x73, 0x68, 0x01, 0x05,
359 0x62, 0xf2, 0xed, 0x8b, 0x72, 0x68, 0x04,
360 0x62, 0xf2, 0xed, 0xab, 0x72, 0x68, 0x02,
361 0x62, 0xf2, 0xed, 0xcb, 0x72, 0x68, 0x01,
363 0x62, 0xf2, 0x6d, 0x8b, 0x73, 0x68, 0x04,
364 0x62, 0xf2, 0x6d, 0xab, 0x73, 0x68, 0x02,
365 0x62, 0xf2, 0x6d, 0xcb, 0x73, 0x68, 0x01,
367 0x62, 0xf2, 0xed, 0x8b, 0x73, 0x68, 0x04,
368 0x62, 0xf2, 0xed, 0xab, 0x73, 0x68, 0x02,
369 0x62, 0xf2, 0xed, 0xcb, 0x73, 0x68, 0x01,
371 0x62, 0xf3, 0x6d, 0x9b, 0x73, 0x68, 0x10, 0x05,
372 0x62, 0xf3, 0x6d, 0xbb, 0x73, 0x68, 0x10, 0x05,
373 0x62, 0xf3, 0x6d, 0xdb, 0x73, 0x68, 0x10, 0x05,
375 0x62, 0xf3, 0xed, 0x9b, 0x73, 0x68, 0x08, 0x05,
376 0x62, 0xf3, 0xed, 0xbb, 0x73, 0x68, 0x08, 0x05,
377 0x62, 0xf3, 0xed, 0xdb, 0x73, 0x68, 0x08, 0x05,
379 0x62, 0xf2, 0x6d, 0x9b, 0x73, 0x68, 0x10,
380 0x62, 0xf2, 0x6d, 0xbb, 0x73, 0x68, 0x10,
381 0x62, 0xf2, 0x6d, 0xdb, 0x73, 0x68, 0x10,
383 0x62, 0xf2, 0xed, 0x9b, 0x73, 0x68, 0x08,
384 0x62, 0xf2, 0xed, 0xbb, 0x73, 0x68, 0x08,
385 0x62, 0xf2, 0xed, 0xdb, 0x73, 0x68, 0x08,
387 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
422 0x62, 0xf2, 0x7d, 0x8b, 0x54, 0x68, 0x04,
423 0x62, 0xf2, 0x7d, 0xab, 0x54, 0x68, 0x02,
424 0x62, 0xf2, 0x7d, 0xcb, 0x54, 0x68, 0x01,
426 0x62, 0xf2, 0xfd, 0x8b, 0x54, 0x68, 0x04,
427 0x62, 0xf2, 0xfd, 0xab, 0x54, 0x68, 0x02,
428 0x62, 0xf2, 0xfd, 0xcb, 0x54, 0x68, 0x01,
430 0x62, 0xf2, 0x7d, 0x8b, 0x55, 0x68, 0x04,
431 0x62, 0xf2, 0x7d, 0xab, 0x55, 0x68, 0x02,
432 0x62, 0xf2, 0x7d, 0xcb, 0x55, 0x68, 0x01,
434 0x62, 0xf2, 0x7d, 0x9b, 0x55, 0x68, 0x10,
435 0x62, 0xf2, 0x7d, 0xbb, 0x55, 0x68, 0x10,
436 0x62, 0xf2, 0x7d, 0xdb, 0x55, 0x68, 0x10,
438 0x62, 0xf2, 0xfd, 0x8b, 0x55, 0x68, 0x04,
439 0x62, 0xf2, 0xfd, 0xab, 0x55, 0x68, 0x02,
440 0x62, 0xf2, 0xfd, 0xcb, 0x55, 0x68, 0x01,
442 0x62, 0xf2, 0xfd, 0x9b, 0x55, 0x68, 0x08,
443 0x62, 0xf2, 0xfd, 0xbb, 0x55, 0x68, 0x08,
444 0x62, 0xf2, 0xfd, 0xdb, 0x55, 0x68, 0x08,
446 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
489 0x62, 0xf2, 0x5d, 0x83, 0x50, 0x68, 0x04,
490 0x62, 0xf2, 0x5d, 0xa3, 0x50, 0x68, 0x02,
491 0x62, 0xf2, 0x5d, 0xc3, 0x50, 0x68, 0x01,
493 0x62, 0xf2, 0x5d, 0x93, 0x50, 0x68, 0x10,
494 0x62, 0xf2, 0x5d, 0xb3, 0x50, 0x68, 0x10,
495 0x62, 0xf2, 0x5d, 0xd3, 0x50, 0x68, 0x10,
497 0x62, 0xf2, 0x5d, 0x83, 0x51, 0x68, 0x04,
498 0x62, 0xf2, 0x5d, 0xa3, 0x51, 0x68, 0x02,
499 0x62, 0xf2, 0x5d, 0xc3, 0x51, 0x68, 0x01,
501 0x62, 0xf2, 0x5d, 0x93, 0x51, 0x68, 0x10,
502 0x62, 0xf2, 0x5d, 0xb3, 0x51, 0x68, 0x10,
503 0x62, 0xf2, 0x5d, 0xd3, 0x51, 0x68, 0x10,
505 0x62, 0xf2, 0x5d, 0x83, 0x52, 0x68, 0x04,
506 0x62, 0xf2, 0x5d, 0xa3, 0x52, 0x68, 0x02,
507 0x62, 0xf2, 0x5d, 0xc3, 0x52, 0x68, 0x01,
509 0x62, 0xf2, 0x5d, 0x93, 0x52, 0x68, 0x10,
510 0x62, 0xf2, 0x5d, 0xb3, 0x52, 0x68, 0x10,
511 0x62, 0xf2, 0x5d, 0xd3, 0x52, 0x68, 0x10,
513 0x62, 0xf2, 0x5d, 0x83, 0x53, 0x68, 0x04,
514 0x62, 0xf2, 0x5d, 0xa3, 0x53, 0x68, 0x02,
515 0x62, 0xf2, 0x5d, 0xc3, 0x53, 0x68, 0x01,
517 0x62, 0xf2, 0x5d, 0x93, 0x53, 0x68, 0x10,
518 0x62, 0xf2, 0x5d, 0xb3, 0x53, 0x68, 0x10,
519 0x62, 0xf2, 0x5d, 0xd3, 0x53, 0x68, 0x10,
521 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
550 0x62, 0x92, 0x7d, 0x8b, 0x62, 0xee,
551 0x62, 0x92, 0x7d, 0xab, 0x62, 0xee,
552 0x62, 0x92, 0x7d, 0xcb, 0x62, 0xee,
553 0x62, 0xf2, 0x7d, 0x8b, 0x62, 0x68, 0x40,
554 0x62, 0xf2, 0x7d, 0xab, 0x62, 0x68, 0x40,
555 0x62, 0xf2, 0x7d, 0xcb, 0x62, 0x68, 0x40,
557 0x62, 0x92, 0xfd, 0x8b, 0x62, 0xee,
558 0x62, 0x92, 0xfd, 0xab, 0x62, 0xee,
559 0x62, 0x92, 0xfd, 0xcb, 0x62, 0xee,
560 0x62, 0xf2, 0xfd, 0x8b, 0x62, 0x68, 0x20,
561 0x62, 0xf2, 0xfd, 0xab, 0x62, 0x68, 0x20,
562 0x62, 0xf2, 0xfd, 0xcb, 0x62, 0x68, 0x20,
564 0x62, 0xf2, 0x6d, 0x0a, 0x8f, 0x48, 0x04,
565 0x62, 0xf2, 0x6d, 0x2a, 0x8f, 0x48, 0x02,
566 0x62, 0xf2, 0x6d, 0x4a, 0x8f, 0x48, 0x01,
568 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
636 0x66, 0x0f, 0x3a, 0xcf, 0xca, 0x03,
637 0x66, 0x0f, 0x3a, 0xcf, 0x48, 0x40, 0x03,
638 0xc4, 0xe3, 0xd1, 0xcf, 0xca, 0x03,
639 0xc4, 0xe3, 0xd5, 0xcf, 0xca, 0x03,
640 0xc4, 0xe3, 0xd1, 0xcf, 0x48, 0x40, 0x03,
641 0xc4, 0xe3, 0xd5, 0xcf, 0x48, 0x40, 0x03,
642 0x62, 0x63, 0x85, 0x00, 0xcf, 0xf4, 0x05,
643 0x62, 0x63, 0x85, 0x20, 0xcf, 0xf4, 0x05,
644 0x62, 0x63, 0x85, 0x40, 0xcf, 0xf4, 0x05,
645 0x62, 0x63, 0xd5, 0x89, 0xcf, 0x70, 0x04, 0x05,
646 0x62, 0x63, 0xd5, 0xa9, 0xcf, 0x70, 0x02, 0x05,
647 0x62, 0x63, 0xd5, 0xc9, 0xcf, 0x70, 0x01, 0x05,
648 0x62, 0x63, 0xd5, 0x99, 0xcf, 0x70, 0x08, 0x05,
649 0x62, 0x63, 0xd5, 0xb9, 0xcf, 0x70, 0x08, 0x05,
650 0x62, 0x63, 0xd5, 0xd9, 0xcf, 0x70, 0x08, 0x05,
652 0x66, 0x0f, 0x3a, 0xce, 0xca, 0x03,
653 0x66, 0x0f, 0x3a, 0xce, 0x48, 0x40, 0x03,
654 0xc4, 0xe3, 0xd1, 0xce, 0xca, 0x03,
655 0xc4, 0xe3, 0xd5, 0xce, 0xca, 0x03,
656 0xc4, 0xe3, 0xd1, 0xce, 0x48, 0x40, 0x03,
657 0xc4, 0xe3, 0xd5, 0xce, 0x48, 0x40, 0x03,
658 0x62, 0x63, 0x85, 0x00, 0xce, 0xf4, 0x05,
659 0x62, 0x63, 0x85, 0x20, 0xce, 0xf4, 0x05,
660 0x62, 0x63, 0x85, 0x40, 0xce, 0xf4, 0x05,
661 0x62, 0x63, 0xd5, 0x89, 0xce, 0x70, 0x04, 0x05,
662 0x62, 0x63, 0xd5, 0xa9, 0xce, 0x70, 0x02, 0x05,
663 0x62, 0x63, 0xd5, 0xc9, 0xce, 0x70, 0x01, 0x05,
664 0x62, 0x63, 0xd5, 0x99, 0xce, 0x70, 0x08, 0x05,
665 0x62, 0x63, 0xd5, 0xb9, 0xce, 0x70, 0x08, 0x05,
666 0x62, 0x63, 0xd5, 0xd9, 0xce, 0x70, 0x08, 0x05,
668 0x66, 0x0f, 0x38, 0xcf, 0xca,
669 0x66, 0x0f, 0x38, 0xcf, 0x48, 0x40,
670 0xc4, 0xe2, 0x51, 0xcf, 0xca,
671 0xc4, 0xe2, 0x55, 0xcf, 0xca,
672 0xc4, 0xe2, 0x51, 0xcf, 0x48, 0x40,
673 0xc4, 0xe2, 0x55, 0xcf, 0x48, 0x40,
674 0x62, 0x62, 0x05, 0x00, 0xcf, 0xf4,
675 0x62, 0x62, 0x05, 0x20, 0xcf, 0xf4,
676 0x62, 0x62, 0x05, 0x40, 0xcf, 0xf4,
677 0x62, 0x62, 0x55, 0x89, 0xcf, 0x70, 0x04,
678 0x62, 0x62, 0x55, 0xa9, 0xcf, 0x70, 0x02,
679 0x62, 0x62, 0x55, 0xc9, 0xcf, 0x70, 0x01,
681 const size_t n =
sizeof(
tbl) /
sizeof(
tbl[0]);
#define CYBOZU_NUM_OF_ARRAY(x)
#define CYBOZU_TEST_ASSERT(x)
#define CYBOZU_TEST_EXCEPTION(statement, Exception)
#define CYBOZU_TEST_EQUAL_ARRAY(x, y, n)
#define CYBOZU_TEST_NO_EXCEPTION(statement)
#define CYBOZU_TEST_EQUAL(x, y)
#define CYBOZU_TEST_AUTO(name)
void setSize(size_t size)
const uint8 * getCurr() const
void v4fnmaddss(const Xmm &x1, const Xmm &x2, const Address &addr)
void vaesenclast(const Xmm &xmm, const Operand &op1, const Operand &op2=Operand())
void vpshldq(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vpopcntb(const Xmm &x, const Operand &op)
void vaesdec(const Xmm &xmm, const Operand &op1, const Operand &op2=Operand())
void vpshrdvq(const Xmm &x1, const Xmm &x2, const Operand &op)
void vpshldvd(const Xmm &x1, const Xmm &x2, const Operand &op)
void vgf2p8affineinvqb(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vpshldw(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vpclmulqdq(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vpshrdvd(const Xmm &x1, const Xmm &x2, const Operand &op)
void vpopcntw(const Xmm &x, const Operand &op)
void gf2p8affineinvqb(const Xmm &xmm, const Operand &op, int imm)
void vcompressw(const Operand &op, const Xmm &x)
void vp4dpwssds(const Zmm &z1, const Zmm &z2, const Address &addr)
void vpshufbitqmb(const Opmask &k, const Xmm &x, const Operand &op)
void align(size_t x=16, bool useMultiByteNop=true)
void vpshldvw(const Xmm &x1, const Xmm &x2, const Operand &op)
void vpdpbusd(const Xmm &x1, const Xmm &x2, const Operand &op)
void gf2p8affineqb(const Xmm &xmm, const Operand &op, int imm)
void vpshrdw(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vgf2p8affineqb(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void v4fmaddps(const Zmm &z1, const Zmm &z2, const Address &addr)
void vpshrdd(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vaesdeclast(const Xmm &xmm, const Operand &op1, const Operand &op2=Operand())
void vpshldvq(const Xmm &x1, const Xmm &x2, const Operand &op)
void vpshrdvw(const Xmm &x1, const Xmm &x2, const Operand &op)
void v4fmaddss(const Xmm &x1, const Xmm &x2, const Address &addr)
void vpopcntq(const Xmm &x, const Operand &op)
const EvexModifierZero T_z
void vpdpwssd(const Xmm &x1, const Xmm &x2, const Operand &op)
void v4fnmaddps(const Zmm &z1, const Zmm &z2, const Address &addr)
void gf2p8mulb(const Xmm &xmm, const Operand &op)
void mov(const Operand ®1, const Operand ®2)
void vaesenc(const Xmm &xmm, const Operand &op1, const Operand &op2=Operand())
void vgf2p8mulb(const Xmm &x1, const Xmm &x2, const Operand &op)
void vpdpbusds(const Xmm &x1, const Xmm &x2, const Operand &op)
void vcompressb(const Operand &op, const Xmm &x)
void vpopcntd(const Xmm &x, const Operand &op)
void vpshrdq(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vpexpandw(const Xmm &x, const Operand &op)
void vpshldd(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)
void vpdpwssds(const Xmm &x1, const Xmm &x2, const Operand &op)
void vp4dpwssd(const Zmm &z1, const Zmm &z2, const Address &addr)
void vpexpandb(const Xmm &x, const Operand &op)
unsigned __int64 uint64_t
int type definition and macros Copyright (C) 2008 Cybozu Labs, Inc., all rights reserved.
Xbyak ; JIT assembler for x86(IA32)/x64 by C++.
void shrd(const Operand &op, const Reg ®, const Reg8 &_cl)
void shld(const Operand &op, const Reg ®, const Reg8 &_cl)
void vpclmulqdq(const Xmm &x1, const Xmm &x2, const Operand &op, uint8 imm)