xref: /aosp_15_r20/external/llvm/test/MC/AsmParser/macro-exitm.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// .exitm is encountered in a normal macro expansion
4*9880d681SAndroid Build Coastguard Worker.macro REP
5*9880d681SAndroid Build Coastguard Worker.rept 3
6*9880d681SAndroid Build Coastguard Worker.long 0
7*9880d681SAndroid Build Coastguard Worker.exitm
8*9880d681SAndroid Build Coastguard Worker.endr
9*9880d681SAndroid Build Coastguard Worker.endm
10*9880d681SAndroid Build Coastguard WorkerREP
11*9880d681SAndroid Build Coastguard Worker// Only the output from the first rept expansion should make it through:
12*9880d681SAndroid Build Coastguard Worker// CHECK: .long 0
13*9880d681SAndroid Build Coastguard Worker// CHECK-NOT: .long 0
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker// .exitm is in a true branch
16*9880d681SAndroid Build Coastguard Worker.macro A
17*9880d681SAndroid Build Coastguard Worker.if 1
18*9880d681SAndroid Build Coastguard Worker.long 1
19*9880d681SAndroid Build Coastguard Worker.exitm
20*9880d681SAndroid Build Coastguard Worker.endif
21*9880d681SAndroid Build Coastguard Worker.long 1
22*9880d681SAndroid Build Coastguard Worker.endm
23*9880d681SAndroid Build Coastguard WorkerA
24*9880d681SAndroid Build Coastguard Worker// CHECK: .long 1
25*9880d681SAndroid Build Coastguard Worker// CHECK-NOT: .long 1
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker// .exitm is in a false branch
28*9880d681SAndroid Build Coastguard Worker.macro B
29*9880d681SAndroid Build Coastguard Worker.if 1
30*9880d681SAndroid Build Coastguard Worker.long 2
31*9880d681SAndroid Build Coastguard Worker.else
32*9880d681SAndroid Build Coastguard Worker.exitm
33*9880d681SAndroid Build Coastguard Worker.endif
34*9880d681SAndroid Build Coastguard Worker.long 2
35*9880d681SAndroid Build Coastguard Worker.endm
36*9880d681SAndroid Build Coastguard WorkerB
37*9880d681SAndroid Build Coastguard Worker// CHECK: .long 2
38*9880d681SAndroid Build Coastguard Worker// CHECK: .long 2
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker// .exitm is in a false branch that is encountered prior to the true branch
42*9880d681SAndroid Build Coastguard Worker.macro C
43*9880d681SAndroid Build Coastguard Worker.if 0
44*9880d681SAndroid Build Coastguard Worker.exitm
45*9880d681SAndroid Build Coastguard Worker.else
46*9880d681SAndroid Build Coastguard Worker.long 3
47*9880d681SAndroid Build Coastguard Worker.endif
48*9880d681SAndroid Build Coastguard Worker.long 3
49*9880d681SAndroid Build Coastguard Worker.endm
50*9880d681SAndroid Build Coastguard WorkerC
51*9880d681SAndroid Build Coastguard Worker// CHECK: .long 3
52*9880d681SAndroid Build Coastguard Worker// CHECK: .long 3
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker// .exitm is in a macro that's expanded in a conditional block.
55*9880d681SAndroid Build Coastguard Worker.macro D
56*9880d681SAndroid Build Coastguard Worker.long 4
57*9880d681SAndroid Build Coastguard Worker.exitm
58*9880d681SAndroid Build Coastguard Worker.long 4
59*9880d681SAndroid Build Coastguard Worker.endm
60*9880d681SAndroid Build Coastguard Worker.if 1
61*9880d681SAndroid Build Coastguard WorkerD
62*9880d681SAndroid Build Coastguard Worker.endif
63*9880d681SAndroid Build Coastguard Worker// CHECK: .long 4
64*9880d681SAndroid Build Coastguard Worker// CHECK-NOT: .long 4
65