76 lines
1.9 KiB
ArmAsm
76 lines
1.9 KiB
ArmAsm
// RUN: llvm-mc -triple i686-unknown-unknown -x86-asm-syntax=intel %s | FileCheck %s --check-prefixes=CHECK-32,CHECK
|
|
// RUN: llvm-mc -triple x86_64-unknown-unknown --defsym X64=1 -x86-asm-syntax=intel %s | FileCheck %s --check-prefixes=CHECK-64,CHECK
|
|
|
|
// RUN: not llvm-mc -triple i686-unknown-unknown --defsym ERR=1 -x86-asm-syntax=intel %s 2>&1 | FileCheck %s --check-prefixes=ERR-32
|
|
|
|
t0:
|
|
call direct_branch
|
|
jmp direct_branch
|
|
// CHECK-LABEL: t0:
|
|
// CHECK-64: callq direct_branch
|
|
// CHECK-32: calll direct_branch
|
|
// CHECK: jmp direct_branch
|
|
|
|
t1:
|
|
call [fn_ref]
|
|
jmp [fn_ref]
|
|
// CHECK-LABEL: t1:
|
|
// CHECK-64: callq *fn_ref
|
|
// CHECK-64: jmpq *fn_ref
|
|
// CHECK-32: calll *fn_ref
|
|
// CHECK-32: jmpl *fn_ref
|
|
|
|
.ifdef X64
|
|
|
|
t2:
|
|
call qword ptr [fn_ref]
|
|
jmp qword ptr [fn_ref]
|
|
// CHECK-64-LABEL: t2:
|
|
// CHECK-64: callq *fn_ref
|
|
// CHECK-64: jmpq *fn_ref
|
|
|
|
t3:
|
|
call qword ptr [rip + fn_ref]
|
|
jmp qword ptr [rip + fn_ref]
|
|
// CHECK-64-LABEL: t3:
|
|
// CHECK-64: callq *fn_ref(%rip)
|
|
// CHECK-64: jmpq *fn_ref(%rip)
|
|
|
|
.else
|
|
|
|
t4:
|
|
call dword ptr [fn_ref]
|
|
jmp dword ptr [fn_ref]
|
|
// CHECK-32-LABEL: t4:
|
|
// CHECK-32: calll *fn_ref
|
|
// CHECK-32: jmpl *fn_ref
|
|
|
|
t5:
|
|
call dword ptr fn_ref
|
|
jmp dword ptr fn_ref
|
|
// CHECK-32-LABEL: t5:
|
|
// CHECK-32: calll *fn_ref
|
|
// CHECK-32: jmpl *fn_ref
|
|
|
|
t6:
|
|
call dword ptr [offset fn_ref]
|
|
jmp dword ptr [offset fn_ref]
|
|
// CHECK-32-LABEL: t6:
|
|
// CHECK-32: calll *fn_ref
|
|
// CHECK-32: jmpl *fn_ref
|
|
|
|
.ifdef ERR
|
|
|
|
call [offset fn_ref]
|
|
// ERR-32: {{.*}}.s:[[#@LINE-1]]:8: error: `OFFSET` operator cannot be used in an unconditional branch
|
|
jmp [offset fn_ref]
|
|
// ERR-32: {{.*}}.s:[[#@LINE-1]]:7: error: `OFFSET` operator cannot be used in an unconditional branch
|
|
|
|
call offset fn_ref
|
|
// ERR-32: {{.*}}.s:[[#@LINE-1]]:3: error: invalid operand for instruction
|
|
jmp offset fn_ref
|
|
// ERR-32: {{.*}}.s:[[#@LINE-1]]:3: error: invalid operand for instruction
|
|
|
|
.endif
|
|
|
|
.endif
|