[LLVMdev] MIPS 32bit code generation

Akira Hatanaka ahatanak at gmail.com
Thu Oct 6 10:29:57 PDT 2011

Do you want to replace

lui $2, %hi(g1)
addiu $2, $2, %lo(g1)

with this?
la $2, g1

If that is the case, you can add this pattern.

def op_la : Operand<i32>;

def LA :
  FI<0x09, (outs CPURegs:$dst), (ins op_la:$addr0, op_la:$addr1),
     "la $dst, $addr0", [(set CPURegs:$dst,
                         (add (MipsHi tglobaladdr:$addr0), (MipsLo
tglobaladdr:$addr1)))], IIAlu>;

Note that you still need to find a way to print "g1" instead of "%hi(g1)".

On Wed, Oct 5, 2011 at 4:01 PM, Gang-Ryung Uh <guh at boisestate.edu> wrote:
> Hi,
>      In order to emit "la $4,ADDR" instead of lui followed by addiu to load
> the data address, could you advise what is proper way to revise td files in
> the MIPS target?
> Thanks,
> --
> Gang-Ryung Uh, Associate Professor
> Department of Computer Science
> College of Engineering, Boise State Univerisity
> tel: 1 208 426-5691  e-mail:guh at boisestate.edu
> http://cs.boisestate.edu/~uh
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list