Merge branch 'dev'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6ba06a0..2b4a996 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.10)
-project(xbyak LANGUAGES CXX VERSION 7.29.2)
+project(xbyak LANGUAGES CXX VERSION 7.30)
file(GLOB headers xbyak/*.h)
diff --git a/doc/changelog.md b/doc/changelog.md
index c549008..98588b6 100644
--- a/doc/changelog.md
+++ b/doc/changelog.md
@@ -1,5 +1,6 @@
# History
+* 2025/Sep/02 ver 7.30 add tcvtrowd2ps
* 2025/Aug/22 ver 7.29.2 add override specifiers to virtual methods
* 2025/Aug/16 ver 7.29.1 support ptr[integer value]
* 2025/Aug/15 ver 7.29 support addressing with label
diff --git a/doc/usage.md b/doc/usage.md
index 81e9483..2b3a04d 100644
--- a/doc/usage.md
+++ b/doc/usage.md
@@ -28,6 +28,8 @@
printf("ret=%d\n", f()); // ret = 5
```
+**Note**: For security considerations and memory protection modes, see the [Read/Exec mode](#readexec-mode) section.
+
## Syntax
The syntax is similar to MASM/NASM, but uses parentheses for function-like expressions.
diff --git a/gen/gen_avx512.cpp b/gen/gen_avx512.cpp
index 741473c..a63ca36 100644
--- a/gen/gen_avx512.cpp
+++ b/gen/gen_avx512.cpp
@@ -1130,6 +1130,8 @@
uint8_t code;
bool imm;
} tbl[] = {
+ { "tcvtrowd2ps", T_F3|T_0F38|T_MUST_EVEX|T_W0, 0x4A, false },
+ { "tcvtrowd2ps", T_F3|T_0F3A|T_MUST_EVEX|T_W0, 0x07, true },
{ "tcvtrowps2bf16h", T_F2|T_0F38|T_MUST_EVEX|T_W0, 0x6D, false },
{ "tcvtrowps2bf16h", T_F2|T_0F3A|T_MUST_EVEX|T_W0, 0x07, true },
{ "tcvtrowps2bf16l", T_F3|T_0F38|T_MUST_EVEX|T_W0, 0x6D, false },
diff --git a/meson.build b/meson.build
index 829f5ec..6dae88b 100644
--- a/meson.build
+++ b/meson.build
@@ -5,7 +5,7 @@
project(
'xbyak',
'cpp',
- version: '7.29.2',
+ version: '7.30',
license: 'BSD-3-Clause',
default_options: 'b_ndebug=if-release'
)
diff --git a/readme.md b/readme.md
index fc8db3e..b06db66 100644
--- a/readme.md
+++ b/readme.md
@@ -1,5 +1,5 @@
-# Xbyak 7.29.2 [![Badge Build]][Build Status]
+# Xbyak 7.30 [![Badge Build]][Build Status]
*A JIT assembler for x86/x64 architectures supporting advanced instruction sets up to AVX10.2*
diff --git a/readme.txt b/readme.txt
index e2bb87f..a25125a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
- C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 7.29.2
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 7.30
-----------------------------------------------------------------------------
◎概要
@@ -404,6 +404,7 @@
-----------------------------------------------------------------------------
◎履歴
+2025/09/02 ver 7.30 tcvtrowd2ps追加
2025/08/22 ver 7.29.2 override属性追加
2025/08/16 ver 7.29.1 ptr[整数] 形式のサポート
2025/08/15 ver 7.29 アドレッシングでラベルサポート
diff --git a/sample/cpuid/cpuid.sh b/sample/cpuid/cpuid.sh
index 62e4444..27a8f5b 100755
--- a/sample/cpuid/cpuid.sh
+++ b/sample/cpuid/cpuid.sh
@@ -11,7 +11,7 @@
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 tgl adl mtl rpl spr emr gnr gnr256 dmr srf arl lnl ptl cwf)
+cpus=(p4p mrm pnr nhm wsm snb ivb hsw bdw slt slm glm glp tnt skl cnl icl skx clx cpx icx tgl adl mtl rpl spr emr gnr dmr srf arl lnl ptl cwf)
for cpu in ${cpus[@]} ; do
echo $cpu
diff --git a/sample/cpuid/gnr256.txt b/sample/cpuid/gnr256.txt
deleted file mode 100644
index 8194f1c..0000000
--- a/sample/cpuid/gnr256.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-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 amx(tile) amx(int8) amx(bf16) avx_vnni waitpkg clflushopt cldemote clwb movdiri movdir64b uintr serialize amx_fp16 prefetchiti avx10
diff --git a/test/dataset/amx.txt b/test/dataset/amx.txt
index 2946756..bfe57fc 100644
--- a/test/dataset/amx.txt
+++ b/test/dataset/amx.txt
@@ -90,3 +90,5 @@
ttransposed(tmm1, tmm2);
+tcvtrowd2ps(zmm20, tmm1, r30d);
+tcvtrowd2ps(zmm20, tmm1, 0x12);
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index 0cdc27a..81f08d2 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -163,7 +163,7 @@
enum {
DEFAULT_MAX_CODE_SIZE = 4096,
- VERSION = 0x7292 /* 0xABCD = A.BC(.D) */
+ VERSION = 0x7300 /* 0xABCD = A.BC(.D) */
};
#ifndef MIE_INTEGER_TYPE_DEFINED
@@ -386,11 +386,6 @@
#endif
}
-template<class To, class From>
-inline const To CastTo(From p) XBYAK_NOEXCEPT
-{
- return (const To)(size_t)(p);
-}
namespace inner {
#ifdef _WIN32
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index c677997..5f75098 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -1,4 +1,4 @@
-const char *getVersionString() const { return "7.29.2"; }
+const char *getVersionString() const { return "7.30"; }
void aadd(const Address& addr, const Reg32e ®) { opMR(addr, reg, T_0F38, 0x0FC, T_APX); }
void aand(const Address& addr, const Reg32e ®) { opMR(addr, reg, T_0F38|T_66, 0x0FC, T_APX|T_66); }
void adc(const Operand& op, uint32_t imm) { opOI(op, imm, 0x10, 2); }
@@ -2685,6 +2685,8 @@
void vucomxss(const Xmm& x, const Operand& op) { opAVX_X_XM_IMM(x, op, T_N4|T_F3|T_0F|T_W0|T_SAE_X|T_MUST_EVEX, 0x2E); }
#ifdef XBYAK64
void kmovq(const Reg64& r, const Opmask& k) { opKmov(k, r, true, 64); }
+void tcvtrowd2ps(const Zmm& z, const Tmm& t, const Reg32& r) { opVex(z, &r, t, T_F3|T_0F38|T_W0|T_MUST_EVEX, 0x4A); }
+void tcvtrowd2ps(const Zmm& z, const Tmm& t, uint8_t imm) { opVex(z, 0, t, T_F3|T_0F3A|T_W0|T_MUST_EVEX, 0x07, imm); }
void tcvtrowps2bf16h(const Zmm& z, const Tmm& t, const Reg32& r) { opVex(z, &r, t, T_F2|T_0F38|T_W0|T_MUST_EVEX, 0x6D); }
void tcvtrowps2bf16h(const Zmm& z, const Tmm& t, uint8_t imm) { opVex(z, 0, t, T_F2|T_0F3A|T_W0|T_MUST_EVEX, 0x07, imm); }
void tcvtrowps2bf16l(const Zmm& z, const Tmm& t, const Reg32& r) { opVex(z, &r, t, T_F3|T_0F38|T_W0|T_MUST_EVEX, 0x6D); }
diff --git a/xbyak/xbyak_util.h b/xbyak/xbyak_util.h
index 90364e6..3cee6c1 100644
--- a/xbyak/xbyak_util.h
+++ b/xbyak/xbyak_util.h
@@ -114,6 +114,10 @@
CPU detection class
@note static inline const member is supported by c++17 or later, so use template hack
*/
+#ifdef _MSC_VER
+ #pragma warning(push)
+ #pragma warning(disable : 4459)
+#endif
class Cpu {
public:
class Type {
@@ -752,6 +756,9 @@
}
int getAVX10version() const { return avx10version_; }
};
+#ifdef _MSC_VER
+ #pragma warning(pop)
+#endif
#ifndef XBYAK_ONLY_CLASS_CPU
class Clock {