| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 147012
|
|
|
|
|
|
|
| |
nodes needed for multiplication. Add code for selecting 64-bit MULHS and MULHU
nodes.
llvm-svn: 147008
|
|
|
|
| |
llvm-svn: 147007
|
|
|
|
| |
llvm-svn: 147005
|
|
|
|
| |
llvm-svn: 147004
|
|
|
|
| |
llvm-svn: 147003
|
|
|
|
|
|
| |
only when the target ABI is N64.
llvm-svn: 147001
|
|
|
|
|
|
| |
MIPS64 can generate constant +0.0 with a single DMTC1 instruction.
llvm-svn: 146999
|
|
|
|
| |
llvm-svn: 146996
|
|
|
|
| |
llvm-svn: 146995
|
|
|
|
|
|
|
|
| |
enabled
only when the target ABI is N64.
llvm-svn: 146992
|
|
|
|
|
|
| |
likely to stay either way that discussion ends up resolving itself.
llvm-svn: 146966
|
|
|
|
|
|
| |
http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
llvm-svn: 146960
|
|
|
|
|
|
| |
patterns emit a single LUi instruction instead of a pair of LUi and ORi.
llvm-svn: 146900
|
|
|
|
| |
llvm-svn: 146896
|
|
|
|
|
|
|
| |
direct-object emitter should emit the appropriate shift instruction depending
on the shift amount.
llvm-svn: 146893
|
|
|
|
| |
llvm-svn: 146889
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change reduces the number of instructions generated.
For example,
(load (add (sub $n0, $n1), (MipsLo got(s))))
results in the following sequence of instructions:
1. sub $n2, $n0, $n1
2. lw got(s)($n2)
Previously, three instructions were needed.
1. sub $n2, $n0, $n1
2. addiu $n3, $n2, got(s)
3. lw 0($n3)
llvm-svn: 146888
|
|
|
|
|
|
|
| |
emission is not supported yet, but a patch that adds the support should follow
soon.
llvm-svn: 146572
|
|
|
|
|
|
| |
in a 16-bit field.
llvm-svn: 146469
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
undefined result. This adds new ISD nodes for the new semantics,
selecting them when the LLVM intrinsic indicates that the undef behavior
is desired. The new nodes expand trivially to the old nodes, so targets
don't actually need to do anything to support these new nodes besides
indicating that they should be expanded. I've done this for all the
operand types that I could figure out for all the targets. Owners of
various targets, please review and let me know if any of these are
incorrect.
Note that the expand behavior is *conservatively correct*, and exactly
matches LLVM's current behavior with these operations. Ideally this
patch will not change behavior in any way. For example the regtest suite
finds the exact same instruction sequences coming out of the code
generator. That's why there are no new tests here -- all of this is
being exercised by the existing test suite.
Thanks to Duncan Sands for reviewing the various bits of this patch and
helping me get the wrinkles ironed out with expanding for each target.
Also thanks to Chris for clarifying through all the discussions that
this is indeed the approach he was looking for. That said, there are
likely still rough spots. Further review much appreciated.
llvm-svn: 146466
|
|
|
|
|
|
|
|
|
|
|
| |
subdirectories to traverse into.
- Originally I wanted to avoid this and just autoscan, but this has one key
flaw in that new subdirectories can not automatically trigger a rerun of the
llvm-build tool. This is particularly a pain when switching back and forth
between trees where one has added a subdirectory, as the dependencies will
tend to be wrong. This will also eliminates FIXME implicitly.
llvm-svn: 146436
|
|
|
|
|
|
| |
-relocation-model=static.
llvm-svn: 146432
|
|
|
|
| |
llvm-svn: 146431
|
|
|
|
| |
llvm-svn: 146409
|
|
|
|
| |
llvm-svn: 146340
|
|
|
|
| |
llvm-svn: 146232
|
|
|
|
|
|
| |
specified.
llvm-svn: 146229
|
|
|
|
|
|
|
|
| |
MipsTargetLowering::LowerGlobalTLSAddress. This is necessary to have
call16(__tls_get_addr) emitted instead of got_disp(__tls_get_addr) when the
target is Mips64.
llvm-svn: 146183
|
|
|
|
|
|
|
|
|
|
| |
- Modify lowering of global TLS address nodes.
- Modify isel of ThreadPointer.
- Wrap target global TLS address nodes that are operands of loads with WrapperPIC.
- Remove Mips-specific DAG nodes TlsGd, TprelHi and TprelLo, which can be
substituted with other existing nodes.
llvm-svn: 146175
|
|
|
|
|
|
| |
RDHWR.
llvm-svn: 146101
|
|
|
|
| |
llvm-svn: 146100
|
|
|
|
| |
llvm-svn: 146099
|
|
|
|
| |
llvm-svn: 146097
|
|
|
|
| |
llvm-svn: 146096
|
|
|
|
|
|
|
| |
been normalized and more descriptive comments added. Patch by Reed
Kotler and Jack Carter.
llvm-svn: 146088
|
|
|
|
| |
llvm-svn: 146086
|
|
|
|
| |
llvm-svn: 146081
|
|
|
|
| |
llvm-svn: 146080
|
|
|
|
| |
llvm-svn: 146063
|
|
|
|
| |
llvm-svn: 146062
|
|
|
|
| |
llvm-svn: 146059
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.
For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.
llvm-svn: 146026
|
|
|
|
|
|
|
|
| |
make the addend fixup code a bit more generic
Patch by Jack Carter.
llvm-svn: 145998
|
|
|
|
|
|
|
|
|
| |
1. Added opcode BUNDLE
2. Taught MachineInstr class to deal with bundled MIs
3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
4. Taught MachineBasicBlock methods about bundled MIs
llvm-svn: 145975
|
|
|
|
|
|
| |
Patch by Jack Carter
llvm-svn: 145912
|
|
|
|
| |
llvm-svn: 145910
|
|
|
|
| |
llvm-svn: 145894
|
|
|
|
|
|
|
|
| |
Whether a fixup needs relaxation for the associated instruction is a
target-specific function, as the FIXME indicated. Create a hook for that
and use it.
llvm-svn: 145881
|
|
|
|
|
|
|
| |
PerformANDCombine and PerformOrCombine aware of them. Test cases are included
too.
llvm-svn: 145853
|