[mips] Implement .cplocal directive
authorSimon Atanasyan <simon@atanasyan.com>
Wed, 17 Jul 2019 08:11:31 +0000 (08:11 +0000)
committerSimon Atanasyan <simon@atanasyan.com>
Wed, 17 Jul 2019 08:11:31 +0000 (08:11 +0000)
commita884afb6f8ea18f89de767f56f54b43c93fa8b85
tree5db106ae71822bd82850504bd4bd6ca6c742d884
parent7f308af5eeea2d1b24aee0361d39dc43bac4cfe5
[mips] Implement .cplocal directive

This directive forces to use the alternate register for context pointer.
For example, this code:
  .cplocal $4
  jal foo
expands to:
  ld    $25, %call16(foo)($4)
  jalr  $25

Differential Revision: https://reviews.llvm.org/D64743

llvm-svn: 366300
llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
llvm/lib/Target/Mips/MipsTargetStreamer.h
llvm/test/MC/Mips/cplocal-bad.s [new file with mode: 0644]
llvm/test/MC/Mips/cplocal.s [new file with mode: 0644]