blob: 4e514032b6cc3497c618d2c4008a1725ce31a6ff [file] [log] [blame]
Daniel Dunbarb4b53e52009-07-17 22:38:58 +00001// RUN: llvm-mc -triple i386-unknown-unknown %s > %t
Daniel Dunbarf4b830f2009-06-30 02:10:03 +00002
Daniel Dunbar6b13eff2010-10-25 20:18:41 +00003.macro check_expr
4 .if ($0) != ($1)
5 .abort Unexpected $0 != $1.
6 .endif
7.endmacro
8
Daniel Dunbarf4b830f2009-06-30 02:10:03 +00009 .text
10g:
11h:
12j:
13k:
14 .data
Daniel Dunbar6b13eff2010-10-25 20:18:41 +000015 check_expr !1 + 2, 2
16 check_expr !0, 1
Daniel Dunbar048a19a2010-10-25 20:18:49 +000017 check_expr ~0, -1
18 check_expr -1, ~0
Daniel Dunbar6b13eff2010-10-25 20:18:41 +000019 check_expr +1, 1
20 check_expr 1 + 2, 3
21 check_expr 1 & 3, 1
22 // FIXME: There is a bug here in macro expansion.
Daniel Dunbar475839e2009-06-29 20:37:27 +000023 .byte 4 / 2
24 .byte 4 / -2
Daniel Dunbar6b13eff2010-10-25 20:18:41 +000025 check_expr 1 == 1, 1
26 check_expr 1 == 0, 0
27 check_expr 1 > 0, 1
28 check_expr 1 >= 1, 1
29 check_expr 1 < 2, 1
30 check_expr 1 <= 1, 1
31 check_expr 4 % 3, 1
32 check_expr 2 * 2, 4
33 check_expr 2 != 2, 0
34 check_expr 2 <> 2, 0
35 check_expr 1 | 2, 3
36 check_expr 1 << 1, 2
37 check_expr 2 >> 1, 1
Daniel Dunbar048a19a2010-10-25 20:18:49 +000038 check_expr (~0 >> 1), -1
Daniel Dunbar6b13eff2010-10-25 20:18:41 +000039 check_expr 3 - 2, 1
40 check_expr 1 ^ 3, 2
41 check_expr 1 && 2, 1
42 check_expr 3 && 0, 0
43 check_expr 0 && 1, 0
44 check_expr 1 || 2, 1
45 check_expr 0 || 1, 1
46 check_expr 0 || 0, 0
Daniel Dunbar475839e2009-06-29 20:37:27 +000047
48 .set c, 10
Daniel Dunbar6b13eff2010-10-25 20:18:41 +000049 check_expr c + 1, 11
Daniel Dunbarf4b830f2009-06-30 02:10:03 +000050
51 d = e + 10
52 .long d
53
54 f = g - h + 5
55 .long f
56
57 i = (j + 10) - (k + 2)
58 .long i
59
Daniel Dunbar374d8bd2009-06-30 22:49:27 +000060 l = m - n + 4
61
62 .text
63m:
64n:
65 nop
66
Daniel Dunbarb4b53e52009-07-17 22:38:58 +000067
Chris Lattner75f265f2010-01-24 01:07:33 +000068 movw $8, (42)+66(%eax)
Chris Lattnerd3050352010-04-14 04:40:28 +000069
70// "." support:
71_f0:
72L0:
73 jmp L1
74 .long . - L0
75L1:
76 jmp A
77 .long . - L1