llvm-6502/test/CodeGen/Mips/msa
Daniel Sanders 68138dc9a8 [mips][msa] Fix invalid generated code when lowering FrameIndex involving unaligned offsets.
Summary:
The MSA ld.[bhwd] and st.[bhwd] instructions scale the immediate by the
element size before use as an offset. The offset must therefore be a
multiple of the element size to be valid in these instructions. However,
an unaligned base address is valid in MSA.

This commit causes the compiler to emit valid code when the calculated
offset is not a multiple of the element size by accounting for the offset
using addiu and using a zero offset in the load/store.

Depends on D2338

Reviewers: matheusalmeida

Reviewed By: matheusalmeida

Differential Revision: http://llvm-reviews.chandlerc.com/D2339

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196777 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-09 12:47:12 +00:00
..
2r_vector_scalar.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
2r.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
2rf_exup.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
2rf_float_int.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
2rf_fq.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
2rf_int_float.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
2rf_tq.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
2rf.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r_4r_widen.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r_4r.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r_splat.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-a.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-b.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
3r-c.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-d.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-i.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-m.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-p.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-s.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3r-v.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3rf_4rf_q.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3rf_4rf.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3rf_exdo.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3rf_float_int.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3rf_int_float.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3rf_q.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
3rf.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
arithmetic_float.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
arithmetic.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
basic_operations_float.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
basic_operations.ll [mips][msa] Merge basic_operations_little.ll into basic_operations.ll. 2013-11-15 17:24:41 +00:00
bit.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
bitcast.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
bitwise.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
compare_float.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
compare.ll Add support for legalizing SETNE/SETEQ by inverting the condition code and the result of the comparison. 2013-11-21 13:24:49 +00:00
elm_copy.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
elm_cxcmsa.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
elm_insv.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
elm_move.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
elm_shift_slide.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
endian.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
frameindex.ll [mips][msa] Fix invalid generated code when lowering FrameIndex involving unaligned offsets. 2013-12-09 12:47:12 +00:00
i5_ld_st.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
i5-a.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
i5-b.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
i5-c.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
i5-m.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
i5-s.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
i8.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
i10.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
inline-asm.ll [mips][msa] Enable inlinse assembly for MSA. 2013-11-12 12:56:01 +00:00
llvm-stress-s449609655-simplified.ll [mips][msa] Fix a corner case in performORCombine() when combining nodes into VSELECT. 2013-11-21 16:11:31 +00:00
llvm-stress-s525530439.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
llvm-stress-s997348632.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
llvm-stress-s1704963983.ll Fix illegal DAG produced by SelectionDAG::getConstant() for v2i64 type 2013-11-15 12:56:49 +00:00
llvm-stress-s1935737938.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
llvm-stress-s2090927243-simplified.ll [mips][msa] Add test case that should have been added in r195456. 2013-11-22 15:47:18 +00:00
llvm-stress-s2501752154-simplified.ll [mips][msa] Float vector constants cannot use ldi.[wd] directly. Bitcast from the appropriate integer vector type. 2013-11-22 11:24:50 +00:00
llvm-stress-s2704903805.ll [mips][msa/dsp] Only do DSP combines if DSP is enabled. 2013-11-21 11:40:14 +00:00
llvm-stress-s3861334421.ll Add support for legalizing SETNE/SETEQ by inverting the condition code and the result of the comparison. 2013-11-21 13:24:49 +00:00
llvm-stress-s3926023935.ll Fixed tryFoldToZero() for vector types that need expansion. 2013-11-25 11:14:43 +00:00
llvm-stress-s3997499501.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
llvm-stress-sz1-s742806235.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
shift-dagcombine.ll Vector forms of SHL, SRA, and SRL can be constant folded using SimplifyVBinOp too 2013-11-11 17:23:41 +00:00
shuffle.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
special.ll [mips][msa] Added lsa instruction 2013-10-17 13:38:20 +00:00
spill.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00
vec.ll [mips][msa] Added support for matching bmnz, bmnzi, bmz, and bmzi from normal IR (i.e. not intrinsics) 2013-10-30 15:20:38 +00:00
vecs10.ll [mips][msa] Build all the tests in little and big endian modes and correct an incorrect test. 2013-11-15 11:04:16 +00:00