aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <[email protected]>2021-05-10 09:22:26 +0900
committerMITSUNARI Shigeo <[email protected]>2021-05-10 09:22:26 +0900
commita34850b2df66a186c8d947b4d72acc839926321f (patch)
treec66636495bd83c95620a103c7eabd936066ac0a1
parent590c10e3746978dbfcf102d6da933ac2659e4544 (diff)
downloadxbyak-a34850b2df66a186c8d947b4d72acc839926321f.tar.gz
xbyak-a34850b2df66a186c8d947b4d72acc839926321f.zip
add endbr32 and endbr64v5.992
-rw-r--r--gen/gen_code.cpp4
-rw-r--r--readme.md3
-rw-r--r--readme.txt3
-rw-r--r--xbyak/xbyak.h2
-rw-r--r--xbyak/xbyak_mnemonic.h4
5 files changed, 12 insertions, 4 deletions
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index 90f2967..f3b23e8 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -26,6 +26,7 @@ struct GenericTbl {
uint8_t code1;
uint8_t code2;
uint8_t code3;
+ uint8_t code4;
};
void putGeneric(const GenericTbl *p, size_t n)
@@ -34,6 +35,7 @@ void putGeneric(const GenericTbl *p, size_t n)
printf("void %s() { db(0x%02X); ", p->name, p->code1);
if (p->code2) printf("db(0x%02X); ", p->code2);
if (p->code3) printf("db(0x%02X); ", p->code3);
+ if (p->code4) printf("db(0x%02X); ", p->code4);
printf("}\n");
p++;
}
@@ -661,6 +663,8 @@ void put()
{ "cmpsb", 0xA6 },
{ "cmpsw", 0x66, 0xA7 },
{ "cmpsd", 0xA7 },
+ { "endbr32", 0xF3, 0x0F, 0x1E, 0xFB },
+ { "endbr64", 0xF3, 0x0F, 0x1E, 0xFA },
{ "int3", 0xCC },
{ "scasb", 0xAE },
{ "scasw", 0x66, 0xAF },
diff --git a/readme.md b/readme.md
index d9aaa6a..a67e8e9 100644
--- a/readme.md
+++ b/readme.md
@@ -1,6 +1,6 @@
[![Build Status](https://github.com/herumi/xbyak/actions/workflows/main.yml/badge.svg)](https://github.com/herumi/xbyak/actions/workflows/main.yml)
-# Xbyak 5.991 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
+# Xbyak 5.992 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
## Abstract
@@ -446,6 +446,7 @@ modified new BSD License
http://opensource.org/licenses/BSD-3-Clause
## History
+* 2021/May/09 ver 5.992 support endbr32 and endbr64
* 2020/Nov/16 ver 5.991 disable constexpr for gcc-5 with -std=c++-14
* 2020/Oct/19 ver 5.99 support VNNI instructions(Thanks to akharito)
* 2020/Oct/17 ver 5.98 support the form of [scale * reg]
diff --git a/readme.txt b/readme.txt
index d49bccc..822d665 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
- C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.991
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.992
-----------------------------------------------------------------------------
◎概要
@@ -382,6 +382,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から
-----------------------------------------------------------------------------
◎履歴
+2021/05/09 ver 5.992 endbr32とendbr64のサポート
2020/11/16 ver 5.991 g++-5のC++14でconstexpr機能の抑制
2020/10/19 ver 5.99 VNNI命令サポート(Thanks to akharito)
2020/10/17 ver 5.98 [scale * reg]のサポート
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index bc0d71f..bf92ae4 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -138,7 +138,7 @@ namespace Xbyak {
enum {
DEFAULT_MAX_CODE_SIZE = 4096,
- VERSION = 0x5991 /* 0xABCD = A.BC(D) */
+ VERSION = 0x5992 /* 0xABCD = A.BC(D) */
};
#ifndef MIE_INTEGER_TYPE_DEFINED
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index 5c1ecff..be9bbbf 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -1,4 +1,4 @@
-const char *getVersionString() const { return "5.991"; }
+const char *getVersionString() const { return "5.992"; }
void adc(const Operand& op, uint32_t imm) { opRM_I(op, imm, 0x10, 2); }
void adc(const Operand& op1, const Operand& op2) { opRM_RM(op1, op2, 0x10); }
void adcx(const Reg32e& reg, const Operand& op) { opGen(reg, op, 0xF6, 0x66, isREG32_REG32orMEM, NONE, 0x38); }
@@ -172,6 +172,8 @@ void divss(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x5E, 0xF3, isXMM
void dppd(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x41, 0x66, isXMM_XMMorMEM, static_cast<uint8_t>(imm), 0x3A); }
void dpps(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x40, 0x66, isXMM_XMMorMEM, static_cast<uint8_t>(imm), 0x3A); }
void emms() { db(0x0F); db(0x77); }
+void endbr32() { db(0xF3); db(0x0F); db(0x1E); db(0xFB); }
+void endbr64() { db(0xF3); db(0x0F); db(0x1E); db(0xFA); }
void enter(uint16_t x, uint8_t y) { db(0xC8); dw(x); db(y); }
void extractps(const Operand& op, const Xmm& xmm, uint8_t imm) { opExt(op, xmm, 0x17, imm); }
void f2xm1() { db(0xD9); db(0xF0); }