[PATCH] D23652: [mips] N64 static relocation model support

Simon Dardis via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 18 03:23:29 PDT 2016


sdardis created this revision.
sdardis added reviewers: dsanders, vkalintiris.
sdardis added subscribers: theraven, seanbruno, llvm-commits.
Herald added a subscriber: sdardis.

This patch makes one change to GOT handling and two changes to N64's
relocation model handling. Furthermore, the jumptable encodings have
been corrected for static N64.

Big GOT handling is now done via a new SDNode MipsGotHi - this node is
unconditionally lowered to an lui instruction.

The first change to N64's relocation handling is the lifting of the
restriction that N64 always uses PIC. Now it possible to target static
environments. A follow on patch for clang will default N64 target to
assume PIC mode as it is faster.

The second change adds support for 64 bit symbols and enables them by
default. Previously N64 had patterns for sym32 mode only. In this mode all
symbols are assumed to have 32 bit addresses. sym32 mode support
is selectable with attribute 'sym32'. A follow on patch for clang will
add the necessary frontend parameter.

https://reviews.llvm.org/D23652

Files:
  lib/Target/Mips/MicroMips64r6InstrInfo.td
  lib/Target/Mips/Mips.td
  lib/Target/Mips/Mips64InstrInfo.td
  lib/Target/Mips/MipsAsmPrinter.cpp
  lib/Target/Mips/MipsISelLowering.cpp
  lib/Target/Mips/MipsISelLowering.h
  lib/Target/Mips/MipsInstrInfo.td
  lib/Target/Mips/MipsSubtarget.h
  test/CodeGen/Mips/2009-11-16-CstPoolLoad.ll
  test/CodeGen/Mips/2010-07-20-Switch.ll
  test/CodeGen/Mips/blockaddr.ll
  test/CodeGen/Mips/cconv/arguments-float.ll
  test/CodeGen/Mips/cconv/arguments-fp128.ll
  test/CodeGen/Mips/cconv/arguments-hard-float-varargs.ll
  test/CodeGen/Mips/cconv/arguments-hard-float.ll
  test/CodeGen/Mips/cconv/arguments-hard-fp128.ll
  test/CodeGen/Mips/cconv/arguments-struct.ll
  test/CodeGen/Mips/cconv/arguments-varargs-small-structs-byte.ll
  test/CodeGen/Mips/cconv/arguments-varargs-small-structs-combinations.ll
  test/CodeGen/Mips/cconv/arguments-varargs.ll
  test/CodeGen/Mips/cconv/arguments.ll
  test/CodeGen/Mips/cconv/return-float.ll
  test/CodeGen/Mips/cconv/return-hard-float.ll
  test/CodeGen/Mips/cconv/return-hard-fp128.ll
  test/CodeGen/Mips/cconv/return-hard-struct-f128.ll
  test/CodeGen/Mips/cconv/return-struct.ll
  test/CodeGen/Mips/cconv/return.ll
  test/CodeGen/Mips/cconv/roundl-call.ll
  test/CodeGen/Mips/compactbranches/compact-branches-64.ll
  test/CodeGen/Mips/compactbranches/compact-branches.ll
  test/CodeGen/Mips/cstmaterialization/stack.ll
  test/CodeGen/Mips/fcmp.ll
  test/CodeGen/Mips/fcopysign-f32-f64.ll
  test/CodeGen/Mips/global-address.ll
  test/CodeGen/Mips/inlineasm-constraint_ZC_2.ll
  test/CodeGen/Mips/llvm-ir/call.ll
  test/CodeGen/Mips/mips64-f128-call.ll
  test/CodeGen/Mips/mips64-f128.ll
  test/CodeGen/Mips/mips64-libcall.ll
  test/CodeGen/Mips/mips64instrs.ll
  test/CodeGen/Mips/tailcall.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23652.68504.patch
Type: text/x-patch
Size: 79890 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160818/d832eaf5/attachment-0001.bin>


More information about the llvm-commits mailing list