| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
macros.The rest is some small misc. stuff.
llvm-svn: 175950
|
|
|
|
| |
llvm-svn: 175920
|
|
|
|
| |
llvm-svn: 175862
|
|
|
|
|
|
|
| |
there were inline br .+4 instructions. Soon everything can enjoy the
full instruction scheduling experience.
llvm-svn: 175718
|
|
|
|
|
|
|
|
| |
SltCCRxRy16, SltiCCRxImmX16, SltiuCCRxImmX16, SltuCCRxRy16
$T8 shows up as register $24 when emitted from C++ code so we had
to change some tests that were already there for this functionality.
llvm-svn: 175593
|
|
|
|
|
|
| |
BtnezT8SltiX16, BtnezT8SltiuX16 .
llvm-svn: 175486
|
|
|
|
| |
llvm-svn: 175474
|
|
|
|
| |
llvm-svn: 175420
|
|
|
|
| |
llvm-svn: 175417
|
|
|
|
| |
llvm-svn: 175416
|
|
|
|
|
|
|
|
|
|
| |
This expansion will be moved to expandISelPseudos as soon as I can figure
out how to do that. There are other instructions which use this
ExpandFEXT_T8I816_ins and as soon as I have finished expanding them all,
I will delete the macro asm string text so it has no way to be used
in the future.
llvm-svn: 175413
|
|
|
|
|
|
|
| |
not matter but makes it more gcc compatible which avoids possible subtle
problems. Also, turned back on a disabled check in helloworld.ll.
llvm-svn: 175237
|
|
|
|
|
|
|
|
|
|
| |
if the offset fits in 11 bits. This makes use of the fact that the abi
requires sp to be 8 byte aligned so the actual offset can fit in 8
bits. It will be shifted left and sign extended before being actually used.
The assembler or direct object emitter will shift right the 11 bit
signed field by 3 bits. We don't need to deal with that here.
llvm-svn: 175073
|
|
|
|
| |
llvm-svn: 175044
|
|
|
|
|
|
|
|
|
|
| |
same so we put in the comment field an indicator when we think we are
emitting the 16 bit version. For the direct object emitter, the difference is
important as well as for other passes which need an accurate count of
program size. There will be other similar putbacks to this for various
instructions.
llvm-svn: 174747
|
|
|
|
|
|
|
|
| |
allowed size for the instruction. This code uses RegScavenger to fix this.
We sometimes need 2 registers for Mips16 so we must handle things
differently than how register scavenger is normally used.
llvm-svn: 174696
|
|
|
|
|
|
| |
For example, when we are doing mips16 hard float or soft float.
llvm-svn: 174583
|
|
|
|
| |
llvm-svn: 174580
|
|
|
|
|
|
|
|
|
|
|
| |
is a vararg function.
The original code was examining flag OutputArg::IsFixed to determine whether
CC_MipsN_VarArg or CC_MipsN should be called. This is not correct, since this
flag is often set to false when the function being analyzed is a non-variadic
function.
llvm-svn: 174442
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and enables the instruction printer to print aliased
instructions.
Due to usage of RegisterOperands a change in common
code (utils/TableGen/AsmWriterEmitter.cpp) is required
to get the correct register value if it is a RegisterOperand.
Contributer: Vladimir Medic
llvm-svn: 174358
|
|
|
|
|
|
| |
This checkin makes hello world work.
llvm-svn: 174264
|
|
|
|
|
|
| |
Patch by Sasa Stankovic.
llvm-svn: 173863
|
|
|
|
|
|
| |
instructions.
llvm-svn: 173401
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow Mips16 routines to call Mips32 routines that have abi requirements
that either arguments or return values are passed in floating point
registers. This handles only the pic case. We have not done non pic
for Mips16 yet in any form.
The libm functions are Mips32, so with this addition we have a complete
Mips16 hard float implementation.
We still are not able to complete mix Mip16 and Mips32 with hard float.
That will be the next phase which will have several steps. For Mips32
to freely call Mips16 some stub functions must be created.
llvm-svn: 173320
|
|
|
|
| |
llvm-svn: 173197
|
|
|
|
|
|
| |
vectors are being compared.
llvm-svn: 171517
|
|
|
|
| |
llvm-svn: 170823
|
|
|
|
|
|
|
|
|
|
| |
these patches are tested a lot by test-suite but
make check tests are forthcoming once the next
few patches that complete this are committed.
with the next few patches the pass rate for mips16 is
near 100%
llvm-svn: 170656
|
|
|
|
|
|
|
|
|
|
|
| |
physical register $r1 to $r0.
GNU disassembler recognizes an "or" instruction as a "move", and this change
makes the disassembled code easier to read.
Original patch by Reed Kotler.
llvm-svn: 170655
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mips16 is really a processor decoding mode (ala thumb 1) and in the same
program, mips16 and mips32 functions can exist and can call each other.
If a jal type instruction encounters an address with the lower bit set, then
the processor switches to mips16 mode (if it is not already in it). If the
lower bit is not set, then it switches to mips32 mode.
The linker knows which functions are mips16 and which are mips32.
When relocation is performed on code labels, this lower order bit is
set if the code label is a mips16 code label.
In general this works just fine, however when creating exception handling
tables and dwarf, there are cases where you don't want this lower order
bit added in.
This has been traditionally distinguished in gas assembly source by using a
different syntax for the label.
lab1: ; this will cause the lower order bit to be added
lab2=. ; this will not cause the lower order bit to be added
In some cases, it does not matter because in dwarf and debug tables
the difference of two labels is used and in that case the lower order
bits subtract each other out.
To fix this, I have added to mcstreamer the notion of a debuglabel.
The default is for label and debug label to be the same. So calling
EmitLabel and EmitDebugLabel produce the same result.
For various reasons, there is only one set of labels that needs to be
modified for the mips exceptions to work. These are the "$eh_func_beginXXX"
labels.
Mips overrides the debug label suffix from ":" to "=." .
This initial patch fixes exceptions. More changes most likely
will be needed to DwarfCFException to make all of this work
for actual debugging. These changes will be to emit debug labels in some
places where a simple label is emitted now.
Some historical discussion on this from gcc can be found at:
http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00623.html
http://gcc.gnu.org/ml/gcc-patches/2008-11/msg01273.html
llvm-svn: 170279
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In this case, essentially it is soft float with different library routines.
The next step will be to make this fully interoperational with mips32 floating
point and that requires creating stubs for functions with signatures that
contain floating point types.
I have a more sophisticated design for mips16 hardfloat which I hope to
implement at a later time that directly does floating point without the need
for function calls.
The mips16 encoding has no floating point instructions so one needs to
switch to mips32 mode to execute floating point instructions.
llvm-svn: 170259
|
|
|
|
|
|
| |
internal linkage.
llvm-svn: 170092
|
|
|
|
|
|
|
| |
load / store pair. It's not legal to use a wider load than the size of
the remaining bytes if it's the first pair of load / store.
llvm-svn: 170018
|
|
|
|
| |
llvm-svn: 168460
|
|
|
|
| |
llvm-svn: 168230
|
|
|
|
|
|
| |
allowed in branch delay slot.
llvm-svn: 168131
|
|
|
|
|
|
| |
Patch by Sasa Stankovic.
llvm-svn: 167548
|
|
|
|
|
|
| |
instructions.
llvm-svn: 167348
|
|
|
|
| |
llvm-svn: 167345
|
|
|
|
|
|
| |
register is needed.
llvm-svn: 167341
|
|
|
|
|
|
| |
being moved out of a basic block.
llvm-svn: 167322
|
|
|
|
| |
llvm-svn: 167315
|
|
|
|
|
|
|
| |
"set .noat" so that the assembler doesn't issue warnings when register $AT is
used.
llvm-svn: 167310
|
|
|
|
|
|
| |
re-materialization of immediate loads.
llvm-svn: 167153
|
|
|
|
|
|
| |
mips16.
llvm-svn: 167139
|
|
|
|
| |
llvm-svn: 167107
|
|
|
|
|
|
| |
use the caller's stack.
llvm-svn: 167048
|
|
|
|
|
|
|
|
| |
We will make them delay slot forms if there is something that can be
placed in the delay slot during a separate pass. Mips16 extended instructions
cannot be placed in delay slots.
llvm-svn: 166990
|
|
|
|
| |
llvm-svn: 166960
|
|
|
|
| |
llvm-svn: 166935
|