Merge commit '0a097849af1bcd979ff4b430a03971f16822cbcb' as 'external/xbyak'
This commit is contained in:
53
external/xbyak/test/avx10_test.cpp
vendored
Normal file
53
external/xbyak/test/avx10_test.cpp
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
#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);
|
||||
}
|
||||
Reference in New Issue
Block a user