xref: /llvm-project/llvm/test/MC/X86/intel-syntax-branch.s (revision 0ecd2e50146dd4dfac47b20a8e03e43a015b55ce)
1// RUN: llvm-mc -triple i686-unknown-unknown -x86-asm-syntax=intel %s | FileCheck %s --check-prefixes=CHECK-32,CHECK
2// RUN: llvm-mc -triple x86_64-unknown-unknown --defsym X64=1 -x86-asm-syntax=intel %s | FileCheck %s --check-prefixes=CHECK-64,CHECK
3
4// RUN: not llvm-mc -triple i686-unknown-unknown --defsym ERR=1 -x86-asm-syntax=intel %s 2>&1 | FileCheck %s --check-prefixes=ERR-32
5
6t0:
7call direct_branch
8jmp direct_branch
9// CHECK-LABEL: t0:
10// CHECK-64: callq direct_branch
11// CHECK-32: calll direct_branch
12// CHECK:    jmp direct_branch
13
14t1:
15call [fn_ref]
16jmp [fn_ref]
17// CHECK-LABEL: t1:
18// CHECK-64: callq *fn_ref
19// CHECK-64: jmpq *fn_ref
20// CHECK-32: calll *fn_ref
21// CHECK-32: jmpl *fn_ref
22
23.ifdef X64
24
25  t2:
26  call qword ptr [fn_ref]
27  jmp qword ptr [fn_ref]
28  // CHECK-64-LABEL: t2:
29  // CHECK-64: callq *fn_ref
30  // CHECK-64: jmpq *fn_ref
31
32  t3:
33  call qword ptr [rip + fn_ref]
34  jmp qword ptr [rip + fn_ref]
35  // CHECK-64-LABEL: t3:
36  // CHECK-64: callq *fn_ref(%rip)
37  // CHECK-64: jmpq *fn_ref(%rip)
38
39.else
40
41  t4:
42  call dword ptr [fn_ref]
43  jmp dword ptr [fn_ref]
44  // CHECK-32-LABEL: t4:
45  // CHECK-32: calll *fn_ref
46  // CHECK-32: jmpl *fn_ref
47
48  t5:
49  call dword ptr fn_ref
50  jmp dword ptr fn_ref
51  // CHECK-32-LABEL: t5:
52  // CHECK-32: calll *fn_ref
53  // CHECK-32: jmpl *fn_ref
54
55  t6:
56  call dword ptr [offset fn_ref]
57  jmp dword ptr [offset fn_ref]
58  // CHECK-32-LABEL: t6:
59  // CHECK-32: calll *fn_ref
60  // CHECK-32: jmpl *fn_ref
61
62.ifdef ERR
63
64  call [offset fn_ref]
65  // ERR-32: {{.*}}.s:[[#@LINE-1]]:8: error: `OFFSET` operator cannot be used in an unconditional branch
66  jmp [offset fn_ref]
67  // ERR-32: {{.*}}.s:[[#@LINE-1]]:7: error: `OFFSET` operator cannot be used in an unconditional branch
68
69  call offset fn_ref
70  // ERR-32: {{.*}}.s:[[#@LINE-1]]:3: error: invalid operand for instruction
71  jmp offset fn_ref
72  // ERR-32: {{.*}}.s:[[#@LINE-1]]:3: error: invalid operand for instruction
73
74.endif
75
76.endif
77