mips-micro-cross-calls.s
1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# REQUIRES: mips
# Check various cases of microMIPS - regular code cross-calls.
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \
# RUN: -mattr=micromips %s -o %t-eb.o
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \
# RUN: -position-independent -mattr=micromips \
# RUN: %S/Inputs/mips-micro.s -o %t-eb-pic.o
# RUN: ld.lld -o %t-eb.exe %t-eb.o %t-eb-pic.o
# RUN: llvm-objdump -d -t --mattr=-micromips \
# RUN: --no-show-raw-insn --print-imm-hex %t-eb.exe \
# RUN: | FileCheck --check-prefixes=SYM,REG %s
# RUN: llvm-objdump -d -t --mattr=+micromips \
# RUN: --no-show-raw-insn --print-imm-hex %t-eb.exe \
# RUN: | FileCheck --check-prefixes=SYM,MICRO %s
# REG: {{0*}}[[FOOT:[0-9a-f]+]] l F .text 0000000e 0x80 __microLA25Thunk_foo
# REG: {{0*}}[[BAR:[0-9a-f]+]] g F .text 00000000 bar
# REG: {{0*}}[[MIC:[0-9a-f]+]] g .text 00000000 0x80 micro
# REG: <__start>:
# REG-NEXT: jalx 0x[[MIC]] <micro>
# REG-NEXT: nop
# REG-NEXT: jalx 0x[[FOOT]] <__microLA25Thunk_foo>
# REG: <__LA25Thunk_bar>:
# REG-NEXT: lui $25, 0x2
# REG-NEXT: j 0x[[BAR]] <bar>
# MICRO: {{0*}}[[BART:[0-9a-f]+]] l F .text 00000010 __LA25Thunk_bar
# MICRO: {{0*}}[[START:[0-9a-f]+]] g .text 00000000 __start
# MICRO: {{0*}}[[FOO:[0-9a-f]+]] g F .text 00000000 0x80 foo
# MICRO: <micro>:
# MICRO-NEXT: jalx 0x[[START]]
# MICRO-NEXT: nop
# MICRO-NEXT: jalx 0x[[BART]]
# MICRO: <__microLA25Thunk_foo>:
# MICRO-NEXT: lui $25, 0x2
# MICRO-NEXT: j 0x[[FOO]] <foo>
.text
.set nomicromips
.global __start
__start:
jal micro
jal foo
.set micromips
.global micro
micro:
jal __start
jal bar