|
From: <sv...@va...> - 2009-04-15 05:24:04
|
Author: njn
Date: 2009-04-15 06:23:52 +0100 (Wed, 15 Apr 2009)
New Revision: 9542
Log:
Using -mdynamic-no-pic to compile all of Valgrind, except the preloaded shared
objects. (Most of the tests aren't compiled with it, though). This makes
things significantly faster in some cases, as shown by the vg_perf results:
-- bz2 --
bz2 ws5 :1.21s no: 4.5s ( 3.7x, -----) me:14.9s (12.4x, -----) ca:58.5s (48.3x, -----) ma: 4.8s ( 4.0x, -----)
bz2 ws4 :1.21s no: 4.5s ( 3.7x, 0.0%) me:15.3s (12.7x, -2.4%) ca:52.0s (43.0x, 11.1%) ma: 4.8s ( 3.9x, 1.9%)
-- fbench --
fbench ws5 :0.47s no: 2.8s ( 5.9x, -----) me:13.6s (28.9x, -----) ca:13.5s (28.7x, -----) ma: 2.6s ( 5.6x, -----)
fbench ws4 :0.47s no: 2.5s ( 5.2x, 12.2%) me:10.3s (22.0x, 23.7%) ca:12.5s (26.6x, 7.3%) ma: 2.5s ( 5.3x, 6.1%)
-- ffbench --
ffbench ws5 :0.33s no: 1.5s ( 4.6x, -----) me:11.5s (34.9x, -----) ca:14.0s (42.5x, -----) ma: 1.6s ( 4.8x, -----)
ffbench ws4 :0.33s no: 1.5s ( 4.6x, 0.7%) me: 7.2s (21.9x, 37.4%) ca:13.6s (41.2x, 3.2%) ma: 1.8s ( 5.5x,-13.8%)
-- heap --
heap ws5 :0.33s no: 2.7s ( 8.1x, -----) me:11.2s (33.9x, -----) ca:25.8s (78.0x, -----) ma:10.3s (31.4x, -----)
heap ws4 :0.33s no: 2.2s ( 6.6x, 18.3%) me:10.2s (30.9x, 9.0%) ca:24.1s (73.1x, 6.3%) ma: 8.7s (26.2x, 16.4%)
-- sarp --
sarp ws5 :0.05s no: 0.4s ( 8.6x, -----) me: 3.7s (73.6x, -----) ca: 3.7s (74.2x, -----) ma: 0.5s ( 9.2x, -----)
sarp ws4 :0.05s no: 0.4s ( 7.6x, 11.6%) me: 5.3s (106.0x,-44.0%) ca: 3.4s (68.0x, 8.4%) ma: 0.4s ( 8.8x, 4.3%)
-- tinycc --
tinycc ws5 :0.41s no: 3.7s ( 9.0x, -----) me:17.4s (42.3x, -----) ca:31.3s (76.4x, -----) ma: 5.3s (12.8x, -----)
tinycc ws4 :0.41s no: 3.5s ( 8.6x, 4.6%) me:17.1s (41.7x, 1.4%) ca:29.7s (72.4x, 5.2%) ma: 4.9s (11.9x, 7.4%)
I also used -mdynamic-no-pic on some of the previously-not-compiling asm
tests, and reverted a previous insn_*.c generator commit (r9315) to use %ebx
again.
Modified:
branches/DARWIN/Makefile.flags.am
branches/DARWIN/Makefile.tool.am
branches/DARWIN/coregrind/Makefile.am
branches/DARWIN/memcheck/Makefile.am
branches/DARWIN/memcheck/tests/x86/Makefile.am
branches/DARWIN/none/tests/x86/Makefile.am
branches/DARWIN/none/tests/x86/gen_insn_test.pl
branches/DARWIN/none/tests/x86/insn_basic.def
Modified: branches/DARWIN/Makefile.flags.am
===================================================================
--- branches/DARWIN/Makefile.flags.am 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/Makefile.flags.am 2009-04-15 05:23:52 UTC (rev 9542)
@@ -11,12 +11,11 @@
# stack traces, since users often see stack traces extending
# into (and through) the preloads.
if VGCONF_OS_IS_DARWIN
-AM_PIC_FLAG = -dynamic
+AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing -mno-dynamic-no-pic
else
-AM_PIC_FLAG = -fpic
+AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing
endif
-AM_CFLAGS_PIC = $(AM_PIC_FLAG) -O -g -fno-omit-frame-pointer -fno-strict-aliasing
# Flags for specific targets.
# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs.
@@ -81,7 +80,8 @@
-DVGO_darwin=1 \
-DVGP_x86_darwin=1
AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \
- -mmacosx-version-min=10.5 -fno-stack-protector
+ -mmacosx-version-min=10.5 -fno-stack-protector \
+ -mdynamic-no-pic
# GrP fixme -O0 for debugging goes here; -O3 crashes
# [Nb: that comment was from when we had -gstabs here instead of -g]
AM_CCASFLAGS_X86_DARWIN = $(add_includes_x86_darwin) -arch i386 -g -O0
Modified: branches/DARWIN/Makefile.tool.am
===================================================================
--- branches/DARWIN/Makefile.tool.am 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/Makefile.tool.am 2009-04-15 05:23:52 UTC (rev 9542)
@@ -156,7 +156,7 @@
TOOL_LDADD_X86_DARWIN = $(COREGRIND_LIBS_X86_DARWIN) $(TOOL_LDADD_COMMON)
TOOL_LDFLAGS_X86_DARWIN = \
- $(TOOL_LDFLAGS_COMMON_DARWIN) -arch i386 -mdynamic-no-pic \
+ $(TOOL_LDFLAGS_COMMON_DARWIN) -arch i386 \
-Wl,-seg1addr,0xf0080000 \
-Wl,-stack_addr,0xf0080000 -Wl,-stack_size,0x80000 \
-Wl,-pagezero_size,0xf0000000
Modified: branches/DARWIN/coregrind/Makefile.am
===================================================================
--- branches/DARWIN/coregrind/Makefile.am 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/coregrind/Makefile.am 2009-04-15 05:23:52 UTC (rev 9542)
@@ -485,37 +485,37 @@
libreplacemalloc_toolpreload_x86_linux_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_x86_linux_a_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
-libreplacemalloc_toolpreload_x86_linux_a_CFLAGS = $(AM_CFLAGS_X86_LINUX) -fpic -fno-omit-frame-pointer
+libreplacemalloc_toolpreload_x86_linux_a_CFLAGS = $(AM_CFLAGS_X86_LINUX) $(AM_CFLAGS_PIC)
libreplacemalloc_toolpreload_amd64_linux_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_amd64_linux_a_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX)
-libreplacemalloc_toolpreload_amd64_linux_a_CFLAGS = $(AM_CFLAGS_AMD64_LINUX) -fpic -fno-omit-frame-pointer
+libreplacemalloc_toolpreload_amd64_linux_a_CFLAGS = $(AM_CFLAGS_AMD64_LINUX) $(AM_CFLAGS_PIC)
libreplacemalloc_toolpreload_ppc32_linux_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_ppc32_linux_a_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX)
-libreplacemalloc_toolpreload_ppc32_linux_a_CFLAGS = $(AM_CFLAGS_PPC32_LINUX) -fpic -fno-omit-frame-pointer
+libreplacemalloc_toolpreload_ppc32_linux_a_CFLAGS = $(AM_CFLAGS_PPC32_LINUX) $(AM_CFLAGS_PIC)
libreplacemalloc_toolpreload_ppc64_linux_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_ppc64_linux_a_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX)
-libreplacemalloc_toolpreload_ppc64_linux_a_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) -fpic -fno-omit-frame-pointer
+libreplacemalloc_toolpreload_ppc64_linux_a_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) $(AM_CFLAGS_PIC)
libreplacemalloc_toolpreload_ppc32_aix5_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_ppc32_aix5_a_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5)
-libreplacemalloc_toolpreload_ppc32_aix5_a_CFLAGS = $(AM_CFLAGS_PPC32_AIX5) -fpic -fno-omit-frame-pointer
+libreplacemalloc_toolpreload_ppc32_aix5_a_CFLAGS = $(AM_CFLAGS_PPC32_AIX5) $(AM_CFLAGS_PIC)
libreplacemalloc_toolpreload_ppc32_aix5_a_AR = $(AR) -X32 cru
libreplacemalloc_toolpreload_ppc64_aix5_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_ppc64_aix5_a_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5)
-libreplacemalloc_toolpreload_ppc64_aix5_a_CFLAGS = $(AM_CFLAGS_PPC64_AIX5) -fpic -fno-omit-frame-pointer
+libreplacemalloc_toolpreload_ppc64_aix5_a_CFLAGS = $(AM_CFLAGS_PPC64_AIX5) $(AM_CFLAGS_PIC)
libreplacemalloc_toolpreload_ppc64_aix5_a_AR = $(AR) -X64 cru
libreplacemalloc_toolpreload_x86_darwin_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_x86_darwin_a_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
-libreplacemalloc_toolpreload_x86_darwin_a_CFLAGS = $(AM_CFLAGS_X86_DARWIN)
+libreplacemalloc_toolpreload_x86_darwin_a_CFLAGS = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PIC)
libreplacemalloc_toolpreload_amd64_darwin_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_amd64_darwin_a_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
-libreplacemalloc_toolpreload_amd64_darwin_a_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN)
+libreplacemalloc_toolpreload_amd64_darwin_a_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PIC)
m_dispatch/dispatch-x86-linux.S: libvex_guest_offsets.h
m_dispatch/dispatch-amd64-linux.S: libvex_guest_offsets.h
Modified: branches/DARWIN/memcheck/Makefile.am
===================================================================
--- branches/DARWIN/memcheck/Makefile.am 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/memcheck/Makefile.am 2009-04-15 05:23:52 UTC (rev 9542)
@@ -161,7 +161,7 @@
memcheck_x86_darwin_SOURCES = $(MEMCHECK_SOURCES_COMMON)
memcheck_x86_darwin_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
-memcheck_x86_darwin_CFLAGS = $(AM_CFLAGS_X86_DARWIN) -O2 -mdynamic-no-pic
+memcheck_x86_darwin_CFLAGS = $(AM_CFLAGS_X86_DARWIN) -O2
memcheck_x86_darwin_CCASFLAGS = $(AM_CCASFLAGS_X86_DARWIN)
memcheck_x86_darwin_DEPENDENCIES = $(COREGRIND_LIBS_X86_DARWIN)
memcheck_x86_darwin_LDADD = $(TOOL_LDADD_X86_DARWIN)
Modified: branches/DARWIN/memcheck/tests/x86/Makefile.am
===================================================================
--- branches/DARWIN/memcheck/tests/x86/Makefile.am 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/memcheck/tests/x86/Makefile.am 2009-04-15 05:23:52 UTC (rev 9542)
@@ -32,6 +32,7 @@
fprem \
fxsave \
pushfw_x86 \
+ pushpopmem \
sse_memory \
xor-undef-x86
@@ -42,7 +43,6 @@
int3-x86 \
more_x86_fp \
pushfpopf \
- pushpopmem \
tronical
endif
@@ -50,9 +50,11 @@
AM_CXXFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE)
AM_CCASFLAGS = @FLAG_M32@
-# must be built with these flags -- bug only occurred with them
+
+# fpeflags must use these flags -- bug only occurred with them.
fpeflags_CFLAGS = $(AM_CFLAGS) -march=i686
pushfpopf_SOURCES = pushfpopf_c.c pushfpopf_s.s
+pushpopmem_CFLAGS = $(AM_CFLAGS) -mdynamic-no-pic
tronical_SOURCES = tronical.S
more_x86_fp_LDADD = -lm
Modified: branches/DARWIN/none/tests/x86/Makefile.am
===================================================================
--- branches/DARWIN/none/tests/x86/Makefile.am 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/none/tests/x86/Makefile.am 2009-04-15 05:23:52 UTC (rev 9542)
@@ -26,8 +26,7 @@
bug132813-x86.stderr.exp bug132813-x86.stdout.exp bug132813-x86.vgtest \
bug135421-x86.stderr.exp bug135421-x86.stdout.exp bug135421-x86.vgtest \
bug137714-x86.stderr.exp bug137714-x86.stdout.exp bug137714-x86.vgtest \
- bug152818-x86.vgtest bug152818-x86.stdout.exp \
- bug152818-x86.stderr.exp \
+ bug152818-x86.stderr.exp bug152818-x86.stdout.exp bug152818-x86.vgtest \
cmpxchg8b.stderr.exp cmpxchg8b.stdout.exp cmpxchg8b.vgtest \
cpuid.stderr.exp cpuid.stdout.exp cpuid.vgtest \
cse_fail.stderr.exp cse_fail.stdout.exp cse_fail.vgtest \
@@ -62,9 +61,11 @@
bt_everything \
bt_literal \
bug126147-x86 \
+ bug125959-x86 \
bug132813-x86 \
bug135421-x86 \
bug137714-x86 \
+ bug152818-x86 \
cmpxchg8b \
cse_fail \
fcmovnu \
@@ -90,8 +91,6 @@
# be moved into x86-linux/.
if ! VGCONF_OS_IS_DARWIN
check_PROGRAMS += \
- bug125959-x86 \
- bug152818-x86 \
cpuid \
faultstatus \
seg_override \
@@ -102,10 +101,17 @@
AM_CXXFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE)
AM_CCASFLAGS = @FLAG_M32@
+# Some of the tests (bug125959_x86, bug152818_x86, insn_*) need
+# -mdynamic-no-pic. I tried setting *_CFLAGS separately for all of them,
+# but it caused problems with the generation of insn_*.c. So just use this
+# crude approach of setting -mdynamic-no-pic for all tests in this
+# directory.
+if VGCONF_OS_IS_DARWIN
+AM_CFLAGS += -mdynamic-no-pic
+endif
-# generic C ones
cpuid_SOURCES = cpuid_c.c cpuid_s.s
-# fpu_lazy_eflags must use these flags -- the bug only occurred with them
+# fpu_lazy_eflags must use these flags -- the bug only occurred with them.
fpu_lazy_eflags_CFLAGS = @FLAG_M32@ -O2 -march=pentiumpro
fxtract_LDADD = -lm
insn_basic_SOURCES = insn_basic.def
@@ -124,6 +130,8 @@
insn_sse2_LDADD = -lm
insn_sse3_SOURCES = insn_sse3.def
insn_sse3_LDADD = -lm
+insn_ssse3_SOURCES = insn_ssse3.def
+insn_ssse3_LDADD = -lm
yield_LDADD = -lpthread
.def.c: $(srcdir)/gen_insn_test.pl
Modified: branches/DARWIN/none/tests/x86/gen_insn_test.pl
===================================================================
--- branches/DARWIN/none/tests/x86/gen_insn_test.pl 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/none/tests/x86/gen_insn_test.pl 2009-04-15 05:23:52 UTC (rev 9542)
@@ -48,36 +48,34 @@
);
our %RegNums = (
- # We avoid using %ebx and %bx because %ebx is the PIC
- # register on Darwin and so cannot be clobbered.
al => 0, ax => 0, eax => 0,
- cl => 1, cx => 1, ecx => 1,
- dl => 2, dx => 2, edx => 2,
- bl => 3, si => 3, esi => 3,
+ bl => 1, bx => 1, ebx => 1,
+ cl => 2, cx => 2, ecx => 2,
+ dl => 3, dx => 3, edx => 3,
ah => 4,
- ch => 5,
- dh => 6,
- bh => 7,
+ bh => 5,
+ ch => 6,
+ dh => 7,
st0 => 0, st1 => 1, st2 => 2, st3 => 3,
st4 => 4, st5 => 5, st6 => 6, st7 => 7
);
our %RegTypes = (
al => "r8", ah => "r8", ax => "r16", eax => "r32",
+ bl => "r8", bh => "r8", bx => "r16", ebx => "r32",
cl => "r8", ch => "r8", cx => "r16", ecx => "r32",
- dl => "r8", dh => "r8", dx => "r16", edx => "r32",
- bl => "r8", bh => "r8", si => "r16", esi => "r32"
+ dl => "r8", dh => "r8", dx => "r16", edx => "r32"
);
our @IntRegs = (
{ r8 => "al", r16 => "ax", r32 => "eax" },
+ { r8 => "bl", r16 => "bx", r32 => "ebx" },
{ r8 => "cl", r16 => "cx", r32 => "ecx" },
{ r8 => "dl", r16 => "dx", r32 => "edx" },
- { r8 => "bl", r16 => "si", r32 => "esi" },
{ r8 => "ah" },
+ { r8 => "bh" },
{ r8 => "ch" },
- { r8 => "dh" },
- { r8 => "bh" }
+ { r8 => "dh" }
);
print <<EOF;
@@ -330,7 +328,7 @@
{
my $name = "arg$argc";
- if ($arg =~ /^([abcd]l|[abcd]x|e[abcd]x|si|esi|r8|r16|r32|mm|xmm|m8|m16|m32|m64|m128)\.(sb|ub|sw|uw|sd|ud|sq|uq|ps|pd)\[([^\]]+)\]$/)
+ if ($arg =~ /^([abcd]l|[abcd]x|e[abcd]x|r8|r16|r32|mm|xmm|m8|m16|m32|m64|m128)\.(sb|ub|sw|uw|sd|ud|sq|uq|ps|pd)\[([^\]]+)\]$/)
{
my $type = $RegTypes{$1} || $1;
my $regnum = $RegNums{$1};
Modified: branches/DARWIN/none/tests/x86/insn_basic.def
===================================================================
--- branches/DARWIN/none/tests/x86/insn_basic.def 2009-04-15 03:57:25 UTC (rev 9541)
+++ branches/DARWIN/none/tests/x86/insn_basic.def 2009-04-15 05:23:52 UTC (rev 9542)
@@ -20,8 +20,8 @@
###aas eflags[0x11,0x10] al.ub[0xf] ah.ub[0x2] : => al.ub[0x9] ah.ub[0x01] eflags[0x11,0x11]
adcb eflags[0x1,0x0] : imm8[12] al.ub[34] => 1.ub[46]
adcb eflags[0x1,0x1] : imm8[12] al.ub[34] => 1.ub[47]
-adcb eflags[0x1,0x0] : imm8[12] cl.ub[34] => 1.ub[46]
-adcb eflags[0x1,0x1] : imm8[12] cl.ub[34] => 1.ub[47]
+adcb eflags[0x1,0x0] : imm8[12] bl.ub[34] => 1.ub[46]
+adcb eflags[0x1,0x1] : imm8[12] bl.ub[34] => 1.ub[47]
adcb eflags[0x1,0x0] : imm8[12] m8.ub[34] => 1.ub[46]
adcb eflags[0x1,0x1] : imm8[12] m8.ub[34] => 1.ub[47]
adcb eflags[0x1,0x0] : r8.ub[12] r8.ub[34] => 1.ub[46]
@@ -34,8 +34,8 @@
adcw eflags[0x1,0x1] : imm8[12] r16.uw[3456] => 1.uw[3469]
adcw eflags[0x1,0x0] : imm16[1234] ax.uw[5678] => 1.uw[6912]
adcw eflags[0x1,0x1] : imm16[1234] ax.uw[5678] => 1.uw[6913]
-adcw eflags[0x1,0x0] : imm16[1234] si.uw[5678] => 1.uw[6912]
-adcw eflags[0x1,0x1] : imm16[1234] si.uw[5678] => 1.uw[6913]
+adcw eflags[0x1,0x0] : imm16[1234] bx.uw[5678] => 1.uw[6912]
+adcw eflags[0x1,0x1] : imm16[1234] bx.uw[5678] => 1.uw[6913]
adcw eflags[0x1,0x0] : imm16[1234] m16.uw[5678] => 1.uw[6912]
adcw eflags[0x1,0x1] : imm16[1234] m16.uw[5678] => 1.uw[6913]
adcw eflags[0x1,0x0] : r16.uw[1234] r16.uw[5678] => 1.uw[6912]
@@ -48,8 +48,8 @@
adcl eflags[0x1,0x1] : imm8[12] r32.ud[87654321] => 1.ud[87654334]
adcl eflags[0x1,0x0] : imm32[12345678] eax.ud[87654321] => 1.ud[99999999]
adcl eflags[0x1,0x1] : imm32[12345678] eax.ud[87654321] => 1.ud[100000000]
-adcl eflags[0x1,0x0] : imm32[12345678] esi.ud[87654321] => 1.ud[99999999]
-adcl eflags[0x1,0x1] : imm32[12345678] esi.ud[87654321] => 1.ud[100000000]
+adcl eflags[0x1,0x0] : imm32[12345678] ebx.ud[87654321] => 1.ud[99999999]
+adcl eflags[0x1,0x1] : imm32[12345678] ebx.ud[87654321] => 1.ud[100000000]
adcl eflags[0x1,0x0] : imm32[12345678] m32.ud[87654321] => 1.ud[99999999]
adcl eflags[0x1,0x1] : imm32[12345678] m32.ud[87654321] => 1.ud[100000000]
adcl eflags[0x1,0x0] : r32.ud[12345678] r32.ud[87654321] => 1.ud[99999999]
@@ -59,41 +59,41 @@
adcl eflags[0x1,0x0] : m32.ud[12345678] r32.ud[87654321] => 1.ud[99999999]
adcl eflags[0x1,0x1] : m32.ud[12345678] r32.ud[87654321] => 1.ud[100000000]
addb imm8[12] al.ub[34] => 1.ub[46]
-addb imm8[12] cl.ub[34] => 1.ub[46]
+addb imm8[12] bl.ub[34] => 1.ub[46]
addb imm8[12] m8.ub[34] => 1.ub[46]
addb r8.ub[12] r8.ub[34] => 1.ub[46]
addb r8.ub[12] m8.ub[34] => 1.ub[46]
addb m8.ub[12] r8.ub[34] => 1.ub[46]
addw imm8[12] r16.uw[3456] => 1.uw[3468]
addw imm16[1234] ax.uw[5678] => 1.uw[6912]
-addw imm16[1234] si.uw[5678] => 1.uw[6912]
+addw imm16[1234] bx.uw[5678] => 1.uw[6912]
addw imm16[1234] m16.uw[5678] => 1.uw[6912]
addw r16.uw[1234] r16.uw[5678] => 1.uw[6912]
addw r16.uw[1234] m16.uw[5678] => 1.uw[6912]
addw m16.uw[1234] r16.uw[5678] => 1.uw[6912]
addl imm8[12] r32.ud[87654321] => 1.ud[87654333]
addl imm32[12345678] eax.ud[87654321] => 1.ud[99999999]
-addl imm32[12345678] esi.ud[87654321] => 1.ud[99999999]
+addl imm32[12345678] ebx.ud[87654321] => 1.ud[99999999]
addl imm32[12345678] m32.ud[87654321] => 1.ud[99999999]
addl r32.ud[12345678] r32.ud[87654321] => 1.ud[99999999]
addl r32.ud[12345678] m32.ud[87654321] => 1.ud[99999999]
addl m32.ud[12345678] r32.ud[87654321] => 1.ud[99999999]
andb imm8[0x34] al.ub[0x56] => 1.ub[0x14]
-andb imm8[0x34] cl.ub[0x56] => 1.ub[0x14]
+andb imm8[0x34] bl.ub[0x56] => 1.ub[0x14]
andb imm8[0x34] m8.ub[0x56] => 1.ub[0x14]
andb r8.ub[0x34] r8.ub[0x56] => 1.ub[0x14]
andb r8.ub[0x34] m8.ub[0x56] => 1.ub[0x14]
andb m8.ub[0x34] r8.ub[0x56] => 1.ub[0x14]
andw imm8[0x31] r16.uw[0x1234] => 1.uw[0x0030]
andw imm16[0x4231] ax.uw[0x1234] => 1.uw[0x0230]
-andw imm16[0x4231] si.uw[0x1234] => 1.uw[0x0230]
+andw imm16[0x4231] bx.uw[0x1234] => 1.uw[0x0230]
andw imm16[0x4231] m16.uw[0x1234] => 1.uw[0x0230]
andw r16.uw[0x4231] r16.uw[0x1234] => 1.uw[0x0230]
andw r16.uw[0x4231] m16.uw[0x1234] => 1.uw[0x0230]
andw m16.uw[0x4231] r16.uw[0x1234] => 1.uw[0x0230]
andl imm8[0x31] r32.ud[0x12345678] => 1.ud[0x00000030]
andl imm32[0x86427531] eax.ud[0x12345678] => 1.ud[0x02005430]
-andl imm32[0x86427531] esi.ud[0x12345678] => 1.ud[0x02005430]
+andl imm32[0x86427531] ebx.ud[0x12345678] => 1.ud[0x02005430]
andl imm32[0x86427531] m32.ud[0x12345678] => 1.ud[0x02005430]
andl r32.ud[0x86427531] r32.ud[0x12345678] => 1.ud[0x02005430]
andl r32.ud[0x86427531] m32.ud[0x12345678] => 1.ud[0x02005430]
@@ -514,21 +514,21 @@
notl r32.ud[0xff00f0ca] => 0.ud[0x00ff0f35]
notl m32.ud[0xff00f0ca] => 0.ud[0x00ff0f35]
orb imm8[0x34] al.ub[0x56] => 1.ub[0x76]
-orb imm8[0x34] cl.ub[0x56] => 1.ub[0x76]
+orb imm8[0x34] bl.ub[0x56] => 1.ub[0x76]
orb imm8[0x34] m8.ub[0x56] => 1.ub[0x76]
orb r8.ub[0x34] r8.ub[0x56] => 1.ub[0x76]
orb r8.ub[0x34] m8.ub[0x56] => 1.ub[0x76]
orb m8.ub[0x34] r8.ub[0x56] => 1.ub[0x76]
orw imm8[0x31] r16.uw[0x1234] => 1.uw[0x1235]
orw imm16[0x4231] ax.uw[0x1234] => 1.uw[0x5235]
-orw imm16[0x4231] si.uw[0x1234] => 1.uw[0x5235]
+orw imm16[0x4231] bx.uw[0x1234] => 1.uw[0x5235]
orw imm16[0x4231] m16.uw[0x1234] => 1.uw[0x5235]
orw r16.uw[0x4231] r16.uw[0x1234] => 1.uw[0x5235]
orw r16.uw[0x4231] m16.uw[0x1234] => 1.uw[0x5235]
orw m16.uw[0x4231] r16.uw[0x1234] => 1.uw[0x5235]
orl imm8[0x31] r32.ud[0x12345678] => 1.ud[0x12345679]
orl imm32[0x86427531] eax.ud[0x12345678] => 1.ud[0x96767779]
-orl imm32[0x86427531] esi.ud[0x12345678] => 1.ud[0x96767779]
+orl imm32[0x86427531] ebx.ud[0x12345678] => 1.ud[0x96767779]
orl imm32[0x86427531] m32.ud[0x12345678] => 1.ud[0x96767779]
orl r32.ud[0x86427531] r32.ud[0x12345678] => 1.ud[0x96767779]
orl r32.ud[0x86427531] m32.ud[0x12345678] => 1.ud[0x96767779]
@@ -645,8 +645,8 @@
sarl cl.ub[8] m32.ud[0xff00f0ca] => 1.ud[0xffff00f0]
sbbb eflags[0x1,0x0] : imm8[12] al.ub[34] => 1.ub[22]
sbbb eflags[0x1,0x1] : imm8[12] al.ub[34] => 1.ub[21]
-sbbb eflags[0x1,0x0] : imm8[12] cl.ub[34] => 1.ub[22]
-sbbb eflags[0x1,0x1] : imm8[12] cl.ub[34] => 1.ub[21]
+sbbb eflags[0x1,0x0] : imm8[12] bl.ub[34] => 1.ub[22]
+sbbb eflags[0x1,0x1] : imm8[12] bl.ub[34] => 1.ub[21]
sbbb eflags[0x1,0x0] : imm8[12] m8.ub[34] => 1.ub[22]
sbbb eflags[0x1,0x1] : imm8[12] m8.ub[34] => 1.ub[21]
sbbb eflags[0x1,0x0] : r8.ub[12] r8.ub[34] => 1.ub[22]
@@ -659,8 +659,8 @@
sbbw eflags[0x1,0x1] : imm8[12] r16.uw[3456] => 1.uw[3443]
sbbw eflags[0x1,0x0] : imm16[1234] ax.uw[5678] => 1.uw[4444]
sbbw eflags[0x1,0x1] : imm16[1234] ax.uw[5678] => 1.uw[4443]
-sbbw eflags[0x1,0x0] : imm16[1234] si.uw[5678] => 1.uw[4444]
-sbbw eflags[0x1,0x1] : imm16[1234] si.uw[5678] => 1.uw[4443]
+sbbw eflags[0x1,0x0] : imm16[1234] bx.uw[5678] => 1.uw[4444]
+sbbw eflags[0x1,0x1] : imm16[1234] bx.uw[5678] => 1.uw[4443]
sbbw eflags[0x1,0x0] : imm16[1234] m16.uw[5678] => 1.uw[4444]
sbbw eflags[0x1,0x1] : imm16[1234] m16.uw[5678] => 1.uw[4443]
sbbw eflags[0x1,0x0] : r16.uw[1234] r16.uw[5678] => 1.uw[4444]
@@ -673,8 +673,8 @@
sbbl eflags[0x1,0x1] : imm8[12] r32.ud[87654321] => 1.ud[87654308]
sbbl eflags[0x1,0x0] : imm32[12345678] eax.ud[87654321] => 1.ud[75308643]
sbbl eflags[0x1,0x1] : imm32[12345678] eax.ud[87654321] => 1.ud[75308642]
-sbbl eflags[0x1,0x0] : imm32[12345678] esi.ud[87654321] => 1.ud[75308643]
-sbbl eflags[0x1,0x1] : imm32[12345678] esi.ud[87654321] => 1.ud[75308642]
+sbbl eflags[0x1,0x0] : imm32[12345678] ebx.ud[87654321] => 1.ud[75308643]
+sbbl eflags[0x1,0x1] : imm32[12345678] ebx.ud[87654321] => 1.ud[75308642]
sbbl eflags[0x1,0x0] : imm32[12345678] m32.ud[87654321] => 1.ud[75308643]
sbbl eflags[0x1,0x1] : imm32[12345678] m32.ud[87654321] => 1.ud[75308642]
sbbl eflags[0x1,0x0] : r32.ud[12345678] r32.ud[87654321] => 1.ud[75308643]
@@ -948,14 +948,14 @@
std eflags[0x400,0x000] : => eflags[0x400,0x400]
std eflags[0x400,0x400] : => eflags[0x400,0x400]
subb imm8[12] al.ub[34] => 1.ub[22]
-subb imm8[12] cl.ub[34] => 1.ub[22]
+subb imm8[12] bl.ub[34] => 1.ub[22]
subb imm8[12] m8.ub[34] => 1.ub[22]
subb r8.ub[12] r8.ub[34] => 1.ub[22]
subb r8.ub[12] m8.ub[34] => 1.ub[22]
subb m8.ub[12] r8.ub[34] => 1.ub[22]
subw imm8[12] r16.uw[3456] => 1.uw[3444]
subw imm16[1234] ax.uw[5678] => 1.uw[4444]
-subw imm16[1234] si.uw[5678] => 1.uw[4444]
+subw imm16[1234] bx.uw[5678] => 1.uw[4444]
subw imm16[1234] m16.uw[5678] => 1.uw[4444]
subw r16.uw[1234] r16.uw[5678] => 1.uw[4444]
subw r16.uw[1234] m16.uw[5678] => 1.uw[4444]
@@ -963,7 +963,7 @@
subl imm8[12] r32.ud[87654321] => 1.ud[87654309]
subl imm32[12345678] r32.ud[87654321] => 1.ud[75308643]
subl imm32[12345678] eax.ud[87654321] => 1.ud[75308643]
-subl imm32[12345678] esi.ud[87654321] => 1.ud[75308643]
+subl imm32[12345678] ebx.ud[87654321] => 1.ud[75308643]
subl r32.ud[12345678] r32.ud[87654321] => 1.ud[75308643]
subl r32.ud[12345678] m32.ud[87654321] => 1.ud[75308643]
subl m32.ud[12345678] r32.ud[87654321] => 1.ud[75308643]
@@ -972,11 +972,11 @@
testb imm8[0x1a] al.ub[0xa1] => eflags[0x8c5,0x044]
testb imm8[0xa1] al.ub[0xa1] => eflags[0x8c5,0x080]
testb imm8[0xa5] al.ub[0xa5] => eflags[0x8c5,0x084]
-testb imm8[0x1a] cl.ub[0x1a] => eflags[0x8c5,0x000]
-testb imm8[0x5a] cl.ub[0x5a] => eflags[0x8c5,0x004]
-testb imm8[0x1a] cl.ub[0xa1] => eflags[0x8c5,0x044]
-testb imm8[0xa1] cl.ub[0xa1] => eflags[0x8c5,0x080]
-testb imm8[0xa5] cl.ub[0xa5] => eflags[0x8c5,0x084]
+testb imm8[0x1a] bl.ub[0x1a] => eflags[0x8c5,0x000]
+testb imm8[0x5a] bl.ub[0x5a] => eflags[0x8c5,0x004]
+testb imm8[0x1a] bl.ub[0xa1] => eflags[0x8c5,0x044]
+testb imm8[0xa1] bl.ub[0xa1] => eflags[0x8c5,0x080]
+testb imm8[0xa5] bl.ub[0xa5] => eflags[0x8c5,0x084]
testb imm8[0x1a] m8.ub[0x1a] => eflags[0x8c5,0x000]
testb imm8[0x5a] m8.ub[0x5a] => eflags[0x8c5,0x004]
testb imm8[0x1a] m8.ub[0xa1] => eflags[0x8c5,0x044]
@@ -997,11 +997,11 @@
testw imm16[0x1a1a] ax.uw[0xa1a1] => eflags[0x8c5,0x044]
testw imm16[0xa1a1] ax.uw[0xa1a1] => eflags[0x8c5,0x080]
testw imm16[0xa5a5] ax.uw[0xa5a5] => eflags[0x8c5,0x084]
-testw imm16[0x1a1a] si.uw[0x1a1a] => eflags[0x8c5,0x000]
-testw imm16[0x5a5a] si.uw[0x5a5a] => eflags[0x8c5,0x004]
-testw imm16[0x1a1a] si.uw[0xa1a1] => eflags[0x8c5,0x044]
-testw imm16[0xa1a1] si.uw[0xa1a1] => eflags[0x8c5,0x080]
-testw imm16[0xa5a5] si.uw[0xa5a5] => eflags[0x8c5,0x084]
+testw imm16[0x1a1a] bx.uw[0x1a1a] => eflags[0x8c5,0x000]
+testw imm16[0x5a5a] bx.uw[0x5a5a] => eflags[0x8c5,0x004]
+testw imm16[0x1a1a] bx.uw[0xa1a1] => eflags[0x8c5,0x044]
+testw imm16[0xa1a1] bx.uw[0xa1a1] => eflags[0x8c5,0x080]
+testw imm16[0xa5a5] bx.uw[0xa5a5] => eflags[0x8c5,0x084]
testw imm16[0x1a1a] m16.uw[0x1a1a] => eflags[0x8c5,0x000]
testw imm16[0x5a5a] m16.uw[0x5a5a] => eflags[0x8c5,0x004]
testw imm16[0x1a1a] m16.uw[0xa1a1] => eflags[0x8c5,0x044]
@@ -1022,11 +1022,11 @@
testl imm32[0x1a1a1a1a] eax.ud[0xa1a1a1a1] => eflags[0x8c5,0x044]
testl imm32[0xa1a1a1a1] eax.ud[0xa1a1a1a1] => eflags[0x8c5,0x080]
testl imm32[0xa5a5a5a5] eax.ud[0xa5a5a5a5] => eflags[0x8c5,0x084]
-testl imm32[0x1a1a1a1a] esi.ud[0x1a1a1a1a] => eflags[0x8c5,0x000]
-testl imm32[0x5a5a5a5a] esi.ud[0x5a5a5a5a] => eflags[0x8c5,0x004]
-testl imm32[0x1a1a1a1a] esi.ud[0xa1a1a1a1] => eflags[0x8c5,0x044]
-testl imm32[0xa1a1a1a1] esi.ud[0xa1a1a1a1] => eflags[0x8c5,0x080]
-testl imm32[0xa5a5a5a5] esi.ud[0xa5a5a5a5] => eflags[0x8c5,0x084]
+testl imm32[0x1a1a1a1a] ebx.ud[0x1a1a1a1a] => eflags[0x8c5,0x000]
+testl imm32[0x5a5a5a5a] ebx.ud[0x5a5a5a5a] => eflags[0x8c5,0x004]
+testl imm32[0x1a1a1a1a] ebx.ud[0xa1a1a1a1] => eflags[0x8c5,0x044]
+testl imm32[0xa1a1a1a1] ebx.ud[0xa1a1a1a1] => eflags[0x8c5,0x080]
+testl imm32[0xa5a5a5a5] ebx.ud[0xa5a5a5a5] => eflags[0x8c5,0x084]
testl imm32[0x1a1a1a1a] m32.ud[0x1a1a1a1a] => eflags[0x8c5,0x000]
testl imm32[0x5a5a5a5a] m32.ud[0x5a5a5a5a] => eflags[0x8c5,0x004]
testl imm32[0x1a1a1a1a] m32.ud[0xa1a1a1a1] => eflags[0x8c5,0x044]
@@ -1051,32 +1051,32 @@
xchgb r8.ub[12] r8.ub[34] => 0.ub[34] 1.ub[12]
xchgb r8.ub[12] m8.ub[34] => 0.ub[34] 1.ub[12]
xchgb m8.ub[12] r8.ub[34] => 0.ub[34] 1.ub[12]
-xchgw ax.uw[1234] si.uw[5678] => 0.uw[5678] 1.uw[1234]
-xchgw si.uw[1234] ax.uw[5678] => 0.uw[5678] 1.uw[1234]
+xchgw ax.uw[1234] bx.uw[5678] => 0.uw[5678] 1.uw[1234]
+xchgw bx.uw[1234] ax.uw[5678] => 0.uw[5678] 1.uw[1234]
xchgw ax.uw[1234] cx.uw[5678] => 0.uw[5678] 1.uw[1234]
xchgw r16.uw[1234] m16.uw[5678] => 0.uw[5678] 1.uw[1234]
xchgw m16.uw[1234] r16.uw[5678] => 0.uw[5678] 1.uw[1234]
-xchgl eax.ud[12345678] esi.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
-xchgl esi.ud[12345678] eax.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
-xchgl esi.ud[12345678] ecx.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
+xchgl eax.ud[12345678] ebx.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
+xchgl ebx.ud[12345678] eax.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
+xchgl ebx.ud[12345678] ecx.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
xchgl r32.ud[12345678] m32.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
xchgl m32.ud[12345678] r32.ud[87654321] => 0.ud[87654321] 1.ud[12345678]
xorb imm8[0x34] al.ub[0x56] => 1.ub[0x62]
-xorb imm8[0x34] cl.ub[0x56] => 1.ub[0x62]
+xorb imm8[0x34] bl.ub[0x56] => 1.ub[0x62]
xorb imm8[0x34] m8.ub[0x56] => 1.ub[0x62]
xorb r8.ub[0x34] r8.ub[0x56] => 1.ub[0x62]
xorb r8.ub[0x34] m8.ub[0x56] => 1.ub[0x62]
xorb m8.ub[0x34] r8.ub[0x56] => 1.ub[0x62]
xorw imm8[0x31] r16.uw[0x1234] => 1.uw[0x1205]
xorw imm16[0x4231] ax.uw[0x1234] => 1.uw[0x5005]
-xorw imm16[0x4231] si.uw[0x1234] => 1.uw[0x5005]
+xorw imm16[0x4231] bx.uw[0x1234] => 1.uw[0x5005]
xorw imm16[0x4231] m16.uw[0x1234] => 1.uw[0x5005]
xorw r16.uw[0x4231] r16.uw[0x1234] => 1.uw[0x5005]
xorw r16.uw[0x4231] m16.uw[0x1234] => 1.uw[0x5005]
xorw m16.uw[0x4231] r16.uw[0x1234] => 1.uw[0x5005]
xorl imm8[0x31] r32.ud[0x12345678] => 1.ud[0x12345649]
xorl imm32[0x86427531] eax.ud[0x12345678] => 1.ud[0x94762349]
-xorl imm32[0x86427531] esi.ud[0x12345678] => 1.ud[0x94762349]
+xorl imm32[0x86427531] ebx.ud[0x12345678] => 1.ud[0x94762349]
xorl imm32[0x86427531] m32.ud[0x12345678] => 1.ud[0x94762349]
xorl r32.ud[0x86427531] r32.ud[0x12345678] => 1.ud[0x94762349]
xorl r32.ud[0x86427531] m32.ud[0x12345678] => 1.ud[0x94762349]
|