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.