Hrvoje Varga
e51b0e13f3
[mips][microMIPS] Implement RECIP.fmt, RINT.fmt, ROUND.L.fmt, ROUND.W.fmt, SEL.fmt, SELEQZ.fmt, SELNEQZ.fmt and CLASS.fmt
...
Differential Revision: http://reviews.llvm.org/D13885
llvm-svn: 254405
2015-12-01 11:59:21 +00:00
Hrvoje Varga
c03957f049
[mips][microMIPS] Implement LBUX, LHX, LWX, MAQ_S[A].W.PHL, MAQ_S[A].W.PHR, MFHI, MFLO, MTHI and MTLO instructions
...
Differential Revision: http://reviews.llvm.org/D14436
llvm-svn: 254297
2015-11-30 12:58:39 +00:00
Zoran Jovanovic
a887b36167
[mips][microMIPS] Fix issue with offset operand of BALC and BC instructions
...
Value of offset operand for microMIPS BALC and BC instructions is currently shifted 2 bits, but it should be 1 bit.
Differential Revision: http://reviews.llvm.org/D14770
llvm-svn: 254296
2015-11-30 12:56:18 +00:00
Zlatko Buljan
56f3b0e410
[mips][microMIPS] Implement PRECR.QB.PH, PRECR_SRA[_R].PH.W, PRECRQ.PH.W, PRECRQ.QB.PH, PRECRQU_S.QB.PH and PRECRQ_RS.PH.W instructions
...
Differential Revision: http://reviews.llvm.org/D14605
llvm-svn: 254291
2015-11-30 08:37:38 +00:00
Hrvoje Varga
b65518c15c
[mips][microMIPS] Implement MUL[_S].PH, MULEQ_S.W.PHL, MULEQ_S.W.PHR, MULEU_S.PH.QBL, MULEU_S.PH.QBR, MULQ_RS.PH, MULQ_RS.W, MULQ_S.PH and MULQ_S.W instructions
...
Differential Revision: http://reviews.llvm.org/D14280
llvm-svn: 253651
2015-11-20 07:14:52 +00:00
Hrvoje Varga
78409019d9
[mips][microMIPS] Implement DPS.W.PH, DPSQ_S.W.PH, DPSQ_SA.L.W, DPSQX_S.W.PH, DPSQX_SA.W.PH, DPSU.H.QBL, DPSU.H.QBR and DPSX.W.PH instructions
...
Differential Revision: http://reviews.llvm.org/D14058
llvm-svn: 253443
2015-11-18 07:41:35 +00:00
Zlatko Buljan
72a7f9c1f5
[mips][microMIPS] Implement EXTP, EXTPDP, EXTPDPV, EXTPV, EXTR[_RS].W, EXTR_S.H, EXTRV[_RS].W and EXTRV_S.H instructions
...
Differential Revision: http://reviews.llvm.org/D14174
llvm-svn: 253332
2015-11-17 12:54:15 +00:00
Zlatko Buljan
246b21f66a
[mips][microMIPS] Implement SUBQ[_S].PH, SUBQ_S.W, SUBQH[_R].PH, SUBQH[_R].W, SUBU[_S].PH, SUBU[_S].QB and SUBUH[_R].QB instructions
...
Differential Revision: http://reviews.llvm.org/D14114
llvm-svn: 253329
2015-11-17 10:11:22 +00:00
Zlatko Buljan
3e0588d033
[mips][microMIPS] Implement PRECEQ.W.PHL, PRECEQ.W.PHR, PRECEQU.PH.QBL, PRECEQU.PH.QBLA, PRECEQU.PH.QBR, PRECEQU.PH.QBRA, PRECEU.PH.QBL, PRECEU.PH.QBLA, PRECEU.PH.QBR and PRECEU.PH.QBRA instructions
...
Differential Revision: http://reviews.llvm.org/D14279
llvm-svn: 253326
2015-11-17 09:43:29 +00:00
Zlatko Buljan
d1dea944b1
Added microMIPSDSPr1 assembler and disassembler tests to existing microMIPSDSPr2 test files.
...
llvm-svn: 253320
2015-11-17 07:58:27 +00:00
Zlatko Buljan
32fb5c40d2
[mips][microMIPS] Implement SHRA[_R].PH, SHRAV[_R].PH, SHRAV[_R].QB, SHRAV_R.W, SHRA_R.W, SHRL.PH, SHRL.QB, SHRLV.PH and SHRLV.QB instructions
...
Differential Revision: http://reviews.llvm.org/D14010
llvm-svn: 253041
2015-11-13 13:14:25 +00:00
Zlatko Buljan
797c2aec6b
[mips][microMIPS] Implement LWM16, SB16, SH16, SW16, SWSP and SWM16 instructions
...
Differential Revision: http://reviews.llvm.org/D11406
llvm-svn: 252885
2015-11-12 13:21:33 +00:00
Daniel Sanders
ea4f653d18
[mips][ias] Range check uimm2 operands and fix a bug this revealed.
...
Summary:
The bug was that the MIPS32R6/MIPS64R6/microMIPS32R6 versions of LSA and DLSA
(unlike the MSA version) failed to account for the off-by-one encoding of the
immediate. The range is actually 1..4 rather than 0..3.
Reviewers: vkalintiris
Subscribers: atanasyan, dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D14015
llvm-svn: 252295
2015-11-06 12:22:31 +00:00
Hrvoje Varga
18148671ee
[mips][microMIPS] Implement PAUSE, RDHWR, RDPGPR, SDBBP, SSNOP, SYNC, SYNCI and WAIT instructions
...
Differential Revision: http://reviews.llvm.org/D12628
llvm-svn: 251510
2015-10-28 11:04:29 +00:00
Zlatko Buljan
2cf61020b8
[mips][microMIPS] Implement SHLL.PH, SHLL_S.PH, SHLL.QB, SHLLV.PH, SHLLV_S.PH, SHLLV.QB, SHLLV_S.W, SHLL_S.W, SHRA.QB and SHRA_R.QB instructions
...
Differential Revision: http://reviews.llvm.org/D13929
llvm-svn: 251098
2015-10-23 06:39:29 +00:00
Daniel Sanders
0f596814e9
[mips][msa] Remove copy_u.d and move copy_u.w to MSA64.
...
Summary:
The forwards compatibility strategy employed by MIPS is to consider registers
to be infinitely sign-extended. Then on ISA's with a wider register, the result
of existing instructions are sign-extended to register width and zero-extended
counterparts are added. copy_u.w on MSA32 and copy_u.w on MSA64 violate this
strategy and we have therefore corrected the MSA specs to fix this.
We still keep track of sign/zero-extension during legalization but we now
match copy_s.[wd] where required.
No change required to clang since __builtin_msa_copy_u_[wd] will map to
copy_s.[wd] where appropriate for the target.
Reviewers: vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D13472
llvm-svn: 250887
2015-10-21 09:58:54 +00:00
Zlatko Buljan
5292083584
[mips][microMIPS] Implement ADDQ.PH, ADDQ_S.W, ADDQH.PH, ADDQH.W, ADDSC, ADDU.PH, ADDU_S.QB, ADDWC and ADDUH.QB instructions
...
Differential Revision: http://reviews.llvm.org/D13130
llvm-svn: 250685
2015-10-19 07:16:26 +00:00
Zlatko Buljan
d0a7d6e4ee
[mips][microMIPS] Implement ABSQ.QB, ABSQ_S.PH, ABSQ_S.W, ABSQ_S.QB, INSV, MADD, MADDU, MSUB, MSUBU, MULT and MULTU instructions
...
Differential Revision: http://reviews.llvm.org/D13721
llvm-svn: 250683
2015-10-19 06:34:44 +00:00
Zlatko Buljan
4c4f21b971
Commited two test files which are forgotten during commit of patch for http://reviews.llvm.org/D13376
...
llvm-svn: 250512
2015-10-16 13:03:10 +00:00
Hrvoje Varga
3c88fbd367
[mips][microMIPS] Implement LB, LBE, LBU and LBUE instructions
...
Differential Revision: http://reviews.llvm.org/D11633
llvm-svn: 250511
2015-10-16 12:24:58 +00:00
Zlatko Buljan
54b1eb4c73
[mips][microMIPS] Implement DPA.W.PH, DPAQ_S.W.PH, DPAQ_SA.L.W, DPAQX_S.W.PH, DPAQX_SA.W.PH, DPAU.H.QBL, DPAU.H.QBR and DPAX.W.PH instructions
...
Differential Revision: http://reviews.llvm.org/D13376
llvm-svn: 250382
2015-10-15 08:59:45 +00:00
Hrvoje Varga
3a3c4b8a39
[mips][microMIPS] Implement BREAK16, LI16, MOVE16, SDBBP16, SUBU16 and XOR16 instructions
...
Differential Revision: http://reviews.llvm.org/D11292#inline-103143
llvm-svn: 250381
2015-10-15 08:39:07 +00:00
Hrvoje Varga
3ef4dd7bc8
[mips][microMIPS] Implement LLE and SCE instructions
...
Differential Revision: http://reviews.llvm.org/D11630
llvm-svn: 250379
2015-10-15 08:11:50 +00:00
Hrvoje Varga
a766eff5a0
[mips][microMIPS] Implement LWLE, LWRE, SWLE and SWRE instructions
...
Differential Revision: http://reviews.llvm.org/D11631
llvm-svn: 250377
2015-10-15 07:23:06 +00:00
Zoran Jovanovic
2e386d3d07
[mips][micromips] Initial support for micrmomips DSP instructions and addu.qb implementation
...
Differential Revision: http://reviews.llvm.org/D12798
llvm-svn: 250058
2015-10-12 16:07:25 +00:00
Daniel Sanders
bb65d730bf
[mips][disassembler] Changed CHECK-EB directives to CHECK so div/divu are tested.
...
llvm-svn: 249386
2015-10-06 10:08:14 +00:00
Daniel Sanders
d245267be0
[mips][disassembler] Merged disassembler tests into the corresponding ISA/ASE subdirectories.
...
llvm-svn: 249384
2015-10-06 10:02:35 +00:00
Daniel Sanders
31bfdb5a82
[mips][disassembler] Moved DSP tests into proper place and corrected formatting.
...
llvm-svn: 249383
2015-10-06 09:28:48 +00:00
Zoran Jovanovic
5a8dffc618
[mips][microMIPS] Implement JALRC16, JRCADDIUSP and JRC16 instructions
...
Differential Revision: http://reviews.llvm.org/D11219
llvm-svn: 249317
2015-10-05 14:00:09 +00:00
Zoran Jovanovic
2960f3a346
[mips][microMIPS] Implement CACHEE, WRPGPR and WSBH instructions
...
Differential Revision: http://reviews.llvm.org/D10337
llvm-svn: 249004
2015-10-01 12:49:27 +00:00
Daniel Sanders
df19a5e605
[mips][microMIPS] Fix an invalid read for lwm32 and reserved reglist values.
...
Summary:
Some values of 'reglist' are reserved and cause the disassembler to read past
the end of the Regs array. Treat lwm32's containing reserved values as invalid
instructions.
Reviewers: zoran.jovanovic
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12959
llvm-svn: 247990
2015-09-18 14:20:54 +00:00
Zoran Jovanovic
7ba636cb4c
[mips][microMIPS] Implement TEQ, TGE, TGEU, TLT, TLTU and TNE instructions
...
Differential Revision: http://reviews.llvm.org/D9658
llvm-svn: 247880
2015-09-17 10:14:09 +00:00
Zoran Jovanovic
6e6a2c9cd7
[mips][microMIPS] Implement PREFX, LHUE, LBE, LBUE, LHE, LWE, SBE, SHE and SWE instructions
...
Differential Revision: http://reviews.llvm.org/D9189
llvm-svn: 247780
2015-09-16 09:14:35 +00:00
Zoran Jovanovic
dc4b8c2761
[mips][microMIPS] Fix an issue with disassembling lwm32 instruction
...
Fixed microMIPS disassembler crash on test case generated by llvm-mc-fuzzer.
Differential Revision: http://reviews.llvm.org/D12881
llvm-svn: 247698
2015-09-15 15:21:27 +00:00
Zoran Jovanovic
7beb737b46
[mips][microMIPS] Implement CACHEE and PREFE instructions for microMIPS32r6
...
Differential Revision: http://reviews.llvm.org/D11632
llvm-svn: 247670
2015-09-15 10:05:10 +00:00
Daniel Sanders
e4e83a7bc1
[mips] Added support for various EVA ASE instructions.
...
Summary:
Added support for the following instructions:
CACHEE, LBE, LBUE, LHE, LHUE, LWE, LLE, LWLE, LWRE, PREFE,
SBE, SHE, SWE, SCE, SWLE, SWRE, TLBINV, TLBINVF
This required adding some infrastructure for the EVA ASE.
Patch by Scott Egerton.
Reviewers: vkalintiris, dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D11139
llvm-svn: 247669
2015-09-15 10:02:16 +00:00
Daniel Sanders
715f8f1332
[mips] Add missing disassembler tests for MIPS64-MIPS64R5.
...
llvm-svn: 247422
2015-09-11 16:24:11 +00:00
Daniel Sanders
9676db005e
[mips] Add missing MIPS32 - MIPS32R5 disassembler tests.
...
llvm-svn: 247420
2015-09-11 15:28:19 +00:00
Daniel Sanders
aba4daab10
[mips] Attempt to fix llvm-s390x-linux1
...
It doesn't seem to like the '|&' in the test command.
llvm-svn: 247418
2015-09-11 14:57:54 +00:00
Daniel Sanders
9bbda77006
[mips] Add missing MIPS-IV disassembler tests.
...
llvm-svn: 247417
2015-09-11 14:54:58 +00:00
Daniel Sanders
ff338fa355
[mips] Add missing MIPS-III disassembler tests.
...
llvm-svn: 247416
2015-09-11 14:48:46 +00:00
Daniel Sanders
3b571d05f8
[mips] Add missing MIPS-II disassembler tests.
...
These tests were found by llvm-mc-fuzzer (see http://reviews.llvm.org/D12723 )
and were verified by checking the disassembler output is accepted by GAS.
llvm-svn: 247414
2015-09-11 14:34:41 +00:00
Daniel Sanders
44c1d0c4f1
Re-commit r247405: [mips] Add missing MIPS-I disassembler tests.
...
These tests were found by llvm-mc-fuzzer (see http://reviews.llvm.org/D12723 )
and verified by checking the disassembler output is accepted by GAS.
The problematic tests from the previous commit have been moved to
valid-xfail.txt for now.
Also, give invalid instructions some coverage. invalid-xfail.txt contains
instructions that should be invalid but successfully disassemble.
llvm-svn: 247407
2015-09-11 12:59:03 +00:00
Daniel Sanders
c6a2034d0f
Revert r247405: [mips] Add missing MIPS-I disassembler tests.
...
A small number of the added tests have operands that change on each round trip.
llvm-svn: 247406
2015-09-11 12:42:38 +00:00
Daniel Sanders
f05bf32b38
[mips] Add missing MIPS-I disassembler tests.
...
These tests were found by llvm-mc-fuzzer (see http://reviews.llvm.org/D12723 )
and verified by checking the disassembler output is accepted by GAS.
llvm-svn: 247405
2015-09-11 12:24:06 +00:00
Zoran Jovanovic
6b28f09d67
[mips][microMIPS] Implement ADDU16, AND16, ANDI16, NOT16, OR16, SLL16 and SRL16 instructions
...
Differential Revision: http://reviews.llvm.org/D11178
llvm-svn: 247146
2015-09-09 13:55:45 +00:00
Zoran Jovanovic
d9790793d6
[mips][microMIPS] Implement CACHEE and PREFE instructions
...
Differential Revision: http://reviews.llvm.org/D11628
llvm-svn: 247125
2015-09-09 09:10:46 +00:00
Zoran Jovanovic
2da1437d62
[mips][microMIPS] Implement LLE, LUI, LW and LWE instructions
...
Differential Revision: http://reviews.llvm.org/D1179
llvm-svn: 247017
2015-09-08 15:02:50 +00:00
Zoran Jovanovic
9eaa30d2bf
[mips][microMIPS] Implement SB, SBE, SCE, SH and SHE instructions
...
Differential Revision: http://reviews.llvm.org/D11801
llvm-svn: 246999
2015-09-08 10:18:38 +00:00
Zoran Jovanovic
68be5f21a9
[mips][microMIPS] Add microMIPS32r6 and microMIPS64r6 tests for existing 16-bit LBU16, LHU16, LW16, LWGP and LWSP instructions
...
Differential Revision: http://reviews.llvm.org/D10956
llvm-svn: 246987
2015-09-08 08:25:34 +00:00
Zoran Jovanovic
7b85682541
[mips][microMIPS] Implement ABS.fmt, CEIL.L.fmt, CEIL.W.fmt, FLOOR.L.fmt, FLOOR.W.fmt, TRUNC.L.fmt, TRUNC.W.fmt, RSQRT.fmt and SQRT.fmt instructions
...
Differential Revision: http://reviews.llvm.org/D11674
llvm-svn: 246968
2015-09-07 13:01:04 +00:00
Zoran Jovanovic
ada7091812
[mips][microMIPS] Implement BC16, BEQZC16 and BNEZC16 instructions
...
Differential Revision: http://reviews.llvm.org/D11181
llvm-svn: 246963
2015-09-07 11:56:37 +00:00
Zoran Jovanovic
14f308e44f
[mips][microMIPS] Implement CVT.D.fmt, CVT.L.fmt, CVT.S.fmt, CVT.W.fmt, MAX.fmt, MIN.fmt, MAXA.fmt, MINA.fmt and CMP.condn.fmt instructions
...
Differential Revision: http://reviews.llvm.org/D12141
llvm-svn: 246960
2015-09-07 10:31:31 +00:00
Zoran Jovanovic
89ca2b982e
[mips][microMIPS] Implement ADD.fmt, SUB.fmt, MOV.fmt, MUL.fmt, DIV.fmt, MADDF.fmt, MSUBF.fmt and NEG.fmt instructions
...
Differential Revision: http://reviews.llvm.org/D11978
llvm-svn: 246919
2015-09-05 09:25:30 +00:00
Zoran Jovanovic
56585d517b
[mips][microMIPS] Add microMIPS32r6 and microMIPS64r6 tests for existing 16-bit ADDIUR1SP, ADDIUR2, ADDIUS5 and ADDIUSP instructions
...
Differential Revision: http://reviews.llvm.org/D10955
llvm-svn: 245554
2015-08-20 11:51:49 +00:00
Zoran Jovanovic
2fe8466f6e
[mips][microMIPS] Implement DDIV, DMOD, DDIVU and DMODU instructions
...
Differential Revision: http://reviews.llvm.org/D10953
llvm-svn: 245297
2015-08-18 14:40:43 +00:00
Zoran Jovanovic
a6593ff613
[mips][microMIPS] Implement SW and SWE instructions
...
Differential Revision: http://reviews.llvm.org/D10869
llvm-svn: 245293
2015-08-18 12:53:08 +00:00
Zoran Jovanovic
366783e14c
[mips][microMIPS] Create microMIPS64r6 subtarget and implement DALIGN, DAUI, DAHI, DATI, DEXT, DEXTM and DEXTU instructions
...
Differential Revision: http://reviews.llvm.org/D10923
llvm-svn: 244744
2015-08-12 12:45:16 +00:00
Vasileios Kalintiris
1c78ca6a09
[mips] Remap move as or.
...
Summary:
This patch remaps the assembly idiom 'move' to 'or' instead of 'daddu' or
'addu'. The use of addu/daddu instead of or as move was highlighted as a
performance issue during the analysis of a recent 64bit design. Originally
move was encoded as 'or' by binutils but was changed for the r10k cpu family
due to their pipeline which had 2 arithmetic units and a single logical unit,
and so could issue multiple (d)addu based moves at the same time but only 1
logical move.
This patch preserves the disassembly behaviour so that disassembling a old style
(d)addu move still appears as move, but assembling move always gives an or
Patch by Simon Dardis.
Reviewers: vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D11796
llvm-svn: 244579
2015-08-11 08:56:25 +00:00
Vasileios Kalintiris
974d409259
[mips] Added support for the ERETNC instruction.
...
Summary: This required adding the instruction predicate HasMips32r5.
Patch by Scott Egerton.
Reviewers: dsanders, vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D11136
llvm-svn: 242666
2015-07-20 12:28:56 +00:00
Zoran Jovanovic
2a47d08afd
[mips][microMIPS] Implement SLL and NOP instructions
...
http://reviews.llvm.org/D10474
llvm-svn: 241150
2015-07-01 09:54:51 +00:00
Daniel Sanders
b2fa8add82
[mips] Fold duplicate big-endian disassembler tests together.
...
llvm-svn: 240887
2015-06-27 17:56:44 +00:00
Daniel Sanders
abe7d840b9
[mips] Sort big-endian disassembler tests by opcode.
...
llvm-svn: 240885
2015-06-27 16:13:59 +00:00
Daniel Sanders
de692cae9d
[mips] Make little-endian disassembler test filenames consistent.
...
Most are named *-el.txt. Renamed the three that were *-le.txt
llvm-svn: 240884
2015-06-27 15:42:25 +00:00
Daniel Sanders
a3134fae17
[mips] Add COP0 register class and use it in M[FT]C0/DM[FT]C0.
...
Summary:
Previously it (incorrectly) used GPR's.
Patch by Simon Dardis. A couple small corrections by myself.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10567
llvm-svn: 240883
2015-06-27 15:39:19 +00:00
Zoran Jovanovic
67e04be640
[mips][microMIPS] Implement BREAK, EHB and EI instructions
...
http://reviews.llvm.org/D10090
llvm-svn: 240531
2015-06-24 10:32:16 +00:00
Zoran Jovanovic
cdfcbe41f2
[mips][microMIPS] Implement ERET and ERETNC instructions
...
http://reviews.llvm.org/D10091
llvm-svn: 239522
2015-06-11 10:22:46 +00:00
Zoran Jovanovic
fcecf26092
[mips][microMIPSr6] Change disassembler tests to one line format
...
llvm-svn: 239519
2015-06-11 09:42:10 +00:00
Zoran Jovanovic
85a53a1ed5
[mips][microMIPSr6] Implement SEB and SEH instructions
...
Differential Revision: http://reviews.llvm.org/D9739
llvm-svn: 238333
2015-05-27 15:39:47 +00:00
Jozef Kolek
888830adfe
[mips][microMIPSr6] Implement BEQZALC, BGEZALC, BGTZALC, BLEZALC, BLTZALC and BNEZALC instructions
...
This patch implements microMIPS32r6 BEQZALC, BGEZALC, BGTZALC, BLEZALC, BLTZALC
and BNEZALC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D10031
llvm-svn: 238325
2015-05-27 14:19:22 +00:00
Zoran Jovanovic
dde61c00c3
[mips][microMIPSr6] Implement NOR, OR, ORI, XOR and XORI instructions
...
Differential Revision: http://reviews.llvm.org/D8800
llvm-svn: 237697
2015-05-19 14:12:55 +00:00
Zoran Jovanovic
299fed6b7d
[mips][microMIPSr6] Implement AND and ANDI instructions
...
Differential Revision: http://reviews.llvm.org/D8772
llvm-svn: 237696
2015-05-19 13:32:31 +00:00
Zoran Jovanovic
3825261572
[mips][microMIPSr6] Implement DIV, DIVU, MOD and MODU instructions
...
Differential Revision: http://reviews.llvm.org/D8769
llvm-svn: 237685
2015-05-19 11:21:37 +00:00
Jozef Kolek
cc0c0fc926
[mips][microMIPSr6] Implement LSA instruction
...
This patch implements LSA instruction using mapping.
Differential Revision: http://reviews.llvm.org/D8919
llvm-svn: 237634
2015-05-18 23:12:10 +00:00
Jozef Kolek
cbb227b48d
[mips][microMIPSr6] Implement ALIGN and AUI instructions
...
This patch implements ALIGN and AUI instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8782
llvm-svn: 237563
2015-05-18 11:44:30 +00:00
Jozef Kolek
6fec325d10
[mips][microMIPSr6] Implement CLO and CLZ instructions
...
This patch implements CLO and CLZ instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8553
llvm-svn: 237257
2015-05-13 14:18:11 +00:00
Jozef Kolek
38bb81db85
[mips][microMIPSr6] Implement SELEQZ and SELNEZ instructions
...
This patch implements SELEQZ and SELNEZ instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8497
llvm-svn: 237158
2015-05-12 17:39:32 +00:00
Jozef Kolek
8abad7bacc
[mips][microMIPSr6] Implement ALUIPC and AUIPC instructions
...
This patch implements ALUIPC and AUIPC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8441
llvm-svn: 236858
2015-05-08 14:25:11 +00:00
Jozef Kolek
9ce6e0a926
[mips][microMIPSr6] Implement ADDIUPC and LWPC instructions
...
This patch implements ADDIUPC and LWPC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8415
llvm-svn: 236852
2015-05-08 13:52:04 +00:00
Jozef Kolek
cf98462818
[mips][microMIPSr6] Implement JIALC and JIC instructions
...
This patch implements JIALC and JIC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8389
llvm-svn: 236748
2015-05-07 17:12:23 +00:00
Daniel Sanders
4160c802d9
[mips][msa] Test basic operations for the N32 ABI too.
...
Summary:
This required adding instruction aliases for dneg.
N64 will be enabled shortly but requires additional bugfixes.
Reviewers: vkalintiris
Reviewed By: vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9341
llvm-svn: 236489
2015-05-05 08:48:35 +00:00
Daniel Sanders
4d532b5617
[mips] Sorted instructions in mips64r6 disassembly tests. NFC.
...
llvm-svn: 236223
2015-04-30 10:52:42 +00:00
Zoran Jovanovic
387ce30685
[mips][microMIPSr6] Implement MUL, MUH, MULU and MUHU instructions
...
Differential Revision: http://reviews.llvm.org/D8894
llvm-svn: 236131
2015-04-29 17:23:22 +00:00
Zoran Jovanovic
cca29e8f6e
[mips][microMIPSr6] Implement SUB and SUBU instructions
...
Differential Revision: http://reviews.llvm.org/D8764
llvm-svn: 236118
2015-04-29 16:22:46 +00:00
Zoran Jovanovic
5f34d44354
[mips][microMIPSr6] Implement ADD, ADDU and ADDIU instructions
...
Differential Revision: http://reviews.llvm.org/D8704
llvm-svn: 236111
2015-04-29 15:11:07 +00:00
Jozef Kolek
8e086cedfa
[mips][microMIPSr6] Implement CACHE and PREF instructions
...
Implement CACHE and PREF instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8893
llvm-svn: 235379
2015-04-21 11:17:25 +00:00
Jozef Kolek
207d248eba
[mips][microMIPSr6] Implement BITSWAP instruction
...
Implement BITSWAP instruction using mapping.
Differential Revision: http://reviews.llvm.org/D8857
llvm-svn: 235321
2015-04-20 18:14:59 +00:00
Jozef Kolek
676d60125c
[mips][microMIPSr6] Implement disassembler support
...
Implement disassembler support for microMIPS32r6.
Differential Revision: http://reviews.llvm.org/D8490
llvm-svn: 235307
2015-04-20 14:40:38 +00:00
Daniel Sanders
1779314e3c
[mips] Add backend support for Mips32r[35] and Mips64r[35].
...
Summary:
These ISA's didn't add any instructions so they are almost identical to
Mips32r2 and Mips64r2. Even the ELF e_flags are the same, However the ISA
revision in .MIPS.abiflags is 3 or 5 respectively instead of 2.
Reviewers: vmedic
Reviewed By: vmedic
Subscribers: tomatabacu, llvm-commits, atanasyan
Differential Revision: http://reviews.llvm.org/D7381
llvm-svn: 229695
2015-02-18 16:24:50 +00:00
Daniel Sanders
a19216c8f4
[mips] Merge disassemblers into a single implementation.
...
Summary:
Currently we have Mips32 and Mips64 disassemblers and this causes the target
triple to affect the disassembly despite all the relevant information being in
the ELF header. These implementations do not need to be separate.
This patch merges them together such that the appropriate tables are checked
for the subtarget (e.g. Mips64 is checked when GP64 is enabled).
Reviewers: vmedic
Reviewed By: vmedic
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7498
llvm-svn: 228825
2015-02-11 11:28:56 +00:00
Zoran Jovanovic
416886793f
[mips][microMIPS] Implement movep instruction
...
Differential Revision: http://reviews.llvm.org/D7465
llvm-svn: 228703
2015-02-10 16:36:20 +00:00
Jozef Kolek
e76eb41c21
[mips][microMIPS] Add disassembler tests for 16-bit instructions BREAK16 and SDBBP16
...
Differential Revision: http://reviews.llvm.org/D7443
llvm-svn: 228687
2015-02-10 13:20:51 +00:00
Jozef Kolek
d68d424abf
[mips][microMIPS] Fix disassembling of 16-bit microMIPS instructions LWM16 and SWM16
...
Differential Revision: http://reviews.llvm.org/D7436
llvm-svn: 228683
2015-02-10 12:41:13 +00:00
Vladimir Medic
df464ae224
[Mips][Disassembler] When disassembler meets cache/pref instructions for r6 it crashes as the access to operands array is out of range. This patch adds dedicated decoder method for R6 CACHE_HINT_DESC class that properly handles decoding of these instructions.
...
llvm-svn: 227430
2015-01-29 11:33:41 +00:00
Jozef Kolek
e10a02ecf0
[mips][microMIPS] Implement LWGP instruction
...
Differential Revision: http://reviews.llvm.org/D6650
llvm-svn: 227325
2015-01-28 17:27:26 +00:00
Vladimir Medic
0516a5b686
When disassembler meets compact jump instructions for r6 it crashes as the access to operands array is out of range. This patch removes dedicated decoder method that wrongly handles decoding of these instructions.
...
llvm-svn: 227084
2015-01-26 10:33:43 +00:00
Reid Kleckner
f4ebbc6825
mips: Fix "XPASS" test results by removing 'not' commands
...
These tests are asserting and crashing for me, and 'not' sees that as a
non-zero exit code instead of a signal code for obscure Windows reasons.
This causes the test to pass, giving me an unclean 'ninja check'.
The test is already XFAILd, so just run the test without 'not' and let
lit handle the failure.
llvm-svn: 226958
2015-01-23 22:55:31 +00:00
Jozef Kolek
5cfebdde2b
[mips][microMIPS] MicroMIPS 16-bit unconditional branch instruction B
...
Implement microMIPS 16-bit unconditional branch instruction B.
Implemented 16-bit microMIPS unconditional instruction has real name B16, and
B is an alias which expands to either B16 or BEQ according to the rules:
b 256 --> b16 256 # R_MICROMIPS_PC10_S1
b 12256 --> beq $zero, $zero, 12256 # R_MICROMIPS_PC16_S1
b label --> beq $zero, $zero, label # R_MICROMIPS_PC16_S1
Differential Revision: http://reviews.llvm.org/D3514
llvm-svn: 226657
2015-01-21 12:39:30 +00:00
Jozef Kolek
2c6d73207e
[mips][microMIPS] Implement ADDIUPC instruction
...
Differential Revision: http://reviews.llvm.org/D6582
llvm-svn: 226656
2015-01-21 12:10:11 +00:00
Vladimir Medic
435cf8a415
[Mips][Disassembler]When disassembler meets load/store from coprocessor 2 instructions for mips r6 it crashes as the access to operands array is out of range. This patch adds dedicated decoder method that properly handles decoding of these instructions.
...
llvm-svn: 226652
2015-01-21 10:47:36 +00:00
Jozef Kolek
0d49117769
Reverted revision 226577.
...
llvm-svn: 226595
2015-01-20 19:29:28 +00:00
Jozef Kolek
45f7f9c1ab
[mips][microMIPS] MicroMIPS 16-bit unconditional branch instruction B
...
Implement microMIPS 16-bit unconditional branch instruction B.
Implemented 16-bit microMIPS unconditional instruction has real name B16, and
B is an alias which expands to either B16 or BEQ according to the rules:
b 256 --> b16 256 # R_MICROMIPS_PC10_S1
b 12256 --> beq $zero, $zero, 12256 # R_MICROMIPS_PC16_S1
b label --> beq $zero, $zero, label # R_MICROMIPS_PC16_S1
Differential Revision: http://reviews.llvm.org/D3514
llvm-svn: 226577
2015-01-20 16:45:27 +00:00
Daniel Sanders
01dce6c931
[mips] 'CHECK :' is not a valid check directive. Fixed.
...
llvm-svn: 226409
2015-01-18 18:43:10 +00:00
Daniel Sanders
0cb9dc6e68
[mips] Make whitespace in disassembler tests more consistent. NFC.
...
The tests for the ISA's should now be approximately diffable. That is, the
output of 'diff valid-mips1.txt valid-mips2.txt' should be emit the lines
for instructions that were added/removed to/from MIPS-I by MIPS-II. This
doesn't work perfectly at the moment due to ordering differences but it
should be close.
llvm-svn: 226408
2015-01-18 18:38:36 +00:00
Daniel Sanders
46ad7cbfce
[mips] Make whitespace of disassembler tests more consistent by removing blank lines. NFC.
...
llvm-svn: 226407
2015-01-18 18:21:19 +00:00
Vladimir Medic
df3ed1c9d6
Add disassembler tests for mips64r6 platform. There are no functional changes.
...
llvm-svn: 226166
2015-01-15 14:18:12 +00:00
Vladimir Medic
d6d486ddcc
Add disassembler tests for mips32r6 platform. There are no functional changes.
...
llvm-svn: 226165
2015-01-15 14:11:38 +00:00
Vladimir Medic
5dcf17b881
Add disassembler tests for mips64r2 platform. There are no functional changes.
...
llvm-svn: 226164
2015-01-15 14:06:34 +00:00
Vladimir Medic
e993dac523
Add disassembler tests for mips64 platform. There are no functional changes.
...
llvm-svn: 226151
2015-01-15 08:50:20 +00:00
Vladimir Medic
1080666e80
Add disassembler tests for mips32r2 platform. There are no functional changes.
...
llvm-svn: 225980
2015-01-14 11:35:22 +00:00
Vladimir Medic
62dfce3240
Add disassembler tests for mips32r2 platform. There are no functional changes.
...
llvm-svn: 225967
2015-01-14 10:18:56 +00:00
Jozef Kolek
9761e96b01
[mips][microMIPS] Implement BEQZ16 and BNEZ16 instructions
...
Differential Revision: http://reviews.llvm.org/D5271
llvm-svn: 225627
2015-01-12 12:03:34 +00:00
Jozef Kolek
ab6d1cce3e
[mips][microMIPS] Implement CACHE, PREF, SSNOP, EHB and PAUSE instructions
...
Differential Revision: http://reviews.llvm.org/D5204
llvm-svn: 224785
2014-12-23 19:55:34 +00:00
Jozef Kolek
12c6982b3b
[mips][microMIPS] Implement LWSP and SWSP instructions
...
Differential Revision: http://reviews.llvm.org/D6416
llvm-svn: 224771
2014-12-23 16:16:33 +00:00
Zoran Jovanovic
2deca34803
[mips][microMIPS] Implement SWP and LWP instructions
...
Differential Revision: http://reviews.llvm.org/D5667
llvm-svn: 224338
2014-12-16 14:59:10 +00:00
Vladimir Medic
a489a631ae
Add disassembler tests for mips4 platform. There are no functional changes.
...
llvm-svn: 224335
2014-12-16 13:02:25 +00:00
Reid Kleckner
b736bf3899
Move mips1 tests to test/MC/Disassembler/Mips/mips1
...
This matches the pattern of the mips2 and 3 tests, as well as our normal
conventions.
llvm-svn: 224254
2014-12-15 17:56:02 +00:00
Vladimir Medic
d7ecf49e97
Add disassembler tests for mips3 platform. There are no functional changes.
...
llvm-svn: 224253
2014-12-15 16:19:34 +00:00
Vladimir Medic
19703a0bd6
Add disassembler tests for mips2 platform. There are no functional changes.
...
llvm-svn: 224252
2014-12-15 15:58:20 +00:00
Vladimir Medic
b682ddf33a
The andi16, addiusp and jraddiusp micromips instructions were missing dedicated decoder methods in MipsDisassembler.cpp to properly decode immediate operands. These methods are added together with corresponding tests.
...
llvm-svn: 223006
2014-12-01 11:12:04 +00:00
Jozef Kolek
c7e220f6e0
[mips][microMIPS] Implement NOP aliases
...
This patch implements microMIPS 16-bit (MOVE16 $0, $0) and
32-bit (SLL $0, $0, 0) NOP aliases.
http://reviews.llvm.org/D6440
llvm-svn: 222953
2014-11-29 13:29:24 +00:00
Daniel Sanders
b4484d62ad
[mips] Add synci instruction.
...
Patch by Amaury Pouly
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D6421
llvm-svn: 222899
2014-11-27 17:28:10 +00:00
Jozef Kolek
aa2b9278fe
[mips][microMIPS] Implement disassembler support for 16-bit instructions LI16, ADDIUR1SP, ADDIUR2 and ADDIUS5
...
Differential Revision: http://reviews.llvm.org/D6419
llvm-svn: 222887
2014-11-27 14:41:44 +00:00
Jozef Kolek
315e7eca1b
[mips][microMIPS] Implement disassembler support for 16-bit instructions LBU16, LHU16, LW16, SB16, SH16 and SW16
...
Differential Revision: http://reviews.llvm.org/D6405
llvm-svn: 222847
2014-11-26 18:56:38 +00:00
Jozef Kolek
ea22c4cfbb
[mips][microMIPS] Implement disassembler support for 16-bit instructions
...
With the help of new method readInstruction16() two bytes are read and
decodeInstruction() is called with DecoderTableMicroMips16, if this fails
four bytes are read and decodeInstruction() is called with
DecoderTableMicroMips32.
Differential Revision: http://reviews.llvm.org/D6149
llvm-svn: 222648
2014-11-24 13:29:59 +00:00
Zoran Jovanovic
a4c4b5fc01
[mips][micromips] Implement SWM32 and LWM32 instructions
...
Differential Revision: http://reviews.llvm.org/D5519
llvm-svn: 222367
2014-11-19 16:44:02 +00:00
Jozef Kolek
55bb542856
[mips][microMIPS] Add disassembler tests for new microMIPS 32-bit
...
instructions: LWXS, BGEZALS, BLTZALS, BEQZC, BNEZC, JALS and JALRS.
http://reviews.llvm.org/D5413
llvm-svn: 222349
2014-11-19 11:49:57 +00:00
Daniel Sanders
92db6b78f7
[mips] Fix disassembly of [ls][wd]c[23], cache, and pref
...
Fixes PR21015, and PR20993.
Patch by Jun Koi
llvm-svn: 218745
2014-10-01 08:26:55 +00:00
Daniel Sanders
dc06718e0b
[mips][mips64r6] Correct cond names in the cmp.cond.[ds] instructions
...
Summary:
It seems we accidentally read the wrong column of the table MIPS64r6 spec
and used the names for c.cond.fmt instead of cmp.cond.fmt.
Differential Revision: http://reviews.llvm.org/D4387
llvm-svn: 212607
2014-07-09 10:40:20 +00:00
Daniel Sanders
2e03d66453
[mips][mips64r6] Correct the encoding of dmuh, dmuhu, dmul, and dmulu.
...
We have detected a documentation bug in the encoding tables of the released
MIPS64r6 specification that has resulted in the wrong encodings being used for
these instructions in LLVM. This commit corrects them.
llvm-svn: 212330
2014-07-04 10:08:27 +00:00
Zoran Jovanovic
5c14b06940
[mips][mips64r6] Add BLTC and BLTUC instructions
...
Differential Revision: http://reviews.llvm.org/D3923
llvm-svn: 211167
2014-06-18 14:36:00 +00:00
Daniel Sanders
00463119a5
[mips][mips64r6] cl[oz], and dcl[oz] are re-encoded in MIPS32r6/MIPS64r6
...
Summary:
There is no change to the restrictions, just the result register is stored
once in the encoding rather than twice. The rt field is zero in
MIPS32r6/MIPS64r6.
Depends on D4119
Reviewers: zoran.jovanovic, jkolek, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D4120
llvm-svn: 211019
2014-06-16 13:18:59 +00:00
Daniel Sanders
6a803f6162
[mips][mips64r6] ll, sc, lld, and scd are re-encoded on MIPS32r6/MIPS64r6.
...
Summary:
The linked-load, store-conditional operations have been re-encoded such
that have a 9-bit offset instead of the 16-bit offset they have prior to
MIPS32r6/MIPS64r6.
While implementing this, I noticed that the atomic load/store pseudos always
emit a sign extension using sll and sra. I have improved this to use seb/seh
when they are available (MIPS32r2/MIPS64r2 and above).
Depends on D4118
Reviewers: jkolek, zoran.jovanovic, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D4119
llvm-svn: 211018
2014-06-16 13:13:03 +00:00
Zoran Jovanovic
28a0ca0759
[mips][mips64r6] Add bgec and bgeuc instructions
...
Differential Revision: http://reviews.llvm.org/D4017
llvm-svn: 210770
2014-06-12 11:47:44 +00:00
Matheus Almeida
595fcab2d0
[mips] Implement jr.hb and jalr.hb (Jump Register and Jump and Link Register with Hazard Barrier).
...
Summary: These instructions are available in ISAs >= mips32/mips64. For mips32r6/mips64r6, jr.hb has a new encoding format.
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D4019
llvm-svn: 210654
2014-06-11 15:05:56 +00:00
Alp Toker
d3d017cf00
Reduce verbiage of lit.local.cfg files
...
We can just split targets_to_build in one place and make it immutable.
llvm-svn: 210496
2014-06-09 22:42:55 +00:00
Zoran Jovanovic
2855142ac5
[mips][mips64r6] Add LDPC instruction
...
Differential Revision: http://reviews.llvm.org/D3822
llvm-svn: 210460
2014-06-09 09:49:51 +00:00
Daniel Sanders
5c582b2f6d
[mips][mips64r6] Add b[on]vc
...
Summary:
This required me to implement the disassembler for MIPS64r6 since the encodings
are ambiguous with other instructions. This in turn revealed a few
assembly/disassembly bugs which I have fixed.
* da[ht]i only take two operands according to the spec, not three.
* DecodeBranchTarget2[16] correctly handles wider immediates than simm16
* Also made non-functional change to DecodeBranchTarget and
DecodeBranchTargetMM to keep implementation style consistent between
them.
* Difficult encodings are handled by a custom decode method on the most
general encoding in the group. This method will convert the MCInst to a
different opcode if necessary.
DecodeBranchTarget is not currently the inverse of getBranchTargetOpValue
so disassembling some branch instructions emit incorrect output. This seems
to affect branches with delay slots on all MIPS ISA's. I've left this bug
for now and temporarily removed the check for the immediate on
bc[12]eqz/bc[12]nez in the MIPS32r6/MIPS64r6 tests.
jialc and jic crash the disassembler for some reason. I've left these
instructions commented out for the moment.
Depends on D3760
Reviewers: jkolek, zoran.jovanovic, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D3761
llvm-svn: 209415
2014-05-22 11:23:21 +00:00
Matheus Almeida
c0437c7782
[mips] Move disassembler test (test_2r_msa64) into correct folder.
...
llvm-svn: 208594
2014-05-12 16:59:34 +00:00
Matheus Almeida
440000d6ec
[mips] Move disassembler test (Mips MSA test_vec) into correct folder.
...
llvm-svn: 208592
2014-05-12 16:31:45 +00:00
Matheus Almeida
36c426e491
[mips] Move disassembler tests (Mips MSA test_i*, test_mi10) into correct folder.
...
llvm-svn: 208590
2014-05-12 16:26:53 +00:00
Matheus Almeida
cfc8871596
[mips] Move disassembler tests (Mips MSA test_elm*) into correct folder.
...
llvm-svn: 208589
2014-05-12 16:23:45 +00:00
Matheus Almeida
04092f5bc5
[mips] Move disassembler tests (Mips MSA test_lsa, test_dlsa) into correct folder.
...
llvm-svn: 208588
2014-05-12 16:20:46 +00:00
Matheus Almeida
7fd9339e38
[mips] Move disassembler test (Mips MSA test_ctrlregs) into correct folder.
...
llvm-svn: 208587
2014-05-12 16:16:59 +00:00
Matheus Almeida
38a9a8b675
[mips] Move disassembler test (Mips MSA test_bit) into correct folder.
...
llvm-svn: 208586
2014-05-12 16:10:00 +00:00
Matheus Almeida
b4fce72b32
[mips] Move disassembler tests (Mips MSA test_2r, test_2rf, test_3r, test_3rf) into
...
correct folder.
llvm-svn: 208584
2014-05-12 16:03:20 +00:00
Vladimir Medic
43e978234a
This patch implements jalx instruction for Mips architecture.This instruction executes a procedure call within the current 256 MB-aligned region and change the ISA Mode from MIPS32 to microMIPS32 or MIPS16e. Usage samples for assembler and dissasembler are provided as well.
...
llvm-svn: 202706
2014-03-03 13:12:59 +00:00
Zoran Jovanovic
7d63392da9
LL and SC decoder method fix.
...
llvm-svn: 199316
2014-01-15 13:17:33 +00:00
Zoran Jovanovic
d4cb61cf0e
Added support for LWU microMIPS instruction.
...
llvm-svn: 199315
2014-01-15 13:01:18 +00:00
Zoran Jovanovic
ccb70caa13
Support for microMIPS trap instruction with immediate operands.
...
llvm-svn: 194569
2013-11-13 13:15:03 +00:00