# 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]+]]            .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]+]]         .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
