[mips] Fix expansion of memory operation if destination register is not a GPR.
authorMatheus Almeida <matheus.almeida@imgtec.com>
Wed, 18 Jun 2014 14:49:56 +0000 (14:49 +0000)
committerMatheus Almeida <matheus.almeida@imgtec.com>
Wed, 18 Jun 2014 14:49:56 +0000 (14:49 +0000)
commit78f8b7b652e53b550af78344919c7b61d38b68b6
treea6bbebc515a9726c86fe18ca12adc36a3c46d6be
parent7de68e77aa5b994ed28a46a4d792a97ef50ef822
[mips] Fix expansion of memory operation if destination register is not a GPR.

Summary:
The assembler tries to reuse the destination register for memory operations whenever
it can but it's not possible to do so if the destination register is not a GPR.

Example:
  ldc1 $f0, sym
should expand to:
  lui $at, %hi(sym)
  ldc1 $f0, %lo(sym)($at)

It's entirely wrong to expand to:
  lui $f0, %hi(sym)
  ldc1 $f0, %lo(sym)($f0)

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D4173

llvm-svn: 211169
llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/test/MC/Mips/mips-expansions.s