| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
Specifically, itineraries for LEON processors has been added, along with several LEON processor Subtargets. Although currently all these targets are pretty much identical, support for features that will differ among these processors will be added in the very near future.
The different Instruction Itinerary Classes (IICs) added are sufficient to differentiate between the instruction timings used by LEON and, quite probably, by generic Sparc processors too, but the focus of the exercise has been for LEON processors, as the requirement of my project. If the IICs are not sufficient for other Sparc processor types and you want to add a new itinerary for one of those, it should be relatively trivial to adapt this.
As none of the LEON processors has Quad Floats, or is a Version 9 processor, none of those instructions have itinerary classes defined and revert to the default "NoItinerary" instruction itinerary.
Phabricator Review: http://reviews.llvm.org/D19359
llvm-svn: 267121
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
take the address of a global object:
void func1() {
...
}
int main(int argc, char** argv) {
void (*pFunc)();
pFunc = &func1
pFunc();
...
}
Phabricator review: http://reviews.llvm.org/D19368
llvm-svn: 267120
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D18687
llvm-svn: 267114
|
|
|
|
| |
llvm-svn: 267112
|
|
|
|
|
|
| |
since the custom logic just did what Expand does when CTTZ/CTLZ are Legal. NFC
llvm-svn: 267109
|
|
|
|
|
|
| |
they will be converted to CTLZ/CTTZ by LegalizeDAG. Remove extra instructions that only existed to to contain patterns that match the zero_undef operations. NFC
llvm-svn: 267108
|
|
|
|
| |
llvm-svn: 267107
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This intrinsic returns true if the current thread belongs to a live pixel
and false if it belongs to a pixel that we are executing only for derivative
computation. It will be used by Mesa to implement gl_HelperInvocation.
Note that for pixels that are killed during the shader, this implementation
also returns true, but it doesn't matter because those pixels are always
disabled in the EXEC mask.
This unearthed a corner case in the instruction verifier, which complained
about a v_cndmask 0, 1, exec, exec<imp-use> instruction. That's stupid but
correct code, so make the verifier accept it as such.
Reviewers: arsenm, tstellarAMD
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D19191
llvm-svn: 267102
|
|
|
|
|
|
| |
CTTZ_ZERO_UNDEF even without VLX support. We can just extend to 512-bits and extract like we do for CTLZ.
llvm-svn: 267100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Evaluates fmul+fadd -> fmadd combines and similar code sequences in the
machine combiner. It adds support for float and double similar to the existing
integer implementation. The key features are:
- DAGCombiner checks whether it should combine greedily or let the machine
combiner do the evaluation. This is only supported on ARM64.
- It gives preference to throughput over latency: the heuristic used is
to combine always in loops. The targets decides whether the machine
combiner should optimize for throughput or latency.
- Supports for fmadd, f(n)msub, fmla, fmls patterns
- On by default at O3 ffast-math
llvm-svn: 267098
|
|
|
|
|
|
| |
This follows the current binary format rules.
llvm-svn: 267082
|
|
|
|
|
|
|
|
|
|
|
| |
WIN__DBZCHK will insert a CBZ instruction into the stream. This instruction
reserves 3 bits for the condition register (rn). As such, we must ensure that
we restrict the register to a low register. Use the tGPR class instead of GPR
to ensure that this is properly constrained. In debug builds, we would attempt
to use lr as a condition register which would silently get truncated with no
hint that the register selection was incorrect.
llvm-svn: 267080
|
|
|
|
|
|
|
|
|
|
| |
We'd disabled them on x86 because back in the early days some host tools
couldn't handle the new load commands. This no longer holds: anyone capable of
deploying Clang should be able to deploy its copies of ar/ranlib/etc.
rdar://25254790
llvm-svn: 267075
|
|
|
|
| |
llvm-svn: 267038
|
|
|
|
| |
llvm-svn: 267034
|
|
|
|
|
|
|
| |
Return bool instead of void so that it is natural to put the calls into
asserts.
llvm-svn: 267033
|
|
|
|
|
|
| |
I get this wrong every time I try to debug this.
llvm-svn: 267030
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
IntrReadWriteArgMem simply becomes IntrArgMemOnly.
So there are fewer intrinsic properties that express their orthogonality
better, and correspond more closely to the corresponding IR attributes.
Suggested by: Philip Reames
Reviewers: joker.eph, reames, tstellarAMD
Subscribers: jholewinski, arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D19291
llvm-svn: 267021
|
|
|
|
|
|
|
|
| |
r266809 incorrectly used LD to load the stack guard, it should be LWZ.
Differential Revision: http://reviews.llvm.org/D19358
llvm-svn: 267017
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D15009
llvm-svn: 266990
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D14915
llvm-svn: 266988
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D14822
llvm-svn: 266985
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: nhaustov, tstellarAMD
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D19317
llvm-svn: 266984
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D18855
llvm-svn: 266980
|
|
|
|
|
|
|
|
| |
instructions and add tests for LWM32 and SWM32
Differential Revision: http://reviews.llvm.org/D19150
llvm-svn: 266977
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AArch64InstrInfo::optimizeCompareInstr
AArch64InstrInfo::optimizeCompareInstr has bug PR27158 which causes generation of incorrect code.
A compare instruction is substituted with another instruction which does not
produce the same flags as the original compare instruction.
This patch contains:
1. Fix of the bug.
2. A regression test in MIR.
3. A new test to check that SUBS is replaced by SUB.
Differential Revision: http://reviews.llvm.org/D18838
llvm-svn: 266969
|
|
|
|
| |
llvm-svn: 266968
|
|
|
|
| |
llvm-svn: 266963
|
|
|
|
|
|
| |
EXTRACT_VECTOR_ELT/INSERT_VECTOR_ELT from SSE41 block. They were already done in an earlier block. NFC
llvm-svn: 266962
|
|
|
|
|
|
| |
Instead let them stay Legal and mark them Expand for specific types where needed. Reduces overall number of calls to setOperationAction. NFC
llvm-svn: 266961
|
|
|
|
|
|
| |
operations to Expand. These vector types aren't legal so these operations would never make it far enough to need to expand. NFC
llvm-svn: 266960
|
|
|
|
|
|
|
|
| |
types where we can't do any better than the Custom lowering of CTTZ. LegalizeVectorOps will expand to CTTZ since its marked Custom.
CTTZ_ZERO_UNDEF can be custom lowered specially if CTLZ is supported. Otherwise CTTZ and CTTZ_ZERO_UNDEF are handled the same way by using CTPOP and bitmath.
llvm-svn: 266952
|
|
|
|
|
|
|
|
| |
instructions.
Without BWI we have to split the vectors into 256-bit vectors so we can use AVX2 pshufb and then concatenate the results.
llvm-svn: 266950
|
|
|
|
|
|
|
| |
This is for compatibility with scripts that use -mv5, etc. with the
assembler.
llvm-svn: 266918
|
|
|
|
| |
llvm-svn: 266901
|
|
|
|
|
|
|
|
| |
Differentiate between word and subword memory operations as they take different
amount of cycles to complete. This just adds a basic model of the subword
latency to the scheduler.
llvm-svn: 266898
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19334
llvm-svn: 266895
|
|
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 266882
|
|
|
|
|
|
| |
This only affects the recomputation of kill flags.
llvm-svn: 266875
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D14206
llvm-svn: 266873
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add ParseAMDGPURegister which can be invoked recursively for parsing lists.
Rename getRegForName to getSpecialRegForName.
Support legacy SP3 register list syntax: [s2,s3,s4,s5] or [flat_scratch_lo,flat_scratch_hi].
Add 64-bit registers TBA, TMA where missing.
Add some tests.
Differential Revision: http://reviews.llvm.org/D19163
llvm-svn: 266865
|
|
|
|
|
|
|
|
| |
Call locally defined function directly for PIE/fPIE
Differential Revision: http://reviews.llvm.org/D19226
llvm-svn: 266863
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D18640
llvm-svn: 266861
|
|
|
|
| |
llvm-svn: 266858
|
|
|
|
|
|
| |
vector types as Expand in a floating point only loop instead of looping through all vector types.
llvm-svn: 266850
|
|
|
|
|
|
| |
marked Legal or Promote for all the legal types later. Shifts are always marked custom. NFC
llvm-svn: 266849
|
|
|
|
|
|
| |
constructor. Also qualfiy the XOP block with !useSoftFloat to match the other vector blocks.
llvm-svn: 266848
|
|
|
|
|
|
| |
every legal FP type we either set them to Legal or Custom anyway. So let them stay defaulted to Legal and only change when they need to be Custom.
llvm-svn: 266847
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19054
llvm-svn: 266844
|
|
|
|
|
|
| |
[-Wdocumentation]
llvm-svn: 266841
|