llvm-6502/test/CodeGen/Mips
Daniel Sanders fe6bd52bf2 [mips] BSEL's and BINS[RL] operands are reversed compared to the vselect node used in the pattern.
Summary:
Correct the match patterns and the lowerings that made the CodeGen tests pass despite the mistakes.

The original testcase that discovered the problem was SingleSource/UnitTests/SignlessType/factor.c in test-suite.
During review, we also found that some of the existing CodeGen tests were incorrect and fixed them:
* bitwise.ll: In bsel_v16i8 the IfSet/IfClear were reversed because bsel and bmnz have different operand orders and the test didn't correctly account for this. bmnz goes 'IfClear, IfSet, CondMask', while bsel goes 'CondMask, IfClear, IfSet'.
* vec.ll: In the cases where a bsel is emitted as a bmnz (they are the same operation with a different input tied to the result) the operands were in the wrong order.
* compare.ll and compare_float.ll: The bsel operand order was correct for a greater-than comparison, but a greater-than comparison instruction doesn't exist. Lowering this operation inverts the condition so the IfSet/IfClear need to be swapped to match.

The differences between BSEL, BMNZ, and BMZ and how they map to/from vselect are rather confusing. I've therefore added a note to MSA.txt to explain this in a single place in addition to the comments that explain each case.

Reviewers: matheusalmeida, jacksprat

Reviewed By: matheusalmeida

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203657 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-12 11:54:00 +00:00
..
msa [mips] BSEL's and BINS[RL] operands are reversed compared to the vselect node used in the pattern. 2014-03-12 11:54:00 +00:00
2008-06-05-Carry.ll
2008-07-03-SRet.ll
2008-07-06-fadd64.ll
2008-07-07-Float2Int.ll
2008-07-07-FPExtend.ll
2008-07-07-IntDoubleConvertions.ll
2008-07-15-InternalConstant.ll
2008-07-15-SmallSection.ll
2008-07-16-SignExtInReg.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
2008-07-22-Cstpool.ll
2008-07-23-fpcmp.ll
2008-07-29-icmp.ll
2008-07-31-fcopysign.ll
2008-08-01-AsmInline.ll
2008-08-03-fabs64.ll
2008-08-03-ReturnDouble.ll
2008-08-04-Bitconvert.ll
2008-08-06-Alloca.ll
2008-08-07-CC.ll
2008-08-07-FPRound.ll
2008-08-08-bswap.ll
2008-08-08-ctlz.ll
2008-10-13-LegalizerBug.ll
2008-11-10-xint_to_fp.ll
2009-11-16-CstPoolLoad.ll [mips] Make it impossible to have UnknownABI in CodeGen and Integrated Assembler. 2014-02-20 14:58:19 +00:00
2010-07-20-Switch.ll
2010-11-09-CountLeading.ll
2010-11-09-Mul.ll
2011-05-26-BranchKillsVreg.ll
2012-12-12-ExpandMemcpy.ll
2013-11-18-fp64-const0.ll [mips] Fix 'ran out of registers' in MIPS32 with FP64 when generating code for (ConstantFP 0.0) 2013-11-18 13:12:43 +00:00
abicalls.ll Move tests that just use llc from test/MC/Mips to test/MC/Codegen. 2014-01-26 04:08:47 +00:00
addc.ll
addi.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
addressing-mode.ll
align16.ll Last change for mips16 prolog/epilog cleanup and optimization. 2013-12-15 20:49:30 +00:00
alloca16.ll Last change for mips16 prolog/epilog cleanup and optimization. 2013-12-15 20:49:30 +00:00
alloca.ll
analyzebranch.ll
and1.ll
asm-large-immediate.ll
atomic.ll IR: add a second ordering operand to cmpxhg for failure 2014-03-11 10:48:52 +00:00
atomicops.ll IR: add a second ordering operand to cmpxhg for failure 2014-03-11 10:48:52 +00:00
beqzc1.ll Make all the conditional Mips 16 branches get initially set for the 2013-11-15 02:21:52 +00:00
beqzc.ll Make all the conditional Mips 16 branches get initially set for the 2013-11-15 02:21:52 +00:00
biggot.ll
blez_bgez.ll [mips] Make mips64 the default CPU for the mips64 architecture 2014-02-20 13:13:33 +00:00
blockaddr.ll [mips] Make it impossible to have UnknownABI in CodeGen and Integrated Assembler. 2014-02-20 14:58:19 +00:00
br-jmp.ll
brconeq.ll
brconeqk.ll
brconeqz.ll
brconge.ll
brcongt.ll
brconle.ll
brconlt.ll
brconne.ll
brconnek.ll
brconnez.ll
brdelayslot.ll [mips] Make sure loads from lazy-binding entries do not get CSE'd or hoisted out 2013-09-28 00:12:32 +00:00
brind.ll
brsize3.ll Take care of long short branch immediate instructions for mips16 in 2013-11-13 23:52:18 +00:00
brsize3a.ll Take care of long short branch immediate instructions for mips16 in 2013-11-13 23:52:18 +00:00
bswap.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
buildpairextractelementf64.ll Add extra CHECK prefix to tests with explicit prefix 2014-02-16 13:28:15 +00:00
call-optimization.ll [mips] Fix test case. 2013-12-07 02:48:29 +00:00
check-noat.ll
ci2.ll Fix a funny bug I introduced during conversion of ARM constant islands to Mips. 2013-11-24 02:53:09 +00:00
cmov.ll [mips] Small code generation improvement for conditional operator (select) 2013-12-05 12:07:05 +00:00
cmplarge.ll TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
const1.ll Make first substantial checkin of my port of ARM constant islands code to Mips. 2013-10-27 21:57:36 +00:00
const4a.ll Fix broken CHECK lines. 2014-01-11 21:06:00 +00:00
const6.ll Update older test cases for latest patch. 2013-11-24 03:37:56 +00:00
const6a.ll Adjust offsets for max load instruction offsets. This is more pessimistic 2014-01-16 00:47:46 +00:00
const-mult.ll [mips] Make mips64 the default CPU for the mips64 architecture 2014-02-20 13:13:33 +00:00
constantfp0.ll
cprestore.ll
ctlz.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
DbgValueOtherTargets.test
disable-tail-merge.ll [mips] Test case for r192124. 2013-10-07 21:32:57 +00:00
div_rem.ll
div.ll
divrem.ll [mips] Transfer kill flag to the newly created operand. 2013-10-15 01:06:30 +00:00
divu_remu.ll
divu.ll
double2int.ll
dsp-patterns-cmp-vselect.ll
dsp-patterns.ll
dsp-r1.ll
dsp-r2.ll
dsp-vec-load-store.ll
eh-dwarf-cfa.ll
eh-return32.ll
eh-return64.ll
eh.ll
elf_eflags.ll [Mips] Testcase typo fix. No functionality change. 2014-03-05 22:54:56 +00:00
elf_st_other.ll Remove -print-hack-directives from a test where we already do the right thing. 2014-01-26 04:14:50 +00:00
emit-big-cst.ll
ex2.ll Last change for mips16 prolog/epilog cleanup and optimization. 2013-12-15 20:49:30 +00:00
extins.ll [mips] Do not generate INS/EXT nodes if target does not have support for 2013-10-09 23:36:17 +00:00
f16abs.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
fabs.ll
fastcc.ll [mips] Forbid the use of registers t6, t7 and t8 if the target is NaCl. 2014-02-07 17:16:40 +00:00
fcopysign-f32-f64.ll
fcopysign.ll
fixdfsf.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
fmadd1.ll Add extra CHECK prefix to tests with explicit prefix 2014-02-16 13:28:15 +00:00
fneg.ll
fp16instrinsmc.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
fp16mix.ll Last change for mips16 prolog/epilog cleanup and optimization. 2013-12-15 20:49:30 +00:00
fp16static.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
fp-indexed-ls.ll [mips] Add NaCl target and forbid indexed loads and stores for it 2014-02-05 17:19:30 +00:00
fp-spill-reload.ll
fpbr.ll
fpneeded.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
fpnotneeded.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
fptr2.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
frame-address.ll
frem.ll
global-address.ll [mips] Make it impossible to have UnknownABI in CodeGen and Integrated Assembler. 2014-02-20 14:58:19 +00:00
global-pointer-reg.ll
gpreg-lazy-binding.ll
gprestore.ll
helloworld.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
hf1_body.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
hf16_1.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
hf16call32_body.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
hf16call32.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
hfptrcall.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
i32k.ll Check in conditional branches for constant islands. Still need to finish 2013-11-28 00:56:37 +00:00
i64arg.ll [mips] Make sure there is a chain edge dependency between loads that read 2013-11-09 02:38:51 +00:00
imm.ll
indirectcall.ll
init-array.ll
inlineasm64.ll
inlineasm_constraint.ll
inlineasm-cnstrnt-bad-I-1.ll
inlineasm-cnstrnt-bad-J.ll
inlineasm-cnstrnt-bad-K.ll
inlineasm-cnstrnt-bad-L.ll
inlineasm-cnstrnt-bad-N.ll
inlineasm-cnstrnt-bad-O.ll
inlineasm-cnstrnt-bad-P.ll
inlineasm-cnstrnt-reg64.ll
inlineasm-cnstrnt-reg.ll
inlineasm-operand-code.ll
inlineasmmemop.ll
int-to-float-conversion.ll
internalfunc.ll
jtstat.ll
l3mc.ll This patch has two main functions: 2014-02-14 19:16:39 +00:00
largeimm1.ll
largeimmprinting.ll [mips] Make sure loads from lazy-binding entries do not get CSE'd or hoisted out 2013-09-28 00:12:32 +00:00
lazy-binding.ll [mips] Make sure loads from lazy-binding entries do not get CSE'd or hoisted out 2013-09-28 00:12:32 +00:00
lb1.ll
lbu1.ll
lcb2.ll Check in conditional branches for constant islands. Still need to finish 2013-11-28 00:56:37 +00:00
lcb3c.ll Part 1 of 3 patches that completes very long conditional branches 2013-11-29 22:32:56 +00:00
lcb4a.ll final patch for very long conditional branches for mips16 constant islands. 2013-12-03 23:42:51 +00:00
lcb5.ll final patch for very long conditional branches for mips16 constant islands. 2013-12-03 23:42:51 +00:00
lh1.ll
lhu1.ll
lit.local.cfg
llcarry.ll
load-store-left-right.ll
longbranch.ll [mips] Fix a bug in MipsLongBranch::replaceBranch, which was erasing 2013-10-04 20:51:40 +00:00
machineverifier.ll
madd-msub.ll
mature-mc-support.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
mbrsize4a.ll Add, to constant islands, long jumps similar to ARM far branch. 2013-11-21 05:13:23 +00:00
memcpy.ll
micromips-atomic.ll Fixed operand of SC microMIPS instruction. 2014-02-28 18:22:56 +00:00
micromips-load-effective-address.ll Test case micromips-load-effective-address.s renamed to micromips-load-effective-address.ll and moved to test/CodeGen/Mips. 2014-01-14 16:26:47 +00:00
micromips-long-branch.ll Move tests that just use llc from test/MC/Mips to test/MC/Codegen. 2014-01-26 04:08:47 +00:00
mips16_32_1.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_3.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_4.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_5.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_6.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_7.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_8.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_9.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_32_10.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
mips16_fpret.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
mips16-hf-attr.ll [Mips] Does not take in account 'use-soft-float' attribute's value when 2013-12-25 17:00:27 +00:00
mips16ex.ll
mips16fpe.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
mips64-f128-call.ll
mips64-f128.ll
mips64-fp-indexed-ls.ll
mips64-libcall.ll
mips64-sret.ll
mips64countleading.ll
mips64directive.ll
mips64ext.ll
mips64extins.ll
mips64fpimm0.ll
mips64fpldst.ll [mips] Make it impossible to have UnknownABI in CodeGen and Integrated Assembler. 2014-02-20 14:58:19 +00:00
mips64imm.ll
mips64instrs.ll [mips] Transfer kill flag to the newly created operand. 2013-10-15 01:06:30 +00:00
mips64intldst.ll [mips] Make it impossible to have UnknownABI in CodeGen and Integrated Assembler. 2014-02-20 14:58:19 +00:00
mips64lea.ll
mips64load-store-left-right.ll
mips64muldiv.ll
mips64shift.ll
mipslopat.ll
misha.ll
mno-ldc1-sdc1.ll
mul.ll
mulll.ll
mulull.ll
nacl-align.ll Moved test file from test/MC/Mips to test/CodeGen/Mips. 2014-03-07 22:08:46 +00:00
nacl-branch-delay.ll [mips] Implement NaCl sandboxing of loads, stores and SP changes: 2014-03-10 20:34:23 +00:00
nacl-reserved-regs.ll [mips] Forbid the use of registers t6, t7 and t8 if the target is NaCl. 2014-02-07 17:16:40 +00:00
neg1.ll
nomips16.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
not1.ll
null.ll Fix a low hanging use of hasRawTextSupport. 2014-01-14 18:57:12 +00:00
o32_cc_byval.ll
o32_cc_vararg.ll
o32_cc.ll [mips] Fix a bug in function CC_MipsO32_FP64. The second double precision 2013-11-12 22:16:18 +00:00
optimize-fp-math.ll
optimize-pic-o0.ll Fix regression with -O0 for mips . 2014-03-10 16:31:25 +00:00
or1.ll
powif64_16.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
private.ll
ra-allocatable.ll
rdhwr-directives.ll
rem.ll
remat-immed-load.ll
remu.ll
return_address.ll
return-vector.ll
rotate.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
s2rem.ll Last change for mips16 prolog/epilog cleanup and optimization. 2013-12-15 20:49:30 +00:00
sb1.ll
sel1c.ll [mips] Small code generation improvement for conditional operator (select) 2013-12-05 12:07:05 +00:00
sel2c.ll [mips] Small code generation improvement for conditional operator (select) 2013-12-05 12:07:05 +00:00
select.ll
selectcc.ll
seleq.ll
seleqk.ll
selgek.ll
selgt.ll
selle.ll
selltk.ll
selne.ll
selnek.ll
selpat.ll
selTBteqzCmpi.ll
selTBtnezCmpi.ll
selTBtnezSlti.ll
setcc-se.ll
seteq.ll
seteqz.ll
setge.ll
setgek.ll
setle.ll
setlt.ll
setltk.ll
setne.ll
setuge.ll
setugt.ll
setule.ll
setult.ll
setultk.ll
sh1.ll
shift-parts.ll
simplebr.ll Change the default branch instruction to be the 16 bit variety for mips16. 2013-11-12 02:27:12 +00:00
sint-fp-store_pattern.ll
sitofp-selectcc-opt.ll
sll1.ll
sll2.ll
small-section-reserve-gp.ll
spill-copy-acreg.ll
sr1.ll Last change for mips16 prolog/epilog cleanup and optimization. 2013-12-15 20:49:30 +00:00
sra1.ll
sra2.ll
srl1.ll
srl2.ll
stack-alignment.ll [mips] Partially revert r193641. Stack alignment should not be determined by 2013-11-11 21:49:03 +00:00
stackcoloring.ll
stacksize.ll
stchar.ll
stldst.ll
sub1.ll
sub2.ll
swzero.ll
tail16.ll Fix a problem with mips16 stubs when calls are transformed during 2013-12-18 23:57:48 +00:00
tailcall.ll [mips] Make sure there is a chain edge dependency between loads that read 2013-11-09 02:38:51 +00:00
tls16_2.ll
tls16.ll
tls-alias.ll
tls-models.ll
tls.ll Add extra CHECK prefix to tests with explicit prefix 2014-02-16 13:28:15 +00:00
tnaked.ll
trap1.ll [Mips] Adjust float ABI settings in case of MIPS16 mode. 2013-11-19 12:20:17 +00:00
trap.ll
uitofp.ll
ul1.ll
unalignedload.ll
vector-load-store.ll
vector-setcc.ll
weak.ll
xor1.ll
zeroreg.ll