Files
ldc/tests/mini/asm1_1.d
Frits van Bommel 909c6dae18 Fix some unittests for 64-bit asm. They were operating on int variables as if
they were longs.
This was causing asm1_1 to fail when compiled with -O3 because it was
overwriting the spilled value of callee-saved register %rbx, which the runtime
was using as a pointer value at the time.
2009-04-13 17:42:36 +02:00

36 lines
614 B
D

module tangotests.asm1_1;
extern(C) int printf(char*, ...);
int main()
{
int i = 12;
int* ip = &i;
printf("%d\n", i);
version (D_InlineAsm_X86)
{
asm
{
mov ECX, ip;
mov EAX, [ECX];
add EAX, 8;
mul EAX, EAX;
mov [ECX], EAX;
}
}
else version (D_InlineAsm_X86_64)
{
asm
{
movq RCX, ip;
mov EAX, [RCX];
add EAX, 8;
imul EAX, EAX;
mov [RCX], EAX;
}
}
printf("%d\n", i);
assert(i == 400);
return 0;
}