Bug 1862 – asm: [ESI+1*EAX] should be a legal addr mode

Status
RESOLVED
Resolution
FIXED
Severity
minor
Priority
P2
Component
dmd
Product
D
Version
D1 (retired)
Platform
x86
OS
Windows
Creation time
2008-02-22T03:18:00Z
Last change time
2014-02-24T15:31:32Z
Assigned to
bugzilla
Creator
clugdbug

Comments

Comment #0 by clugdbug — 2008-02-22T03:18:35Z
Currently gives a 'bad addr mode' error, eg: asm { movapd XMM1, [ESI+1*EAX]; } It correctly accepts multipliers of 2, 4, 8, and 16, but a multiplier of 1 should be legal. The reason for wanting this is that it allows you to control which register is used for scaling. movapd XMM1, [ESI+EAX] can be encoded as either movapd XMM1, [1*ESI+EAX] or as movapd XMM1, [ESI+1*EAX] This makes a difference when you have a RAT stall caused by reading too many registers in a single clock cycle.
Comment #1 by bugzilla — 2008-03-07T00:33:54Z
Fixed dmd 1.028 and 2.012