mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2025-12-28 02:05:00 +01:00
commit
213fe7a452
62 changed files with 5179 additions and 2059 deletions
16
externals/xbyak/sample/Makefile
vendored
16
externals/xbyak/sample/Makefile
vendored
|
|
@ -30,7 +30,7 @@ else
|
|||
endif
|
||||
|
||||
ifeq ($(BIT),64)
|
||||
TARGET += test64 bf64 memfunc64 test_util64 jmp_table64
|
||||
TARGET += test64 bf64 memfunc64 test_util64 jmp_table64 zero_upper ccmp no_flags
|
||||
ifeq ($(BOOST_EXIST),1)
|
||||
TARGET += calc64 #calc2_64
|
||||
endif
|
||||
|
|
@ -103,6 +103,18 @@ profiler: profiler.cpp ../xbyak/xbyak_util.h
|
|||
$(CXX) $(CFLAGS) profiler.cpp -o $@
|
||||
profiler-vtune: profiler.cpp ../xbyak/xbyak_util.h
|
||||
$(CXX) $(CFLAGS) profiler.cpp -o $@ -DXBYAK_USE_VTUNE -I /opt/intel/vtune_amplifier/include/ -L /opt/intel/vtune_amplifier/lib64 -ljitprofiling -ldl
|
||||
zero_upper: zero_upper.cpp $(XBYAK_INC)
|
||||
$(CXX) $(CFLAGS) zero_upper.cpp -o $@
|
||||
test_zero_upper: zero_upper
|
||||
sde -future -- ./zero_upper
|
||||
ccmp: ccmp.cpp $(XBYAK_INC)
|
||||
$(CXX) $(CFLAGS) ccmp.cpp -o $@
|
||||
test_ccmp: ccmp
|
||||
sde -future -- ./ccmp
|
||||
no_flags: no_flags.cpp $(XBYAK_INC)
|
||||
$(CXX) $(CFLAGS) no_flags.cpp -o $@
|
||||
test_no_flags: no_flags
|
||||
sde -future -- ./no_flags
|
||||
|
||||
clean:
|
||||
rm -rf $(TARGET) profiler profiler-vtune
|
||||
|
|
@ -122,7 +134,7 @@ toyvm : toyvm.cpp $(XBYAK_INC)
|
|||
static_buf: static_buf.cpp $(XBYAK_INC)
|
||||
static_buf64: static_buf.cpp $(XBYAK_INC)
|
||||
test_util : test_util.cpp $(XBYAK_INC) ../xbyak/xbyak_util.h
|
||||
test_util2 : test_util.cpp $(XBYAK_INC) ../xbyak/xbyak_util.h
|
||||
test_util64 : test_util.cpp $(XBYAK_INC) ../xbyak/xbyak_util.h
|
||||
jmp_table: jmp_table.cpp $(XBYAK_INC)
|
||||
jmp_table64: jmp_table.cpp $(XBYAK_INC)
|
||||
memfd: memfd.cpp $(XBYAK_INC)
|
||||
|
|
|
|||
68
externals/xbyak/sample/ccmp.cpp
vendored
Normal file
68
externals/xbyak/sample/ccmp.cpp
vendored
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
An example of ccmp
|
||||
> g++ ccmp.cpp -I ../xbyak
|
||||
> sde -future -- ./a.out
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <xbyak/xbyak.h>
|
||||
#include <xbyak/xbyak_util.h>
|
||||
|
||||
using namespace Xbyak;
|
||||
|
||||
struct Code1 : Xbyak::CodeGenerator {
|
||||
Code1()
|
||||
{
|
||||
Xbyak::util::StackFrame sf(this, 2);
|
||||
const auto& p1 = sf.p[0];
|
||||
const auto& p2 = sf.p[1];
|
||||
int dfv = 0;
|
||||
cmp(p1, 3);
|
||||
ctesta(p2, 1, dfv); // eflags = (p1 > 3) ? ((p2 & 1) == 0) : dfv;
|
||||
setz(al|T_zu);
|
||||
}
|
||||
};
|
||||
|
||||
struct Code2 : Xbyak::CodeGenerator {
|
||||
Code2()
|
||||
{
|
||||
Xbyak::util::StackFrame sf(this, 3);
|
||||
const auto& p1 = sf.p[0];
|
||||
const auto& p2 = sf.p[1];
|
||||
const auto& p3 = sf.p[2];
|
||||
int dfv = 0;
|
||||
cmp(p1, 1);
|
||||
ccmpe(p2, 2, dfv); // eflags = p1==1 ? p2==2 : dfv;
|
||||
ccmpe(p3, 3, dfv); // eflags = (p1==1 && p2==2) ? p3==3 : dfv;
|
||||
setz(al|T_zu); // p1==1 && p2==2 && p3==3
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int main()
|
||||
try
|
||||
{
|
||||
{
|
||||
puts("(p1 > 3) && ((p2 & 1) == 0)");
|
||||
Code1 c;
|
||||
auto f = c.getCode<int (*)(int, int)>();
|
||||
for (int p1 = 2; p1 < 5; p1++) {
|
||||
for (int p2 = 0; p2 < 3; p2++) {
|
||||
printf("p1=%d p2=%d ret=%d (%d)\n", p1, p2, f(p1, p2), p1 > 3 && ((p2&1) == 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
puts("p1 == 1 && p2 == 2 && p3 == 3");
|
||||
Code2 c;
|
||||
auto f = c.getCode<int (*)(int, int, int)>();
|
||||
for (int p1 = 0; p1 < 3; p1++) {
|
||||
for (int p2 = 1; p2 < 4; p2++) {
|
||||
for (int p3 = 2; p3 < 5; p3++) {
|
||||
printf("p1=%d p2=%d p3=%d ret=%d (%d)\n", p1, p2, p3, f(p1, p2, p3), p1==1 && p2==2 && p3==3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (std::exception& e) {
|
||||
printf("ERR %s\n", e.what());
|
||||
}
|
||||
2
externals/xbyak/sample/cpuid/adl.txt
vendored
2
externals/xbyak/sample/cpuid/adl.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx_vnni waitpkg clflushopt cldemote movdiri movdir64b
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b serialize aeskle wide_kl keylocker keylocker_wide
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/arl.txt
vendored
Normal file
2
externals/xbyak/sample/cpuid/arl.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b uintr serialize avx_vnni_int8 avx_ne_convert avx_ifma cmpccxadd sha512 sm3 sm4 avx_vnni_int16 aeskle wide_kl keylocker keylocker_wide
|
||||
2
externals/xbyak/sample/cpuid/bdw.txt
vendored
2
externals/xbyak/sample/cpuid/bdw.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/clx.txt
vendored
2
externals/xbyak/sample/cpuid/clx.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe avx512f avx512dq avx512cd avx512bw avx512vl avx512_vnni clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe avx512f avx512dq avx512cd avx512bw avx512vl avx512_vnni clflushopt clwb
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/cnl.txt
vendored
2
externals/xbyak/sample/cpuid/cnl.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi clflushopt
|
||||
|
|
|
|||
20
externals/xbyak/sample/cpuid/cpuid.sh
vendored
20
externals/xbyak/sample/cpuid/cpuid.sh
vendored
|
|
@ -1,11 +1,25 @@
|
|||
#!/bin/bash
|
||||
|
||||
UPDATE=0
|
||||
if [ $# -eq 1 ]; then
|
||||
UPDATE=1
|
||||
fi
|
||||
|
||||
if [ $UPDATE == 1 ]; then
|
||||
echo "UPDATE"
|
||||
fi
|
||||
|
||||
make -C ../ test_util64
|
||||
|
||||
cpus=(p4p mrm pnr nhm wsm snb ivb hsw bdw slt slm glm glp tnt skl cnl icl skx clx cpx icx knl knm tgl adl spr)
|
||||
cpus=(p4p mrm pnr nhm wsm snb ivb hsw bdw slt slm glm glp tnt skl cnl icl skx clx cpx icx knl knm tgl adl mtl rpl spr gnr srf grr arl lnl)
|
||||
|
||||
for cpu in ${cpus[@]} ; do
|
||||
echo $cpu
|
||||
~/bin/sde -$cpu -- ../test_util64 -cpuid > tmp.txt
|
||||
diff tmp.txt $cpu.txt
|
||||
if [ $UPDATE == 1 ]; then
|
||||
~/bin/sde -$cpu -- ../test_util64 -cpuid > $cpu.txt
|
||||
else
|
||||
~/bin/sde -$cpu -- ../test_util64 -cpuid > tmp.txt
|
||||
diff $cpu.txt tmp.txt
|
||||
fi
|
||||
done
|
||||
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/cpx.txt
vendored
2
externals/xbyak/sample/cpuid/cpx.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe avx512f avx512dq avx512cd avx512bw avx512vl avx512_vnni avx512_bf16 clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe avx512f avx512dq avx512cd avx512bw avx512vl avx512_vnni avx512_bf16 clflushopt clwb
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/glm.txt
vendored
2
externals/xbyak/sample/cpuid/glm.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq enh_rep rdrand rdseed smap sha movbe clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq enh_rep rdrand rdseed smap sha movbe clflushopt
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/glp.txt
vendored
2
externals/xbyak/sample/cpuid/glp.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq enh_rep rdrand rdseed smap sha movbe clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq enh_rep rdrand rdseed smap sha movbe clflushopt
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/gnr.txt
vendored
Normal file
2
externals/xbyak/sample/cpuid/gnr.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq avx512_bf16 amx(tile) amx(int8) amx(bf16) avx_vnni avx512_fp16 waitpkg clflushopt cldemote clwb movdiri movdir64b uintr serialize amx_fp16 prefetchiti avx10
|
||||
2
externals/xbyak/sample/cpuid/grr.txt
vendored
Normal file
2
externals/xbyak/sample/cpuid/grr.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b uintr serialize avx_vnni_int8 avx_ne_convert avx_ifma rao-int cmpccxadd aeskle wide_kl keylocker keylocker_wide
|
||||
2
externals/xbyak/sample/cpuid/hsw.txt
vendored
2
externals/xbyak/sample/cpuid/hsw.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt enh_rep rdrand f16c movbe
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt enh_rep rdrand f16c movbe
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/icl.txt
vendored
2
externals/xbyak/sample/cpuid/icl.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq clflushopt clwb
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/icx.txt
vendored
2
externals/xbyak/sample/cpuid/icx.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq clflushopt clwb
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/ivb.txt
vendored
2
externals/xbyak/sample/cpuid/ivb.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx enh_rep rdrand f16c
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx enh_rep rdrand f16c
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/knl.txt
vendored
2
externals/xbyak/sample/cpuid/knl.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed prefetchwt1 f16c movbe avx512f avx512pf avx512er avx512cd
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed prefetchwt1 f16c movbe avx512f avx512pf avx512er avx512cd
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/knm.txt
vendored
2
externals/xbyak/sample/cpuid/knm.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed prefetchwt1 f16c movbe avx512f avx512pf avx512er avx512cd avx512_4vnniw avx512_4fmaps avx512_vpopcntdq
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed prefetchwt1 f16c movbe avx512f avx512pf avx512er avx512cd avx512_4vnniw avx512_4fmaps avx512_vpopcntdq
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/lnl.txt
vendored
Normal file
2
externals/xbyak/sample/cpuid/lnl.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b uintr serialize avx_vnni_int8 avx_ne_convert avx_ifma cmpccxadd sha512 sm3 sm4 avx_vnni_int16 aeskle wide_kl keylocker keylocker_wide
|
||||
2
externals/xbyak/sample/cpuid/mtl.txt
vendored
Normal file
2
externals/xbyak/sample/cpuid/mtl.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b serialize aeskle wide_kl keylocker keylocker_wide
|
||||
2
externals/xbyak/sample/cpuid/rpl.txt
vendored
Normal file
2
externals/xbyak/sample/cpuid/rpl.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b serialize aeskle wide_kl keylocker keylocker_wide
|
||||
2
externals/xbyak/sample/cpuid/skl.txt
vendored
2
externals/xbyak/sample/cpuid/skl.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe clflushopt
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/skx.txt
vendored
2
externals/xbyak/sample/cpuid/skx.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe avx512f avx512dq avx512cd avx512bw avx512vl clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap f16c movbe avx512f avx512dq avx512cd avx512bw avx512vl clflushopt clwb
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/snb.txt
vendored
2
externals/xbyak/sample/cpuid/snb.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/spr.txt
vendored
2
externals/xbyak/sample/cpuid/spr.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq avx512_bf16 avx512_vp2intersect amx(tile) amx(int8) amx(bf16) avx_vnni avx512_fp16 waitpkg clflushopt cldemote movdiri movdir64b
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq avx512_bf16 amx(tile) amx(int8) amx(bf16) avx_vnni avx512_fp16 waitpkg clflushopt cldemote clwb movdiri movdir64b uintr serialize
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/srf.txt
vendored
Normal file
2
externals/xbyak/sample/cpuid/srf.txt
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b uintr serialize avx_vnni_int8 avx_ne_convert avx_ifma cmpccxadd aeskle wide_kl keylocker keylocker_wide
|
||||
2
externals/xbyak/sample/cpuid/tgl.txt
vendored
2
externals/xbyak/sample/cpuid/tgl.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq avx512_vp2intersect clflushopt movdiri movdir64b
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq avx512_vp2intersect clflushopt clwb movdiri movdir64b aeskle wide_kl keylocker keylocker_wide
|
||||
|
|
|
|||
2
externals/xbyak/sample/cpuid/tmp.txt
vendored
2
externals/xbyak/sample/cpuid/tmp.txt
vendored
|
|
@ -1,2 +0,0 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx512f avx512dq avx512_ifma avx512cd avx512bw avx512vl avx512_vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq avx512_bf16 avx512_vp2intersect amx(tile) amx(int8) amx(bf16) avx_vnni avx512_fp16 waitpkg clflushopt cldemote movdiri movdir64b
|
||||
2
externals/xbyak/sample/cpuid/tnt.txt
vendored
2
externals/xbyak/sample/cpuid/tnt.txt
vendored
|
|
@ -1,2 +1,2 @@
|
|||
vendor intel
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq enh_rep rdrand rdseed smap sha movbe clflushopt
|
||||
mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp xsave(xgetvb) osxsave pclmulqdq enh_rep rdrand rdseed smap sha movbe gfni clflushopt cldemote clwb
|
||||
|
|
|
|||
10
externals/xbyak/sample/cpuid/update-txt.sh
vendored
10
externals/xbyak/sample/cpuid/update-txt.sh
vendored
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
make -C ../ test_util64
|
||||
|
||||
cpus=(p4p mrm pnr nhm wsm snb ivb hsw bdw slt slm glm glp tnt skl cnl icl skx clx cpx icx knl knm tgl adl spr)
|
||||
for cpu in ${cpus[@]} ; do
|
||||
echo $cpu
|
||||
~/bin/sde -$cpu -- ../test_util64 -cpuid > $cpu.txt
|
||||
done
|
||||
|
||||
25
externals/xbyak/sample/no_flags.cpp
vendored
Normal file
25
externals/xbyak/sample/no_flags.cpp
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#include <stdio.h>
|
||||
#include <xbyak/xbyak.h>
|
||||
|
||||
struct Code : Xbyak::CodeGenerator {
|
||||
Code(bool nf) {
|
||||
xor_(eax, eax); // CF = 0
|
||||
mov(eax, -1);
|
||||
if (nf) {
|
||||
puts("no flags (with T_nf)");
|
||||
add(eax|T_nf, eax, 1); // does not change CF
|
||||
} else {
|
||||
puts("change flags (without T_nf)");
|
||||
add(eax, eax, 1); // CF = 1
|
||||
}
|
||||
adc(eax, 0); // eax = CF ? 1 : 0
|
||||
ret();
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
Code c(i);
|
||||
printf("i=%d ret=%d\n", i, c.getCode<int(*)()>()());
|
||||
}
|
||||
}
|
||||
21
externals/xbyak/sample/test_util.cpp
vendored
21
externals/xbyak/sample/test_util.cpp
vendored
|
|
@ -31,12 +31,14 @@ void putCPUinfo(bool onlyCpuidFeature)
|
|||
{ Cpu::tSSSE3, "ssse3" },
|
||||
{ Cpu::tSSE41, "sse41" },
|
||||
{ Cpu::tSSE42, "sse42" },
|
||||
{ Cpu::tSSE4a, "sse4a" },
|
||||
{ Cpu::tPOPCNT, "popcnt" },
|
||||
{ Cpu::t3DN, "3dn" },
|
||||
{ Cpu::tE3DN, "e3dn" },
|
||||
{ Cpu::tAESNI, "aesni" },
|
||||
{ Cpu::tRDTSCP, "rdtscp" },
|
||||
{ Cpu::tOSXSAVE, "osxsave(xgetvb)" },
|
||||
{ Cpu::tXSAVE, "xsave(xgetvb)" },
|
||||
{ Cpu::tOSXSAVE, "osxsave" },
|
||||
{ Cpu::tPCLMULQDQ, "pclmulqdq" },
|
||||
{ Cpu::tAVX, "avx" },
|
||||
{ Cpu::tFMA, "fma" },
|
||||
|
|
@ -86,8 +88,11 @@ void putCPUinfo(bool onlyCpuidFeature)
|
|||
{ Cpu::tWAITPKG, "waitpkg" },
|
||||
{ Cpu::tCLFLUSHOPT, "clflushopt" },
|
||||
{ Cpu::tCLDEMOTE, "cldemote" },
|
||||
{ Cpu::tCLWB, "clwb" },
|
||||
{ Cpu::tMOVDIRI, "movdiri" },
|
||||
{ Cpu::tMOVDIR64B, "movdir64b" },
|
||||
{ Cpu::tUINTR, "uintr" },
|
||||
{ Cpu::tSERIALIZE, "serialize" },
|
||||
{ Cpu::tCLZERO, "clzero" },
|
||||
{ Cpu::tAMX_FP16, "amx_fp16" },
|
||||
{ Cpu::tAVX_VNNI_INT8, "avx_vnni_int8" },
|
||||
|
|
@ -96,12 +101,25 @@ void putCPUinfo(bool onlyCpuidFeature)
|
|||
{ Cpu::tRAO_INT, "rao-int" },
|
||||
{ Cpu::tCMPCCXADD, "cmpccxadd" },
|
||||
{ Cpu::tPREFETCHITI, "prefetchiti" },
|
||||
{ Cpu::tSHA512, "sha512" },
|
||||
{ Cpu::tSM3, "sm3" },
|
||||
{ Cpu::tSM4, "sm4" },
|
||||
{ Cpu::tAVX_VNNI_INT16, "avx_vnni_int16" },
|
||||
{ Cpu::tAPX_F, "apx_f" },
|
||||
{ Cpu::tAVX10, "avx10" },
|
||||
{ Cpu::tAESKLE, "aeskle" },
|
||||
{ Cpu::tWIDE_KL, "wide_kl" },
|
||||
{ Cpu::tKEYLOCKER, "keylocker" },
|
||||
{ Cpu::tKEYLOCKER_WIDE, "keylocker_wide" },
|
||||
};
|
||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||
if (cpu.has(tbl[i].type)) printf(" %s", tbl[i].str);
|
||||
}
|
||||
printf("\n");
|
||||
if (onlyCpuidFeature) return;
|
||||
if (cpu.has(Cpu::tAVX10)) {
|
||||
printf("AVX10 version %d\n", cpu.getAVX10version());
|
||||
}
|
||||
if (cpu.has(Cpu::tPOPCNT)) {
|
||||
const int n = 0x12345678; // bitcount = 13
|
||||
const int ok = 13;
|
||||
|
|
@ -127,7 +145,6 @@ void putCPUinfo(bool onlyCpuidFeature)
|
|||
Core i7-3930K 6 2D
|
||||
*/
|
||||
cpu.putFamily();
|
||||
if (!cpu.has(Cpu::tINTEL)) return;
|
||||
for (unsigned int i = 0; i < cpu.getDataCacheLevels(); i++) {
|
||||
printf("cache level=%u data cache size=%u cores sharing data cache=%u\n", i, cpu.getDataCacheSize(i), cpu.getCoresSharingDataCache(i));
|
||||
}
|
||||
|
|
|
|||
48
externals/xbyak/sample/zero_upper.cpp
vendored
Normal file
48
externals/xbyak/sample/zero_upper.cpp
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
An example of T_zu (zero upper) flag
|
||||
> g++ zero_upper.cpp -I ../xbyak
|
||||
> sde -future -- ./a.out
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <xbyak/xbyak.h>
|
||||
|
||||
using namespace Xbyak;
|
||||
|
||||
struct Code : Xbyak::CodeGenerator {
|
||||
Code(int mode)
|
||||
{
|
||||
mov(eax, 0x12345678);
|
||||
cmp(eax, eax); // ZF=1
|
||||
switch (mode) {
|
||||
case 0: // imul
|
||||
puts("imul");
|
||||
imul(ax,ax, 0x1234);
|
||||
break;
|
||||
case 1: // imul+zu
|
||||
puts("imul+zu");
|
||||
imul(ax|T_zu, ax, 0x1234);
|
||||
break;
|
||||
case 2: // setz
|
||||
puts("setz");
|
||||
setz(al);
|
||||
break;
|
||||
case 3: // setz+zu
|
||||
puts("setz+zu");
|
||||
setz(al|T_zu);
|
||||
break;
|
||||
}
|
||||
ret();
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
try
|
||||
{
|
||||
for (int mode = 0; mode < 4; mode++) {
|
||||
Code c(mode);
|
||||
auto f = c.getCode<int (*)()>();
|
||||
printf("ret=%08x\n", f());
|
||||
}
|
||||
} catch (std::exception& e) {
|
||||
printf("ERR %s\n", e.what());
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue