Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
herumi committed Oct 8, 2024
2 parents 900c984 + 0243537 commit 1b8e34a
Show file tree
Hide file tree
Showing 9 changed files with 367 additions and 148 deletions.
18 changes: 10 additions & 8 deletions gen/gen_avx512.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -835,18 +835,20 @@ void putFP16_1()
const struct Tbl {
uint8_t code;
const char *name;
int mode;
} tbl[] = {
{ 0x58, "add" },
{ 0x5C, "sub" },
{ 0x59, "mul" },
{ 0x5E, "div" },
{ 0x5F, "max" },
{ 0x5D, "min" },
{ 0x58, "add", 0 },
{ 0x5C, "sub", 0 },
{ 0x59, "mul", 0 },
{ 0x5E, "div", 0 },
{ 0x5F, "max", 1 },
{ 0x5D, "min", 1 },
};
const char *erTbl[] = { "ER", "SAE" };
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
const Tbl *p = &tbl[i];
printf("void v%sph(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_MAP5 | T_EW0 | T_YMM | T_MUST_EVEX | T_ER_Z | T_B16, 0x%02X); }\n", p->name, p->code);
printf("void v%ssh(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_MAP5 | T_F3 | T_EW0 | T_MUST_EVEX | T_ER_X | T_N2, 0x%02X); }\n", p->name, p->code);
printf("void v%sph(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_MAP5 | T_EW0 | T_YMM | T_MUST_EVEX | T_%s_Z | T_B16, 0x%02X); }\n", p->name, erTbl[p->mode], p->code);
printf("void v%ssh(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_MAP5 | T_F3 | T_EW0 | T_MUST_EVEX | T_%s_X | T_N2, 0x%02X); }\n", p->name, erTbl[p->mode], p->code);
}
}

Expand Down
41 changes: 24 additions & 17 deletions gen/gen_code.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1308,25 +1308,32 @@ void put()
uint8_t code;
const char *name;
bool only_pd_ps;
int mode; // 0 : none, 1 : er, 2 : sae
} tbl[] = {
{ 0x58, "add", false },
{ 0x5C, "sub", false },
{ 0x59, "mul", false },
{ 0x5E, "div", false },
{ 0x5F, "max", false },
{ 0x5D, "min", false },
{ 0x54, "and", true },
{ 0x55, "andn", true },
{ 0x56, "or", true },
{ 0x57, "xor", true },
{ 0x58, "add", false, 1 },
{ 0x5C, "sub", false, 1 },
{ 0x59, "mul", false, 1 },
{ 0x5E, "div", false, 1 },
{ 0x5F, "max", false, 2 },
{ 0x5D, "min", false, 2 },
{ 0x54, "and", true, 0 },
{ 0x55, "andn", true, 0 },
{ 0x56, "or", true, 0 },
{ 0x57, "xor", true, 0 },
};
const char *xTbl[] = {
"", " | T_ER_X", " | T_SAE_X"
};
const char *zTbl[] = {
"", " | T_ER_Z", " | T_SAE_Z"
};
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
const Tbl *p = &tbl[i];
printf("void v%spd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_66 | T_EW1 | T_YMM | T_EVEX | T_ER_Z | T_B64, 0x%02X); }\n", p->name, p->code);
printf("void v%sps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_EW0 | T_YMM | T_EVEX | T_ER_Z | T_B32, 0x%02X); }\n", p->name, p->code);
printf("void v%spd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_66 | T_EW1 | T_YMM | T_EVEX%s | T_B64, 0x%02X); }\n", p->name, zTbl[p->mode], p->code);
printf("void v%sps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_EW0 | T_YMM | T_EVEX%s | T_B32, 0x%02X); }\n", p->name, zTbl[p->mode], p->code);
if (p->only_pd_ps) continue;
printf("void v%ssd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_F2 | T_EW1 | T_EVEX | T_ER_X | T_N8, 0x%02X); }\n", p->name, p->code);
printf("void v%sss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_F3 | T_EW0 | T_EVEX | T_ER_X | T_N4, 0x%02X); }\n", p->name, p->code);
printf("void v%ssd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_F2 | T_EW1 | T_EVEX%s | T_N8, 0x%02X); }\n", p->name, xTbl[p->mode], p->code);
printf("void v%sss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_F3 | T_EW0 | T_EVEX%s | T_N4, 0x%02X); }\n", p->name, xTbl[p->mode], p->code);
}
}
putX_X_XM(false);
Expand Down Expand Up @@ -1620,9 +1627,9 @@ void put()
if (tbl[i].supportYMM) t |= T_YMM;
const std::string suf = sufTbl[tbl[i].supportYMM ? 0 : 1][j];
if (suf == "pd") {
t |= T_B64;
t |= T_ER_Z | T_B64;
} else if (suf == "ps") {
t |= T_B32;
t |= T_ER_Z | T_B32;
} else if (suf == "sd") {
t |= T_ER_X | T_N8;
} else { // ss
Expand Down Expand Up @@ -1772,7 +1779,7 @@ void put()
puts("void vcvtpd2ps(const Xmm& x, const Operand& op) { opCvt2(x, op, T_0F | T_66 | T_YMM | T_EVEX | T_EW1 | T_B64 | T_ER_Z, 0x5A); }");
puts("void vcvtpd2dq(const Xmm& x, const Operand& op) { opCvt2(x, op, T_0F | T_F2 | T_YMM | T_EVEX | T_EW1 | T_B64 | T_ER_Z, 0xE6); }");

puts("void vcvttpd2dq(const Xmm& x, const Operand& op) { opCvt2(x, op, T_66 | T_0F | T_YMM | T_EVEX |T_EW1 | T_B64 | T_ER_Z, 0xE6); }");
puts("void vcvttpd2dq(const Xmm& x, const Operand& op) { opCvt2(x, op, T_66 | T_0F | T_YMM | T_EVEX |T_EW1 | T_B64 | T_SAE_Z, 0xE6); }");

puts("void vcvtph2ps(const Xmm& x, const Operand& op) { checkCvt1(x, op); opVex(x, 0, op, T_0F38 | T_66 | T_W0 | T_EVEX | T_EW0 | T_N8 | T_N_VL | T_SAE_Y, 0x13); }");
puts("void vcvtps2ph(const Operand& op, const Xmm& x, uint8_t imm) { checkCvt1(x, op); opVex(x, 0, op, T_0F3A | T_66 | T_W0 | T_EVEX | T_EW0 | T_N8 | T_N_VL | T_SAE_Y | T_M_K, 0x1D, imm); }");
Expand Down
10 changes: 8 additions & 2 deletions test/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
TARGET = make_nm normalize_prefix bad_address misc cvt_test cvt_test32 noexception misc32 detect_x32
TARGET = make_nm normalize_prefix bad_address misc cvt_test cvt_test32 noexception misc32 detect_x32 avx10_test
XBYAK_INC=../xbyak/xbyak.h ../xbyak/xbyak_mnemonic.h
UNAME_S=$(shell uname -s)
ifeq ($(shell ./detect_x32),x32)
Expand Down Expand Up @@ -57,6 +57,8 @@ noexception: noexception.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) $< -o $@ -fno-exceptions
apx: apx.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) apx.cpp -o $@
avx10_test: avx10_test.cpp $(XBYAK_INC)
$(CXX) $(CFLAGS) avx10_test.cpp -o $@ -DXBYAK64

test_nm: normalize_prefix $(TARGET)
$(MAKE) -C ../gen
Expand All @@ -81,6 +83,7 @@ ifneq ($(X32),1)
endif
./jmp64
./apx
./avx10_test
endif

test_avx: normalize_prefix
Expand All @@ -103,6 +106,9 @@ ifeq ($(BIT),64)
CXX=$(CXX) ./test_avx512.sh 64
endif

test_avx10: avx10_test
./avx10_test

detect_x32: detect_x32.c
$(CC) $< -o $@

Expand All @@ -112,7 +118,7 @@ test: detect_x32
$(MAKE) test_avx512

clean:
$(RM) a.asm *.lst *.obj *.o $(TARGET) lib_run nm.cpp nm_frame make_512
$(RM) a.asm *.lst *.obj *.o $(TARGET) lib_run nm.cpp nm_frame make_512 avx10_test

lib_run: lib_test.cpp lib_run.cpp lib.h
$(CXX) $(CFLAGS) lib_run.cpp lib_test.cpp -o lib_run
Expand Down
230 changes: 230 additions & 0 deletions test/avx10_test.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,230 @@
#include <stdio.h>
#include <string.h>
#include <string>
#include <xbyak/xbyak.h>
#include <xbyak/xbyak_util.h>
#include <cybozu/inttype.hpp>
#include <cybozu/test.hpp>
#include <algorithm>

using namespace Xbyak;

CYBOZU_TEST_AUTO(ymm_with_sae)
{
struct Code : Xbyak::CodeGenerator {
Code()
{
vaddpd(ymm1, ymm2, ymm3 |T_rn_sae);
vaddph(ymm1, ymm2, ymm3 |T_rn_sae);
vaddps(ymm1, ymm2, ymm3 |T_rn_sae);
vcmppd(k1, ymm2, ymm3 |T_sae, 3);
vcmpph(k1, ymm2, ymm3 |T_sae, 3);
vcmpps(k1, ymm2, ymm3 |T_sae, 3);
vcvtdq2ph(xmm1, ymm2 |T_rn_sae);
vcvtdq2ps(ymm1, ymm2 |T_rn_sae);
vcvtpd2dq(xmm1, ymm2 |T_rn_sae);
vcvtpd2ph(xmm1, ymm2 |T_rn_sae);
vcvtpd2ps(xmm1, ymm2 |T_rn_sae);
vcvtpd2qq(ymm1, ymm2 |T_rn_sae);
vcvtpd2udq(xmm1, ymm2 |T_rn_sae);
vcvtpd2uqq(ymm1, ymm2 |T_rn_sae);
vcvtph2dq(ymm1, xmm2 |T_rn_sae);
vcvtph2pd(ymm1, xmm2 |T_sae);
vcvtph2ps(ymm1, xmm2 |T_sae);
vcvtph2psx(ymm1, xmm2 |T_sae);
vcvtph2qq(ymm1, xmm2 |T_rn_sae);
vcvtph2udq(ymm1, xmm2 |T_rn_sae);
vcvtph2uqq(ymm1, xmm2 |T_rn_sae);
vcvtph2uw(ymm1, ymm2 |T_rn_sae);
vcvtph2w(ymm1, ymm2 |T_rn_sae);
vcvtps2dq(ymm1, ymm2 |T_rn_sae);
vcvtps2pd(ymm1, xmm2 |T_sae);
vcvtps2ph(xmm1, ymm2 |T_sae, 3);
vcvtps2phx(xmm1, ymm2 |T_rn_sae);
vcvtps2qq(ymm1, xmm2 |T_rn_sae);
vcvtps2udq(ymm1, ymm2 |T_rn_sae);
vcvtps2uqq(ymm1, xmm2 |T_rn_sae);
vcvtqq2pd(ymm1, ymm2 |T_rn_sae);
vcvtqq2ph(xmm1, ymm2 |T_rn_sae);
vcvtqq2ps(xmm1, ymm2 |T_rn_sae);
vcvttpd2dq(xmm1, ymm2 |T_sae);
vcvttpd2qq(ymm1, ymm2 |T_sae);
vcvttpd2udq(xmm1, ymm2 |T_sae);
vcvttpd2uqq(ymm1, ymm2 |T_sae);
vcvttph2dq(ymm1, xmm2 |T_sae);
vcvttph2qq(ymm1, xmm2 |T_sae);
vcvttph2udq(ymm1, xmm2 |T_sae);
vcvttph2uqq(ymm1, xmm2 |T_sae);
vcvttph2uw(ymm1, ymm2 |T_sae);
vcvttph2w(ymm1, ymm2 |T_sae);
vcvttps2dq(ymm1, ymm2 |T_sae);
vcvttps2qq(ymm1, xmm2 |T_sae);
vcvttps2udq(ymm1, ymm2 |T_sae);
vcvttps2uqq(ymm1, xmm2 |T_sae);
vcvtudq2ph(xmm1, ymm2 |T_rn_sae);
vcvtudq2ps(ymm1, ymm2 |T_rn_sae);
vcvtuqq2pd(ymm1, ymm2 |T_rn_sae);
vcvtuqq2ph(xmm1, ymm2 |T_rn_sae);
vcvtuqq2ps(xmm1, ymm2 |T_rn_sae);
vcvtuw2ph(ymm1, ymm2 |T_rn_sae);
vcvtw2ph(ymm1, ymm2 |T_rn_sae);
vdivpd(ymm1, ymm2, ymm3 |T_rn_sae);
vdivph(ymm1, ymm2, ymm3 |T_rn_sae);
vdivps(ymm1, ymm2, ymm3 |T_rn_sae);
vfcmaddcph(ymm1, ymm2, ymm3 |T_rn_sae);
vfcmulcph(ymm1, ymm2, ymm3 |T_rn_sae);
vfixupimmpd(ymm1, ymm2, ymm3 |T_sae, 3);
vfixupimmps(ymm1, ymm2, ymm3 |T_sae, 3);
vfmadd132pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd132ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd132ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd213pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd213ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd213ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd231pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd231ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmadd231ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddcph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub132pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub132ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub132ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub213pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub213ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub213ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub231pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub231ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmaddsub231ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub132pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub132ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub132ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub213pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub213ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub213ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub231pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub231ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsub231ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd132pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd132ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd132ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd213pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd213ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd213ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd231pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd231ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfmsubadd231ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfmulcph(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd132pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd132ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd132ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd213pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd213ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd213ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd231pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd231ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmadd231ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub132pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub132ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub132ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub213pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub213ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub213ps(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub231pd(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub231ph(ymm1, ymm2, ymm3 |T_rn_sae);
vfnmsub231ps(ymm1, ymm2, ymm3 |T_rn_sae);
vgetexppd(ymm1, ymm2 |T_sae);
vgetexpph(ymm1, ymm2 |T_sae);
vgetexpps(ymm1, ymm2 |T_sae);
vgetmantpd(ymm1, ymm2 |T_sae, 3);
vgetmantph(ymm1, ymm2 |T_sae, 3);
vgetmantps(ymm1, ymm2 |T_sae, 3);
vmaxpd(ymm1, ymm2, ymm3 |T_sae);
vmaxph(ymm1, ymm2, ymm3 |T_sae);
vmaxps(ymm1, ymm2, ymm3 |T_sae);
vminpd(ymm1, ymm2, ymm3 |T_sae);
vminph(ymm1, ymm2, ymm3 |T_sae);
vminps(ymm1, ymm2, ymm3 |T_sae);
vmulpd(ymm1, ymm2, ymm3 |T_rn_sae);
vmulph(ymm1, ymm2, ymm3 |T_rn_sae);
vmulps(ymm1, ymm2, ymm3 |T_rn_sae);
vrangepd(ymm1, ymm2, ymm3 |T_sae, 3);
vrangeps(ymm1, ymm2, ymm3 |T_sae, 3);
vreducepd(ymm1, ymm2 |T_sae, 3);
vreduceph(ymm1, ymm2 |T_sae, 3);
vreduceps(ymm1, ymm2 |T_sae, 3);
vrndscalepd(ymm1, ymm2 |T_sae, 3);
vrndscaleph(ymm1, ymm2 |T_sae, 3);
vrndscaleps(ymm1, ymm2 |T_sae, 3);
vscalefpd(ymm1, ymm2, ymm3 |T_rn_sae);
vscalefph(ymm1, ymm2, ymm3 |T_rn_sae);
vscalefps(ymm1, ymm2, ymm3 |T_rn_sae);
vsqrtpd(ymm1, ymm2 |T_rn_sae);
vsqrtph(ymm1, ymm2 |T_rn_sae);
vsqrtps(ymm1, ymm2 |T_rn_sae);
vsubpd(ymm1, ymm2, ymm3 |T_rn_sae);
vsubph(ymm1, ymm2, ymm3 |T_rn_sae);
vsubps(ymm1, ymm2, ymm3 |T_rn_sae);
}
} c;
const uint8_t tbl[] = {
0x62, 0xf1, 0xe9, 0x18, 0x58, 0xcb, 0x62, 0xf5, 0x68, 0x18, 0x58, 0xcb, 0x62, 0xf1, 0x68, 0x18,
0x58, 0xcb, 0x62, 0xf1, 0xe9, 0x18, 0xc2, 0xcb, 0x03, 0x62, 0xf3, 0x68, 0x18, 0xc2, 0xcb, 0x03,
0x62, 0xf1, 0x68, 0x18, 0xc2, 0xcb, 0x03, 0x62, 0xf5, 0x78, 0x18, 0x5b, 0xca, 0x62, 0xf1, 0x78,
0x18, 0x5b, 0xca, 0x62, 0xf1, 0xfb, 0x18, 0xe6, 0xca, 0x62, 0xf5, 0xf9, 0x18, 0x5a, 0xca, 0x62,
0xf1, 0xf9, 0x18, 0x5a, 0xca, 0x62, 0xf1, 0xf9, 0x18, 0x7b, 0xca, 0x62, 0xf1, 0xf8, 0x18, 0x79,
0xca, 0x62, 0xf1, 0xf9, 0x18, 0x79, 0xca, 0x62, 0xf5, 0x79, 0x18, 0x5b, 0xca, 0x62, 0xf5, 0x78,
0x18, 0x5a, 0xca, 0x62, 0xf2, 0x79, 0x18, 0x13, 0xca, 0x62, 0xf6, 0x79, 0x18, 0x13, 0xca, 0x62,
0xf5, 0x79, 0x18, 0x7b, 0xca, 0x62, 0xf5, 0x78, 0x18, 0x79, 0xca, 0x62, 0xf5, 0x79, 0x18, 0x79,
0xca, 0x62, 0xf5, 0x78, 0x18, 0x7d, 0xca, 0x62, 0xf5, 0x79, 0x18, 0x7d, 0xca, 0x62, 0xf1, 0x79,
0x18, 0x5b, 0xca, 0x62, 0xf1, 0x78, 0x18, 0x5a, 0xca, 0x62, 0xf3, 0x79, 0x18, 0x1d, 0xd1, 0x03,
0x62, 0xf5, 0x79, 0x18, 0x1d, 0xca, 0x62, 0xf1, 0x79, 0x18, 0x7b, 0xca, 0x62, 0xf1, 0x78, 0x18,
0x79, 0xca, 0x62, 0xf1, 0x79, 0x18, 0x79, 0xca, 0x62, 0xf1, 0xfa, 0x18, 0xe6, 0xca, 0x62, 0xf5,
0xf8, 0x18, 0x5b, 0xca, 0x62, 0xf1, 0xf8, 0x18, 0x5b, 0xca, 0x62, 0xf1, 0xf9, 0x18, 0xe6, 0xca,
0x62, 0xf1, 0xf9, 0x18, 0x7a, 0xca, 0x62, 0xf1, 0xf8, 0x18, 0x78, 0xca, 0x62, 0xf1, 0xf9, 0x18,
0x78, 0xca, 0x62, 0xf5, 0x7a, 0x18, 0x5b, 0xca, 0x62, 0xf5, 0x79, 0x18, 0x7a, 0xca, 0x62, 0xf5,
0x78, 0x18, 0x78, 0xca, 0x62, 0xf5, 0x79, 0x18, 0x78, 0xca, 0x62, 0xf5, 0x78, 0x18, 0x7c, 0xca,
0x62, 0xf5, 0x79, 0x18, 0x7c, 0xca, 0x62, 0xf1, 0x7a, 0x18, 0x5b, 0xca, 0x62, 0xf1, 0x79, 0x18,
0x7a, 0xca, 0x62, 0xf1, 0x78, 0x18, 0x78, 0xca, 0x62, 0xf1, 0x79, 0x18, 0x78, 0xca, 0x62, 0xf5,
0x7b, 0x18, 0x7a, 0xca, 0x62, 0xf1, 0x7b, 0x18, 0x7a, 0xca, 0x62, 0xf1, 0xfa, 0x18, 0x7a, 0xca,
0x62, 0xf5, 0xfb, 0x18, 0x7a, 0xca, 0x62, 0xf1, 0xfb, 0x18, 0x7a, 0xca, 0x62, 0xf5, 0x7b, 0x18,
0x7d, 0xca, 0x62, 0xf5, 0x7a, 0x18, 0x7d, 0xca, 0x62, 0xf1, 0xe9, 0x18, 0x5e, 0xcb, 0x62, 0xf5,
0x68, 0x18, 0x5e, 0xcb, 0x62, 0xf1, 0x68, 0x18, 0x5e, 0xcb, 0x62, 0xf6, 0x6b, 0x18, 0x56, 0xcb,
0x62, 0xf6, 0x6b, 0x18, 0xd6, 0xcb, 0x62, 0xf3, 0xe9, 0x18, 0x54, 0xcb, 0x03, 0x62, 0xf3, 0x69,
0x18, 0x54, 0xcb, 0x03, 0x62, 0xf2, 0xe9, 0x18, 0x98, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0x98, 0xcb,
0x62, 0xf2, 0x69, 0x18, 0x98, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xa8, 0xcb, 0x62, 0xf6, 0x69, 0x18,
0xa8, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0xa8, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xb8, 0xcb, 0x62, 0xf6,
0x69, 0x18, 0xb8, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0xb8, 0xcb, 0x62, 0xf6, 0x6a, 0x18, 0x56, 0xcb,
0x62, 0xf2, 0xe9, 0x18, 0x96, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0x96, 0xcb, 0x62, 0xf2, 0x69, 0x18,
0x96, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xa6, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0xa6, 0xcb, 0x62, 0xf2,
0x69, 0x18, 0xa6, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xb6, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0xb6, 0xcb,
0x62, 0xf2, 0x69, 0x18, 0xb6, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0x9a, 0xcb, 0x62, 0xf6, 0x69, 0x18,
0x9a, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0x9a, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xaa, 0xcb, 0x62, 0xf6,
0x69, 0x18, 0xaa, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0xaa, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xba, 0xcb,
0x62, 0xf6, 0x69, 0x18, 0xba, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0xba, 0xcb, 0x62, 0xf2, 0xe9, 0x18,
0x97, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0x97, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0x97, 0xcb, 0x62, 0xf2,
0xe9, 0x18, 0xa7, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0xa7, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0xa7, 0xcb,
0x62, 0xf2, 0xe9, 0x18, 0xb7, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0xb7, 0xcb, 0x62, 0xf2, 0x69, 0x18,
0xb7, 0xcb, 0x62, 0xf6, 0x6a, 0x18, 0xd6, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0x9c, 0xcb, 0x62, 0xf6,
0x69, 0x18, 0x9c, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0x9c, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xac, 0xcb,
0x62, 0xf6, 0x69, 0x18, 0xac, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0xac, 0xcb, 0x62, 0xf2, 0xe9, 0x18,
0xbc, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0xbc, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0xbc, 0xcb, 0x62, 0xf2,
0xe9, 0x18, 0x9e, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0x9e, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0x9e, 0xcb,
0x62, 0xf2, 0xe9, 0x18, 0xae, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0xae, 0xcb, 0x62, 0xf2, 0x69, 0x18,
0xae, 0xcb, 0x62, 0xf2, 0xe9, 0x18, 0xbe, 0xcb, 0x62, 0xf6, 0x69, 0x18, 0xbe, 0xcb, 0x62, 0xf2,
0x69, 0x18, 0xbe, 0xcb, 0x62, 0xf2, 0xf9, 0x18, 0x42, 0xca, 0x62, 0xf6, 0x79, 0x18, 0x42, 0xca,
0x62, 0xf2, 0x79, 0x18, 0x42, 0xca, 0x62, 0xf3, 0xf9, 0x18, 0x26, 0xca, 0x03, 0x62, 0xf3, 0x78,
0x18, 0x26, 0xca, 0x03, 0x62, 0xf3, 0x79, 0x18, 0x26, 0xca, 0x03, 0x62, 0xf1, 0xe9, 0x18, 0x5f,
0xcb, 0x62, 0xf5, 0x68, 0x18, 0x5f, 0xcb, 0x62, 0xf1, 0x68, 0x18, 0x5f, 0xcb, 0x62, 0xf1, 0xe9,
0x18, 0x5d, 0xcb, 0x62, 0xf5, 0x68, 0x18, 0x5d, 0xcb, 0x62, 0xf1, 0x68, 0x18, 0x5d, 0xcb, 0x62,
0xf1, 0xe9, 0x18, 0x59, 0xcb, 0x62, 0xf5, 0x68, 0x18, 0x59, 0xcb, 0x62, 0xf1, 0x68, 0x18, 0x59,
0xcb, 0x62, 0xf3, 0xe9, 0x18, 0x50, 0xcb, 0x03, 0x62, 0xf3, 0x69, 0x18, 0x50, 0xcb, 0x03, 0x62,
0xf3, 0xf9, 0x18, 0x56, 0xca, 0x03, 0x62, 0xf3, 0x78, 0x18, 0x56, 0xca, 0x03, 0x62, 0xf3, 0x79,
0x18, 0x56, 0xca, 0x03, 0x62, 0xf3, 0xf9, 0x18, 0x09, 0xca, 0x03, 0x62, 0xf3, 0x78, 0x18, 0x08,
0xca, 0x03, 0x62, 0xf3, 0x79, 0x18, 0x08, 0xca, 0x03, 0x62, 0xf2, 0xe9, 0x18, 0x2c, 0xcb, 0x62,
0xf6, 0x69, 0x18, 0x2c, 0xcb, 0x62, 0xf2, 0x69, 0x18, 0x2c, 0xcb, 0x62, 0xf1, 0xf9, 0x18, 0x51,
0xca, 0x62, 0xf5, 0x78, 0x18, 0x51, 0xca, 0x62, 0xf1, 0x78, 0x18, 0x51, 0xca, 0x62, 0xf1, 0xe9,
0x18, 0x5c, 0xcb, 0x62, 0xf5, 0x68, 0x18, 0x5c, 0xcb, 0x62, 0xf1, 0x68, 0x18, 0x5c, 0xcb,
};
const size_t n = sizeof(tbl) / sizeof(tbl[0]);
CYBOZU_TEST_EQUAL(c.getSize(), n);
CYBOZU_TEST_EQUAL_ARRAY(c.getCode(), tbl, n);
}
Loading

0 comments on commit 1b8e34a

Please sign in to comment.