From 3ba3b683afbc3d67e88a3270506c852c91e8afd0 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Thu, 22 Dec 2011 02:40:22 +0100 Subject: [PATCH 1/3] Restore alphabetical order to opcode table. This fixes #57 and a few related issues. --- gen/asm-x86-64.h | 43 ++++++++++++------------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/gen/asm-x86-64.h b/gen/asm-x86-64.h index a9a21953..ba48fd0b 100644 --- a/gen/asm-x86-64.h +++ b/gen/asm-x86-64.h @@ -639,13 +639,14 @@ namespace AsmParserx8664 AsmOp asmOp; } AsmOpEnt; - /* Some opcodes which have data size restrictions, but we don't check + /* Some opcodes have data size restrictions, which we don't check cmov, l ?, lea, lsl, shld todo: push is always the 32-bit form, even tho push is 16-bit */ + // WARNING: This table is expected to be SORTED ALPHABETICALLY. static AsmOpEnt opData[] = { { "adc", Op_UpdSrcF }, @@ -716,36 +717,16 @@ namespace AsmParserx8664 { "cmps", Op_cmps }, { "cmpsb", Op_cmpsX }, { "cmpsd", Op_cmpsd }, // string cmp, and SSE cmp + { "cmpsq", Op_cmpsX }, { "cmpss", Op_DstSrcImmS }, { "cmpsw", Op_cmpsX }, - { "cmpsq", Op_cmpsX }, - /* - { "cdqe", Op_0_DXAX }, - { "cmpsq", Op_cmpsX }, - { "cqo", Op_0_DXAX }, - { "lodsq", Op_lodsX }, - { "movsq", Op_movsX }, - { "popfq", Op_SizedStack }, - { "pushfq", Op_SizedStack }, - { "scasq", Op_scasX }, - { "stosq", Op_stosX }, - { "iretq", Op_iretd }, - { "swapgs", Op_0 }, - { "extrq", Op_Extrq }, - { "movsxq", Op_movsxq }, - - { "clgi", Op_Flags }, - { "invlpga", Op_SrcMemNT }, - { "rdtscp", Op_0_DXAX }, - { "stgi", Op_Flags }, - */ - { "cmpxchg", Op_cmpxchg }, { "cmpxchg16b", Op_cmpxchg16b }, { "cmpxchg8b", Op_cmpxchg8b }, { "comisd", Op_SrcSrcSSEF }, { "comiss", Op_SrcSrcSSEF }, { "cpuid", Op_cpuid }, + { "cqo", Op_0_DXAX }, { "cvtdq2pd", Op_DstSrcSSE }, { "cvtdq2ps", Op_DstSrcSSE }, { "cvtpd2dq", Op_DstSrcSSE }, @@ -965,8 +946,8 @@ namespace AsmParserx8664 { "lods", Op_lods }, { "lodsb", Op_lodsX }, { "lodsd", Op_lodsX }, - { "lodsw", Op_lodsX }, { "lodsq", Op_lodsX }, + { "lodsw", Op_lodsX }, { "loop", Op_Loop }, { "loope", Op_Loop }, { "loopne",Op_Loop }, @@ -1045,8 +1026,8 @@ namespace AsmParserx8664 { "outsd", Op_outsX }, { "outsw", Op_outsX }, { "pabsb", Op_DstSrcSSE }, - { "pabsw", Op_DstSrcSSE }, { "pabsq", Op_DstSrcSSE }, + { "pabsw", Op_DstSrcSSE }, { "packssdw", Op_DstSrcMMX }, // %% also SSE { "packsswb", Op_DstSrcMMX }, { "packuswb", Op_DstSrcMMX }, @@ -1090,13 +1071,13 @@ namespace AsmParserx8664 { "pfrsqrt", Op_DstSrcMMX }, { "pfsub", Op_DstSrcMMX }, { "pfsubr", Op_DstSrcMMX }, - { "pi2fd", Op_DstSrcMMX }, // %% { "phaddd", Op_DstSrcSSE }, { "phaddsw", Op_DstSrcSSE }, { "phaddw", Op_DstSrcSSE }, { "phsubd", Op_DstSrcSSE }, { "phsubsw", Op_DstSrcSSE }, { "phsubw", Op_DstSrcSSE }, + { "pi2fd", Op_DstSrcMMX }, // %% { "pinsrw", Op_DstSrcImmM }, // gpr32(16), mem16 src, sse too { "pmaddubsw", Op_DstSrcSSE }, { "pmaddwd", Op_DstSrcMMX }, @@ -1105,15 +1086,15 @@ namespace AsmParserx8664 { "pminsw", Op_DstSrcMMX }, { "pminub", Op_DstSrcMMX }, { "pmovmskb", Op_DstSrcMMX }, - { "pmulhrw", Op_DstSrcMMX }, // AMD 3dNow! { "pmulhrsw", Op_DstSrcMMX }, + { "pmulhrw", Op_DstSrcMMX }, // AMD 3dNow! { "pmulhuw", Op_DstSrcMMX }, { "pmulhw", Op_DstSrcMMX }, { "pmullw", Op_DstSrcMMX }, { "pmuludq", Op_DstSrcMMX }, // also sse { "pop", Op_DstW }, { "popf", Op_0 }, // rewrite the insn with a special case - { "popfq", Op_0 }, + { "popfq", Op_0 }, // Op_SizedStack? { "popq", Op_push }, { "por", Op_DstSrcMMX }, { "prefetchnta", Op_SrcMemNT }, @@ -1158,7 +1139,7 @@ namespace AsmParserx8664 { "punpcklwd", Op_DstSrcMMX }, { "push", Op_push }, { "pushf", Op_0 }, - { "pushfq", Op_0 }, + { "pushfq", Op_0 }, // Op_SizedStack? { "pushq", Op_push }, { "pxor", Op_DstSrcMMX }, { "rcl", Op_Shift }, // limited src operands -- change to shift @@ -1189,8 +1170,8 @@ namespace AsmParserx8664 { "scas", Op_scas }, { "scasb", Op_scasX }, { "scasd", Op_scasX }, - { "scasw", Op_scasX }, { "scasq", Op_scasX }, + { "scasw", Op_scasX }, { "seta", Op_DstRMBNT }, // also gpr8 { "setae", Op_DstRMBNT }, { "setb", Op_DstRMBNT }, @@ -1243,8 +1224,8 @@ namespace AsmParserx8664 { "stos", Op_stos }, { "stosb", Op_stosX }, { "stosd", Op_stosX }, - { "stosw", Op_stosX }, { "stosq", Op_stosX }, + { "stosw", Op_stosX }, { "str", Op_DstMemNT }, // also r16 { "sub", Op_UpdSrcF }, { "subpd", Op_DstSrcSSE }, From 6350d8f255451f9750ab37a9c2db647a6e5cd3ba Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Thu, 22 Dec 2011 02:44:19 +0100 Subject: [PATCH 2/3] Update druntime. --- runtime/druntime | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/druntime b/runtime/druntime index 10e4512f..2469fb43 160000 --- a/runtime/druntime +++ b/runtime/druntime @@ -1 +1 @@ -Subproject commit 10e4512f453fcafde9448a41c672ee7315229963 +Subproject commit 2469fb4347e4c29010bbf24b30be754d9c14c591 From e6521d87d34fa2668b693671309a1a4c3dd1df8f Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Thu, 22 Dec 2011 02:44:32 +0100 Subject: [PATCH 3/3] Upstream memory_osx.d has been ported to D. --- runtime/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index 7f1e474a..2b864272 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -67,11 +67,12 @@ list(REMOVE_ITEM DCRT_D ${RUNTIME_DC_DIR}/deh.d ${RUNTIME_DC_DIR}/deh2.d ${RUNTIME_DC_DIR}/llmath.d + ${RUNTIME_DC_DIR}/memory_osx.d ${RUNTIME_DC_DIR}/qsort2.d ${RUNTIME_DC_DIR}/trace.d ) file(GLOB DCRT_C ${RUNTIME_DC_DIR}/*.c) -list(REMOVE_ITEM DCRT_C ${RUNTIME_DC_DIR}/deh.c ${RUNTIME_DC_DIR}/memory_osx.c ${RUNTIME_DC_DIR}/dylib_fixes.c) +list(REMOVE_ITEM DCRT_C ${RUNTIME_DC_DIR}/deh.c ${RUNTIME_DC_DIR}/dylib_fixes.c) if(UNIX) file(GLOB_RECURSE CORE_D_SYS ${RUNTIME_DIR}/src/core/sys/posix/*.d) elseif(WIN32)