xref: /llvm-project/llvm/test/MC/AsmParser/exprs.s (revision fd6b9074ca02d1d7d1daa213ba9f6e91dec03c2d)
1// RUN: llvm-mc -triple i386-apple-darwin %s
2
3.macro check_expr
4  .if ($0) != ($1)
5        .abort Unexpected $0 != $1.
6  .endif
7.endmacro
8
9        .text
10g:
11h:
12j:
13k:
14        .data
15        check_expr !1 + 2, 2
16        check_expr !0, 1
17        check_expr ~0, -1
18        check_expr -1, ~0
19        check_expr +1, 1
20        check_expr 1 + 2, 3
21        check_expr 1U + 2U, 3U
22        check_expr 1L + 2L, 3L
23        check_expr 1UL + 2UL, 3UL
24        check_expr 1LL + 2L, 3LL
25        check_expr 1ULL + 2ULL, 3ULL
26        check_expr 1u + 2u, 3u
27        check_expr 1l + 2l, 3l
28        check_expr 1ul + 2ul, 3ul
29        check_expr 1ll + 2L, 3ll
30        check_expr 1ull + 2ull, 3ull
31        check_expr 1 & 3, 1
32        check_expr 4 / 2, 2
33        check_expr 4 / -2, -2
34        check_expr 1 == 1, -1
35        check_expr 1 == 0, 0
36        check_expr 1 > 0, -1
37        check_expr 1 >= 1, -1
38        check_expr 1 < 2, -1
39        check_expr 1 <= 1, -1
40        check_expr 4 % 3, 1
41        check_expr 2 * 2, 4
42        check_expr 2 != 2, 0
43        check_expr 2 <> 2, 0
44        check_expr 1 | 2, 3
45        check_expr 1 << 1, 2
46        check_expr 2 >> 1, 1
47        check_expr (~0 >> 62), 3
48        check_expr 3 - 2, 1
49        check_expr 1 ^ 3, 2
50        check_expr 1 && 2, 1
51        check_expr 3 && 0, 0
52        check_expr 0 && 1, 0
53        check_expr 1 || 2, 1
54        check_expr 0 || 1, 1
55        check_expr 0 || 0, 0
56        check_expr 1 + 2 < 3 + 4, -1
57        check_expr 1 << 8 - 1, 128
58        check_expr 3 * 9 - 2 * 9 + 1, 10
59
60        .set c, 10
61        check_expr c + 1, 11
62
63        d = e + 10
64        .long d
65
66        f = g - h + 5
67        .long f
68
69        i = (j + 10) - (k + 2)
70        .long i
71
72        l = m - n + 4
73
74        .text
75m:
76n:
77        nop
78
79
80        movw	$8, (42)+66(%eax)
81
82// "." support:
83_f0:
84L0:
85        jmp L1
86        .long . - L0
87L1:
88        jmp A
89        .long . - L1
90