Skip to content

Commit

Permalink
This allows hello world to be compiled for Mips 64 direct object.
Browse files Browse the repository at this point in the history
It takes advantage of r159299 which introduces relocation support for N64. 
elf-dump needed to be upgraded to support N64 relocations as well.

This passes make check.

Jack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159302 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
Jack Carter committed Jun 27, 2012
1 parent 0140e55 commit a6d6ef6
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/Target/Mips/MipsInstrInfo.td
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ def mem : Operand<i32> {
def mem64 : Operand<i64> {
let PrintMethod = "printMemOperand";
let MIOperandInfo = (ops CPU64Regs, simm16_64);
let EncoderMethod = "getMemEncoding";
}

def mem_ea : Operand<i32> {
Expand Down
39 changes: 39 additions & 0 deletions test/MC/Mips/elf-N64.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
; RUN: llc -filetype=obj -march=mips64el -mcpu=mips64 %s -o - | elf-dump --dump-section-data | FileCheck %s

; Check for N64 relocation production.
;
; ModuleID = '../hello.c'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v64:64:64-n32"
target triple = "mips64el-unknown-linux"

@str = private unnamed_addr constant [12 x i8] c"hello world\00"

define i32 @main() nounwind {
entry:
; Check that the appropriate relocations were created.

; R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16
; CHECK: ('r_type3', 0x05)
; CHECK-NEXT: ('r_type2', 0x18)
; CHECK-NEXT: ('r_type', 0x07)

; R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16
; CHECK: ('r_type3', 0x06)
; CHECK-NEXT: ('r_type2', 0x18)
; CHECK-NEXT: ('r_type', 0x07)

; R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE
; CHECK: ('r_type3', 0x00)
; CHECK-NEXT: ('r_type2', 0x00)
; CHECK-NEXT: ('r_type', 0x14)

; R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE
; CHECK: ('r_type3', 0x00)
; CHECK-NEXT: ('r_type2', 0x00)
; CHECK-NEXT: ('r_type', 0x15)

%puts = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @str, i64 0, i64 0))
ret i32 0

}
declare i32 @puts(i8* nocapture) nounwind

0 comments on commit a6d6ef6

Please sign in to comment.