-
Notifications
You must be signed in to change notification settings - Fork 10.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Summary: This directive is used for setting up $gp in the beginning of a function. It expands to three instructions if PIC is enabled: lui $gp, %hi(_gp_disp) addui $gp, $gp, %lo(_gp_disp) addu $gp, $gp, $reg _gp_disp is a special symbol that the linker sets to the distance between the lui instruction and the context pointer (_gp). Reviewers: dsanders Reviewed By: dsanders Differential Revision: http://reviews.llvm.org/D3480 llvm-svn: 207637
- Loading branch information
Matheus Almeida
committed
Apr 30, 2014
1 parent
c0284d1
commit 525bc4f
Showing
5 changed files
with
148 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# RUN: not llvm-mc %s -arch=mips -mcpu=mips32r2 2>%t1 | ||
# RUN: FileCheck %s < %t1 -check-prefix=ASM | ||
|
||
.text | ||
.option pic2 | ||
.set reorder | ||
.cpload $25 | ||
# ASM: :[[@LINE-1]]:9: warning: .cpload in reorder section | ||
.set noreorder | ||
.cpload $32 | ||
# ASM: :[[@LINE-1]]:17: error: invalid register | ||
.cpload $foo | ||
# ASM: :[[@LINE-1]]:17: error: expected register containing function address | ||
.cpload bar | ||
# ASM: :[[@LINE-1]]:17: error: expected register containing function address |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 | FileCheck %s -check-prefix=ASM | ||
# | ||
# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 -filetype=obj -o -| \ | ||
# RUN: llvm-objdump -d -r -arch=mips - | \ | ||
# RUN: FileCheck %s -check-prefix=OBJ | ||
|
||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -filetype=obj -o -| \ | ||
# RUN: llvm-objdump -d -r -arch=mips - | \ | ||
# RUN: FileCheck %s -check-prefix=OBJ64 | ||
|
||
# ASM: .text | ||
# ASM: .option pic2 | ||
# ASM: .set noreorder | ||
# ASM: .cpload $25 | ||
# ASM: .set reorder | ||
|
||
# OBJ: .text | ||
# OBJ: lui $gp, 0 | ||
# OBJ: R_MIPS_HI16 _gp_disp | ||
# OBJ: addiu $gp, $gp, 0 | ||
# OBJ: R_MIPS_LO16 _gp_disp | ||
# OBJ: addu $gp, $gp, $25 | ||
|
||
# OBJ64: .text | ||
# OBJ64-NOT: lui $gp, 0 | ||
# OBJ64-NOT: addiu $gp, $gp, 0 | ||
# OBJ64-NOT: addu $gp, $gp, $25 | ||
|
||
.text | ||
.option pic2 | ||
.set noreorder | ||
.cpload $25 | ||
.set reorder |