# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s | |
.macro A | |
add $1\@, %eax | |
.endm | |
.macro B | |
sub $1\@, %eax | |
.endm | |
A | |
# CHECK: addl $10, %eax | |
A | |
# CHECK: addl $11, %eax | |
B | |
# CHECK: subl $12, %eax | |
B | |
# CHECK: subl $13, %eax | |
# The following uses of \@ are undocumented, but valid: | |
.irpc foo,234 | |
add $\foo\@, %eax | |
.endr | |
# CHECK: addl $24, %eax | |
# CHECK: addl $34, %eax | |
# CHECK: addl $44, %eax | |
.irp reg,%eax,%ebx | |
sub $2\@, \reg | |
.endr | |
# CHECK: subl $24, %eax | |
# CHECK: subl $24, %ebx | |
# Test that .irp(c) and .rep(t) do not increase \@. | |
# Only the use of A should increase \@, so we can test that it increases by 1 | |
# each time. | |
.irpc foo,123 | |
sub $\foo, %eax | |
.endr | |
A | |
# CHECK: addl $14, %eax | |
.irp reg,%eax,%ebx | |
sub $4, \reg | |
.endr | |
A | |
# CHECK: addl $15, %eax | |
.rept 2 | |
sub $5, %eax | |
.endr | |
A | |
# CHECK: addl $16, %eax | |
.rep 3 | |
sub $6, %eax | |
.endr | |
A | |
# CHECK: addl $17, %eax |