git-subtree-dir: external/xbyak git-subtree-split: 9d8ff37306f39c6a71cf998078cbe880ce5dc224
54 lines
1.8 KiB
C++
54 lines
1.8 KiB
C++
#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;
|
|
|
|
// ymm with sae is not supported from avx10.2 rev 4.0.
|
|
CYBOZU_TEST_AUTO(ymm_with_sae)
|
|
{
|
|
struct Code : Xbyak::CodeGenerator {
|
|
Code()
|
|
{
|
|
CYBOZU_TEST_EXCEPTION(vaddpd(ymm1, ymm2, ymm3 |T_rn_sae), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vcvtph2ibs(xmm1, xmm31 | T_rd_sae), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vcvtph2ibs(ymm1, ymm31 | T_rd_sae), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vcvt2ps2phx(ymm1, ymm2, ymm3 | T_rd_sae), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vminmaxpd(ymm1, ymm2, ymm3 | T_sae, 1), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vminmaxph(ymm1, ymm2, ymm3 | T_sae, 2), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vminmaxps(ymm1, ymm2, ymm3 | T_sae, 3), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vcvtps2ibs(ym1, ym2|T_rd_sae), std::exception);
|
|
CYBOZU_TEST_EXCEPTION(vcvtps2ibs(xm1, xm2|T_rd_sae), std::exception);
|
|
}
|
|
} c;
|
|
}
|
|
|
|
CYBOZU_TEST_AUTO(vmpsadbw)
|
|
{
|
|
struct Code : Xbyak::CodeGenerator {
|
|
Code()
|
|
{
|
|
setDefaultEncodingAVX10();
|
|
vmpsadbw(xm1, xm3, xm15, 3); // vex(avx)
|
|
vmpsadbw(ym1, ym3, ptr[rax+128], 3); // vex(avx2)
|
|
setDefaultEncodingAVX10(AVX10v2Encoding);
|
|
vmpsadbw(ym1, ym3, ym15, 3); // evex(avx10.2)
|
|
vmpsadbw(ym1, ym3, ptr[rax+128], 3); // evex(avx10.2)
|
|
}
|
|
} c;
|
|
const uint8_t tbl[] = {
|
|
0xc4, 0xc3, 0x61, 0x42, 0xcf, 0x03,
|
|
0xc4, 0xe3, 0x65, 0x42, 0x88, 0x80, 0x00, 0x00, 0x00, 0x03,
|
|
0x62, 0xd3, 0x66, 0x28, 0x42, 0xcf, 0x03,
|
|
0x62, 0xf3, 0x66, 0x28, 0x42, 0x48, 0x04, 0x03,
|
|
};
|
|
const size_t n = sizeof(tbl) / sizeof(tbl[0]);
|
|
CYBOZU_TEST_EQUAL(c.getSize(), n);
|
|
CYBOZU_TEST_EQUAL_ARRAY(c.getCode(), tbl, n);
|
|
}
|