Zlatko Buljan
b43d4bcbd5
[mips][microMIPS] Revert commit r266977
...
Commit r266977 was reason for failing LLVM test suite with error message: fatal error: error in backend: Cannot select: t17: i32 = rotr t2, t11 ...
llvm-svn: 267418
2016-04-25 15:34:57 +00:00
Zoran Jovanovic
f6344ff295
[mips][microMIPS] Revert commit r266861.
...
Commit r266861 was the reason for failing tests in LLVM test suite.
llvm-svn: 267166
2016-04-22 16:53:15 +00:00
Hrvoje Varga
5560998250
[mips][microMIPS] Implement SLT, SLTI, SLTIU, SLTU microMIPS32r6 instructions
...
Differential Revision: http://reviews.llvm.org/D19354
llvm-svn: 267137
2016-04-22 11:18:40 +00:00
Zoran Jovanovic
8e366822c2
[mips][microMIPS] Add R_MICROMIPS_PC18_S3 relocation
...
Differential Revision: http://reviews.llvm.org/D15026
llvm-svn: 267130
2016-04-22 10:15:12 +00:00
Zlatko Buljan
ae720dbbb6
[mips][microMIPS] Implement DVP, EVP and JALRC.HB instructions
...
Differential Revision: http://reviews.llvm.org/D18687
llvm-svn: 267114
2016-04-22 06:44:34 +00:00
Zoran Jovanovic
6764fa7840
[mips][microMIPS] Add R_MICROMIPS_PC19_S2 relocation
...
Differential Revision: http://reviews.llvm.org/D14915
llvm-svn: 266988
2016-04-21 14:09:35 +00:00
Zoran Jovanovic
02b7003068
[mips][microMIPS] Add R_MICROMIPS_PC26_S1 relocation
...
Differential Revision: http://reviews.llvm.org/D14822
llvm-svn: 266985
2016-04-21 13:43:26 +00:00
Zlatko Buljan
dd4151504a
[mips][microMIPS] Implement TLBP, TLBR, TLBWI and TLBWR instructions
...
Differential Revision: http://reviews.llvm.org/D18855
llvm-svn: 266980
2016-04-21 11:32:40 +00:00
Zlatko Buljan
d370f440e2
[mips][microMIPS] Implement LL, SC, MOVEP, ROTR, ROTRV and SYSCALL instructions and add tests for LWM32 and SWM32
...
Differential Revision: http://reviews.llvm.org/D19150
llvm-svn: 266977
2016-04-21 11:01:51 +00:00
Zoran Jovanovic
fdbd0a37c1
[mips][microMIPS] Implement BGEC, BGEUC, BLTC, BLTUC, BEQC and BNEC instructions
...
Differential Revision: http://reviews.llvm.org/D14206
llvm-svn: 266873
2016-04-20 14:07:46 +00:00
Hrvoje Varga
117625aaf3
[mips][microMIPS]Implement CFC*, CTC* and LDC* instructions
...
Differential Revision: http://reviews.llvm.org/D18640
llvm-svn: 266861
2016-04-20 06:34:48 +00:00
Daniel Sanders
a45d3e439f
[mips] Trivial corrections to range checked immediates.
...
Summary:
SYNC has a 5-bit unsigned immediate.
Move MIPS16-specific pcrel16 operand to Mips16 files.
Reviewers: vkalintiris
Subscribers: dsanders, sdardis, llvm-commits
Differential Revision: http://reviews.llvm.org/D18755
llvm-svn: 265947
2016-04-11 15:20:40 +00:00
Daniel Sanders
2e9f69d933
[mips] Range check simm9 and fix a bug this revealed.
...
Summary:
The bug was that microMIPS's [ls]w[lr]e instructions claimed to support a
12-bit offset when it is only 9-bit.
Reviewers: vkalintiris
Subscribers: llvm-commits, dsanders
Differential Revision: http://reviews.llvm.org/D18434
llvm-svn: 265010
2016-03-31 13:15:23 +00:00
Zlatko Buljan
6221be8e46
[mips][microMIPS] Implement MFC*, MFHC* and DMFC* instructions
...
Differential Revision: http://reviews.llvm.org/D17334
llvm-svn: 265002
2016-03-31 08:51:24 +00:00
Hrvoje Varga
2cb74ac3c3
[mips][microMIPS] Implement MTC*, MTHC* and DMTC* instructions
...
Differential Revision: http://reviews.llvm.org/D17328
llvm-svn: 264246
2016-03-24 08:02:09 +00:00
Daniel Sanders
97297770a6
[mips] Range check simm7.
...
Summary:
Also renamed li_simm7 to li16_imm since it's not a simm7 and has an unusual
encoding (it's a uimm7 except that 0x7f represents -1).
Reviewers: vkalintiris
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D18145
llvm-svn: 264056
2016-03-22 14:40:00 +00:00
Daniel Sanders
0f17d0da4a
[mips] Range check simm5.
...
Summary:
We can't check the error message for this one because there's another lw/sw
available that covers a larger range. We therefore check the transition
between the two sizes.
Reviewers: vkalintiris
Subscribers: llvm-commits, dsanders
Differential Revision: http://reviews.llvm.org/D18144
llvm-svn: 264054
2016-03-22 14:29:53 +00:00
Daniel Sanders
19b7f76afa
[mips] Range check uimm6_lsl2.
...
Summary:
Reviewers: vkalintiris
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D17291
llvm-svn: 263419
2016-03-14 11:16:56 +00:00
Daniel Sanders
78e8902097
[mips] Range check simm4.
...
Summary:
Reviewers: vkalintiris
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D16811
llvm-svn: 263220
2016-03-11 11:37:50 +00:00
Zlatko Buljan
f034021443
[mips][microMIPS] Implement TLBINV and TLBINVF instructions
...
Differential Revision: http://reviews.llvm.org/D16849
llvm-svn: 261211
2016-02-18 14:10:52 +00:00
Daniel Sanders
f8bb23e509
[mips] Range check uimm16 and fix several bugs this revealed.
...
Summary:
The bugs were:
* teq and similar take 4-bit unsigned immediates on microMIPS.
* teqi and similar have side-effects like teq do.
* shll_s.w and shra_r.w take 5-bit unsigned immediates.
* The various DSP ext* instructions take a 5-bit immediate.
* repl.qh takes an 8-bit unsigned immediate.
* repl.ph takes a 10-bit unsigned immediate.
* rddsp/wrdsp take a 10-bit unsigned immediate.
* teqi and similar take signed 16-bit immediates (10-bit for microMIPS).
* Out-of-range immediate macros for or/xor take a simm32/simm64 depending
on architecture. I'll fix the simm64 case properly when I reach simm32.
lui is a bit more lenient than GAS and accepts signed immediates in addition
to unsigned. This is because MipsMCExpr can produce signed values when
constant folding and it currently lacks a way of knowing it should fold to
an unsigned value.
Reviewers: vkalintiris
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D15446
llvm-svn: 259360
2016-02-01 15:13:31 +00:00
Zlatko Buljan
5da2f6cd03
[mips][microMIPS] Implement DERET and DI instructions and check size operand for EXT and DEXT* instructions
...
Differential Revision: http://reviews.llvm.org/D15570
llvm-svn: 256152
2015-12-21 13:08:58 +00:00
Zlatko Buljan
252cca555f
[mips][microMIPS][DSP] Implement PACKRL.PH, PICK.PH, PICK.QB, SHILO, SHILOV and WRDSP instructions
...
Differential Revision: http://reviews.llvm.org/D14429
llvm-svn: 255991
2015-12-18 08:59:37 +00:00
Daniel Sanders
3c7223133d
[mips][ias] Range check uimm10 operands
...
Summary:
Reviewers: vkalintiris
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D15229
llvm-svn: 255112
2015-12-09 13:48:05 +00:00
Zlatko Buljan
48f1f39bfe
Revert r254897 "[mips][microMIPS] Implement LH, LHE, LHU and LHUE instructions"
...
Commited patch was intended to implement LH, LHE, LHU and LHUE instructions.
After commit test-suite failed with error message in the form of:
fatal error: error in backend: Cannot select: t124: i32,ch = load<LD2[%d](tbaa=<0x94acc48>), sext from i16> t0, t2, undef:i32
For that reason I decided to revert commit r254897 and make new patch which besides implementation and standard regression tests will also have dedicated tests (CodeGen) for the above error.
llvm-svn: 255109
2015-12-09 13:07:45 +00:00
Zlatko Buljan
1a01c15027
[mips][microMIPS] Implement LH, LHE, LHU and LHUE instructions
...
Differential Revision: http://reviews.llvm.org/D9824
llvm-svn: 254897
2015-12-07 08:29:31 +00:00
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
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
Daniel Sanders
daa4b6fbd9
[mips][ias] Range check uimm5 operands and fix several bugs this revealed.
...
Summary:
The bugs were:
* append, prepend, and balign were not tested
* balign takes a uimm2 not a uimm5.
* drotr32 was correctly implemented with a uimm5 but the tests expected
'52' to be valid.
* li/la were implemented with a uimm5 instead of simm32. simm32 isn't
completely correct either but I'll fix that when I get to simm32.
A notable omission are some of the shift instructions. Several of these
have been implemented using a single uimm6 instruction (rather than two
uimm5 instructions and a CodeGen-only uimm6 pseudo). These will be updated
in the uimm6 patch.
Reviewers: vkalintiris
Subscribers: llvm-commits, dsanders
Differential Revision: http://reviews.llvm.org/D14712
llvm-svn: 254164
2015-11-26 16:35:41 +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
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
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
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
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
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
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
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
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
2a47d08afd
[mips][microMIPS] Implement SLL and NOP instructions
...
http://reviews.llvm.org/D10474
llvm-svn: 241150
2015-07-01 09:54:51 +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
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
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
5de4a6c0af
[mips][microMIPSr6] Implement BALC and BC instructions
...
This patch implements BALC and BC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8388
llvm-svn: 235302
2015-04-20 13:04:14 +00:00