xref: /aosp_15_r20/external/llvm/test/MC/AsmParser/at-pseudo-variable.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker.macro A
4*9880d681SAndroid Build Coastguard Worker  add  $1\@, %eax
5*9880d681SAndroid Build Coastguard Worker.endm
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker.macro B
8*9880d681SAndroid Build Coastguard Worker  sub  $1\@, %eax
9*9880d681SAndroid Build Coastguard Worker.endm
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker  A
12*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $10, %eax
13*9880d681SAndroid Build Coastguard Worker  A
14*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $11, %eax
15*9880d681SAndroid Build Coastguard Worker  B
16*9880d681SAndroid Build Coastguard Worker# CHECK: subl  $12, %eax
17*9880d681SAndroid Build Coastguard Worker  B
18*9880d681SAndroid Build Coastguard Worker# CHECK: subl  $13, %eax
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker# The following uses of \@ are undocumented, but valid:
21*9880d681SAndroid Build Coastguard Worker.irpc foo,234
22*9880d681SAndroid Build Coastguard Worker  add  $\foo\@, %eax
23*9880d681SAndroid Build Coastguard Worker.endr
24*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $24, %eax
25*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $34, %eax
26*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $44, %eax
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker.irp reg,%eax,%ebx
29*9880d681SAndroid Build Coastguard Worker  sub  $2\@, \reg
30*9880d681SAndroid Build Coastguard Worker.endr
31*9880d681SAndroid Build Coastguard Worker# CHECK: subl  $24, %eax
32*9880d681SAndroid Build Coastguard Worker# CHECK: subl  $24, %ebx
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker# Test that .irp(c) and .rep(t) do not increase \@.
35*9880d681SAndroid Build Coastguard Worker# Only the use of A should increase \@, so we can test that it increases by 1
36*9880d681SAndroid Build Coastguard Worker# each time.
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker.irpc foo,123
39*9880d681SAndroid Build Coastguard Worker  sub  $\foo, %eax
40*9880d681SAndroid Build Coastguard Worker.endr
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker  A
43*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $14, %eax
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker.irp reg,%eax,%ebx
46*9880d681SAndroid Build Coastguard Worker  sub  $4, \reg
47*9880d681SAndroid Build Coastguard Worker.endr
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker  A
50*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $15, %eax
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker.rept 2
53*9880d681SAndroid Build Coastguard Worker  sub  $5, %eax
54*9880d681SAndroid Build Coastguard Worker.endr
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Worker  A
57*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $16, %eax
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker.rep 3
60*9880d681SAndroid Build Coastguard Worker  sub  $6, %eax
61*9880d681SAndroid Build Coastguard Worker.endr
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker  A
64*9880d681SAndroid Build Coastguard Worker# CHECK: addl  $17, %eax
65