| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
* ability to save BasicBlock references to be resolved later
* register remappings from the enum values to the real hardware numbers
llvm-svn: 6449
|
| |
|
|
|
|
| |
sections of instructions.
llvm-svn: 6448
|
| |
|
|
|
|
| |
For one, converting register numbers based on class in the code emitter.
llvm-svn: 6447
|
| |
|
|
|
|
|
| |
Code beautification for the rest of the code: changed layout to match the rest
of the code base.
llvm-svn: 6446
|
| |
|
|
| |
llvm-svn: 6444
|
| |
|
|
| |
llvm-svn: 6439
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
instructions of format 3.12 and 3.13 cannot inherit from F3rdrs1, because that
implies that the two registers are the first two parameters to the instruction.
Thus I made the instructions inherit from F3rd again, and manually added an rs1
field AFTER the shcnt field in the instruction, which maps to the appropriate
place in the instruction.
The other changes are just elimination of unnecessary spaces.
llvm-svn: 6437
|
| |
|
|
|
|
|
| |
SparcV9_F3.td: F3_12 and F3_13 instructions have rd and rs1 fields. Also,
their fields were totally screwed up. This seems to fix the problem.
llvm-svn: 6429
|
| |
|
|
| |
llvm-svn: 6411
|
| |
|
|
|
|
| |
has their path set up by this point.
llvm-svn: 6410
|
| |
|
|
|
|
|
|
|
|
|
| |
exit code. This, in turn, makes an empty file SparcV9CodeEmitter.inc, and only
much later, produces a link error because the key function that TableGen creates
isn't found.
Using a temporary file in the middle forces a good .INC file to be generated by
TableGen, and it will keep trying until you fix the input file.
llvm-svn: 6392
|
| |
|
|
| |
llvm-svn: 6390
|
| |
|
|
|
|
| |
Also, added a rule to delete the generated .inc file on `make clean'.
llvm-svn: 6389
|
| |
|
|
|
|
|
|
| |
* Added some Format 4 classes, but not instructions
* Added notes on missing sections with FIXMEs
* Added RDCCR instr
llvm-svn: 6388
|
| |
|
|
|
|
|
|
|
|
|
| |
list (rd, rs1, imm), in that order (bit-wise), the actual assembly syntax is
instr rd, imm, rs1, and that is how they are constructed in the instruction
selector. This fixes the discrepancy.
Also fixed some comments along the same lines and fixed page numbers referring
to where instructions are described in the Sparc manual.
llvm-svn: 6384
|
| |
|
|
| |
llvm-svn: 6383
|
| |
|
|
| |
llvm-svn: 6381
|
| |
|
|
|
|
| |
changed.
llvm-svn: 6380
|
| |
|
|
|
|
| |
MachineInstr can later be patched up correctly.
llvm-svn: 6378
|
| |
|
|
| |
llvm-svn: 6377
|
| |
|
|
|
|
|
|
|
| |
Non-obvious change: since I have changed ST and STD to be STF and STDF to
(a) closer resemble their name (NOT assembly text) in the Sparc manual, and
(b) clearly specify that they they are floating-point opcodes,
I made the same changes in this file.
llvm-svn: 6376
|
| |
|
|
|
|
|
|
|
|
| |
Here I had to make one non-trivial change: add a function to get a version of
the opcode that takes an immediate, given an opcode that takes all registers.
This is required because sometimes it is not known at construction time which
opcode is used because opcodes are passed around between functions.
llvm-svn: 6375
|
| |
|
|
| |
llvm-svn: 6373
|
| |
|
|
| |
llvm-svn: 6372
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
annotations on instructions to specify which format they are (i.e., do they take
2 registers and 1 immediate or just 3 registers) as that changes their binary
representation and hence, code emission.
This makes instructions more like how X86 defines them to be. Now, writers of
instruction selection must choose the correct opcode based on what instruction
type they are building, which they already know. Thus, the JIT doesn't have to
do the same work by `discovering' which operands an instruction really has.
As this involves lots of small changes to a lot of files in lib/target/Sparc,
I'll commit them individually because otherwise the diffs will be unreadable.
llvm-svn: 6371
|
| |
|
|
|
|
|
|
| |
a default value is set in the header file.
* Fixed some code layout to make it more consistent with the rest of codebase
* Added addPassesToJITCompile() with relevant passes
llvm-svn: 6369
|
| |
|
|
|
|
| |
that Makefile.common would see it.
llvm-svn: 6367
|
| |
|
|
|
|
|
|
| |
Also, added annotations to how instructions are modified (reg/imm operands).
Added prototype for adding register numbers to values pass for interfacing with
the target-independent register allocators in the JIT.
llvm-svn: 6366
|
| |
|
|
|
|
|
| |
MachineCodeEmitter to make a pass-through debugger -- output to memory and to
std::cerr.
llvm-svn: 6363
|
| |
|
|
|
|
|
|
|
|
|
| |
that assembles instructions is generated via TableGen (and hence must be built
before building this directory, but that's already the case in the top-level
Makefile).
Also added is .cvsignore to ignore the generated file `SparcV9CodeEmitter.inc',
which is included by SparcV9CodeEmitter.cpp .
llvm-svn: 6357
|
| |
|
|
| |
llvm-svn: 6356
|
| |
|
|
|
|
|
|
| |
Fixed spilling of %fcc[0-3] which are part of %fsr.
Moved some machine-independent reg-class code to class TargetRegInfo
from SparcReg{Class,}Info.
llvm-svn: 6339
|
| |
|
|
|
|
| |
negative values. Need to add one to a negative value before right shift!
llvm-svn: 6334
|
| |
|
|
| |
llvm-svn: 6333
|
| |
|
|
| |
llvm-svn: 6332
|
| |
|
|
| |
llvm-svn: 6325
|
| |
|
|
| |
llvm-svn: 6323
|
| |
|
|
| |
llvm-svn: 6320
|
| |
|
|
| |
llvm-svn: 6312
|
| |
|
|
| |
llvm-svn: 6266
|
| |
|
|
|
|
|
|
|
| |
consistent with the style of LLVM's code base (and itself! it's inconsistent in
some places.)
No functional changes were made.
llvm-svn: 6265
|
| |
|
|
|
|
|
|
|
| |
consistent with the style of LLVM's code base (and itself! it's inconsistent in
some places.)
No functional changes were made.
llvm-svn: 6262
|
| |
|
|
|
|
| |
Eliminated `using' directives.
llvm-svn: 6261
|
| |
|
|
| |
llvm-svn: 6249
|
| |
|
|
| |
llvm-svn: 6145
|
| |
|
|
| |
llvm-svn: 6021
|
| |
|
|
|
|
| |
the Annotation classes with the noncopyable classes for no reason
llvm-svn: 5973
|
| |
|
|
| |
llvm-svn: 5963
|
| |
|
|
| |
llvm-svn: 5961
|
| |
|
|
| |
llvm-svn: 5932
|