From 4f27e217a864d8ddb74265d24a5aadea0a3ec92d Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Sat, 14 May 2016 04:33:41 +0200 Subject: x86-asm: Fix signed constants and opcode order Two things: negative constants were rejected (e.g. "add $-15,%eax"). Second the insn order was such that the arithmetic IM8S forms weren't used (always the IM32 ones). Switching them prefers those but requires a fix for size calculation in case the opcodes were OPC_ARITH and OPC_WLX (whose size starts with 1, not zero). --- tests/asmtest.S | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'tests') diff --git a/tests/asmtest.S b/tests/asmtest.S index e50a5d0..e8865f1 100644 --- a/tests/asmtest.S +++ b/tests/asmtest.S @@ -156,6 +156,8 @@ movl %ebx, %fs addl $0x123, %eax add $0x123, %ebx +add $-16, %ecx +add $-0x123, %esi addl $0x123, 0x100 addl $0x123, 0x100(%ebx) addl $0x123, 0x100(%ebx,%edx,2) @@ -216,6 +218,8 @@ add (%ebx), %dl div %bl div %ecx, %eax +and $15,%bx +and $-20,%edx shl %edx shl $10, %edx @@ -690,3 +694,6 @@ ft1: ft2: ft3: ft4: ft5: ft6: ft7: ft8: ft9: .type ft8,"function" pause +.rept 6 + nop +.endr -- cgit v1.3.1