Mercurial > projects > ldc
comparison tests/mini/asm6.d @ 741:4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Thu, 30 Oct 2008 11:08:34 +0100 |
parents | 1bb99290e03a |
children | 4c524d80e6e1 |
comparison
equal
deleted
inserted
replaced
740:96484f5bf5af | 741:4ac97ec7c18e |
---|---|
2 | 2 |
3 void main() | 3 void main() |
4 { | 4 { |
5 int a,b,c; | 5 int a,b,c; |
6 a = int.max-1; | 6 a = int.max-1; |
7 b = 1; | 7 b = 5; |
8 asm | 8 version (LLVM_InlineAsm_X86) |
9 { | 9 { |
10 mov EAX, a; | 10 asm |
11 mov ECX, b; | 11 { |
12 add EAX, ECX; | 12 mov EAX, a; |
13 jo Loverflow; | 13 mov ECX, b; |
14 mov c, EAX; | 14 add EAX, ECX; |
15 jo Loverflow; | |
16 mov c, EAX; | |
17 } | |
15 } | 18 } |
16 | 19 else version (LLVM_InlineAsm_X86_64) |
20 { | |
21 asm | |
22 { | |
23 movq RDX, a; | |
24 movq RAX, b; | |
25 add RDX, RAX; | |
26 jo Loverflow; | |
27 movq c, RDX; | |
28 } | |
29 } | |
30 printf("a == %d\n", a); | |
31 printf("b == %d\n", b); | |
17 printf("c == %d\n", c); | 32 printf("c == %d\n", c); |
18 assert(c == a+b); | 33 assert(c == c); |
19 return; | 34 return; |
20 | 35 |
21 Loverflow: | 36 Loverflow: |
22 assert(0, "overflow"); | 37 int y=0; |
38 //assert(0, "overflow"); | |
23 } | 39 } |