Merge branch 'busykai-allow-mem-in-tilecfg' into dev
diff --git a/test/dataset/amx.txt b/test/dataset/amx.txt
index bc50a7f..2946756 100644
--- a/test/dataset/amx.txt
+++ b/test/dataset/amx.txt
@@ -1,7 +1,9 @@
 ldtilecfg(ptr[rax + rcx * 4 + 64]);
 ldtilecfg(ptr [r30+r29*4+0x12]);
+ldtilecfg(ptr [rax]);
 sttilecfg(ptr[rsp + rax * 8 + 128]);
 sttilecfg(ptr [r30+r29*4+0x12]);
+sttilecfg(ptr [r30]);
 tileloadd(tmm3, ptr[rdi + rdx * 2 + 8]);
 tileloadd(tmm2, ptr [r30+r29*4+0x12]);
 tileloaddt1(tmm4, ptr[r8 + r9 + 32]);
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index 2f1f6b7..5f06145 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -2787,10 +2787,12 @@
 #ifdef XBYAK64
 	void opAMX(const Tmm& t1, const Address& addr, uint64_t type, int code)
 	{
-		// require both base and index
 		Address addr2 = addr.cloneNoOptimize();
-		const RegExp exp = addr2.getRegExp();
-		if (exp.getBase().getBit() == 0 || exp.getIndex().getBit() == 0) XBYAK_THROW(ERR_NOT_SUPPORTED)
+		// require both base and index for all but opcode 0x49 (ldtilecfg/sttilecfg)
+		if (code != 0x49) {
+			const RegExp exp = addr2.getRegExp();
+			if (exp.getBase().getBit() == 0 || exp.getIndex().getBit() == 0) XBYAK_THROW(ERR_NOT_SUPPORTED)
+		}
 		if (opROO(Reg(), addr2, t1, T_APX|type, code)) return;
 		opVex(t1, &tmm0, addr2, type, code);
 	}