hanchenye-llvm-project/llvm/test/MC/Mips
Simon Dardis ca74dd79e9 [mips] Recommit: "N64 static relocation model support"
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 is possible to target static
environments.

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.

This partially resolves PR/23485.

Thanks to Brooks Davis for reporting the issue!

This version corrects a "Conditional jump or move depends on uninitialised
value(s)" error detected by valgrind present in the original commit.

Reviewers: dsanders, seanbruno, zoran.jovanovic, vkalintiris

Differential Revision: https://reviews.llvm.org/D23652

llvm-svn: 293279
2017-01-27 11:36:52 +00:00
..
cnmips [mips] Range check simm10 2016-03-24 13:26:59 +00:00
dsp [mips] Range check uimm16 and fix several bugs this revealed. 2016-02-01 15:13:31 +00:00
dspr2 [mips][microMIPS][DSP] Implement PACKRL.PH, PICK.PH, PICK.QB, SHILO, SHILOV and WRDSP instructions 2015-12-18 08:59:37 +00:00
eva [mips][microMIPS] Fix offsets for LLE, LWE, SBE, SCE and SHE instructions 2016-04-29 08:36:54 +00:00
micromips [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
micromips-dsp [mips][microMIPS][DSP] Implement BALIGN, BITREV, BPOSGE32, CMP*, CMPGDU*, CMPGU* and CMPU* instructions 2016-05-17 09:32:58 +00:00
micromips-dspr2 [mips][microMIPS][DSP] Implement BALIGN, BITREV, BPOSGE32, CMP*, CMPGDU*, CMPGU* and CMPU* instructions 2016-05-17 09:32:58 +00:00
micromips-dspr3 [mips][microMIPS] Implement APPEND, BPOSGE32C, MODSUB, MULSA.W.PH and MULSAQ_S.W.PH instructions 2016-05-13 11:32:53 +00:00
micromips32r6 Fix some broken CHECK lines. 2017-01-22 20:28:56 +00:00
micromips64r6 Fix some broken CHECK lines. 2017-01-22 20:28:56 +00:00
mips1 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips2 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips3 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips4 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips5 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips32 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips32r2 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips32r3 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips32r5 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips32r6 [mips] seb, seh instruction aliases 2016-11-22 19:17:23 +00:00
mips64 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips64r2 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips64r3 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips64r5 [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
mips64r6 [mips] seb, seh instruction aliases 2016-11-22 19:17:23 +00:00
msa [mips] Split mem_msa into range checked mem_simm10 and mem_simm10_lsl[123] 2016-03-31 14:12:01 +00:00
asciiz-directive-bad.s
asciiz-directive.s
branch-pseudos-bad.s
branch-pseudos.s
cfi-advance-loc.s
cfi.s
cpload-bad.s
cpload.s [llvm-objdump] Support detection of feature bits from the object and implement this for Mips. 2016-06-16 09:17:03 +00:00
cprestore-bad.s Don't pass relocation-model= to tests that don't need it. 2016-05-18 00:27:17 +00:00
cprestore-noreorder-noat.s [llvm-objdump] Support detection of feature bits from the object and implement this for Mips. 2016-06-16 09:17:03 +00:00
cprestore-noreorder.s [mips] Use --check-prefixes where appropriate. NFC. 2016-06-24 12:23:17 +00:00
cprestore-reorder.s [mips] Use --check-prefixes where appropriate. NFC. 2016-06-24 12:23:17 +00:00
cprestore-warning-unused.s Don't pass a Reloc::Model to MC. 2016-05-18 11:58:50 +00:00
cpsetup-bad.s [MC] Fix Error Location for ParseIdentifier 2016-10-12 13:58:07 +00:00
cpsetup.s [mips] Make the test case more specific and provide OS component of a triple. NFC 2016-12-08 22:10:52 +00:00
directive-ent.s [mips] Use --check-prefixes where appropriate. NFC. 2016-06-24 12:23:17 +00:00
do_switch1.s Don't pass relocation-model= to tests that don't need it. 2016-05-18 00:27:17 +00:00
do_switch2.s Don't pass relocation-model= to tests that don't need it. 2016-05-18 00:27:17 +00:00
do_switch3.s Don't pass relocation-model= to tests that don't need it. 2016-05-18 00:27:17 +00:00
double-expand.s [mips][ias] Move createCpRestoreMemOp to MipsTargetStreamer. NFC. 2016-04-29 16:16:49 +00:00
eh-frame.s
elf-N64.s
elf-bigendian.ll
elf-gprel-32-64.s
elf-relsym.s
elf-tls.s
elf_basic.s
elf_eflags.s [mips] Recommit: "N64 static relocation model support" 2017-01-27 11:36:52 +00:00
elf_eflags_abicalls.s
elf_eflags_micromips.s [mips][ias] EF_MIPS_MICROMIPS should iff microMIPS code was emitted. 2016-05-16 09:10:13 +00:00
elf_eflags_micromips2.s [mips][ias] EF_MIPS_MICROMIPS should iff microMIPS code was emitted. 2016-05-16 09:10:13 +00:00
elf_eflags_mips16.s
elf_eflags_nan2008.s
elf_eflags_nanlegacy.s
elf_eflags_noreorder.s
elf_eflags_pic0.s
elf_eflags_pic2.s
elf_reginfo.s
elf_st_other.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
expansion-j-sym-pic.s [mips] For PIC code convert unconditional jump to unconditional branch 2016-12-12 17:40:26 +00:00
expansion-jal-sym-pic.s [mips] For PIC code convert unconditional jump to unconditional branch 2016-12-12 17:40:26 +00:00
expr1.s Re-commit r277988: [mips][ias] Fix all the hacks related to MIPS-specific unary operators (%hi/%lo/%gp_rel/etc.). 2016-08-08 11:50:25 +00:00
got-rel-expr.s [mips][ias] R_MIPS_(GOT|HI|LO|PC)16 and R_MIPS_GPREL32 do not need symbols. 2016-05-09 10:21:14 +00:00
hex-immediates.s Revert r265817 2016-04-08 18:15:37 +00:00
higher-highest-addressing.s [mips] Remove CPU-only triples from llvm-objdump commands. 2016-06-03 10:22:22 +00:00
hilo-addressing.s Revert r265817 2016-04-08 18:15:37 +00:00
init-order-bug.ll Don't pass a Reloc::Model to MC. 2016-05-18 11:58:50 +00:00
insn-directive.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
instalias-imm-expanding.s [mips] Range check simm32 and fold MIPS16's imm32 into simm32. 2016-04-04 15:32:49 +00:00
instr-analysis.s Revert r265817 2016-04-08 18:15:37 +00:00
lit.local.cfg
llvm-mc-fixup-endianness.s
macro-abs.s [mips] Absolute value macro expansion 2016-01-29 16:18:34 +00:00
macro-bcc-imm-bad.s [mips][ias] Implement macro expansion when bcc has an immediate where a register belongs. 2015-10-12 14:24:05 +00:00
macro-bcc-imm.s [mips][ias] Implement macro expansion when bcc has an immediate where a register belongs. 2015-10-12 14:24:05 +00:00
macro-ddiv-bad.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-ddiv.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-ddivu-bad.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-ddivu.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-div-bad.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-div.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-divu-bad.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-divu.s [mips] Addition of a third operand to the instructions [d]div, [d]divu 2016-05-16 08:57:59 +00:00
macro-dla-32bit.s [mips] Allowed dla instructions on 32-bit architectures. 2016-01-21 15:11:01 +00:00
macro-dla.s [mips] Changed the way symbols are handled in dla and la instructions to allow simple expressions. 2015-10-05 13:19:29 +00:00
macro-dli.s
macro-la-bad.s
macro-la-pic.s [mips] Implement 'la' macro in PIC mode for O32. 2016-06-03 09:53:06 +00:00
macro-la.s [mips] Correct label prefixes for N32 and N64. 2016-07-19 10:49:03 +00:00
macro-ld-sd.s llvm/test/MC/Mips/macro-ld-sd.s: Sweep a spurious character \xA0 in the test file. 2016-10-19 13:41:12 +00:00
macro-li-bad.s [mips][ias] fix li macro when values are negated with ~ 2016-10-05 18:26:19 +00:00
macro-li.s Fix some broken CHECK lines. 2017-01-22 20:28:56 +00:00
macro-seq.s [mips] seq macro support 2016-11-21 20:30:41 +00:00
memory-offsets.s [mips][ias] Handle more complicated expressions for memory operands 2016-10-18 15:17:17 +00:00
micromips-16-bit-instructions.s
micromips-alias.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
micromips-alu-instructions.s [mips][microMIPS] Add CodeGen support for AND*, OR16, OR*, XOR*, NOT16 and NOR instructions 2016-06-15 07:46:24 +00:00
micromips-bad-branches.s
micromips-branch-fixup.s
micromips-branch-instructions.s
micromips-control-instructions.s [mips][microMIPS] Implement PAUSE, RDHWR, RDPGPR, SDBBP, SSNOP, SYNC, SYNCI and WAIT instructions 2015-10-28 11:04:29 +00:00
micromips-diagnostic-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
micromips-el-fixup-data.s [mips][microMIPS] Implement BLTZC, BLEZC, BGEZC and BGTZC instructions, fix disassembly and add operand checking to existing B<cond>C implementations 2016-08-22 12:17:59 +00:00
micromips-expansions.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
micromips-fpu-instructions.s
micromips-func-addr.s [LLVM] Remove unwanted --check-prefix=CHECK from unit tests. NFC. 2016-04-19 23:51:52 +00:00
micromips-invalid.s [mips][micromips] Implement LD, LLD, LWU, SD, DSRL, DSRL32 and DSRLV instructions 2016-06-27 08:23:28 +00:00
micromips-jump-instructions.s
micromips-jump26.s
micromips-label-test-sections.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
micromips-label-test.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
micromips-loadstore-instructions.s
micromips-loadstore-unaligned.s
micromips-movcond-instructions.s
micromips-multiply-instructions.s
micromips-pc16-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
micromips-relocations.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
micromips-shift-instructions.s [mips][microMIPS] Add CodeGen support for SLL16, SRL16, SLL, SLLV, SRA, SRAV, SRL and SRLV instructions 2016-04-27 11:02:23 +00:00
micromips-tailr.s
micromips-trap-instructions.s
mips-abi-bad.s
mips-alu-instructions.s
mips-bad-branches.s
mips-control-instructions.s [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips-cop0-reginfo.s [LLVM] Remove unwanted --check-prefix=CHECK from unit tests. NFC. 2016-04-19 23:51:52 +00:00
mips-coprocessor-encodings.s
mips-data-directives.s [mips] Implemented the .hword directive. 2016-02-15 16:11:51 +00:00
mips-diagnostic-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
mips-expansions-bad.s [mips] Use --check-prefixes where appropriate. NFC. 2016-06-24 12:23:17 +00:00
mips-expansions.s [mips] Add support for unaligned load/store macros. 2016-11-22 16:43:49 +00:00
mips-fpu-instructions.s
mips-hwr-register-names.s
mips-jump-delay-slots.s
mips-jump-instructions.s
mips-memory-instructions.s
mips-noat.s
mips-pc16-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
mips-pdr-bad.s
mips-pdr.s [mips] Removed the SHF_ALLOC flag and the SHT_REL flag from the .pdr section. 2016-02-17 11:15:16 +00:00
mips-reginfo-fp32.s
mips-reginfo-fp64.s
mips-register-names-invalid.s
mips-register-names-o32.s
mips64-alu-instructions.s [mips][ias] Range check uimm5 operands and fix several bugs this revealed. 2015-11-26 16:35:41 +00:00
mips64-expansions.s [mips] Make symbols an acceptable branch target when expanding compare-to-immediate-and-branch macros. 2016-02-29 11:24:49 +00:00
mips64-instructions.s
mips64-register-names-n32-n64.s
mips64-register-names-o32.s [mips] Change instruction s/daddiu/addiu/ since O32 prohibits the use of 64-bit GPRs. NFC 2016-12-08 22:10:48 +00:00
mips64eb-fixups.s
mips64extins.s [llvm-objdump] Support detection of feature bits from the object and implement this for Mips. 2016-06-16 09:17:03 +00:00
mips64shift.ll [mips] Remove CPU-only triples from llvm-objdump commands. 2016-06-03 10:22:22 +00:00
mips_abi_flags_xx.s [mips] Use --check-prefixes where appropriate. NFC. 2016-06-24 12:23:17 +00:00
mips_abi_flags_xx_set.s
mips_directives.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
mips_directives_bad.s
mips_gprel16.s [llvm-objdump] Support detection of feature bits from the object and implement this for Mips. 2016-06-16 09:17:03 +00:00
module-directive-bad.s
module-hardfloat.s
module-softfloat.s
multi-64bit-func.ll
nabi-regs.s
nacl-mask.s [mips] Remove CPU-only triples from llvm-objdump commands. 2016-06-03 10:22:22 +00:00
nooddspreg-cmdarg.s [mips] Don't derive the default ABI from the CPU in the backend. 2016-06-23 12:42:53 +00:00
nooddspreg-error.s
nooddspreg.s [mips] Don't derive the default ABI from the CPU in the backend. 2016-06-23 12:42:53 +00:00
octeon-instructions.s
oddspreg.s [mips] Use --check-prefixes where appropriate. NFC. 2016-06-24 12:23:17 +00:00
pr11877.s
r-mips-got-disp.s
reloc-directive-bad.s Implement .reloc (constant offset only) with support for R_MIPS_NONE and R_MIPS_32. 2015-11-12 13:33:00 +00:00
reloc-directive-negative.s [MC, COFF] Add .reloc support for WinCOFF 2016-01-19 23:05:27 +00:00
reloc-directive.s [mips][ias] N32/N64 must not sort the relocation table. 2016-12-05 12:55:19 +00:00
relocation-n64.s [mips] Use --check-prefixes where appropriate. NFC. 2016-06-24 12:23:17 +00:00
relocation-xfail.s [mips][ias] Work around yet another incorrect microMIPS relocation evaluation exposed by r268900. 2016-05-13 12:07:14 +00:00
relocation.s [mips][ias] Support .dtprel[d]word and .tprel[d]word directives 2016-08-22 16:18:42 +00:00
rotations32-bad.s [mips] Add tests for ROL and ROR macros expansion 2015-11-19 15:04:31 +00:00
rotations32.s [mips] Add tests for ROL and ROR macros expansion 2015-11-19 15:04:31 +00:00
rotations64.s [mips] Add tests for ROL and ROR macros expansion 2015-11-19 15:04:31 +00:00
section-size.s [mips][ias] Only round section sizes when explicitly requested. 2016-05-04 13:21:06 +00:00
set-arch.s [mips] add assembler support for .set arch=octeon 2016-04-12 15:28:16 +00:00
set-at-directive-explicit-at.s
set-at-directive.s
set-at-noat-bad-syntax.s
set-defined-symbol.s [llvm-objdump] Support detection of feature bits from the object and implement this for Mips. 2016-06-16 09:17:03 +00:00
set-mips-directives-bad.s
set-mips-directives.s
set-mips0-directive.s
set-mips16-directive.s
set-nodsp.s
set-nomacro-micromips.s
set-nomacro.s [mips][ias] Implement ulh macro. 2015-10-15 14:52:58 +00:00
set-oddspreg-nooddspreg-error.s
set-oddspreg-nooddspreg.s
set-push-pop-directives-bad.s Fix Mips Parser error reporting 2016-05-05 14:15:46 +00:00
set-push-pop-directives.s
set-softfloat-hardfloat-bad.s
set-softfloat-hardfloat.s
sext_64_32.ll [mips] Remove CPU-only triples from llvm-objdump commands. 2016-06-03 10:22:22 +00:00
sort-relocation-table.s [mips][ias] R_MIPS_(GOT|HI|LO|PC)16 and R_MIPS_GPREL32 do not need symbols. 2016-05-09 10:21:14 +00:00
sym-expr.s
sym-offset.ll
target-soft-float.s [mips][microMIPS] Implement LDC1, SDC1, LDC2, SDC2, LWC1, SWC1, LWC2 and SWC2 instructions and add CodeGen support 2016-07-11 07:41:56 +00:00
unaligned-nops.s
update-module-level-options.s
user-macro-argument-separation.s [MC] Fixed parsing of macro arguments where expressions with spaces are present. 2016-02-11 13:48:49 +00:00
xgot.s