Mercurial > projects > ldc
annotate tests/mini/__asm1.d @ 1645:1d2d1aa16841
Don't error out with -singleobj, -of, and -c/-output-{bc,ll,o,s}.
author | Matti Niemenmaa <matti.niemenmaa+hg@iki.fi> |
---|---|
date | Tue, 09 Mar 2010 23:20:39 +0200 |
parents | 9279a9dc6df3 |
children |
rev | line source |
---|---|
1154
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
1 import ldc.llvmasm; |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
2 void main() { |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
3 version(X86) |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
4 { |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
5 int i; |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
6 __asm("movl $1, $0", "=*m,i", &i, 42); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
7 assert(i == 42); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
8 |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
9 int j = __asm!(int)("movl $1, %eax", "={ax},i", 42); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
10 assert(j == 42); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
11 |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
12 auto k = __asmtuple!(int,int)("mov $2, %eax ; mov $3, %edx", "={ax},={dx},i,i", 10, 20); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
13 assert(k.v[0] == 10); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
14 assert(k.v[1] == 20); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
15 } |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
16 else version(PPC) |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
17 { |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
18 int j = 42; |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
19 int i = __asm!(int)("li $1, $0", "=r,*m", &j); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
20 assert(i == 42); |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
21 } |
9279a9dc6df3
Added support for tuple return with __asmtuple!(int,int) etc.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
22 } |