1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
Commit Graph

803 Commits

Author SHA1 Message Date
Akira Hatanaka
38d2ddcfac Add patterns for unaligned load and store instructions and enable the
instruction selector to generate them.

llvm-svn: 141471
2011-10-08 02:24:10 +00:00
Peter Collingbourne
253c6a3690 Build system infrastructure for multiple tblgens.
llvm-svn: 141266
2011-10-06 01:51:51 +00:00
Akira Hatanaka
28e360356f Fix assertion string.
llvm-svn: 141197
2011-10-05 18:17:49 +00:00
Akira Hatanaka
9c77dc9579 Make sure candidate for delay slot filler is not a return instruction.
llvm-svn: 141196
2011-10-05 18:16:09 +00:00
Akira Hatanaka
eb6b8949ff Add RA to the set of registers that are defined if instruction is a call.
llvm-svn: 141194
2011-10-05 18:11:44 +00:00
NAKAMURA Takumi
c4e7d192d1 MipsDelaySlotFiller.cpp: Appease msvc to specify llvm::next() explicitly.
llvm-svn: 141174
2011-10-05 10:11:02 +00:00
Akira Hatanaka
e37b7fb90f Insert space.
llvm-svn: 141158
2011-10-05 02:22:49 +00:00
Akira Hatanaka
852a9caebd Do not examine variadic or implicit operands if instruction is a return (jr).
llvm-svn: 141157
2011-10-05 02:21:58 +00:00
Akira Hatanaka
eb59ca6c4c Clean up function Filler::delayHasHazard.
llvm-svn: 141156
2011-10-05 02:18:58 +00:00
Akira Hatanaka
1d80eaba44 Remove function Filler::insertCallUses.
Record the registers used and defined by a call in Filler::insertDefsUses.

llvm-svn: 141154
2011-10-05 02:04:17 +00:00
Akira Hatanaka
3707b9fec8 Clean up Filler::findDelayInstr.
llvm-svn: 141152
2011-10-05 01:57:46 +00:00
Akira Hatanaka
594683f3d7 Remove function Filler::isDelayFiller. Check if I is the same instruction that
filled the last delay slot visited.

llvm-svn: 141151
2011-10-05 01:30:09 +00:00
Akira Hatanaka
6698bae640 Clean up Filler::runOnMachineBasicBlock. Change interface of
Filler::findDelayInstr.

llvm-svn: 141150
2011-10-05 01:23:39 +00:00
Akira Hatanaka
716e3bea9c Define a statistic for the number of slots that were filled with useful
instructions (instructions that are not NOP).

llvm-svn: 141149
2011-10-05 01:19:13 +00:00
Akira Hatanaka
c073bd7709 Remove unnecessary check. isDelayFiller(MBB, I) will evaluate to true before
I->getDesc().hasDelaySlot() does.

llvm-svn: 141148
2011-10-05 01:15:31 +00:00
Akira Hatanaka
cf11c1bfbe Add comments and move assignment statement. If sawStore is true, sawLoad does
not have to be set.

llvm-svn: 141147
2011-10-05 01:09:37 +00:00
Akira Hatanaka
58d3445fd9 Correct description string of enable-mips-delay-filler.
llvm-svn: 141146
2011-10-05 01:06:57 +00:00
Akira Hatanaka
76c268271d Add support for 64-bit logical NOR.
llvm-svn: 141029
2011-10-03 21:23:18 +00:00
Akira Hatanaka
ae50204423 Add support for 64-bit count leading ones and zeros instructions.
llvm-svn: 141028
2011-10-03 21:16:50 +00:00
Akira Hatanaka
6c6ff6fde7 Add support for 64-bit divide instructions.
llvm-svn: 141024
2011-10-03 21:06:13 +00:00
Akira Hatanaka
7e1775fdd6 Clean up MipsInstrInfo::copyPhysReg and handle copies from and to 64-bit integer
registers.

llvm-svn: 141019
2011-10-03 20:38:08 +00:00
Akira Hatanaka
e3c1d7eac0 Add support for 64-bit integer multiply instructions.
llvm-svn: 141017
2011-10-03 20:01:11 +00:00
Akira Hatanaka
3f3d72c052 Add definitions of instructions which move values between 64-bit integer
registers and 64-bit HI and LO registers. Fix encoding of the 32-bit versions
of the instructions.

llvm-svn: 141015
2011-10-03 19:28:44 +00:00
Akira Hatanaka
13aa92d8c2 Register the MC object streamer.
Patch by Reed Kotler at Mips Technologies.

llvm-svn: 140887
2011-09-30 21:29:38 +00:00
Akira Hatanaka
3048f0ddf4 Register Asm backend. Add functions to MipsAsmBackend.
Patch by Reed Kotler at Mips Technologies.

llvm-svn: 140886
2011-09-30 21:23:45 +00:00
Akira Hatanaka
f1c17f8e83 Add MCELFObjectTargetWriter and MCAsmBackend classes.
Patch by Reed Kotler at Mips Technologies.

llvm-svn: 140885
2011-09-30 21:04:02 +00:00
Benjamin Kramer
004c20ec00 Update CMake build.
llvm-svn: 140879
2011-09-30 20:44:33 +00:00
Akira Hatanaka
9f9e71147e Initial implementation of MipsMCCodeEmitter.
Patch by Reed Kotler at Mips Technologies.

llvm-svn: 140878
2011-09-30 20:40:03 +00:00
Akira Hatanaka
c9268767d6 Add definitions of Mips64 rotate instructions.
llvm-svn: 140870
2011-09-30 18:51:46 +00:00
Akira Hatanaka
6f3cfcdb95 isCommutable should be 0 for DSUBu.
llvm-svn: 140862
2011-09-30 17:26:36 +00:00
Akira Hatanaka
dcd69c2e07 Mips64 shift instructions.
llvm-svn: 140841
2011-09-30 03:18:46 +00:00
Akira Hatanaka
4bdb4b1958 Mips64 arithmetic and logical instructions with one source register and
immediate.

llvm-svn: 140839
2011-09-30 02:08:54 +00:00
Akira Hatanaka
50a4f6d570 Fill delay slot with useful instructions. Modified from Sparc's version of delay
slot filler.

Patch by Reed Kotler at Mips Technologies.

llvm-svn: 140825
2011-09-29 23:52:13 +00:00
Akira Hatanaka
70be05d5d0 Mips64 arithmetic and logical instructions with two source registers.
llvm-svn: 140806
2011-09-29 20:37:56 +00:00
Jakob Stoklund Olesen
6cb1647b24 Revert r140731, "Define classes for unary and binary FP instructions and use them to define"
It broke the unit tests.  Please reapply with tests fixed.

llvm-svn: 140735
2011-09-28 23:59:28 +00:00
Akira Hatanaka
be2c5236ec Define classes for unary and binary FP instructions and use them to define
multiclasses.

llvm-svn: 140731
2011-09-28 21:58:01 +00:00
Akira Hatanaka
0510b9d75b Rename predicate In32BitMode to NotFP64bit and add definition of IsFP64bit.
llvm-svn: 140705
2011-09-28 18:11:19 +00:00
Akira Hatanaka
fa83d9ff16 Remove definitions of branch-on-FP-likely instructions. They are deprecated.
llvm-svn: 140704
2011-09-28 17:56:55 +00:00
Akira Hatanaka
2d08a7fd85 Mips64 predicate definitions. Patch by Liu.
llvm-svn: 140703
2011-09-28 17:50:27 +00:00
Akira Hatanaka
ea4d87c3e8 Remove MipsFPRound. Mips1 is no longer supported.
llvm-svn: 140661
2011-09-27 23:55:37 +00:00
Akira Hatanaka
d44d75eccf Embed patterns in definitions of MFC1 and MTC1 instead of defining them outside
of the instruction definitions using Pat<>.

llvm-svn: 140644
2011-09-27 22:01:01 +00:00
Akira Hatanaka
33908261c2 Fix function MipsRegisterInfo::getRegisterNumbering.
Return numbers of 64-bit registers.

llvm-svn: 140609
2011-09-27 17:15:27 +00:00
Akira Hatanaka
c27a7b0463 Do not add the pass that restores $gp if target is Mips64.
llvm-svn: 140607
2011-09-27 16:58:43 +00:00
Akira Hatanaka
7259090c76 Mark MipsPseudo isPseudo.
llvm-svn: 140598
2011-09-27 04:57:54 +00:00
Akira Hatanaka
a641d087fc Set register class of a register according to value of HasMips64.
llvm-svn: 140570
2011-09-26 21:55:17 +00:00
Akira Hatanaka
37493224a9 Define variable HasMips64 in MipsTargetLowering.
llvm-svn: 140569
2011-09-26 21:47:02 +00:00
Akira Hatanaka
9db31c430a In single float mode, double precision FP arguments are passed in integer
registers, so there is no need to check here.

llvm-svn: 140568
2011-09-26 21:37:50 +00:00
Akira Hatanaka
ba4a83a86b Add .td file.
llvm-svn: 140446
2011-09-24 01:40:18 +00:00
Akira Hatanaka
bf382ce7ed Preparation for adding simple Mips64 instructions.
llvm-svn: 140443
2011-09-24 01:34:44 +00:00
Akira Hatanaka
224ebf0e1b Implement N32/64 calling convention. Patch by Liu.
llvm-svn: 140401
2011-09-23 19:08:15 +00:00