cd81d94322a39503e4a3e87b6ee03d4fcb3465fb |
21-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for rebase to r212749. Includes a cherry-pick of: r212948 - fixes a small issue with atomic calls Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
smParser/PPCAsmParser.cpp
CTargetDesc/PPCMCCodeEmitter.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
PC.td
PCAsmPrinter.cpp
PCFastISel.cpp
PCFrameLowering.cpp
PCFrameLowering.h
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCJITInfo.cpp
PCJITInfo.h
PCRegisterInfo.cpp
PCSelectionDAGInfo.cpp
PCSelectionDAGInfo.h
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
|
dce4a407a24b04eebc6a376f8e62b41aaa7b071f |
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for 3.5 rebase (r209712). Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
smParser/LLVMBuild.txt
smParser/PPCAsmParser.cpp
isassembler/LLVMBuild.txt
isassembler/PPCDisassembler.cpp
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCAsmInfo.cpp
CTargetDesc/PPCMCAsmInfo.h
CTargetDesc/PPCMCCodeEmitter.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
CTargetDesc/PPCMCTargetDesc.cpp
CTargetDesc/PPCMachObjectWriter.cpp
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCTRLoops.cpp
PCCodeEmitter.cpp
PCFastISel.cpp
PCFrameLowering.cpp
PCFrameLowering.h
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCInstrVSX.td
PCJITInfo.cpp
PCJITInfo.h
PCMCInstLower.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
PCSelectionDAGInfo.cpp
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
PCTargetTransformInfo.cpp
|
36b56886974eae4f9c5ebc96befd3e7bfe5de338 |
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Update to LLVM 3.5a. Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
smParser/CMakeLists.txt
smParser/PPCAsmParser.cpp
MakeLists.txt
isassembler/CMakeLists.txt
isassembler/LLVMBuild.txt
isassembler/Makefile
isassembler/PPCDisassembler.cpp
nstPrinter/CMakeLists.txt
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
LVMBuild.txt
CTargetDesc/CMakeLists.txt
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCAsmInfo.cpp
CTargetDesc/PPCMCAsmInfo.h
CTargetDesc/PPCMCCodeEmitter.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
CTargetDesc/PPCMCTargetDesc.cpp
CTargetDesc/PPCMCTargetDesc.h
CTargetDesc/PPCPredicates.cpp
CTargetDesc/PPCPredicates.h
akefile
PC.h
PC.td
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCTRLoops.cpp
PCCallingConv.td
PCCodeEmitter.cpp
PCFastISel.cpp
PCFrameLowering.cpp
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCInstrVSX.td
PCJITInfo.cpp
PCMCInstLower.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
PCSchedule.td
PCSchedule440.td
PCScheduleA2.td
PCScheduleE500mc.td
PCScheduleE5500.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
PCScheduleP7.td
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetObjectFile.cpp
PCTargetObjectFile.h
PCTargetStreamer.h
PCTargetTransformInfo.cpp
argetInfo/CMakeLists.txt
argetInfo/LLVMBuild.txt
|
593c23caad07bd8b4d042db897b7d9fed7b4f213 |
12-Dec-2013 |
Bill Wendling <isanbard@gmail.com> |
Merging r-197100: ------------------------------------------------------------------------ r197100 | hfinkel | 2013-12-11 16:23:29 -0800 (Wed, 11 Dec 2013) | 1 line Remove unused multiclass from PPCInstrInfo.td ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@197131 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
02d8bf1f24c25a0db1f43789958c28975903ccb7 |
12-Dec-2013 |
Bill Wendling <isanbard@gmail.com> |
Merging r197100: ------------------------------------------------------------------------ r197100 | hfinkel | 2013-12-11 16:23:29 -0800 (Wed, 11 Dec 2013) | 1 line Remove unused multiclass from PPCInstrInfo.td ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@197130 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
b29de8ba0044548f0259b5eca180e07bdba992bc |
12-Dec-2013 |
Bill Wendling <isanbard@gmail.com> |
Merging r197089: ------------------------------------------------------------------------ r197089 | hfinkel | 2013-12-11 15:12:25 -0800 (Wed, 11 Dec 2013) | 6 lines Fix the PPC subsumes-predicate check For one predicate to subsume another, they must both check the same condition register. Failure to check this prerequisite was causing miscompiles. Fixes PR18003. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@197126 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
ade90c9f1d01f3401a5db183a33b5a6380476a35 |
21-Nov-2013 |
Bill Wendling <isanbard@gmail.com> |
Merging r195272: ------------------------------------------------------------------------ r195272 | hfinkel | 2013-11-20 12:54:55 -0800 (Wed, 20 Nov 2013) | 4 lines PPC popcnt[dw] do not have record forms The instruction definitions incorrectly specified that popcntd and popcntw have record forms; they do not. This mistake was causing invalid code generation. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195320 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
354362524a72b3fa43a6c09380b7ae3b2380cbba |
19-Nov-2013 |
Juergen Ributzka <juergen@apple.com> |
[weak vtables] Remove a bunch of weak vtables This patch removes most of the trivial cases of weak vtables by pinning them to a single object file. The memory leaks in this version have been fixed. Thanks Alexey for pointing them out. Differential Revision: http://llvm-reviews.chandlerc.com/D2068 Reviewed by Andy git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195064 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCTargetStreamer.h
|
b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16 |
18-Nov-2013 |
Alexey Samsonov <samsonov@google.com> |
Revert r194865 and r194874. This change is incorrect. If you delete virtual destructor of both a base class and a subclass, then the following code: Base *foo = new Child(); delete foo; will not cause the destructor for members of Child class. As a result, I observe plently of memory leaks. Notable examples I investigated are: ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194997 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCTargetStreamer.h
|
5a364c5561ec04e33a6f5d52c14f1bac6f247ea0 |
15-Nov-2013 |
Juergen Ributzka <juergen@apple.com> |
[weak vtables] Remove a bunch of weak vtables This patch removes most of the trivial cases of weak vtables by pinning them to a single object file. Differential Revision: http://llvm-reviews.chandlerc.com/D2068 Reviewed by Andy git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194865 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCTargetStreamer.h
|
cc7052343e5e955d4e2f48885c06360f9003390a |
15-Nov-2013 |
Bob Wilson <bob.wilson@apple.com> |
Avoid illegal integer promotion in fastisel Stop folding constant adds into GEP when the type size doesn't match. Otherwise, the adds' operands are effectively being promoted, changing the conditions of an overflow. Results are different when: sext(a) + sext(b) != sext(a + b) Problem originally found on x86-64, but also fixed issues with ARM and PPC, which used similar code. <rdar://problem/15292280> Patch by Duncan Exon Smith! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194840 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
|
f14beced2b3120f5f65d29e4553e478f3012345e |
11-Nov-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add PPC option for full register names in asm On non-Darwin PPC systems, we currently strip off the register name prefix prior to instruction printing. So instead of something like this: mr r3, r4 we print this: mr 3, 4 The first form is the default on Darwin, and is understood by binutils, but not yet understood by our integrated assembler. Once our integrated-as understands full register names as well, this temporary option will be replaced by tying this functionality to the verbose-asm option. The numeric-only form is compatible with legacy assemblers and tools, and is also gcc's default on most PPC systems. On the other hand, it is harder to read, and there are some analysis tools that expect full register names. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194384 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
565ebfff158d8afc4e09612f7e3cd14d05939cf9 |
31-Oct-2013 |
Rui Ueyama <ruiu@google.com> |
Use StringRef::startswith_lower. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193796 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
ffc7dca885151ed42642c2d6733e8db75d276621 |
29-Oct-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add a helper getSymbol to AsmPrinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193627 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCMCInstLower.cpp
|
985ce242a74adf6519609782acbdce2d5464fc22 |
16-Oct-2013 |
Eric Christopher <echristo@gmail.com> |
Add support for the VSX target attribute. No functional change as we don't actually use it to emit any code yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192837 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCSubtarget.h
|
06957f43f6051901590b318c10b1a0a5c7f898d4 |
16-Oct-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add a MCAsmInfoELF class and factor some code into it. We had a MCAsmInfoCOFF, but no common class for all the ELF MCAsmInfos before. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192760 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
CTargetDesc/PPCMCAsmInfo.h
|
320296a4cfe414ce59f406b8a5ce15272f563103 |
08-Oct-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add a MCTargetStreamer interface. This patch fixes an old FIXME by creating a MCTargetStreamer interface and moving the target specific functions for ARM, Mips and PPC to it. The ARM streamer is still declared in a common place because it is used from lib/CodeGen/ARMException.cpp, but the Mips and PPC are completely hidden in the corresponding Target directories. I will send an email to llvmdev with instructions on how to use this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192181 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCAsmPrinter.cpp
PCTargetStreamer.h
|
ef8c4ca252f1289ca8d0a1e6cfd96ca17fe3c5a8 |
07-Oct-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove getEHExceptionRegister and getEHHandlerRegister. They haven't been used for a long time. Patch by MathOnNapkins. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192099 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
daf6b948b98b886f5f0fba130e91e01c9ca7c2f2 |
26-Sep-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Fix PR17354: Generate nop after local calls for PIC code. When generating code for shared libraries, even local calls may be intercepted, so we need a nop after the call for the linker to fix up the TOC. Test case adapted from the one provided in PR17354. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191440 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
9637da60835a60f8ccd8289d04c60b2dcd4b9b5a |
26-Sep-2013 |
David Majnemer <david.majnemer@gmail.com> |
PPC: Allow partial fills in writeNopData() When asked to pad an irregular number of bytes, we should fill with zeros. This is consistent with the behavior specified in the AIX Assembler Language Reference as well as other LLVM and binutils assemblers. N.B. There is a small deviation from binutils' PPC assembler: when handling pads which are greater than 4 bytes but not mod 4, binutils will not emit any NOP sequences at all and only use zeros. This may or may not be a bug but there is no excellent rationale as to why that behavior is important to emulate. If that behavior is needed, we can change writeNopData() to behave in the same way. This fixes PR17352. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191426 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
dd5cebdd74aaaefcf50eb1ea44bee8b02ab65a2e |
26-Sep-2013 |
David Majnemer <david.majnemer@gmail.com> |
PPC: Do not introduce ISD nodes for fctid and fctiw git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191421 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
11c2b15c0a8282cfdc1c74968ebaba92f1fdae34 |
26-Sep-2013 |
David Majnemer <david.majnemer@gmail.com> |
PPC: Add support for fctid and fctiw Encodings were checked against the Power ISA documents and double checked against binutils. This fixes PR17350. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191419 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
3f22cc1df64a6dd6a3ecc5e7e261f15af083f806 |
25-Sep-2013 |
David Majnemer <david.majnemer@gmail.com> |
MC: Add support for treating $ as a reference to the PC The binutils assembler supports a mode called DOLLAR_DOT which treats the dollar sign token as a reference to the current program counter if the dollar sign doesn't precede a constant or identifier. This commit adds a new MCAsmInfo flag stating whether or not a given target supports this interpretation of the dollar sign token; by default, this flag is not enabled. Further, enable this flag for PPC. The system assembler for AIX and binutils both support using the dollar sign in this manner. This fixes PR17353. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191368 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
8ba3f9c9008223136207295b48b53c8aefffa178 |
25-Sep-2013 |
David Majnemer <david.majnemer@gmail.com> |
MC: Remove vestigial PCSymbol field from AsmInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191362 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
3e84ad28d4d3ceee25771b1e30315c20b7608c39 |
22-Sep-2013 |
Tim Northover <tnorthover@apple.com> |
ISelDAG: spot chain cycles involving MachineNodes Previously, the DAGISel function WalkChainUsers was spotting that it had entered already-selected territory by whether a node was a MachineNode (amongst other things). Since it's fairly common practice to insert MachineNodes during ISelLowering, this was not the correct check. Looking around, it seems that other nodes get their NodeId set to -1 upon selection, so this makes sure the same thing happens to all MachineNodes and uses that characteristic to determine whether we should stop looking for a loop during selection. This should fix PR15840. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191165 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
50019d8f7e1af96b85098ba501acbb9845682e4a |
22-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Correct the pre-increment load latencies in the PPC A2 itinerary Pre-increment loads are microcoded on the A2, and the address increment occurs only after the load completes. As a result, the latency of the GPR address update is an additional 2 cycles on top of the load latency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191156 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleA2.td
|
3789209b79ba8097cc489630c005898365134f65 |
17-Sep-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Add a FIXME. Documenting a design choice to generate only medium model sequences for TLS addresses at this time. Small and large code models could be supported if necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190883 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5bd1dfa2b5deab10a1a7a5a4ba117c28d878595d |
17-Sep-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Fix problems with large code model (PR17169). Large code model on PPC64 requires creating and referencing TOC entries when using the addis/ld form of addressing. This was not being done in all cases. The changes in this patch to PPCAsmPrinter::EmitInstruction() fix this. Two test cases are also modified to reflect this requirement. Fast-isel was not creating correct code for loading floating-point constants using large code model. This also requires the addis/ld form of addressing. Previously we were using the addis/lfd shortcut which is only applicable to medium code model. One test case is modified to reflect this requirement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190882 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCFastISel.cpp
|
5c616f91a5136295bf83850bc3610bd28756e58e |
16-Sep-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Fix PR17155 - Ignore COPY_TO_REGCLASS during emit. Fast-isel generates a COPY_TO_REGCLASS for widening f32 to f64, which is a nop on PPC64. This is needed to keep the register class system happy, but on the fast-isel path it is not removed before emit as it is for DAG select. Ignore this op when emitting instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190795 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
|
fabfb5d5880354983c89c6f475312dd359e5bb03 |
16-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Don't restrict lvsl generation to after type legalization This is a re-commit of r190764, with an extra check to make sure that we're not performing the transformation on illegal types (a small test case has been added for this as well). Original commit message: The PPC backend uses a target-specific DAG combine to turn unaligned Altivec loads into a permutation-based sequence when possible. Unfortunately, the target-specific DAG combine is not always called on all loads of interest (sometimes the routines in DAGCombine call CombineTo such that the new node and users are not added to the worklist); allowing the combine to trigger early (before type legalization) mitigates this problem. Because the autovectorizers only create legal vector types, I don't expect a lot of cases where this optimization is enabled by type legalization in practice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190771 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
19b59e66afa8d19c35444e0a739b467d368725d3 |
15-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Revert r190764: PPC: Don't restrict lvsl generation to after type legalization This is causing test-suite failures. Original commit message: The PPC backend uses a target-specific DAG combine to turn unaligned Altivec loads into a permutation-based sequence when possible. Unfortunately, the target-specific DAG combine is not always called on all loads of interest (sometimes the routines in DAGCombine call CombineTo such that the new node and users are not added to the worklist); allowing the combine to trigger early (before type legalization) mitigates this problem. Because the autovectorizers only create legal vector types, I don't expect a lot of cases where this optimization is enabled by type legalization in practice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190765 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
55532adc687a87574fd79822c876b10db95cd9ee |
15-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Don't restrict lvsl generation to after type legalization The PPC backend uses a target-specific DAG combine to turn unaligned Altivec loads into a permutation-based sequence when possible. Unfortunately, the target-specific DAG combine is not always called on all loads of interest (sometimes the routines in DAGCombine call CombineTo such that the new node and users are not added to the worklist); allowing the combine to trigger early (before type legalization) mitigates this problem. Because the autovectorizers only create legal vector types, I don't expect a lot of cases where this optimization is enabled by type legalization in practice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190764 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
98bae99266d8e527e7399c717a79c6dc9a073331 |
13-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add missing break statement in PPCISelLowering As it turns out, not a problem in practice, but it should be there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190720 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a2c982129ed93f4bcb9738e0749a0b08e51a8b83 |
13-Sep-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Remove an unused variable, fixing -Werror build with latest Clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190640 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6671cd4db079eb993f9bd340e0c33d61f0f27d81 |
13-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix PPC ABI for ByVal structs with vector members When a structure is passed by value, and that structure contains a vector member, according to the PPC ABI, the structure will receive enhanced alignment (so that the vector within the structure will always be aligned). This should resolve PR16641. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190636 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4a1535c0383254741bcddd3500081782aad11864 |
12-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Make the PPC fast-math sqrt expansion safe at 0 In fast-math mode sqrt(x) is calculated using the fast expansion of the reciprocal of the reciprocal sqrt expansion. The reciprocal and reciprocal sqrt expansions use the associated estimate instructions along with some Newton iterations. Unfortunately, as a result, sqrt(0) was being calculated as NaN, which is not correct. Now we explicitly return a result of zero if the input is zero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190624 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ba7183bc5284a0e4254ad12b78e2ea61e291dd88 |
12-Sep-2013 |
Roman Divacky <rdivacky@freebsd.org> |
Implement asm support for a few PowerPC bookIII that are needed for assembling FreeBSD kernel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190618 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstrFormats.td
PCInstrInfo.td
PCSchedule.td
|
c0b12dfd0a83081c1ebbb55a89c7a2c1f98f1842 |
12-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Mark PPC MFTB and DST (and friends) as deprecated Use the new instruction deprecation feature to mark mftb (now replaced with mfspr) and dst (along with the other Altivec cache control instructions) as deprecated when targeting cores supporting at least ISA v2.03. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190605 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PC.td
PCInstrAltivec.td
PCInstrInfo.td
PCSubtarget.cpp
PCSubtarget.h
|
715d98d657491b3fb8ea0e14643e9801b2f9628c |
12-Sep-2013 |
Joey Gouly <joey.gouly@arm.com> |
Add an instruction deprecation feature to TableGen. The 'Deprecated' class allows you to specify a SubtargetFeature that the instruction is deprecated on. The 'ComplexDeprecationPredicate' class allows you to define a custom predicate that is called to check for deprecation. For example: ComplexDeprecationPredicate<"MCR"> would mean you would have to define the following function: bool getMCRDeprecationInfo(MCInst &MI, MCSubtargetInfo &STI, std::string &Info) Which returns 'false' for not deprecated, and 'true' for deprecated and store the warning message in 'Info'. The MCTargetAsmParser constructor was chaned to take an extra argument of the MCInstrInfo class, so out-of-tree targets will need to be changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190598 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
411dea0e7206ccc8018261831225d898d069ff1d |
12-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Enable aggressive anti-dependency breaking Aggressive anti-dependency breaking is enabled by default for all PPC cores. This provides a general speedup on the P7 and other platforms (among other factors, the instruction group formation for the non-embedded PPC cores is done during post-RA scheduling). In order to do this safely, the incompatibility between uses of the MFOCRF instruction and anti-dependency breaking are resolved by marking MFOCRF with hasExtraSrcRegAllocReq. As noted in the removed FIXME, the problem was that MFOCRF's output is sensitive to the identify of the source register, and always paired with a shift to undo this effect. Because anti-dependency breaking is unaware of this hidden dependency of the shift amount on the source register of the MFOCRF instruction, changing that register must be inhibited. Two test cases were adjusted: The SjLj test was made more insensitive to register choices and scheduling; the saveCR test disabled anti-dependency breaking because part of what it is testing is proper register reuse. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190587 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
PCSubtarget.cpp
|
d24ba9ff6e7ffc64c0597171b1980cc4e9556eb0 |
12-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Greatly simplify the PPC A2 scheduling itinerary As Andy pointed out to me a long time ago, there are no structural hazards in the later pipeline stages of the A2, and so modeling them is useless. Also, modeling the top pre-dispatch stages is deceiving because, when multiple hardware threads are active, those resources are shared among the threads. The bypass definitions were mostly wrong, and so those have been removed. The resulting itinerary is much simpler, and more accurate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190562 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleA2.td
PCScheduleE500mc.td
PCScheduleE5500.td
|
b7fbc5baad87eb5cc143193e66139824993883d3 |
12-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Enable MI scheduling (and CodeGen AA) by default for embedded PPC cores For embedded PPC cores (especially the A2 core), using the MI scheduler with AA is far superior to the other scheduling options. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190558 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCSubtarget.cpp
PCSubtarget.h
|
a5d756ca39c8566a0995a3f748812befe9021ef0 |
11-Sep-2013 |
Hal Finkel <hfinkel@anl.gov> |
Implement TTI getUnrollingPreferences for PowerPC The PowerPC A2 core greatly benefits from aggressive concatenation unrolling; use the new getUnrollingPreferences to enable this by default when targeting the PPC A2 core. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190549 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetTransformInfo.cpp
|
c3cee57f7d20f69a84fd88464ed8cf050e63c7ad |
09-Sep-2013 |
Bill Wendling <isanbard@gmail.com> |
Generate compact unwind encoding from CFI directives. We used to generate the compact unwind encoding from the machine instructions. However, this had the problem that if the user used `-save-temps' or compiled their hand-written `.s' file (with CFI directives), we wouldn't generate the compact unwind encoding. Move the algorithm that generates the compact unwind encoding into the MCAsmBackend. This way we can generate the encoding whether the code is from a `.ll' or `.s' file. <rdar://problem/13623355> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMCTargetDesc.h
|
5510728d28bb1ee04abc32da3d21b7df12948053 |
01-Sep-2013 |
Charles Davis <cdavis5x@gmail.com> |
Move everything depending on Object/MachOFormat.h over to Support/MachO.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189728 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMachObjectWriter.cpp
|
cda04f9a0a7ef0755ca36db404239346c0edb24c |
31-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Fast-isel cleanup patch. Here are a few miscellaneous things to tidy up the PPC64 fast-isel implementation. I corrected a couple of commentary lapses, and added documentation of future opportunities. I also implemented TargetMaterializeAlloca, which I somehow forgot when I split up the original huge patch. Finally, I decided to delete SelectCmp. I hadn't previously hooked it in to TargetSelectInstruction(), and when I did I realized it wasn't serving any useful purpose. This is only useful for compares that don't feed a branch in the same block, and to handle that we would have to have logic to interpret i1 as a condition register. This could probably be done, but would require Unseemly Hackery, and honestly does not seem worth the hassle. This ends the current patch series. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189715 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
|
9d2238cb0f6f67ed6883a0e9f98a835c523724da |
31-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Add integer truncation support to fast-isel. This is the last substantive patch I'm planning for fast-isel in the near future, adding fast selection of integer truncates. There are certainly more things that can be improved (many of which are called out in FIXMEs), but for now we are catching most of the important cases. I'll document some of the remaining work in a cleanup patch shortly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189706 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
|
9056dd45a4402cf6266b61f219aa56651633b2c1 |
31-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Correct partially defined variable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189705 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
|
11addd2a2f584571ffcfd51711972b27aef0133f |
31-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Call support for fast-isel. This patch adds fast-isel support for calls (but not intrinsic calls or varargs calls). It also removes a badly-formed assert. There are some new tests just for calls, and also for folding loads into arguments on calls to avoid extra extends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189701 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCFastISel.cpp
PCISelLowering.cpp
|
9bc94276e796d644cb425a7c7d38cc44dbf4e9c1 |
30-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Add handling for conversions to fast-isel. Yet another chunk of fast-isel code. This one handles various conversions involving floating-point. (It also includes some miscellaneous handling throughout the back end for LWA_32 and LWAX_32 that should have been part of the load-store patch.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189677 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
PCAsmPrinter.cpp
PCFastISel.cpp
PCRegisterInfo.cpp
|
e206efd39bcc00600d816b67b041820b35d023fe |
30-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Handle selection of compare instructions in fast-isel. Mostly trivial patch adding support for compares. The meat of the work was added with the branch support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189639 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
|
40433e5df94f05ba93df7e96f7eb3f861915152a |
30-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Remove bogus debug statement. Sheesh. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189638 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
|
7248968fa529726b44d41bd25403d50c74db4bc4 |
30-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Add loads, stores, and related things to fast-isel. This is the next big chunk of fast-isel code. The primary purpose is to implement selection of loads and stores, but there is a lot of drag-along to support this. The common code to analyze addresses for both loads and stores is substantial. It's also necessary to add the materialization code for global values. Related to load-store processing is the code to fold loads into integer extends, since otherwise we generate lots of redundant instructions. We also need to add some overrides to some FastEmit routines to ensure we don't assign GPR 0 to a virtual register when this would change the meaning of an instruction. I added handling selection of a few binary arithmetic instructions, to enable committing some test cases I wrote a while back. Finally, ap couple of miscellaneous changes: * I cleaned up some poor style from a previous patch in PPCISelLowering.cpp, pointed out by David Blaikie. * I enlarged the Addr.Offset field to avoid sign problems with 32-bit offsets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189636 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
PCISelLowering.cpp
PCInstr64Bit.td
|
ead2d5a4be3012699252e015ce774733590bf9b0 |
28-Aug-2013 |
Alexey Samsonov <samsonov@google.com> |
Fix use of uninitialized value added in r189400 (found by MemorySanitizer) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189456 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCExpr.cpp
|
66b7139b1be1ddce410d97499d5831231c6be267 |
27-Aug-2013 |
Joerg Sonnenberger <joerg@bec.de> |
Given target assembler parsers a chance to handle variant expressions first. Use this to turn the PPC modifiers into PPC specific expressions, allowing them to work on constants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189400 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCMCExpr.cpp
|
f69a29b23a116a3520f185054290c445abf9aa62 |
27-Aug-2013 |
Charles Davis <cdavis5x@gmail.com> |
Revert "Fix the build broken by r189315." and "Move everything depending on Object/MachOFormat.h over to Support/MachO.h." This reverts commits r189319 and r189315. r189315 broke some tests on what I believe are big-endian platforms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189321 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMachObjectWriter.cpp
|
9c3dd1b0d1e96ef408b68da3b06c6ebd6c943601 |
27-Aug-2013 |
Charles Davis <cdavis5x@gmail.com> |
Move everything depending on Object/MachOFormat.h over to Support/MachO.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189315 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMachObjectWriter.cpp
|
7c42ede04579373a2d3e124b4417d89430d541f3 |
26-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Dummy code to silence warning from 4189266 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189272 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
055d20742642a7392d5931b61f2ea09c60c204dd |
26-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] More fast-isel chunks (returns and integer extends) Incremental improvement to fast-isel for PPC64. This allows us to select on ret, sext, and zext. Filling in sext/zext improves some of the existing logic in handling compare-immediates that needed extends. A simplified return convention for fast-isel is also added to the PPC64 calling conventions. All call/return processing for DAG selection is handled with custom code, so there isn't an existing CC to rely on here. The include of PPCGenCallingConv.inc causes compiler warnings due to the 32-bit calling conventions that are not used, so the dummy function "usePPC32CCs()" is added here to silence those. Test cases for the return and extend logic are added. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189266 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCFastISel.cpp
PCInstr64Bit.td
|
3fad2bcd25d5f46d98ea7e41c6654833f197b960 |
26-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Add fast-isel branch and compare selection. First chunk of actual fast-isel selection code. This handles direct and indirect branches, as well as feeding compares for direct branches. PPCFastISel::PPCEmitIntExt() is just roughed in and will be expanded in a future patch. This also corrects a problem with selection for constant pool entries in JIT mode or with small code model. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189202 91177308-0d34-0410-b5e6-96231b3b80d8
PCFastISel.cpp
|
6af35e95765e2d577919714dfbdac3ebf84cac78 |
20-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] More refactoring prior to real PPC emitPrologue/Epilogue changes. (Patch committed on behalf of Mark Minich, whose log entry follows.) This is a continuation of the refactorings performed in svn rev 188573 (see that rev's comments for more detail). This is my stage 2 refactoring: I combined the emitPrologue() & emitEpilogue() PPC32 & PPC64 code into a single flow, simplifying a lot of the code since in essence the PPC32 & PPC64 code generation logic is the same, only the instruction forms are different (in most cases). This simplification is necessary because my functional changes (yet to come) add significant complexity, and without the simplification of my stage 2 refactoring, the overall complexity of both emitPrologue() & emitEpilogue() would have become almost intractable for most mortal programmers (like me). This submission was intended to be a pure refactoring (no functional changes whatsoever). However, in the process of combining the PPC32 & PPC64 flows, I spotted a difference that I believe is a bug (see svn rev 186478 line 863, or svn rev 188573 line 888): This line appears to be restoring the BP with the original FP content, not the original BP content. When I merged the 32-bit and 64-bit code, I used the corresponding code from the 64-bit flow, which I believe uses the correct offset (BPOffset) for this operation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188741 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
66d1fa6f4b443ac9f8bcea5d1f71a73ada733a42 |
20-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add a llvm.copysign intrinsic This adds a llvm.copysign intrinsic; We already have Libfunc recognition for copysign (which is turned into the FCOPYSIGN SDAG node). In order to autovectorize calls to copysign in the loop vectorizer, we need a corresponding intrinsic as well. In addition to the expected changes to the language reference, the loop vectorizer, BasicTTI, and the SDAG builder (the intrinsic is transformed into an FCOPYSIGN node, just like the function call), this also adds FCOPYSIGN to a few lists in LegalizeVector{Ops,Types} so that vector copysigns can be expanded. In TargetLoweringBase::initActions, I've made the default action for FCOPYSIGN be Expand for vector types. This seems correct for all in-tree targets, and I think is the right thing to do because, previously, there was no way to generate vector-values FCOPYSIGN nodes (and most targets don't specify an action for vector-typed FCOPYSIGN). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188728 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
30cbccb029b01738202bd04341b1cbf68a7814c9 |
20-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
Don't form PPC CTR-based loops around a copysignl call copysign/copysignf never become function calls (because the SDAG expansion code does not lower to the corresponding function call, but rather directly implements the associated logic), but copysignl almost always is lowered into a call to the requested libm functon (and, thus, might clobber CTR). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188727 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
953a78084b85ea88cd2b208153a72df70e27133f |
19-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add the PPC fcpsgn instruction Modern PPC cores support a floating-point copysign instruction, and we can use this to lower the FCOPYSIGN node (which is created from calls to the libm copysign function). A couple of extra patterns are necessary because the operand types of FCOPYSIGN need not agree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188653 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCInstrInfo.td
PCSubtarget.cpp
PCSubtarget.h
|
9bb6c81683393363ed1ff8c66397f2d944c0966b |
16-Aug-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Preparatory refactoring for making prologue and epilogue safe on PPC32 SVR4 ABI [Patch and following text by Mark Minich; committing on his behalf.] There are FIXME's in PowerPC/PPCFrameLowering.cpp, method PPCFrameLowering::emitPrologue() related to "negative offsets of R1" on PPC32 SVR4. They're true, but the real issue is that on PPC32 SVR4 (and any ABI without a Red Zone), no spills may be made until after the stackframe is claimed, which also includes the LR spill which is at a positive offset. The same problem exists in emitEpilogue(), though there's no FIXME for it. I intend to fix this issue, making LLVM-compiled code finally safe for use on SVR4/EABI/e500 32-bit platforms (including in particular, OS-free embedded systems & kernel code, where interrupts may share the same stack as user code). In preparation for making these changes, to make the diffs for the functional changes less cluttered, I am providing the non-functional refactorings in two stages: Stage 1 does some minor fluffy refactorings to pull multiple method calls up into a single bool, creating named bools for repeated uses of obscure logic, moving some code up earlier because either stage 2 or my final version will require it earlier, and rewording/adding some comments. My stage 1 changes can be characterized as primarily fluffy cleanup, the purpose of which may be unclear until the stage 2 or final changes are made. My stage 2 refactorings combine the separate PPC32 & PPC64 logic, which is currently performed by largely duplicate code, into a single flow, with the differences handled by a group of constants initialized early in the methods. This submission is for my stage 1 changes. There should be no functional changes whatsoever; this is a pure refactoring. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188573 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
5a0910b34959fa8e0b5a49908f51a15bc3a48069 |
15-Aug-2013 |
Craig Topper <craig.topper@gmail.com> |
Replace getValueType().getSimpleVT() with getSimpleValueType(). Also remove one weird cast from MVT->EVT just to call getSimpleVT(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188441 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
341c1a50adeadd848b2e73e9184d81331ee1cb92 |
14-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
Actually fix PPC64 64-bit GPR inline asm constraint matching This is a follow-up to r187693, correcting that code to request the correct register class. The previous version, with the wrong register class, was not really correcting the constraints, but rather was removing them. Coincidentally, this fixed the failing test case in r187693, but obviously created other problems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188407 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d76adee1b214fe1f5a26b8ffaec3e461beda6c88 |
08-Aug-2013 |
David Fang <fang@csl.cornell.edu> |
cast fix to appease buildbot git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188014 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMachObjectWriter.cpp
|
d4f9d05fde4b2cfd202a5852ec1ec3e960ef53ed |
08-Aug-2013 |
David Fang <fang@csl.cornell.edu> |
initial draft of PPCMachObjectWriter.cpp this records relocation entries in the mach-o object file for PIC code generation. tested on powerpc-darwin8, validated against darwin otool -rvV git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188004 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/CMakeLists.txt
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMCTargetDesc.h
CTargetDesc/PPCMachObjectWriter.cpp
|
05a4d2642b415e3332651733015b656bc3c7b9bc |
08-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Map frin to round() not nearbyint() and rint() Making use of the recently-added ISD::FROUND, which allows for custom lowering of round(), the PPC backend will now map frin to round(). Previously, we had been using frin to lower nearbyint() (and rint() via some custom lowering to handle the extra fenv flags requirements), but only in fast-math mode because frin does not tie-to-even. Several users had complained about this behavior, and this new mapping of frin to round is certainly more appropriate (and does not require fast-math mode). In effect, this reverts r178362 (and part of r178337, replacing the nearbyint mapping with the round mapping). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187960 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
41418d17cced656f91038b2482bc9d173b4974b0 |
08-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add ISD::FROUND for libm round() All libm floating-point rounding functions, except for round(), had their own ISD nodes. Recent PowerPC cores have an instruction for round(), and so here I'm adding ISD::FROUND so that round() can be custom lowered as well. For the most part, this is straightforward. I've added an intrinsic and a matching ISD node just like those for nearbyint() and friends. The SelectionDAG pattern I've named frnd (because ISD::FP_ROUND has already claimed fround). This will be used by the PowerPC backend in a follow-up commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187926 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
0e910d2cb5feac287c2a3050c1945a3c4a3d2dd5 |
06-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add PPC64 mulli pattern The PPC backend had been missing a pattern to generate mulli for 64-bit multiples. We had been generating it only for 32-bit multiplies. Unfortunately, generating li + mulld unnecessarily increases register pressure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187807 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
8e1d64666f493e4994b26a390bec1290a5d94b96 |
06-Aug-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
Target/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each corresponding CodeGen. Without explicit dependencies, both per-file action and in-CommonTableGen action could run in parallel. It races to emit *.inc files simultaneously. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187780 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
af00feb1a6af78fbb07c4deca6e9e30a49cdcd15 |
04-Aug-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
PPCAsmParser: Stop leaking names. Store them in a place that gets cleaned up properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187700 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
5cad12d12a823d258fc60e3975ffa142d0e190ef |
03-Aug-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix PPC64 64-bit GPR inline asm constraint matching Internally, the PowerPC backend names the 32-bit GPRs R[0-9]+, and names the 64-bit parent GPRs X[0-9]+. When matching inline assembly constraints with explicit register names, on PPC64 when an i64 MVT has been requested, we need to follow gcc's convention of using r[0-9]+ to refer to the 64-bit (parent) registers. At some point, we'll probably want to arrange things so that the generic code in TargetLowering uses the AsmName fields declared in *RegisterInfo.td in order to match these inline asm register constraints. If we do that, this change can be reverted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187693 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
61fc8d670f1e991804c2ab753e567981e60962cb |
01-Aug-2013 |
Bill Wendling <isanbard@gmail.com> |
Use function attributes to indicate that we don't want to realign the stack. Function attributes are the future! So just query whether we want to realign the stack directly from the function instead of through a random target options structure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187618 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
646cd7933b16b78443b06ce9ba2362e6695cb526 |
30-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Skeletal FastISel support for 64-bit PowerPC ELF. This is the first of many upcoming patches for PowerPC fast instruction selection support. This patch implements the minimum necessary for a functional (but extremely limited) FastISel pass. It allows the table-generated portions of the selector to be created and used, but in most cases selection will fall back to the DAG selector. None of the block terminator instructions are implemented yet, and most interesting instructions require some special handling. Therefore there aren't any new test cases with this patch. There will be quite a few tests coming with future patches. This patch adds the make/CMake support for the new code (including tablegen -gen-fast-isel) and creates the FastISel object for PPC64 ELF only. It instantiates the necessary virtual functions (TargetSelectInstruction, TargetMaterializeConstant, TargetMaterializeAlloca, tryToFoldLoadIntoMI, and FastLowerArguments), but of these, only TargetMaterializeConstant contains any useful implementation. This is present since the table-generated code requires the ability to materialize integer constants for some instructions. This patch has been tested by building and running the projects/test-suite code with -O0. All tests passed with the exception of a couple of long-running tests that time out using -O0 code generation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187399 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
PCFastISel.cpp
PCISelLowering.cpp
PCISelLowering.h
|
f5b9110ce1e0d5bc6f96b1e74d110f0cc576324a |
28-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Add comment explaining preprocessor directive. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187320 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
eec21735b36ec7f79e6f925b192430bd39e8cd29 |
28-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Revert 187318 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187319 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
8faa99081d9ad07234b95f86d02b4204bc561668 |
28-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Remove unnecessary preprocessor checking. The tests !defined(__ppc__) && !defined(__powerpc__) are not needed or helpful when verifying that code is being compiled for a 64-bit target. The simpler test provided by this revision is sufficient to tell if the target is 64-bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187318 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
496cf2308acf4bb719a015517f27dff10db7de49 |
27-Jul-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Revert "[PowerPC] Improve consistency in use of __ppc__, __powerpc__, etc." This reverts commit r187248. It broke many bots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187254 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
d063a326b2567c3ca759f069e7680979036b9d5e |
26-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Improve consistency in use of __ppc__, __powerpc__, etc. Both GCC and LLVM will implicitly define __ppc__ and __powerpc__ for all PowerPC targets, whether 32- or 64-bit. They will both implicitly define __ppc64__ and __powerpc64__ for 64-bit PowerPC targets, and not for 32-bit targets. We cannot be sure that all other possible compilers used to compile Clang/LLVM define both __ppc__ and __powerpc__, for example, so it is best to check for both when relying on either inside the Clang/LLVM code base. This patch makes sure we always check for both variants. In addition, it fixes one unnecessary check in lib/Target/PowerPC/PPCJITInfo.cpp. (At least one of __ppc__ and __powerpc__ should always be defined when compiling for a PowerPC target, no matter which compiler is used, so testing for them is unnecessary.) There are some places in the compiler that check for other variants, like __POWERPC__ and _POWER, and I have left those in place. There is no need to add them elsewhere. This seems to be in Apple-specific code, and I won't take a chance on breaking it. There is no intended change in behavior; thus, no test cases are added. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187248 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
f38cc38fa647d4e72c053c39bbe0cdec1342535f |
26-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Support powerpc64le as a syntax-checking target. This patch provides basic support for powerpc64le as an LLVM target. However, use of this target will not actually generate little-endian code. Instead, use of the target will cause the correct little-endian built-in defines to be generated, so that code that tests for __LITTLE_ENDIAN__, for example, will be correctly parsed for syntax-only testing. Code generation will otherwise be the same as powerpc64 (big-endian), for now. The patch leaves open the possibility of creating a little-endian PowerPC64 back end, but there is no immediate intent to create such a thing. The LLVM portions of this patch simply add ppc64le coverage everywhere that ppc64 coverage currently exists. There is nothing of any import worth testing until such time as little-endian code generation is implemented. In the corresponding Clang patch, there is a new test case variant to ensure that correct built-in defines for little-endian code are generated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187179 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMCTargetDesc.cpp
CTargetDesc/PPCMCTargetDesc.h
PC.td
PCAsmPrinter.cpp
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
argetInfo/PowerPCTargetInfo.cpp
|
6ebf55d811bab50e7f42ee8cec60c125f6fe0cd2 |
25-Jul-2013 |
Roman Divacky <rdivacky@freebsd.org> |
PPC32 va_list is an actual structure so va_copy needs to copy the whole structure not just a pointer. This implements that and thus fixes va_copy on PPC32. Fixes #15286. Both bug and patch by Florian Zeitz! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187158 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ef540b194f8ae1ff994ccdcb10dcc36f60e419c2 |
24-Jul-2013 |
David Fang <fang@csl.cornell.edu> |
allow tests to run on powerpc-darwin8 again, checking for __ppc__ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187027 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
f63ef914b67593e4b20a0b85e889380c20b41f55 |
24-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Split generated asm mnemonic matching table into a separate table for each asm variant. This removes the need to store the asm variant in each row of the single table that existed before. Shaves ~16K off the size of X86AsmParser.o. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187026 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
aad2a72c285a48e34d89ba69d24eb624f2b09b0e |
18-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Support dynamic allocas with large alignment Support for dynamic stack alignments in the PPC backend has been unfinished, in part because it depends on dynamic stack realignment (which I only just recently implemented fully). Now we can also support dynamic allocas with higher than the default target stack alignment (16 bytes). In order to round-up the requested size to the maximum requested alignment, we need an additional register to hold the rounded-up size. We're already using one scavenged register to hold the previous stack-pointer value (which needs to be stored with the signal-safe stdux update), and so when we have dynamic allocas and a large alignment, we allocate two emergency spill slots for the scavenger. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186562 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCRegisterInfo.cpp
|
0541722de4beb2e53058dbf4ed1ebf0d96ddd6cb |
18-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Add base-pointer support to builtin setjmp/longjmp First, this changes the base-pointer implementation to remove an unnecessary complication (and one that is incompatible with how builtin SjLj is implemented): instead of using r31 as the base pointer when it is not needed as a frame pointer, now the base pointer will always be r30 when needed. Second, we introduce another pseudo register, BP, which is used just like the FP pseudo register to refer to the base register before we know for certain what register it will be. Third, we now save BP into the jmp_buf, and restore r30 from that slot in longjmp. If the function that called setjmp did not use a base pointer, then r30 will be overwritten by the setjmp-calling-function's restore code. FP restoration (which is restored into r31) works the same way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186545 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCFrameLowering.h
PCISelLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.td
|
8d7435e9b1319c6e748a06c0b41a4c3de82ec750 |
17-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Add CTR-register clobber to builtin setjmp Because the builtin longjmp implementation uses a CTR-based indirect jump, when the control flow arrives at the builtin setjmp call, the CTR register has necessarily been clobbered. Correspondingly, this adds CTR to the list of implicit definitions of the builtin setjmp pseudo instruction. We don't need to add CTR to the implicit definitions of builtin longjmp because, even though it does clobber the CTR register, the control flow cannot return to inside the loop unless there is also a builtin setjmp call. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186488 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
fe47bf8fa07e12b70ff8b234fa1f6b97c8d2753d |
17-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Implement base pointer and stack realignment This builds on some frame-lowering code that has existed since 2005 (r24224) but was disabled in 2008 (r48188) because it needed base pointer support to function correctly. This implementation follows the strategy suggested by Dale Johannesen in r48188 where the following comment was added: This does not currently work, because the delta between old and new stack pointers is added to offsets that reference incoming parameters after the prolog is generated, and the code that does that doesn't handle a variable delta. You don't want to do that anyway; a better approach is to reserve another register that retains to the incoming stack pointer, and reference parameters relative to that. And now we do exactly that. If we don't need a frame pointer, then we use r31 as a base pointer. If we do need a frame pointer, then we use r30 as a base pointer. The base pointer retains the value of the stack pointer before it was decremented in the prologue. We then use the base pointer to resolve all negative frame indicies. The basic scheme follows that for base pointers in the X86 backend. We use a base pointer when we need to dynamically realign the incoming stack pointer. This currently applies only to static objects (dynamic allocas with large alignments, and base-pointer support in SjLj lowering will come in future commits). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186478 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCFrameLowering.h
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
649c7fc4747b508d72031bce111902fe53932cca |
16-Jul-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCJITInfo.cpp: Tweak r186252 with s/__ppc/__powerpc/ to work on powerpc-linux Fedora 12. g++ (GCC) 4.4.4 20100630 (Red Hat 4.4.4-10) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186396 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
a44c37f880c8ca84b7388dd52fb2708495697a18 |
16-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Refactoring to support subtarget feature changing This change mirrors the changes that were made to the X86 and ARM targets to support subtarget feature changing. As indicated in r182899, the mechanism is still undergoing revision, and so as with the X86 and ARM targets, there is no test case yet (there is no effective functionality change). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186357 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
ae4f3f6820c28a4ba4fab538f5ff4724cbe82d50 |
15-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix register subclass handling in PPCInstrInfo::insertSelect PPCInstrInfo::insertSelect and PPCInstrInfo::canInsertSelect were computing the common subclass of the true and false inputs, and then selecting either the 32-bit or the 64-bit isel variant based on the result of calling PPC::GPRCRegClass.hasSubClassEq(RC) and PPC::G8RCRegClass.hasSubClassEq(RC) (where RC is the common subclass). Unfortunately, this is not quite right: if we have something like this: %vreg8<def> = SELECT_CC_I8 %vreg4<kill>, %vreg7<kill>, %vreg6<kill>, 76; G8RC_and_G8RC_NOX0:%vreg8 CRRC:%vreg4 G8RC_NOX0:%vreg7,%vreg6 then the common subclass of G8RC_and_G8RC_NOX0 and G8RC_NOX0 is G8RC_NOX0, and G8RC_NOX0 is not a subclass of G8RC (because it also contains the ZERO8 pseudo-register). As a result, we also need to check the common subclass against GPRC_NOR0 and G8RC_NOX0 explicitly. This had not been a problem for clients of insertSelect that called canInsertSelect first (because it had a compensating mistake), but insertSelect is also used by the PPC pseudo-instruction expander, and this error was causing a problem in that context. This problem was found by csmith. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186343 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
b9df53a40b22c74ce3f3a7b4a7c0676a38cf5e73 |
15-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use llvm::array_lengthof to replace sizeof(array)/sizeof(array[0]). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186301 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a0ec3f9b7b826b9b40b80199923b664bad808cce |
14-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186274 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelLowering.cpp
PCMachineFunctionInfo.h
|
0a14e7123269ffc84b26d87676ddce1afc335f02 |
13-Jul-2013 |
Joerg Sonnenberger <joerg@bec.de> |
Reduce large list of macros to the primary platform macros. Distingiush between ELF (Linux, FreeBSD, NetBSD) and OSX as platform for the assembler dialect. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186252 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
e2ff00e117ba9b758b298e671f65c0b002f8a52d |
11-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Add some missing V_SET0 patterns We had patterns to match v4i32 immAllZerosV -> V_SET0, but not patterns for v8i16 (which occurs in the test case) or v16i8. The same was true for V_SETALLONES (so I added the associated patterns for those as well). Another bug found by llvm-stress. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186108 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
53c86db25b5b4e163c68dc91c8ce1bc8180e6ff3 |
11-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPCDAGToDAGISel::isRunOfOnes should return false on zero This fixes a bug (found by csmith) at -O0 where we attempt to create a RLWIMI with an out-of-range operand. Most uses of the isRunOfOnes function are guarded by a condition that the value is not zero. This was not true in two places, and in both places a zero input would result in an out-of-rage MB value (= 32). To fix this, isRunOfOnes returns false on a zero input (and I've remove one now-redundant guard). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186101 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
e355d850d6b3f595ce58a7b612502b57ca7f3271 |
10-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Add a better comment about the i64 FI fixup In discussing this change with Bill Schmidt, it was decided that the original comment about negative FIs was incorrect. We'll still exclude them for now, but now with a more-accurate explanation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186005 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7c2d8f7b5ea1d0abaed1176f87ea2509e65e82be |
09-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Better fix for PR16556. A more complete example of the bug in PR16556 was recently provided, showing that the previous fix was not sufficient. The previous fix is reverted herein. The real problem is that ReplaceNodeResults() uses LowerFP_TO_INT as custom lowering for FP_TO_SINT during type legalization, without checking whether the input type is handled by that routine. LowerFP_TO_INT requires the input to be f32 or f64, so we fail when the input is ppcf128. I'm leaving the test case from the initial fix (r185821) in place, and adding the new test as another crash-only check. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185959 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e54885af9b54bfc7436a928a48d3db1ef88a2a70 |
09-Jul-2013 |
Stephen Lin <stephenwlin@gmail.com> |
AArch64/PowerPC/SystemZ/X86: This patch fixes the interface, usage, and all in-tree implementations of TargetLoweringBase::isFMAFasterThanMulAndAdd in order to resolve the following issues with fmuladd (i.e. optional FMA) intrinsics: 1. On X86(-64) targets, ISD::FMA nodes are formed when lowering fmuladd intrinsics even if the subtarget does not support FMA instructions, leading to laughably bad code generation in some situations. 2. On AArch64 targets, ISD::FMA nodes are formed for operations on fp128, resulting in a call to a software fp128 FMA implementation. 3. On PowerPC targets, FMAs are not generated from fmuladd intrinsics on types like v2f32, v8f32, v4f64, etc., even though they promote, split, scalarize, etc. to types that support hardware FMAs. The function has also been slightly renamed for consistency and to force a merge/build conflict for any out-of-tree target implementing it. To resolve, see comments and fixed in-tree examples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185956 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
7a34599db017a5486cf7cd11eb124984acec8286 |
09-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Revert r185476 and fix up TLS variant kinds In the commit message to r185476 I wrote: >The PowerPC-specific modifiers VK_PPC_TLSGD and VK_PPC_TLSLD >correspond exactly to the generic modifiers VK_TLSGD and VK_TLSLD. >This causes some confusion with the asm parser, since VK_PPC_TLSGD >is output as @tlsgd, which is then read back in as VK_TLSGD. > >To avoid this confusion, this patch removes the PowerPC-specific >modifiers and uses the generic modifiers throughout. (The only >drawback is that the generic modifiers are printed in upper case >while the usual convention on PowerPC is to use lower-case modifiers. >But this is just a cosmetic issue.) This was unfortunately incorrect, there is is fact another, serious drawback to using the default VK_TLSLD/VK_TLSGD variant kinds: using these causes ELFObjectWriter::RelocNeedsGOT to return true, which in turn causes the ELFObjectWriter to emit an undefined reference to _GLOBAL_OFFSET_TABLE_. This is a problem on powerpc64, because it uses the TOC instead of the GOT, and the linker does not provide _GLOBAL_OFFSET_TABLE_, so the symbol remains undefined. This means shared libraries using TLS built with the integrated assembler are currently broken. While the whole RelocNeedsGOT / _GLOBAL_OFFSET_TABLE_ situation probably ought to be properly fixed at some point, for now I'm simply reverting the r185476 commit. Now this in turn exposes the breakage of handling @tlsgd/@tlsld in the asm parser that this check-in was originally intended to fix. To avoid this regression, I'm also adding a different fix for this problem: while common code now parses @tlsgd as VK_TLSGD, a special hack in the asm parser translates this code to the platform-specific VK_PPC_TLSGD that the back-end now expects. While this is not really pretty, it's self-contained and shouldn't hurt anything else for now. One the underlying problem is fixed, this hack can be reverted again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185945 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCELFObjectWriter.cpp
PCAsmPrinter.cpp
|
b2713e018e1c99bb9a65d2d2e63dc7e3e2222c57 |
09-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support ".machine any" The PowerPC assembler is supposed to provide a directive .machine that allows switching the supported CPU instruction set on the fly. Since we do not yet check CPU feature sets at all and always accept any available instruction, this is not really useful at this point. However, it makes sense to accept (and ignore) ".machine any" to avoid spuriously rejecting existing assembler files that use this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185924 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
ff16df71f50231c79c379a146dc55b4d6867cbd9 |
09-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support .llong and fix .word This adds support for the .llong PowerPC-specifc assembler directive. In doing so, I notices that .word is currently incorrect: it is supposed to define a 2-byte data element, not a 4-byte one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185911 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
fa55969acb64da32acf6305064c9f6e3c237b74e |
09-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Allocate RS spill slot for unaligned i64 load/store This fixes another bug found by llvm-stress! If we happen to be doing an i64 load or store into a stack slot that has less than a 4-byte alignment, then the frame-index elimination may need to use an indexed load or store instruction (because the offset may not be a multiple of 4, a requirement of the STD/LD instructions). The extra register needed to hold the offset comes from the register scavenger, and it is possible that the scavenger will need to use an emergency spill slot. As a result, we need to make sure that a spill slot is allocated when doing an i64 load/store into a less-than-4-byte-aligned stack slot. Because test cases for things like this tend to be fairly fragile, I've concatenated a few small bugpoint-reduced test cases together to form the regression test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185907 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a68f58ab2bec6a024afae498e4082ddd8b01f178 |
08-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Always use "assembler dialect" 1 A setting in MCAsmInfo defines the "assembler dialect" to use. This is used by common code to choose between alternatives in a multi-alternative GNU inline asm statement like the following: __asm__ ("{sfe|subfe} %0,%1,%2" : "=r" (out) : "r" (in1), "r" (in2)); The meaning of these dialects is platform specific, and GCC defines those for PowerPC to use dialect 0 for old-style (POWER) mnemonics and 1 for new-style (PowerPC) mnemonics, like in the example above. To be compatible with inline asm used with GCC, LLVM ought to do the same. Specifically, this means we should always use assembler dialect 1 since old-style mnemonics really aren't supported on any current platform. However, the current LLVM back-end uses: AssemblerDialect = 1; // New-Style mnemonics. in PPCMCAsmInfoDarwin, and AssemblerDialect = 0; // Old-Style mnemonics. in PPCLinuxMCAsmInfo. The Linux setting really isn't correct, we should be using new-style mnemonics everywhere. This is changed by this commit. Unfortunately, the setting of this variable is overloaded in the back-end to decide whether or not we are on a Darwin target. This is done in PPCInstPrinter (the "SyntaxVariant" is initialized from the MCAsmInfo AssemblerDialect setting), and also in PPCMCExpr. Setting AssemblerDialect to 1 for both Darwin and Linux no longer allows us to make this distinction. Instead, this patch uses the MCSubtargetInfo passed to createPPCMCInstPrinter to distinguish Darwin targets, and ignores the SyntaxVariant parameter. As to PPCMCExpr, this patch adds an explicit isDarwin argument that needs to be passed in by the caller when creating a target MCExpr. (To do so this patch implicitly also reverts commit 184441.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185858 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCMCAsmInfo.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
CTargetDesc/PPCMCTargetDesc.cpp
PC.h
PCAsmPrinter.cpp
PCMCInstLower.cpp
|
947d447ee0ac927cc308e5e53062e0edb71e7d8e |
08-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Mark vector CC action for SETO and SETONE as Expand Another bug found by llvm-stress! This fixes hitting llvm_unreachable("Invalid integer vector compare condition"); at the end of getVCmpInst in PPCISelDAGToDAG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185855 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ad3b34d1bc4eaa92a95c56fe32fd18a6f36f62f4 |
08-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Mark vector FREM as Expand by default Another bug found by llvm-stress! This fixes crashing with: LLVM ERROR: Cannot select: v4f32 = frem ... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185840 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
19d2b78978905cfde0a0d7190c8480219fb2d1c6 |
08-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support time base instructions This adds support for the old-style time base instructions; while new programs are supposed to use mfspr, the mftb instructions are still supported and in use by existing assembler files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185829 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
9e5bbeab1f6f79375c24bfab87c28f5f4c5afea1 |
08-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support basic compare mnemonics This adds support for the basic mnemoics (with the L operand) for the fixed-point compare instructions. These are defined as aliases for the already existing CMPW/CMPD patterns, depending on the value of L. This requires use of InstAlias patterns with immediate literal operands. To make this work, we need two further changes: - define a RegisterPrefix, because otherwise literals 0 and 1 would be parsed as literal register names - provide a PPCAsmParser::validateTargetOperandClass routine to recognize immediate literals (like ARM does) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185826 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PC.td
PCInstrInfo.td
|
12ae7fd2da24e53c795c0cc17d06c91a0f09fb3d |
08-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Fix PR16556 (handle undef ppcf128 in LowerFP_TO_INT). PPCTargetLowering::LowerFP_TO_INT() expects its source operand to be either an f32 or f64, but this is not checked. A long double (ppcf128) operand will normally be custom-lowered to a conversion to f64 in this context. However, this isn't the case for an UNDEF node. This patch recognizes a ppcf128 as a legal source operand for FP_TO_INT only if it's an undef, in which case it creates an undef of the target type. At some point we might want to do a wholesale custom lowering of ISD::UNDEF when the type is ppcf128, but it's not really clear that's a great idea, and probably more work than it's worth for a situation that only arises in the case of a programming error. At this point I think simple is best. The test case comes from PR16556, and is a crash-test only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185821 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
457571ed6977f78ca8d30b993fa7e86e2d7ad8d5 |
05-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add some special @got@tprel fixup cases When a target@got@tprel or target@got@tprel@l symbol variant is used in a fixup_ppc_half16 (*not* fixup_ppc_half16ds) context, we currently fail, since the corresponding R_PPC64_GOT_TPREL16 / R_PPC64_GOT_TPREL16_LO relocation types do not exist. However, since such symbol variants resolve to GOT offsets which are always 4-aligned, we can simply instead use the _DS variants of the relocation types, which *do* exist. The same applies for the @got@dtprel variants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185700 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
23a72c8f7e46618ff8dbdbba4e8c1a2c4e44e3df |
05-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support @tls in the asm parser This adds support for the last missing construct to parse TLS-related assembler code: add 3, 4, symbol@tls The ADD8TLS currently hard-codes the @tls into the assembler string. This cannot be handled by the asm parser, since @tls is parsed as a symbol variant. This patch changes ADD8TLS to have the @tls suffix printed as symbol variant on output too, which allows us to remove the isCodeGenOnly marker from ADD8TLS. This in turn means that we can add a AsmOperand to accept @tls marked symbols on input. As a side effect, this means that the fixup_ppc_tlsreg fixup type is no longer necessary and can be merged into fixup_ppc_nofixup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185692 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
PC.h
PCISelLowering.cpp
PCInstr64Bit.td
PCMCInstLower.cpp
|
972befb3f281f0f9ce08d7cf27b4e879327676b0 |
04-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Implement writeNopData This implements a proper PPCAsmBackend::writeNopData routine that actually writes PowerPC nop instructions. This fixes the last remaining difference in object file output (text section) between the integrated assembler and GNU as that I've seen anywhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185662 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
3c99602ca87f604080e367838180c3d63f6931f3 |
04-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add all trap mnemonics This adds support for all basic and extended variants of the trap instructions to the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185638 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
5606fcae50951e9d9aef7def18531b5fd017971b |
04-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add asm parser support for CR expressions This adds support for specifying condition registers and condition register fields via expressions using the symbols defined by the PowerISA, like "4*cr2+eq". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185633 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstrInfo.td
|
f349a6e9e6ee0b589c403e0c5785266da121d05c |
04-Jul-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes. These exception-related opcodes are not used any longer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185625 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6227d5c690504c7ada5780c00a635b282c46e275 |
04-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185606 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
c93822901aef17aaf8bb1303f27b47025fd1d582 |
04-Jul-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert r185595-185596 which broke buildbots. Revert "Simplify landing pad lowering." Revert "Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes." git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185600 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
62204220e1dc2dc21256adf765728ae257b33eac |
04-Jul-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes. These exception-related opcodes are not used any longer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185596 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1666c6a8c38a2bb2535fe667023b3f0537e03eb1 |
03-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] FreeBSD does not require f128 in its data layout string. Long double is 64 bits on FreeBSD PPC, so the f128 entry is superfluous. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185583 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
51f558c9aed3bf74c2e8f3ff3bf365c94637ecdf |
03-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support lmw/stmw in the asm parser This adds support for the load/store multiple instructions, currently used by the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185564 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
33efedc0481c4b0d9866ff526eb1161372b5919f |
03-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Use mtocrf when available Just as with mfocrf, it is also preferable to use mtocrf instead of mtcrf when only a single CR register is to be written. Current code however always emits mtcrf. This probably does not matter when using an external assembler, since the GNU assembler will in fact automatically replace mtcrf with mtocrf when possible. It does create inefficient code with the integrated assembler, however. To fix this, this patch adds MTOCRF/MTOCRF8 instruction patterns and uses those instead of MTCRF/MTCRF8 everything. Just as done in the MFOCRF patch committed as 185556, these patterns will be converted back to MTCRF if MTOCRF is not available on the machine. As a side effect, this allows to modify the MTCRF pattern to accept the full range of mask operands for the benefit of the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185561 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCFrameLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
|
965b20e39c7fd73846e9b6ed55ba90e032ae3b1b |
03-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Always use mfocrf if available When accessing just a single CR register, it is always preferable to use mfocrf instead of mfcr, if the former is available on the CPU. Current code makes that distinction in many, but not all places where a single CR register value is retrieved. One missing location is PPCRegisterInfo::lowerCRSpilling. To fix this and make this simpler in the future, this patch changes the bulk of the back-end to always assume mfocrf is available and simply generate it when needed. On machines that actually do not support mfocrf, the instruction is replaced by mfcr at the very end, in EmitInstruction. This has the additional benefit that we no longer need the MFCRpseud hack, since before EmitInstruction we always have a MFOCRF instruction pattern, which already models data flow as required. The patch also adds the MFOCRF8 version of the instruction, which was missing so far. Except for the PPCRegisterInfo::lowerCRSpilling case, no change in generated code intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185556 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
|
f6b67dc7f8ed87443dc03856e789f42ba72ecaa8 |
03-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Remove dead code from PPCDAGToDAGISel::SelectSETCC The subroutine getCRIdxForSetCC has a parameter "Other" and comment: If this returns with Other != -1, then the returned comparison is an or of two simpler comparisons. However for at least the last five years this routine has never returned a value of Other != -1; these cases are now handled differently to begin with. This patch removes the parameter and the code in SelectSETCC that attempted to handle the Other != -1 case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185541 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
bf8eb3d55cc0fe37d0ef140c2492214083a48dcb |
03-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Make specialized AltiVec patterns isCodeGenOnly A couple of AltiVec patterns are just specialized forms of the generic instruction pattern, and should therefore be marked isCodeGenOnly to avoid confusing the asm parser: VCFSX_0, VCTUXS_0, VCFUX_0, VCTSXS_0, and V_SETALLONES. Noticed by inspection of the generated PPCGenAsmMatcher.inc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185533 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
44175d9715268bfb7c2cb10ebf14474f4a411464 |
03-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support mtspr/mfspr in the asm parser This adds support for the generic forms of mtspr/mfspr for the asm parser. The compiler will continue to use the specialized patters for mtlr etc. since those are needed to correctly describe data flow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185532 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
25b9bbae69befa03cc48d4be73b741eff8e523bc |
02-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] PR16512 - Support TLS call sequences in the asm parser This patch now adds support for recognizing TLS call sequences in the asm parser. This needs a new pattern BL8_TLS, which is like BL8_NOP_TLS except without nop. That pattern is used for the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185478 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstr64Bit.td
|
a17a7e1868076a4430cfa16694bcb42884130928 |
02-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Rework TLS call operand processing As part of the global-dynamic and local-dynamic TLS sequences, we need to use a special form of the call instruction: bl __tls_get_addr(sym@tlsld) bl __tls_get_addr(sym@tlsgd) which generates two fixups. The current implementation of this causes problems with recognizing this form in the asm parser. To fix this, this patch reworks operand processing for this special form by using a single operand to hold both __tls_get_addr and sym@tlsld and defining a print method to output the above form, and an encoding method to generate the two fixups. As a side simplification, the patch replaces the two instruction patterns BL8_NOP_TLSGD and BL8_NOP_TLSLD by a single BL8_NOP_TLS, since the patterns already operate in an identical fashion (whether we have a local-dynamic or global-dynamic symbol is already encoded in the symbol modifier). No change in code generation intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185477 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCInstr64Bit.td
|
58fc1f52ce070003acbdfedc85d52ba999a2bd11 |
02-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Remove VK_PPC_TLSGD and VK_PPC_TLSLD The PowerPC-specific modifiers VK_PPC_TLSGD and VK_PPC_TLSLD correspond exactly to the generic modifiers VK_TLSGD and VK_TLSLD. This causes some confusion with the asm parser, since VK_PPC_TLSGD is output as @tlsgd, which is then read back in as VK_TLSGD. To avoid this confusion, this patch removes the PowerPC-specific modifiers and uses the generic modifiers throughout. (The only drawback is that the generic modifiers are printed in upper case while the usual convention on PowerPC is to use lower-case modifiers. But this is just a cosmetic issue.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185476 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
PCAsmPrinter.cpp
|
b843060ecfa29efb5f896350f6530fa81184e420 |
02-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support TLS variables in debug info This adds an implementation of getDebugThreadLocalSymbol for (64-bit) PowerPC. This needs to return a generic MCExpr since on ppc64, we need to add a bias of 0x8000 to the value returned by the R_PPC64_DTPREL64 relocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185461 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetObjectFile.cpp
PCTargetObjectFile.h
|
a3863ea2dacafc925a8272ebf9884fc64bef686c |
02-Jul-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove address spaces from MC. This is dead code since PIC16 was removed in 2010. The result was an odd mix, where some parts would carefully pass it along and others would assert it was zero (most of the object streamer for example). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185436 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
75dd57a8f0407be32551cf695e63a106dd051a27 |
02-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPC Altivec registers in CSR lists and improve VRSAVE handling There are a couple of (small) related changes here: 1. The printed name of the VRSAVE register has been changed from VRsave to vrsave in order to match the name accepted by GNU binutils. 2. Support for parsing vrsave has been added to the asm parser (it seems that there was no test case specifically covering this code, so I've added one). 3. The list of Altivec registers, which was common to all calling conventions, has been separated out. This allows us to define the base CSR lists, and then lists for each ABI with Altivec included. This allows SjLj, for example, to work correctly on non-Altivec targets without using unnatural definitions of the NoRegs CSR list. 4. VRSAVE is now always reserved on non-Darwin targets and all Altivec registers are reserved when Altivec is disabled. With these changes, it is now possible to compile a function containing __builtin_unwind_init() on Linux/PPC64 with debugging information. This did not work previously because GNU binutils assumes that all .cfi_offset offsets will be 8-byte aligned on PPC64 (and errors out if you provide a non-8-byte-aligned offset). This is not true for the vrsave register, however, because this register is used only on Darwin, GCC does not bother printing a .cfi_offset entry for it (even though there is a slot in the stack frame for it as specified by the ABI). This change allows us to do the same: we will also not print .cfi_offset directives for vrsave. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185409 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCCallingConv.td
PCRegisterInfo.cpp
PCRegisterInfo.td
|
228e0afcfd0d5f167a95c6ddbec2c6a4a90b6d2b |
02-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add support for TLS data relocations This adds support for TLS data relocations and modifiers: .quad target@dtpmod .quad target@tprel .quad target@dtprel Currently exploited by the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185394 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
1307d8300f6fe97059998480c42b44faefbc9b99 |
01-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support all condition register logical instructions This adds support for all missing condition register logical instructions and extended mnemonics to the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185387 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
c38c1d135cb9d617254c396c22949baca024dd35 |
01-Jul-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Index: test/CodeGen/PowerPC/reloc-align.ll =================================================================== --- test/CodeGen/PowerPC/reloc-align.ll (revision 0) +++ test/CodeGen/PowerPC/reloc-align.ll (revision 0) @@ -0,0 +1,34 @@ +; RUN: llc -mcpu=pwr7 -O1 < %s | FileCheck %s + +; This test verifies that the peephole optimization of address accesses +; does not produce a load or store with a relocation that can't be +; satisfied for a given instruction encoding. Reduced from a test supplied +; by Hal Finkel. + +target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64" +target triple = "powerpc64-unknown-linux-gnu" + +%struct.S1 = type { [8 x i8] } + +@main.l_1554 = internal global { i8, i8, i8, i8, i8, i8, i8, i8 } { i8 -1, i8 -6, i8 57, i8 62, i8 -48, i8 0, i8 58, i8 80 }, align 1 + +; Function Attrs: nounwind readonly +define signext i32 @main() #0 { +entry: + %call = tail call fastcc signext i32 @func_90(%struct.S1* byval bitcast ({ i8, i8, i8, i8, i8, i8, i8, i8 }* @main.l_1554 to %struct.S1*)) +; CHECK-NOT: ld {{[0-9]+}}, main.l_1554@toc@l + ret i32 %call +} + +; Function Attrs: nounwind readonly +define internal fastcc signext i32 @func_90(%struct.S1* byval nocapture %p_91) #0 { +entry: + %0 = bitcast %struct.S1* %p_91 to i64* + %bf.load = load i64* %0, align 1 + %bf.shl = shl i64 %bf.load, 26 + %bf.ashr = ashr i64 %bf.shl, 54 + %bf.cast = trunc i64 %bf.ashr to i32 + ret i32 %bf.cast +} + +attributes #0 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } Index: lib/Target/PowerPC/PPCAsmPrinter.cpp =================================================================== --- lib/Target/PowerPC/PPCAsmPrinter.cpp (revision 185327) +++ lib/Target/PowerPC/PPCAsmPrinter.cpp (working copy) @@ -679,7 +679,26 @@ void PPCAsmPrinter::EmitInstruction(const MachineI OutStreamer.EmitRawText(StringRef("\tmsync")); return; } + break; + case PPC::LD: + case PPC::STD: + case PPC::LWA: { + // Verify alignment is legal, so we don't create relocations + // that can't be supported. + // FIXME: This test is currently disabled for Darwin. The test + // suite shows a handful of test cases that fail this check for + // Darwin. Those need to be investigated before this sanity test + // can be enabled for those subtargets. + if (!Subtarget.isDarwin()) { + unsigned OpNum = (MI->getOpcode() == PPC::STD) ? 2 : 1; + const MachineOperand &MO = MI->getOperand(OpNum); + if (MO.isGlobal() && MO.getGlobal()->getAlignment() < 4) + llvm_unreachable("Global must be word-aligned for LD, STD, LWA!"); + } + // Now process the instruction normally. + break; } + } LowerPPCMachineInstrToMCInst(MI, TmpInst, *this); OutStreamer.EmitInstruction(TmpInst); Index: lib/Target/PowerPC/PPCISelDAGToDAG.cpp =================================================================== --- lib/Target/PowerPC/PPCISelDAGToDAG.cpp (revision 185327) +++ lib/Target/PowerPC/PPCISelDAGToDAG.cpp (working copy) @@ -1530,6 +1530,14 @@ void PPCDAGToDAGISel::PostprocessISelDAG() { if (GlobalAddressSDNode *GA = dyn_cast<GlobalAddressSDNode>(ImmOpnd)) { SDLoc dl(GA); const GlobalValue *GV = GA->getGlobal(); + // We can't perform this optimization for data whose alignment + // is insufficient for the instruction encoding. + if (GV->getAlignment() < 4 && + (StorageOpcode == PPC::LD || StorageOpcode == PPC::STD || + StorageOpcode == PPC::LWA)) { + DEBUG(dbgs() << "Rejected this candidate for alignment.\n\n"); + continue; + } ImmOpnd = CurDAG->getTargetGlobalAddress(GV, dl, MVT::i64, 0, Flags); } else if (ConstantPoolSDNode *CP = dyn_cast<ConstantPoolSDNode>(ImmOpnd)) { git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185380 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
|
3bd2b92267df204c5633329611cc7ae3e1c11834 |
01-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Also add "msync" alias This adds an alias for "msync" (which is used on Book E systems instead of "sync"). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185375 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
b5f7b0f9780cd1bc6f948b194adfc57176d41711 |
01-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
Don't form PPC CTR loops for over-sized exit counts Although you can't generate this from C on PPC64, if you have a loop using a 64-bit counter on PPC32 then you can't form a CTR-based loop for it. This had been cauing the PPCCTRLoops pass to assert. Thanks to Joerg Sonnenberger for providing a test case! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185361 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
222e781d92541017c3a9c5dd40cb52e334cdb86f |
01-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Fix @got references to local symbols A @got reference must always result in a relocation, so that the linker has a chance to set up the GOT entry, even if the symbol happens to be local. Add a PPCELFObjectWriter::ExplicitRelSym routine that enforces a relocation to be emitted for GOT references. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185353 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
62c1baf8b58a40d37f56a5431214e6514e42970f |
01-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add "wait" instruction This adds the "wait" instruction and its extended mnemonics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185350 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
c0a6b981de8efd2c68125edb94bf9ffb933df727 |
01-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support "eieio" instruction This adds support for the "eieio" instruction to the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185349 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
af679a22923d2b61e3bfb6721bd562b99546bfad |
01-Jul-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add variants of "sync" instruction This adds support for the "sync $L" instruction with operand, and provides aliases for "lwsync" and "ptesync". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185344 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
6a636a813f33b46b3271ec8517ee1936a0c92c9f |
29-Jun-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Ignore spill/restore requests for VRSAVE (except on Darwin) This fixes PR16418, which reports that a function calling __builtin_unwind_init() asserts. The cause is that this generates a spill/restore for VRSAVE, and we support that only on Darwin (because VRSAVE is only really used on Darwin). The test case checks only that we don't crash. We can add correctness checks once someone verifies what behavior the function is supposed to have. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185235 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
2c77a625b79908f6e1238890caae630d28c48bee |
28-Jun-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix a PPC rlwimi instruction-selection bug Under certain (evidently rare) circumstances, this code used to convert OR(a, AND(x, y)) into OR(a, x). This was incorrect. While there, I've added a comment to the code immediately above. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185201 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
8950dd127ad4cccd9dadf616b5057cf130f24ade |
26-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Accept 17-bit signed immediates for addis The assembler currently strictly verifies that immediates for s16imm operands are in range (-32768 ... 32767). This matches the behaviour of the GNU assembler, with one exception: gas allows, as a special case, operands in an extended range (-65536 .. 65535) for the addis instruction only (and its extended mnemonic lis). The main reason for this seems to be to allow using unsigned 16-bit operands for lis, e.g. like lis %r1, 0xfedc. Since this has been supported by gas for a long time, and assembler source code seen "in the wild" actually exploits this feature, this patch adds equivalent support to LLVM for compatibility reasons. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184946 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
0b8594268feb1c804370541c7853e658caee0ae5 |
26-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support symbolic u16imm operands Currently, all instructions taking s16imm operands support symbolic operands. However, for u16imm operands, we only support actual immediate integers. This causes the assembler to reject code like ori %r5, %r5, symbol@l This patch changes the u16imm operand definition to likewise accept symbolic operands. In fact, s16imm and u16imm can share the same encoding routine, now renamed to getImm16Encoding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184944 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/PPCMCCodeEmitter.cpp
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
5de735a962a255676cf3a9bc255579d465670633 |
25-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support @got modifier Add VK_... values and relocation types necessary to support the @got family of modifiers. Used by the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184860 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
1bc147c0910bb02398730c79e0d0310ffbbd2868 |
25-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add extended rotate/shift mnemonics This adds all missing extended rotate/shift mnemonics to the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184834 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstrInfo.td
|
816c06f7fa73e8150e260a11d897be2f52d4f2b8 |
25-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add rldcr/rldic instructions This adds pattern for the rldcr and rldic instructions (the last instruction from the rotate/shift family that were missing). They are currently used only by the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184833 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
9c52f81e1787dc9666e510f5b7a0ea75b697cd0b |
25-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add extended subtract mnemonics This adds support for the extended subtract mnemonics to the asm parser: subi subis subic subic. sub sub. subc subc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184832 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstrInfo.td
|
746f7cafb2d1362de62024a6e62664c3eb3999d2 |
25-Jun-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCAsmParser.cpp: Quote "@l/@ha" in comments. [-Wdocumentation] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184809 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
96fb3a25cb0007f06d22d28c0b9c3503798324f6 |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support some miscellaneous mnemonics in the asm parser This adds support for the following extended mnemonics: xnop mr. not not. la git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184767 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstrInfo.td
|
cf1a3b16c00cef30207e6b83d046ad38752dfefb |
24-Jun-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
PPC: Remove default case from fully covered switch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184758 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
2e8bd8950345b0857130dd0f4068222a79c103f2 |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add predicted forms of branches This adds support for the predicted forms of branches (+/-). There are three cases to consider: - Branches using a PPC::Predicate code For these, I've added new PPC::Predicate codes corresponding to the BO values for predicted branch forms, and updated insn printing to print them correctly. I've also added new aliases for the asm parser matching the new forms. - bt/bf I've added new aliases matching to gBC etc. - bd(n)z variants I've added new instruction patterns for the predicted forms. In all cases, the new patterns are used for the asm parser only. (The new infrastructure ought to be sufficient to allow use by the compiler too at some point.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184754 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/PPCPredicates.cpp
CTargetDesc/PPCPredicates.h
PCInstr64Bit.td
PCInstrInfo.td
|
48473a8de50d6047432a3619e4781788ba004c93 |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add t/f branch mnemonics to asm parser This adds the bt/bf/bd(n)zt/bd(n)zf mnemonics as aliases for the asm parser, resolving to the generic conditional patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184725 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
e5a30f0ca22cc1ba97478e9fadcdef02d341004e |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support generic conditional branches in asm parser This adds instruction patterns to cover the generic forms of the conditional branch instructions. This allows the assembler to support the generic mnemonics. The compiler will still generate the various specific forms of the instruction that were already supported. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184722 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
9679c47a07386cbf3547a0927609c7ee080b2aab |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support absolute branches There is currently only limited support for the "absolute" variants of branch instructions. This patch adds support for the absolute variants of all branches that are currently otherwise supported. This requires adding new fixup types so that the correct variant of relocation type can be selected by the object writer. While the compiler will continue to usually choose the relative branch variants, this will allow the asm parser to fully support the absolute branches, with either immediate (numerical) or symbolic target addresses. No change in code generation intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184721 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
9068d5310cfafdd201f77b0434dc7eebb7f51a45 |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support bd(n)zl and bd(n)zlrl This adds support for the bd(n)zl and bd(n)zlrl instructions. The patterns are currently used for the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184720 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
813942a0cf8e0605002c5fa364372a8a61634cc4 |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support b(cond)l in the asm parser This patch adds support for the conditional variants of bl. The pattern is currently used by the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184719 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7e66f5c1b4a166d823e0452d1a1bc0f822d04201 |
24-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support blrl and variants in the asm parser This patch adds support for blrl and its conditional variants. The patterns are (currently) used for the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184718 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
5b3fca50a08865f0db55fc92ad1c037a04e12177 |
22-Jun-2013 |
Chad Rosier <mcrosier@apple.com> |
The getRegForInlineAsmConstraint function should only accept MVT value types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184642 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
84569698f01bcb49afe5b6140bf0d61cf4f3cf5a |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support R_PPC_REL16 family of relocations The GNU assembler supports (as extension to the ABI) use of PC-relative relocations in half16 fields, which allows writing code like: li 1, base-. This patch adds support for those relocation types in the assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184552 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
cab0a1933875935c717136d251e2af9749533ba8 |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support various tls-related modifiers The current code base only supports the minimum set of tls-related relocations and @modifiers that are necessary to support compiler- generated code. This patch extends this to the full set defined in the ABI (and supported by the GNU assembler) for the benefit of the assembler parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184551 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
f7c1ee79fe90353fcd3f545f9d45a01a837bbf4b |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support @higher et.al. modifiers This adds support for the @higher, @highera, @highest, and @highesta modifers, including some missing relocation types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184550 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
|
f8f87dcfceadd1b842d130303a7091ad7d7d67d0 |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support @toc@h modifier This adds the relocation type and other necessary infrastructure to use the @toc@h modifier in the assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184549 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
d2849572463da994c685b3bd7a60d5a7566c01e3 |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support @h modifier This adds necessary infrastructure to support the @h modifier. Note that all required relocation types were already present (and unused). This patch provides support for using @h in the assembler; it would also be possible to now use this feature in code generated by the compiler, but this is not done yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184548 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
|
92cfa61c50d01307d658753f8d47f4e8555a6fa9 |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Rename some more VK_PPC_ enums This renames more VK_PPC_ enums, to make them more closely reflect the @modifier string they represent. This also prepares for adding a bunch of new VK_PPC_ enums in upcoming patches. For consistency, some MO_ flags related to VK_PPC_ enums are likewise renamed. No change in behaviour. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184547 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
PC.h
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCMCInstLower.cpp
|
846565924a6f2932efc75c249b29c3619e587bbb |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Clean up VK_PPC_TOC... names This is another minor cleanup; to bring enum names in line with the corresponding @modifier names, this renames: VK_PPC_TOC -> VK_PPC_TOCBASE VK_PPC_TOC_ENTRY -> VK_PPC_TOC16 No code change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184491 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
PCAsmPrinter.cpp
|
769accfb4d71caff9152309eaa5e704e065b5846 |
21-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Minor cleanup in PPCELFObjectWriter::getRelocTypeInner This just re-sorts the big switch statement in PPCELFObjectWriter::getRelocTypeInner to follow the (numerical) order of the reloc types, and fixes a couple of whitespace issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184485 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
ea18f0cc4d3595ed55b53faf08ead1fc3d5abfa3 |
20-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Remove unused parameter The isDarwin parameter to the llvm::LowerPPCMachineInstrToMCInst routine is now no longer needed; remove it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184441 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCMCInstLower.cpp
|
06eb45c358c0872c8f9a82f601d89d0a7329d38d |
20-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add missing build dependency This (hopefully) fixes build failures resulting from r184436; the PowerPC asm parser now depends on PowerPC target expresssions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184439 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/LLVMBuild.txt
|
027e94479c9e69eb3c3c5536fa9990d0b96e9510 |
20-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Optimize @ha/@l constructs This patch adds support for having the assembler optimize fixups to constructs like "symbol@ha" or "symbol@l" if "symbol" can be resolved at assembler time. This optimization is already present in the PPCMCExpr.cpp code for handling PPC_HA16/PPC_LO16 target expressions. However, those target expression were used only on Darwin targets. This patch changes target expression code so that they are usable also with the GNU assembler (using the @ha / @l syntax instead of the ha16() / lo16() syntax), and changes the MCInst lowering code to generate those target expressions where appropriate. It also changes the asm parser to generate HA16/LO16 target expressions when parsing assembler source that uses the @ha / @l modifiers. The effect is that now the above- mentioned optimization automatically becomes available for those situations too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184436 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
PCMCInstLower.cpp
|
0db5379fe643cbe738b4831e337251819cc5dc5d |
20-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support compare mnemonics with implied CR0 Just like for branch mnemonics (where support was recently added), the assembler is supposed to support extended mnemonics for the compare instructions where no condition register is specified explicitly (and CR0 is assumed implicitly). This patch adds support for those extended compare mnemonics. Index: llvm-head/test/MC/PowerPC/ppc64-encoding-ext.s =================================================================== --- llvm-head.orig/test/MC/PowerPC/ppc64-encoding-ext.s +++ llvm-head/test/MC/PowerPC/ppc64-encoding-ext.s @@ -449,21 +449,37 @@ # CHECK: cmpdi 2, 3, 128 # encoding: [0x2d,0x23,0x00,0x80] cmpdi 2, 3, 128 +# CHECK: cmpdi 0, 3, 128 # encoding: [0x2c,0x23,0x00,0x80] + cmpdi 3, 128 # CHECK: cmpd 2, 3, 4 # encoding: [0x7d,0x23,0x20,0x00] cmpd 2, 3, 4 +# CHECK: cmpd 0, 3, 4 # encoding: [0x7c,0x23,0x20,0x00] + cmpd 3, 4 # CHECK: cmpldi 2, 3, 128 # encoding: [0x29,0x23,0x00,0x80] cmpldi 2, 3, 128 +# CHECK: cmpldi 0, 3, 128 # encoding: [0x28,0x23,0x00,0x80] + cmpldi 3, 128 # CHECK: cmpld 2, 3, 4 # encoding: [0x7d,0x23,0x20,0x40] cmpld 2, 3, 4 +# CHECK: cmpld 0, 3, 4 # encoding: [0x7c,0x23,0x20,0x40] + cmpld 3, 4 # CHECK: cmpwi 2, 3, 128 # encoding: [0x2d,0x03,0x00,0x80] cmpwi 2, 3, 128 +# CHECK: cmpwi 0, 3, 128 # encoding: [0x2c,0x03,0x00,0x80] + cmpwi 3, 128 # CHECK: cmpw 2, 3, 4 # encoding: [0x7d,0x03,0x20,0x00] cmpw 2, 3, 4 +# CHECK: cmpw 0, 3, 4 # encoding: [0x7c,0x03,0x20,0x00] + cmpw 3, 4 # CHECK: cmplwi 2, 3, 128 # encoding: [0x29,0x03,0x00,0x80] cmplwi 2, 3, 128 +# CHECK: cmplwi 0, 3, 128 # encoding: [0x28,0x03,0x00,0x80] + cmplwi 3, 128 # CHECK: cmplw 2, 3, 4 # encoding: [0x7d,0x03,0x20,0x40] cmplw 2, 3, 4 +# CHECK: cmplw 0, 3, 4 # encoding: [0x7c,0x03,0x20,0x40] + cmplw 3, 4 # FIXME: Trap mnemonics Index: llvm-head/lib/Target/PowerPC/PPCInstrInfo.td =================================================================== --- llvm-head.orig/lib/Target/PowerPC/PPCInstrInfo.td +++ llvm-head/lib/Target/PowerPC/PPCInstrInfo.td @@ -2201,3 +2201,12 @@ defm : BranchExtendedMnemonic<"ne", 68>; defm : BranchExtendedMnemonic<"nu", 100>; defm : BranchExtendedMnemonic<"ns", 100>; +def : InstAlias<"cmpwi $rA, $imm", (CMPWI CR0, gprc:$rA, s16imm:$imm)>; +def : InstAlias<"cmpw $rA, $rB", (CMPW CR0, gprc:$rA, gprc:$rB)>; +def : InstAlias<"cmplwi $rA, $imm", (CMPLWI CR0, gprc:$rA, u16imm:$imm)>; +def : InstAlias<"cmplw $rA, $rB", (CMPLW CR0, gprc:$rA, gprc:$rB)>; +def : InstAlias<"cmpdi $rA, $imm", (CMPDI CR0, g8rc:$rA, s16imm:$imm)>; +def : InstAlias<"cmpd $rA, $rB", (CMPD CR0, g8rc:$rA, g8rc:$rB)>; +def : InstAlias<"cmpldi $rA, $imm", (CMPLDI CR0, g8rc:$rA, u16imm:$imm)>; +def : InstAlias<"cmpld $rA, $rB", (CMPLD CR0, g8rc:$rA, g8rc:$rB)>; + git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184435 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
ea44281d5da5096de50ce1cb358ff0c6f20e1a2a |
19-Jun-2013 |
Bill Wendling <isanbard@gmail.com> |
Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184349 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
99cb622041a0839c7dfcf0263c5102a305a0fdb5 |
18-Jun-2013 |
Bill Wendling <isanbard@gmail.com> |
Use pointers to the MCAsmInfo and MCRegInfo. Someone may want to do something crazy, like replace these objects if they change or something. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184175 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
PCFrameLowering.cpp
|
0187e7a9ba5c50b4559e0c2e0afceb6d5cd32190 |
16-Jun-2013 |
David Blaikie <dblaikie@gmail.com> |
DebugInfo: remove target-specific Frame Index handling for DBG_VALUE MachineInstrs Frame index handling is now target-agnostic, so delete the target hooks for creation & asm printing of target-specific addressing in DBG_VALUEs and any related functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184067 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
|
7e17024400941889b6fe1b178e5374f75c34d9ab |
12-Jun-2013 |
David Blaikie <dblaikie@gmail.com> |
Revert r183854 (PPC: Fix switch warnings from r183841) Now that the PRED_BAD has been removed, this is failing the Clang -Werror build due to -Wcovered-switch-default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183863 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/PPCPredicates.cpp
|
628953385396cfa4f59b6ccb56ee3b10d6b5f865 |
12-Jun-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Remove PRED_BAD from PPC::Predicate enumeration. I'm taking David Blaikie's suggestion to use an Optional<PPC::Predicate> return value instead. That's the right solution for this problem. Thanks for pointing out that possibility! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183858 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCPredicates.h
|
dab366bf25ef00a37e5d9306c6dcbbb7c1d3e19a |
12-Jun-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Fix switch warnings from r183841. Introducing PRED_BAD caused some unexpected warnings that are now suppressed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183854 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/PPCPredicates.cpp
|
d3f7766f2363862b9c8586d2f78bc413223240d3 |
12-Jun-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
[PowerPC] Expose some calling convention functions in PPCISelLowering.h. This is a preparatory patch for fast-isel support. The instruction selector will need to access some functions in PPCGenCallingConv.inc, which in turn requires several helper functions to be defined. These are currently defined near the only use of PCCGenCallingConv.inc, inside PPCISelLowering.cpp. This patch moves the declaration of the functions into the associated header file to provide the needed visibility. No functional change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183844 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
f69ead465110efd53cc838191080bc0f2d71c345 |
12-Jun-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Add artificial PRED_BAD to PPC::Predicate enumeration. Allows returning a PPC::Predicate from a function with a no-predicate value possible. Preparatory patch for fast-isel on PPC64 ELF. No behavioral change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183841 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCPredicates.h
|
c1f4a4b2640dfc871bacacef53a95f1c96a9fe48 |
12-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[MC/DWARF] Support .debug_frame / .debug_line code alignment factors I've been comparing the object file output of LLVM's integrated assembler against the external assembler on PowerPC, and one area where differences still remain are in DWARF sections. In particular, the GNU assembler generates .debug_frame and .debug_line sections using a code alignment factor of 4, since all PowerPC instructions have size 4 and must be aligned to a multiple of 4. However, current MC code hard-codes a code alignment factor of 1. This patch changes this by adding a "minimum instruction alignment" data element to MCAsmInfo and using this as code alignment factor. This requires passing a MCContext into MCDwarfLineAddr::Encode and MCDwarfLineAddr::EncodeAdvanceLoc. Note that one caller, MCDwarfLineAddr::Write, didn't actually have that information available. However, it turns out that this routine is in fact never used in the whole code base, so the patch simply removes it. If it turns out to be needed again at a later time, it could be re-added with an updated interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183834 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
278916500a2d7c735e3ed6b0f57cd757815b9867 |
10-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support extended sc mnemonic A plain "sc" without argument is supposed to be treated like "sc 0" by the assembler. This patch adds a corresponding alias. Problem reported by Joerg Sonnenberger. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183687 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7c6f90d486911076da01ec0f37af4760fdd7041f |
10-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support branch mnemonics with implied CR0 The extended branch mnemonics are supposed to use an implied CR0 if there is no explicit condition register specified. This patch adds extra variants of the mnemonics to this effect. Problem reported by Joerg Sonnenberger. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183686 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
b838f9fe619382b212f6055ad94a74ff36db9219 |
10-Jun-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Use multiclass to generate extended branch mnemonics This patch removes some redundancy by generating the extended branch mnemonics via a multiclass. No change in behaviour expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183685 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
40be73bed71a69853720a7f0609cb1f2f77dc3bd |
08-Jun-2013 |
Hal Finkel <hfinkel@anl.gov> |
Disallow i64 div/rem in PPC32 counter loops On PPC32, [su]div,rem on i64 types are transformed into runtime library function calls. As a result, they are not allowed in counter-based loops (the counter-loops verification pass caught this error; this change fixes PR16169). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183581 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
041399aad5a3d93c2dc9d2b70cb9b87d4a987ece |
07-Jun-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
Fold variable that's only used in assert into the assert. Avoids unused variable warnings in Release builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183512 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
80ada583f3b40ffb201e54cd57c42f9518039c9e |
07-Jun-2013 |
Bill Wendling <isanbard@gmail.com> |
Don't cache the instruction and register info from the TargetMachine, because the internals of TargetMachine could change. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183494 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
23ed37a6b76e79272194fb46597f7280661b828f |
01-Jun-2013 |
Ahmed Bougacha <ahmed.bougacha@gmail.com> |
Make SubRegIndex size mandatory, following r183020. This also makes TableGen able to compute sizes/offsets of synthesized indices representing tuples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183061 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
6e0b2a0cb0d398f175a5294bf0ad5488c714e8c2 |
30-May-2013 |
Andrew Trick <atrick@apple.com> |
Order CALLSEQ_START and CALLSEQ_END nodes. Fixes PR16146: gdb.base__call-ar-st.exp fails after pre-RA-sched=source fixes. Patch by Xiaoyi Guo! This also fixes an unsupported dbg.value test case. Codegen was previously incorrect but the test was passing by luck. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182885 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
119da2eb20fffce88fa659d761ef5cea43f09ab6 |
27-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Add a isConsecutiveLS utility function isConsecutiveLS is a slightly more general form of SelectionDAG::isConsecutiveLoad. Aside from also handling stores, it also does not assume equality of the chain operands is necessary. In the case of the PPC backend, this chain condition is checked in a more general way by the surrounding code. Mostly, this part of the refactoring in preparation for supporting optimized unaligned stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182723 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1907cad7c822f07894a1189886fa7577f109045a |
26-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Prefer to duplicate PPC Altivec loads when expanding unaligned loads When expanding unaligned Altivec loads, we use the decremented offset trick to prevent page faults. Unfortunately, if we have a sequence of consecutive unaligned loads, this leads to suboptimal code generation because the 'extra' load from the first unaligned load can be combined with the base load from the second (but only if the decremented offset trick is not used for the first). Search up and down the chain, through loads and token factors, looking for consecutive loads, and if one is found, don't use the offset reduction trick. These duplicate loads are later combined to yield the desired sequence (in the future, we might want a more-powerful chain search, but that will require some changes to allow the combiner routines to access the AA object). This should complete the initial implementation of the optimized unaligned Altivec load expansion. There is some refactoring that should be done, but that will happen when the unaligned store expansion is added. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182719 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5a0e60425f4f942afb7e901b401a130da48a4d21 |
25-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Combine duplicate (offset) lvsl Altivec intrinsics The lvsl permutation control instruction is a function only of the alignment of the pointer operand (relative to the 16-byte natural alignment of Altivec vectors). As a result, multiple lvsl intrinsics where the operands differ by a multiple of 16 can be combined. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182708 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ac6d9bec671252dd1e596fa71180ff6b39d06b5d |
25-May-2013 |
Andrew Trick <atrick@apple.com> |
Track IR ordering of SelectionDAG nodes 2/4. Change SelectionDAG::getXXXNode() interfaces as well as call sites of these functions to pass in SDLoc instead of DebugLoc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182703 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
80d10ded8cd4f34b87d82b03d6f63328ea337b26 |
25-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Initial support for permutation-based unaligned Altivec loads Altivec only directly supports aligned loads, but the loads have a strange property: If given an unaligned address, they truncate the address to the next lower aligned address, and load from there. This property, along with an extra load and some special-purpose permutation-control instructions that generate the appropriate permutations from the original unaligned address, allow efficient lowering of aligned loads. This code uses the trick explained in the Apple Velocity Engine optimization overview document to prevent the needed extra load from possibly causing a page fault if the original address happens to be aligned. As noted in the FIXMEs, there are several additional optimizations that can be performed to reduce the cost of these loads even more. These will be implemented in future commits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182691 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c6af2432c802d241c8fffbe0371c023e6c58844e |
25-May-2013 |
Michael J. Spencer <bigcheesegs@gmail.com> |
Replace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182680 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCISelDAGToDAG.cpp
|
586f6d009a37d4d38be0badaaa60d7cdb647b442 |
24-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Remove symbolLo/symbolHi instruction operand types Now that there is no longer any distinction between symbolLo and symbolHi operands in either printing, encoding, or parsing, the operand types can be removed in favor of simply using s16imm. This completes the patch series to decouple lo/hi operand part processing from the particular instruction whose operand it is. No change in code generation expected from this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182618 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
edaa58ee66699b99841ee5dfdd485aedbae3bf90 |
24-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Clean up generation of ha16() / lo16() markers When targeting the Darwin assembler, we need to generate markers ha16() and lo16() to designate the high and low parts of a (symbolic) immediate. This is necessary not just for plain symbols, but also for certain symbolic expression, typically along the lines of ha16(A - B). The latter doesn't work when simply using VariantKind flags on the symbol reference. This is why the current back-end uses hacks (explicitly called out as such via multiple FIXMEs) in the symbolLo/symbolHi print methods. This patch uses target-defined MCExpr codes to represent the Darwin ha16/lo16 constructs, following along the lines of the equivalent solution used by the ARM back end to handle their :upper16: / :lower16: markers. This allows us to get rid of special handling both in the symbolLo/symbolHi print method and in the common code MCExpr::print routine. Instead, the ha16 / lo16 markers are printed simply in a custom print routine for the target MCExpr types. (As a result, the symbolLo/symbolHi print methods can now replaced by a single printS16ImmOperand routine that also handles symbolic operands.) The patch also provides a EvaluateAsRelocatableImpl routine to handle ha16/lo16 constructs. This is not actually used at the moment by any in-tree code, but is provided as it makes merging into David Fang's out-of-tree Mach-O object writer simpler. Since there is no longer any need to treat VK_PPC_GAS_HA16 and VK_PPC_DARWIN_HA16 differently, they are merged into a single VK_PPC_ADDR16_HA (and likewise for the _LO16 types). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182616 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
CTargetDesc/CMakeLists.txt
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCExpr.cpp
CTargetDesc/PPCMCExpr.h
PCAsmPrinter.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCMCInstLower.cpp
|
5cd01f74b11dc3e1c08c3ddea067af8203079b87 |
22-May-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Change some PowerPC PatLeaf definitions to ImmLeaf for fast-isel. Using PatLeaf rather than ImmLeaf when defining immediate predicates prevents simple patterns using those predicates from being recognized for fast instruction selection. This patch replaces the immSExt16 PatLeaf predicate with two ImmLeaf predicates, imm32SExt16 and imm64SExt16, allowing a few more patterns to be recognized (ADDI, ADDIC, MULLI, ADDI8, and ADDIC8). Using the new predicates does not help for LI, LI8, SUBFIC, and SUBFIC8 because these are rejected for other reasons, but I see no reason to retain the PatLeaf predicate. No functional change intended, and thus no test cases yet. This is preliminary work for enabling fast-isel support for PowerPC. When that support is ready, we'll be able to test this function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182510 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
75e9ee8b7fc2b7c91239f4b9b8d77087fd8ea4e4 |
21-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix PPC branch selection for counter-based branches Although I had added some support for the BDZ/BDNZ branches into the selector (in r158204), I had not correctly adjusted the condition at the top of the loop. As a result, these branches were still essentially unsupported. This fixes PR16086. Unfortunately, any test case would be very large (because it would need to force the loop backedge to exceed the range of the 16-bit immediate). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182385 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
4e6b24ffcfafbc0c5eda1bb89163ccd56f394fdf |
20-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Rename LoopSimplify.h to LoopUtils.h As discussed, LoopUtils.h is a better name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182314 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
08f92c98ac1cdb43ec35653536c89964401d936c |
20-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove copied preheader insertion logic from PPCCTRLoops Now that the preheader insertion logic in LoopSimplify is externally exposed, use it, and remove the copy-and-pasted version. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182300 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
85c08b059ce4248ee739e756cf717a9b429e2ec2 |
20-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Rename PPC MTCTRse to MTCTRloop As the pairing of this instruction form with the bdnz/bdz branches is now enforced by the verification pass, make it clear from the name that these are used only for counter-based loops. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182296 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
e50c8c1f81a38f0ecebafa5dc60a163814a9713a |
20-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add a PPCCTRLoops verification pass When asserts are enabled, this adds a verification pass for PPC counter-loop formation. Unfortunately, without sacrificing code quality, there is no better way of forming counter-based loops except at the (late) IR level. This means that we need to recognize, at the IR level, anything which might turn into a function call (or indirect branch). Because this is currently a finite set of things, and because SelectionDAG lowering is basic-block local, this can be done. Nevertheless, it is fragile, and failure results in a miscompile. This verification pass checks that all (reachable) counter-based branches are dominated by a loop mtctr instruction, and that no instructions in between clobber the counter register. If these conditions are not satisfied, then an ICE will be triggered. In short, this is to help us sleep better at night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182295 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCCTRLoops.cpp
PCTargetMachine.cpp
|
bf0bc3b2a2e11ff7e79b881ca82324fe17919a97 |
18-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Check InlineAsm clobbers in PPCCTRLoops We don't need to reject all inline asm as using the counter register (most does not). Only those that explicitly clobber the counter register need to prevent the transformation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182191 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
225ed7069caae9ece32d8bd3d15c6e41e21cc04b |
18-May-2013 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
Add LLVMContext argument to getSetCCResultType git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182180 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4456a8ec76bba1148f64bb2707e18b980eda291e |
17-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Fix hi/lo encoding in old-style code emitter This patch implements the equivalent change to r182091/r182092 in the old-style code emitter. Instead of having two separate 16-bit immediate encoding routines depending on the instruction, this patch introduces a single encoder that checks the machine operand flags to decide whether the low or high half of a symbol address is required. Since now both encoders make no further distinction between "symbolLo" and "symbolHi", the .td operand can now use a single getS16ImmEncoding method. Tested by running the old-style JIT tests on 32-bit Linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182097 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
e152eac63efa836cbb109d79e4307516fa16f1a6 |
17-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Merge/rename PPC fixup types Now that fixup_ppc_ha16 and fixup_ppc_lo16 are being treated exactly the same everywhere, it no longer makes sense to have two fixup types. This patch merges them both into a single type fixup_ppc_half16, and renames fixup_ppc_lo16_ds to fixup_ppc_half16ds for consistency. (The half16 and half16ds names are taken from the description of relocation types in the PowerPC ABI.) No change in code generation expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182092 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
|
c299ad32c8e59ceea05ede15e1c59ac787d17feb |
17-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Fix processing of ha16/lo16 fixups The current PowerPC MC back end distinguishes between fixup_ppc_ha16 and fixup_ppc_lo16, which are determined by the instruction the fixup applies to, and uses this distinction to decide whether a fixup ought to resolve to the high or the low part of a symbol address. This isn't quite correct, however. It is valid -if unusual- assembler to use, e.g. li 1, symbol@ha or lis 1, symbol@l Whether the high or the low part of the address is used depends solely on the @ suffix, not on the instruction. In addition, both li 1, symbol and lis 1, symbol are valid, assuming the symbol address fits into 16 bits; again, both will then refer to the actual symbol value (so li will load the value itself, while lis will load the value shifted by 16). To fix this, two places need to be adapted. If the fixup cannot be resolved at assembler time, a relocation needs to be emitted via PPCELFObjectWriter::getRelocType. This routine already looks at the VK_ type to determine the relocation. The only problem is that will reject any _LO modifier in a ha16 fixup and vice versa. This is simply incorrect; any of those modifiers ought to be accepted for either fixup type. If the fixup *can* be resolved at assembler time, adjustFixupValue currently selects the high bits of the symbol value if the fixup type is ha16. Again, this is incorrect; see the above example lis 1, symbol Now, in theory we'd have to respect a VK_ modifier here. However, in fact common code never even attempts to resolve symbol references using any nontrivial VK_ modifier at assembler time; it will always fall back to emitting a reloc and letting the linker handle it. If this ever changes, presumably there'd have to be a target callback to resolve VK_ modifiers. We'd then have to handle @ha etc. there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182091 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
|
6b67ffd68bb2e555b1b512a809f3c82c68f3debe |
16-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove addFrameMove. Now that we have good testing, remove addFrameMove and create cfi instructions directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182052 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
c482454e3cc2a33a2cf2d1cf0881c7c5e2641c80 |
16-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Create an new preheader in PPCCTRLoops to avoid counter register clobbers Some IR-level instructions (such as FP <-> i64 conversions) are not chained w.r.t. the mtctr intrinsic and yet may become function calls that clobber the counter register. At the selection-DAG level, these might be reordered with the mtctr intrinsic causing miscompiles. To avoid this situation, if an existing preheader has instructions that might use the counter register, create a new preheader for the mtctr intrinsic. This extra block will be remerged with the old preheader at the MI level, but will prevent unwanted reordering at the selection-DAG level. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182045 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
347a5079e18278803bc05b197d325b8580e95610 |
16-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Use true offset value in "memrix" machine operands This is the second part of the change to always return "true" offset values from getPreIndexedAddressParts, tackling the case of "memrix" type operands. This is about instructions like LD/STD that only have a 14-bit field to encode immediate offsets, which are implicitly extended by two zero bits by the machine, so that in effect we can access 16-bit offsets as long as they are a multiple of 4. The PowerPC back end currently handles such instructions by carrying the 14-bit value (as it will get encoded into the actual machine instructions) in the machine operand fields for such instructions. This means that those values are in fact not the true offset, but rather the offset divided by 4 (and then truncated to an unsigned 14-bit value). Like in the case fixed in r182012, this makes common code operations on such offset values not work as expected. Furthermore, there doesn't really appear to be any strong reason why we should encode machine operands this way. This patch therefore changes the encoding of "memrix" type machine operands to simply contain the "true" offset value as a signed immediate value, while enforcing the rules that it must fit in a 16-bit signed value and must also be a multiple of 4. This change must be made simultaneously in all places that access machine operands of this type. However, just about all those changes make the code simpler; in many cases we can now just share the same code for memri and memrix operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182032 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCMCCodeEmitter.cpp
PCCodeEmitter.cpp
PCFrameLowering.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
PCRegisterInfo.cpp
|
2a5e8c328eb0d957f00190c0c6189a4f1fef1117 |
16-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC32 cannot form counter loops around i64 FP conversions On PPC32, i64 FP conversions are implemented using runtime calls (which clobber the counter register). These must be excluded. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182023 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
f0ef882828bd9ba13cefce9869bde8be5e854956 |
16-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Report true displacement value from getPreIndexedAddressParts DAGCombiner::CombineToPreIndexedLoadStore calls a target routine to decompose a memory address into a base/offset pair. It expects the offset (if constant) to be the true displacement value in order to perform optional additional optimizations; in particular, to convert other uses of the original pointer into uses of the new base pointer after pre-increment. The PowerPC implementation of getPreIndexedAddressParts, however, simply calls SelectAddressRegImm, which returns a TargetConstant. This value is appropriate for encoding into the instruction, but it is not always usable as true displacement value: - Its type is always MVT::i32, even on 64-bit, where addresses ought to be i64 ... this causes the optimization to simply always fail on 64-bit due to this line in DAGCombiner: // FIXME: In some cases, we can be smarter about this. if (Op1.getValueType() != Offset.getValueType()) { - Its value is truncated to an unsigned 16-bit value if negative. This causes the above opimization to generate wrong code. This patch fixes both problems by simply returning the true displacement value (in its original type). This doesn't affect any other user of the displacement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182012 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ec7f4231cb7c26d5f52375617a9a73a1e79f3857 |
16-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Removed dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181975 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
f1e7ea43aa3b511ea9750c7a1f721d1c683e31b2 |
16-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
undef setjmp in PPCCTRLoops Trying to unbreak the VS build by copying some undef code from Utils/LowerInvoke.cpp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181938 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
b1fd3cd78f8acd21dbf514b75fef991827c343b6 |
15-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Implement PPC counter loops as a late IR-level pass The old PPCCTRLoops pass, like the Hexagon pass version from which it was derived, could only handle some simple loops in canonical form. We cannot directly adapt the new Hexagon hardware loops pass, however, because the Hexagon pass contains a fundamental assumption that non-constant-trip-count loops will contain a guard, and this is not always true (the result being that incorrect negative counts can be generated). With this commit, we replace the pass with a late IR-level pass which makes use of SE to calculate the backedge-taken counts and safely generate the loop-count expressions (including any necessary max() parts). This IR level pass inserts custom intrinsics that are lowered into the desired decrement-and-branch instructions. The most fragile part of this new implementation is that interfering uses of the counter register must be detected on the IR level (and, on PPC, this also includes any indirect branches in addition to function calls). Also, to make all of this work, we need a variant of the mtctr instruction that is marked as having side effects. Without this, machine-code level CSE, DCE, etc. illegally transform the resulting code. Hopefully, this can be improved in the future. This new pass is smaller than the original (and much smaller than the new Hexagon hardware loops pass), and can handle many additional cases correctly. In addition, the preheader-creation code has been copied from LoopSimplify, and after we decide on where it belongs, this code will be refactored so that it can be explicitly shared (making this implementation even smaller). The new test-case files ctrloop-{le,lt,ne}.ll have been adapted from tests for the new Hexagon pass. There are a few classes of loops that this pass does not transform (noted by FIXMEs in the files), but these deficiencies can be addressed within the SE infrastructure (thus helping many other passes as well). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181927 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCCTRLoops.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
PCTargetMachine.cpp
|
4ef61f2ad4ff509ee05c7051d359009511f81226 |
15-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Cleanup relocation sorting for ELF. We want the order to be deterministic on all platforms. NAKAMURA Takumi fixed that in r181864. This patch is just two small cleanups: * Move the function to the cpp file. It is only passed to array_pod_sort. * Remove the ppc implementation which is now redundant git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181910 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
9d86f9cc3ab4db75b388c2761bf3dd205f84a6d8 |
15-May-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCISelLowering.h: Escape \@ in comments. [-Wdocumentation] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181907 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
8108a80677a3ab5aff132aea5d340c0beb1ebef7 |
15-May-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
Whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181906 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
9122396a4dea52cf917062782fc2f39c7dc698bb |
15-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Remove need for adjustFixupOffst hack Now that applyFixup understands differently-sized fixups, we can define fixup_ppc_lo16/fixup_ppc_lo16_ds/fixup_ppc_ha16 to properly be 2-byte fixups, applied at an offset of 2 relative to the start of the instruction text. This has the benefit that if we actually need to generate a real relocation record, its address will come out correctly automatically, without having to fiddle with the offset in adjustFixupOffset. Tested on both 64-bit and 32-bit PowerPC, using external and integrated assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181894 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCCodeEmitter.cpp
|
b1cf8de85af10ff3d4ded6431be1cebd6133fd54 |
15-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Correctly handle fixups of other than 4 byte size The PPCAsmBackend::applyFixup routine handles the case where a fixup can be resolved within the same object file. However, this routine is currently hard-coded to assume the size of any fixup is always exactly 4 bytes. This is sort-of correct for fixups on instruction text; even though it only works because several of what really would be 2-byte fixups are presented as 4-byte fixups instead (requiring another hack in PPCELFObjectWriter::adjustFixupOffset to clean it up). However, this assumption breaks down completely for fixups on data, which legitimately can be of any size (1, 2, 4, or 8). This patch makes applyFixup aware of fixups of varying sizes, introducing a new helper routine getFixupKindNumBytes (along the lines of what the ARM back end does). Note that in order to handle fixups of size 8, we also need to fix the return type of adjustFixupValue to uint64_t to avoid truncation. Tested on both 64-bit and 32-bit PowerPC, using external and integrated assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181891 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
5bbdb190412a55436b808cfa59820b1e6cf08db0 |
14-May-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Implement the PowerPC system call (sc) instruction. Instruction added at request of Roman Divacky. Tested via asm-parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181821 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrFormats.td
PCInstrInfo.td
|
ded53bf4dd499f213334400fa870d0c7896d1d0d |
14-May-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
PPC32: Fix stack collision between FP and CR save areas. The changes to CR spill handling missed a case for 32-bit PowerPC. The code in PPCFrameLowering::processFunctionBeforeFrameFinalized() checks whether CR spill has occurred using a flag in the function info. This flag is only set by storeRegToStackSlot and loadRegFromStackSlot. spillCalleeSavedRegisters does not call storeRegToStackSlot, but instead produces MI directly. Thus we don't see the CR is spilled when assigning frame offsets, and the CR spill ends up colliding with some other location (generally the FP slot). This patch sets the flag in spillCalleeSavedRegisters for PPC32 so that the CR spill is properly detected and gets its own slot in the stack frame. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181800 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
59b078fc56e64b9b2d13521670648034cd870c0f |
13-May-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix goofy commentary in PPCTargetObjectFile.cpp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181725 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetObjectFile.cpp
|
240b9b6078cdf8048945107b4ff7d517729dab96 |
13-May-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
PPC64: Constant initializers with dynamic relocations go in .data.rel.ro. This fixes warning messages observed in the oggenc application test in projects/test-suite. Special handling is needed for the 64-bit PowerPC SVR4 ABI when a constant is initialized with a pointer to a function in a shared library. Because a function address is implemented as the address of a function descriptor, the use of copy relocations can lead to problems with initialization. GNU ld therefore replaces copy relocations with dynamic relocations to be resolved by the dynamic linker. This means the constant cannot reside in the read-only data section, but instead belongs in .data.rel.ro, which is designed for constants containing dynamic relocations. The implementation creates a class PPC64LinuxTargetObjectFile inheriting from TargetLoweringObjectFileELF, which behaves like its parent except to place constants of this sort into .data.rel.ro. The test case is reduced from the oggenc application. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181723 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
PCISelLowering.cpp
PCTargetObjectFile.cpp
PCTargetObjectFile.h
|
4a971705bc6030dc2e4338b3cd5cffa2e0f88b7b |
13-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove the MachineMove class. It was just a less powerful and more confusing version of MCCFIInstruction. A side effect is that, since MCCFIInstruction uses dwarf register numbers, calls to getDwarfRegNum are pushed out, which should allow further simplifications. I left the MachineModuleInfo::addFrameMove interface unchanged since this patch was already fairly big. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181680 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCTargetMachine.cpp
|
d84ccfaf50c7843f31ffc74a8a8e33f779453d6e |
11-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Change getFrameMoves to return a const reference. To add a frame now there is a dedicated addFrameMove which also takes care of constructing the move itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181657 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
6e53180db120b30f600ac31611a9dd47ef7f4921 |
10-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove unused argument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181618 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
fd94f0ab358ea12cf2b17c9628207b3fd11d40b4 |
08-May-2013 |
Roman Divacky <rdivacky@freebsd.org> |
Remove unused isLegalAddressImmediate() method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181452 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
a3967b6844f4be588c724ada3692e734bba65cf1 |
08-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Fix regression in generating @ha/@l relocs The patch I committed as revision 167864 introduced a regression that causes LLVM to no longer generate appropriate relocs for @ha/@l symbol references (but fail an assertion instead). This is fixed here by re-enabling support for the VK_PPC_GAS_HA16/ VK_PPC_GAS_LO16 variant kinds (and their Darwin variants) in PPCELFObjectWriter.cpp. Tested by running projects/test-suite in -m32 mode with the integrated assembler forced on. A standalone test case will be committed shortly as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181450 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
a7f2ce85e5bd8d2826537f50ac510ef9fbe83792 |
08-May-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix handling of anonymous aggregate parameters for powerpc*-apple-darwin8. This fixes bug 15821 similarly to the powerpc64-linux fix for bug 14779. Patch by David Fang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181449 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b45eb9fd275f857788cabb15ef8aabf0ff5907cc |
08-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPCInstrInfo::optimizeCompareInstr should not optimize FP compares The floating-point record forms on PPC don't set the condition register bits based on a comparison with zero (like the integer record forms do), but rather based on the exception status bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181423 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
8a88cadaedcfa3bb020df1d100d67cecaf638f35 |
07-May-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPCInstrInfo::optimizeCompareInstr Implement suggestions by Bill Schmidt in post-commit review. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181338 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
7d55b6bb1a4a5220ef973cf7b68ae508859a9b71 |
06-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Fix memory corruption in AsmParser As pointed out by Evgeniy Stepanov, assigning a std::string temporary to a StringRef is not a good idea. Rework MatchRegisterName to avoid using the .lower routine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181192 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
|
fcdfd5a7ffa2557753038fcbf421dd518e3fda98 |
03-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Avoid using '$' in generated assembler code PowerPC assemblers are supposed to support a stand-alone '$' symbol as an alternative of '.' to refer to the current PC. This does not work in the LLVM assembler parser yet. To avoid bootstrap failures when using the LLVM assembler as system assembler, this patch modifies the assembler source code generated by LLVM to avoid using '$' (and simply use '.' instead). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181054 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
8e4ba8f7b19615907e5874b3aa661d52c21fff74 |
03-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add some Book II instructions to AsmParser This patch adds a couple of Book II instructions (isync, icbi) to the PowerPC assembler parser. These are needed when bootstrapping clang with the integrated assembler forced on, because they are used in inline asm statements in the code base. The test case adds the full list of Book II storage control instructions, including associated extended mnemonics. Again, those that are not yet supported as marked as FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181052 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
16adfdb2e666f46e058b603a8a7aa75758819fd5 |
03-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Support extended mnemonics in AsmParser This patch adds infrastructure to support extended mnemonics in the PowerPC assembler parser. It adds support specifically for those extended mnemonics that LLVM will itself generate. The test case lists *all* extended mnemonics according to the PowerPC ISA v2.06 Book I, but marks those not yet supported as FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181051 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/PPCAsmParser.cpp
PCInstrInfo.td
|
5e220753ff81ac5cbee874e7c00c76c7fbe0d20a |
03-May-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[PowerPC] Add assembler parser This adds assembler parser support to the PowerPC back end. The parser will run for any powerpc-*-* and powerpc64-*-* triples, but was tested only on 64-bit Linux. The supported syntax is intended to be compatible with the GNU assembler. The parser does not yet support all PowerPC instructions, but it does support anything that is generated by LLVM itself. There is no support for testing restricted instruction sets yet, i.e. the parser will always accept any instructions it knows, no matter what feature flags are given. Instruction operands will be checked for validity and errors generated. (Error handling in general could still be improved.) The patch adds a number of test cases to verify instruction and operand encodings. The tests currently cover all instructions from the following PowerPC ISA v2.06 Book I facilities: Branch, Fixed-point, Floating-Point, and Vector. Note that a number of these instructions are not yet supported by the back end; they are marked with FIXME. A number of follow-on check-ins will add extra features. When they are all included, LLVM passes all tests (including bootstrap) when using clang -cc1as as the system assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181050 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
smParser/LLVMBuild.txt
smParser/Makefile
smParser/PPCAsmParser.cpp
MakeLists.txt
LVMBuild.txt
akefile
PC.td
PCInstr64Bit.td
PCInstrInfo.td
|
5b0ce3570c03919f71cab6ef8ed2312d2b707ca2 |
27-Apr-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Make all darwin ppc stubs local. This fixes pr15763. Patch by David Fang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180657 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCInstLower.cpp
|
a3acc2b6cf093571812e7e55d936cf188c695e23 |
26-Apr-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Use RegisterOperand instead of RegisterClass operands In the default PowerPC assembler syntax, registers are specified simply by number, so they cannot be distinguished from immediate values (without looking at the opcode). This means that the default operand matching logic for the asm parser does not work, and we need to specify custom matchers. Since those can only be specified with RegisterOperand classes and not directly on the RegisterClass, all instructions patterns used by the asm parser need to use a RegisterOperand (instead of a RegisterClass) for all their register operands. This patch adds one RegisterOperand for each RegisterClass, using the same name as the class, just in lower case, and updates all instruction patterns to use RegisterOperand instead of RegisterClass operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180611 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
|
069a4a958323e9912a3c0ce4e5dffd0eec1fc618 |
26-Apr-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Fix encoding of vsubcuw and vsum4sbs instructions When testing the asm parser, I noticed wrong encodings for the above instructions (wrong sub-opcodes). Tests will be added together with the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180608 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
0c0a1be9c565bd8908e2cf2ffccd356b3a3d7c2a |
26-Apr-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Fix encoding of stfsu and stfdu instructions When testing the asm parser, I noticed wrong encodings for the above instructions (wrong sub-opcodes). Note that apparently the compiler currently never generates pre-inc instructions for floating point types for some reason ... Tests will be added together with the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180607 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
1adc97c901e1c42d4f31981a3604d607581c31c3 |
26-Apr-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Fix encoding of rldimi and rldcl instructions When testing the asm parser, I noticed wrong encodings for the above instructions (wrong operand name in rldimi, wrong form and sub-opcode for rldcl). Tests will be added together with the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180606 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
|
8ade90930863acf94fbb2ccd91acefcf114c1f3e |
26-Apr-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Support PC-relative fixup_ppc_brcond14. When testing the asm parser, I ran into an error when using a conditional branch to an external symbol (this doesn't occur in compiler-generated code) due to missing support in PPCELFObjectWriter::getRelocTypeInner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180605 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
fa799112ddd69cebc6bacb9e24feb1298c9cdfb5 |
23-Apr-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Change commentary for PowerPC Boolean vector contents. No functional change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180131 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ed5707baf9be36c0d06c278f589b6c55db8b96c0 |
23-Apr-2013 |
Owen Anderson <resistor@mac.com> |
DAGCombine should not aggressively fold SEXT(VSETCC(...)) into a wider VSETCC without first checking the target's vector boolean contents. This exposed an issue with PowerPC AltiVec where it appears it was setting the wrong vector boolean contents. The included change fixes the PowerPC tests, and was OK'd by Hal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180129 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6265d5c91a18b2fb6499eb581c488315880c044d |
20-Apr-2013 |
Tim Northover <Tim.Northover@arm.com> |
Remove unused MEMBARRIER DAG node; it's been replaced by ATOMIC_FENCE. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179939 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
abe64dc6f7363c7e6170568e382fb06d81d62f51 |
20-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Move PPC getSwappedPredicate for reuse The getSwappedPredicate function can be used in other places (such as in improvements to the PPCCTRLoops pass). Instead of trapping it as a static function in PPCInstrInfo, move it into PPCPredicates with other predicate-related things. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179926 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCPredicates.cpp
CTargetDesc/PPCPredicates.h
PCInstrInfo.cpp
|
2a8bea7a8eba9bfa05dcc7a87e9152a0043841b2 |
20-Apr-2013 |
Michael Liao <michael.liao@intel.com> |
ArrayRefize getMachineNode(). No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179901 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
87c1e42be7dadaea7c3e00fb7ccbd77633cea37f |
20-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix PPC optimizeCompareInstr swapped-sub argument handling When matching a compare with a subtract where the arguments of the compare are swapped w.r.t. the arguments of the subtract, we need to negate the predicates (or CR bit indices) of the users. This, however, is not the same as inverting the predicate (negating LT -> GT, but inverting LT -> GE, for example). The ARM backend seems to do this correctly, but when I adapted the code for the PPC backend, I introduced an error in this logic. Comparison optimization is now enabled again by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179899 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
4029c3feed5c9a5b0793e3da140ecaabef19e3fe |
19-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Disable PPC comparison optimization by default This seems to cause a stage-2 LLVM compile failure (by crashing TableGen); do I'm disabling this for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179807 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
860c08cad5b7c1359123bb2b0e74df4b6e48a15c |
19-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Implement optimizeCompareInstr for PPC Many PPC instructions have a so-called 'record form' which stores to a specific condition register the result of comparing the result of the instruction with zero (always as a signed comparison). For integer operations on PPC64, this is always a 64-bit comparison. This implementation is derived from the implementation in the ARM backend; there are some differences because PPC condition registers are allocatable virtual registers (although the record forms always use a specific one), and we look for a matching subtraction instruction after the compare (but before the first use) in addition to before it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179802 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
df39be6cb4eb44011db3d3e86f8fe463f81ce127 |
17-Apr-2013 |
Peter Collingbourne <peter@pcc.me.uk> |
Add support for subsections to the ELF assembler. Fixes PR8717. Differential Revision: http://llvm-reviews.chandlerc.com/D598 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179725 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
1fb54cfb0a013c8ab664a6e754b34a125fe85254 |
17-Apr-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Mark some more patterns as isCodeGenOnly. A couple of recently introduced conditional branch patterns also need to be marked as isCodeGenOnly since they cannot be handled by the asm parser. No change in generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179690 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
00e86ad167e2d151d819ae7b691dadf9e1d9418c |
15-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Mark all PPC comparison instructions as not having side effects Now that the CR spilling issues have been resolved, we can remove the unmodeled-side-effect attributes from the comparison instructions (and also mark them as isCompare). By allowing these, by default, to have unmodeled side effects, we were hiding problems with CR spilling; but everything seems much happier now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179502 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
fb6fe0aea2d1adde6d5e86f43797b5795ff2dc36 |
15-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix PPC64 CR spill location for callee-saved registers This fixes an ABI bug for non-Darwin PPC64. For the callee-saved condition registers, the spill location is specified relative to the stack pointer (SP + 8). However, this is not relative to the SP after the new stack frame is established, but instead relative to the caller's stack pointer (it is stored into the linkage area of the parent's stack frame). So, like with the link register, we don't directly spill the CRs with other callee-saved registers, but just mark them to be spilled during prologue generation. In practice, this reverts r179457 for PPC64 (but leaves it in place for PPC32). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179500 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCMachineFunctionInfo.h
|
63496f66c5b528a48f8da7714ee3f635f8aadd18 |
14-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Mark all PPC CR registers to be spilled as live-in and tag MFCR appropriately Leaving MFCR has having unmodeled side effects is not enough to prevent unwanted instruction reordering post-RA. We could probably apply a stronger barrier attribute, but there is a better way: Add all (not just the first) CR to be spilled as live-in to the entry block, and add all CRs to the MFCR instruction as implicitly killed. Unfortunately, I don't have a small test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179465 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
b99c995825a49f0da5af40ee1b61269deb8994b5 |
13-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Spill and restore PPC CR registers using the FP when we have one For functions that need to spill CRs, and have dynamic stack allocations, the value of the SP during the restore is not what it was during the save, and so we need to use the FP in these cases (as for all of the other spills and restores, but the CR restore has a special code path because its reserved slot, like the link register, is specified directly relative to the adjusted SP). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179457 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
598574695b70627213ea7bc224ee87ccfef44031 |
12-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Remove (broken) nested implicit definition lists TableGen will not combine nested list 'let' bindings into a single list, and instead uses only the inner scope. As a result, several instruction definitions were missing implicit register defs that were in outer scopes. This de-nests these scopes and makes all instructions have only one let binding which sets implicit register definitions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179392 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
81b2fd5819af2d06011d5a2b031e41527d478ba4 |
12-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add a comment about the PPC Interpretation64Bit bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179391 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
171a8adf3168aee2f739f91c1800e9025892c7b5 |
12-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add PPC instruction record forms and associated query functions This is prep. work for the implementation of optimizeCompare. Many PPC instructions have 'record' forms (in almost all cases, this means that the RC bit is set) that cause the result of the instruction to be compared with zero, and the result of that comparison saved in a predefined condition register. In order to add the record forms of the instructions without too much copy-and-paste, the relevant functions have been refactored into multiclasses which define both the record and normal forms. Also, two TableGen-generated mapping functions have been added which allow querying the instruction code for the record form given the normal form (and vice versa). No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179356 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.td
|
4b040294816e49413c739825d801042bc76171a7 |
11-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Make PPCInstrInfo::isPredicated always return false Because of how predication in implemented on PPC (only for branches), I think that this is the right thing to do. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179252 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
da47e17a6f58bb4dae22d3e79c69fcb1d254ba44 |
10-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Don't predicate a diamond with two counter decrements I've not seen this happen in practice, and probably can't until we start allowing decrement-counter-based conditional branches to be double predicated, but just in case, don't allow predication of a diamond in which both sides have ctr-defining branches. Even though the branching behavior of these can be predicated, the counter-decrementing behavior cannot be. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179199 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
4e3172867d0c1acfda9d2cc88dfad23634e649eb |
10-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPCInstrInfo::DefinesPredicate Implement suggestions made by Bill Schmidt in post-commit review. Thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179162 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
90dd7fd167b6d09e4a7f37e35dcbfdc492546a79 |
10-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Prep for if conversion of bctr[l] This adds in-principle support for if-converting the bctr[l] instructions. These instructions are used for indirect branching. It seems, however, that the current if converter will never actually predicate these. To do so, it would need the ability to hoist a few setup insts. out of the conditionally-executed block. For example, code like this: void foo(int a, int (*bar)()) { if (a != 0) bar(); } becomes: ... beq 0, .LBB0_2 std 2, 40(1) mr 12, 4 ld 3, 0(4) ld 11, 16(4) ld 2, 8(4) mtctr 3 bctrl ld 2, 40(1) .LBB0_2: ... and it would be safe to do all of this unconditionally with a predicated beqctrl instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179156 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.cpp
PCInstrInfo.td
|
7eb0d8148e1210d9e31ab471477de47b53bab117 |
10-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Allow PPC B and BLR to be if-converted into some predicated forms This enables us to form predicated branches (which are the same conditional branches we had before) and also a larger set of predicated returns (including instructions like bdnzlr which is a conditional return and loop-counter decrement all in one). At the moment, if conversion does not capture all possible opportunities. A simple example is provided in early-ret2.ll, where if conversion forms one predicated return, and then the PPCEarlyReturn pass picks up the other one. So, at least for now, we'll keep both mechanisms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179134 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCTargetMachine.cpp
|
13049aef8ad86795e94006dea0e097a8add85665 |
09-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPCEarlyReturn Some general cleanup and only scan the end of a BB for branches (once we're done with the terminators and debug values, then there should not be any other branches). These address post-commit review suggestions by Bill Schmidt. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179112 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
f6f8198d85f278ff03aaf32c9db6ae0b3826395c |
09-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Use virtual base registers on PPC On PowerPC, non-vector loads and stores have r+i forms; however, in functions with large stack frames these were not being used to access slots far from the stack pointer because such slots were out of range for the signed 16-bit immediate offset field. This increases register pressure because we need a separate register for each offset (when the r+r form is used). By enabling virtual base registers, we can deal with large stack frames without unduly increasing register pressure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179105 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
5ee67e8e76dfcaffa5e776ef3d5eeb80807a627b |
08-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Generate PPC early conditional returns PowerPC has a conditional branch to the link register (return) instruction: BCLR. This should be used any time when we'd otherwise have a conditional branch to a return. This adds a small pass, PPCEarlyReturn, which runs just prior to the branch selection pass (and, importantly, after block placement) to generate these conditional returns when possible. It will also eliminate unconditional branches to returns (these happen rarely; most of the time these have already been tail duplicated by the time PPCEarlyReturn is invoked). This is a nice optimization for small functions that do not maintain a stack frame. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179026 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.td
PCTargetMachine.cpp
EADME.txt
|
59889f7f496f549965764820a0150c4068c02f5b |
08-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup and improve PPC fsel generation First, we should not cheat: fsel-based lowering of select_cc is a finite-math-only optimization (the ISA manual, section F.3 of v2.06, makes this clear, as does a note in our own README). This also adds fsel-based lowering of EQ and NE condition codes. As it turned out, fsel generation was covered by a grand total of zero regression test cases. I've added some test cases to cover the existing behavior (which is now finite-math only), as well as the new EQ cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179000 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
946a811ef12188f4a129f4f98759fc9f7ba33d61 |
07-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC rotate instructions don't have unmodeled side effcts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178982 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
f0e3ca012bc7dd6b95c091a7f5f147794983cf97 |
07-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Most PPC M[TF]CR instructions do not have side effects git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178978 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
3aea7cb7b2c54071fc273a0c3a97850bd14de5ac |
07-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC pre-increment load instructions do not have side effects A few were missed in r178972. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178973 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
fa1d102a052e0375c954d9a35b3a687f81194f7a |
07-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC pre-increment load instructions do not have side effects git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178972 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
aecbe2426825463c183a036da4bfae621e8ec080 |
07-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC MCRF instruction does not have side effects git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178971 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
fa1cac2a1e37f9925543894b0a4ae5db080a862a |
07-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC FMR instruction does not have side effects git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178970 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
839b9096538f790a2bb060547df24703807cb83b |
06-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Implement PPCInstrInfo::FoldImmediate There are certain PPC instructions into which we can fold a zero immediate operand. We can detect such cases by looking at the register class required by the using operand (so long as it is not otherwise constrained). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178961 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
|
012ffd56059576d4a0ee523f673b3190b1f03311 |
06-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC ISEL is a select and never has side effects git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178960 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
ff56d1a2011f239e114267c13302ea26db4f8046 |
06-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Enable early if conversion on PPC On cores for which we know the misprediction penalty, and we have the isel instruction, we can profitably perform early if conversion. This enables us to replace some small branch sequences with selects and avoid the potential stalls from mispredicting the branches. Enabling this feature required implementing canInsertSelect and insertSelect in PPCInstrInfo; isel code in PPCISelLowering was refactored to use these functions as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178926 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.cpp
PCInstrInfo.h
PCTargetMachine.cpp
|
de80951ae9bb86ab6b4183f0d482d426c02ab708 |
06-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Correct the PPC A2 misprediction penalty The manual states that there is a minimum of 13 cycles from when the mispredicted branch is issued to when the correct branch target is issued. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178925 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleA2.td
|
1abaf907b6aff6e468cb838fa40e0ec6cc5ece24 |
05-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add a SchedMachineModel for the PPC G5 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178850 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCScheduleG5.td
|
575e9229bd2053e6887ec4253f29b570d90d80c9 |
05-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add a SchedMachineModel for the PPC A2 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178848 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCScheduleA2.td
|
6bf4f676413b8f7d97aaff289997aab344180957 |
05-Apr-2013 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
CostModel: Add parameter to instruction cost to further classify operand values On certain architectures we can support efficient vectorized version of instructions if the operand value is uniform (splat) or a constant scalar. An example of this is a vector shift on x86. We can efficiently support for (i = 0 ; i < ; i += 4) w[0:3] = v[0:3] << <2, 2, 2, 2> but not for (i = 0; i < ; i += 4) w[0:3] = v[0:3] << x[0:3] This patch adds a parameter to getArithmeticInstrCost to further qualify operand values as uniform or uniform constant. Targets can then choose to return a different cost for instructions with such operand values. A follow-up commit will test this feature on x86. radar://13576547 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178807 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetTransformInfo.cpp
|
caeeb1865043d5410b5b0356694fb1228a18ec78 |
05-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Rename the current PPC BCL definition to BCLalways BCL is normally a conditional branch-and-link instruction, but has an unconditional form (which is used in the SjLj code, for example). To make clear that this BCL instruction definition is specifically the special unconditional form (which does not meaningfully take a condition-register input), rename it to BCLalways. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178803 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
7530a9f7d1e62b28e04d771158613c2954cc8d8c |
05-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Improve code generation for mixed-precision reciprocal sqrt The DAGCombine logic that recognized a/sqrt(b) and transformed it into a multiplication by the reciprocal sqrt did not handle cases where the sqrt and the division were separated by an fpext or fptrunc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178801 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
63c32a7a9fd30f67bc623c818f434e742d43c085 |
03-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPC reciprocal-estimate functionality Incorporating review feedback from Bill Schmidt on r178617. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178672 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
110e323b619c64e63f8d7814f9ad9a455e6dbf59 |
03-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Enable FRES and FRSQRTE on the default PPC64 description I discussed this with Bill Schmidt on IRC, and it was decided that this is a safe and reasonable default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178659 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
7d52a41e320b8b22a9dde2481df2e5157e950d79 |
03-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Add a FIXME regarding the non-working fma+fneg Altivec pattern git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178658 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
d8f8f5847631aeff4714d42ae762c2c2266dcb23 |
03-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove some obsolete PowerPC/README entries git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178657 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
6b9d52eefd3e7d57618c0b7e84f0297298a5a65f |
03-Apr-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
More direct types in PowerPC AltiVec intrinsics. This patch follows up on work done by Bill Schmidt in r178277, and replaces most of the remaining uses of VRRC in ISEL DAG patterns. The resulting .inc files are identical except for comments, so no change in code generation is expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178656 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
cd7a1558edd0bdae770c57b82b32291e54e014b2 |
03-Apr-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix PR15632: No support for ppcf128 floating-point remainder on PowerPC. For this we need to use a libcall. Previously LLVM didn't implement libcall support for frem, so I've added it in the usual straightforward manner. A test case from the bug report is included. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178639 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2d8f62017d6223444564f79fc8044cc35d9d5678 |
03-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove some unsupported-feature comments from PPC.td These refer to the reciprocal estimate support recently committed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178618 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
827307b95fa909e35a3ddef612f9f50ffcf0963a |
03-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Use PPC reciprocal estimates with Newton iteration in fast-math mode When unsafe FP math operations are enabled, we can use the fre[s] and frsqrte[s] instructions, which generate reciprocal (sqrt) estimates, together with some Newton iteration, in order to quickly generate floating-point division and sqrt results. All of these instructions are separately optional, and so each has its own feature flag (except for the Altivec instructions, which are covered under the existing Altivec flag). Doing this is not only faster than using the IEEE-compliant fdiv/fsqrt instructions, but allows these computations to be pipelined with other computations in order to hide their overall latency. I've also added a couple of missing fnmsub patterns which turned out to be missing (but are necessary for good code generation of the Newton iterations). Altivec needs a similar fix, but that will probably be more complicated because fneg is expanded for Altivec's v4f32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178617 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
PCInstrInfo.td
PCSubtarget.cpp
PCSubtarget.h
|
debf7d345aa297ebedf2d3b1db234feb44c71483 |
02-Apr-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix PR15630: Replace faulty stdcx. with stwcx. When doing a partword atomic operation, a lwarx was being paired with a stdcx. instead of a stwcx. when compiling for a 64-bit target. The target has nothing to do with it in this case; we always need a stwcx. Thanks to Kai Nacke for reporting the problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178559 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2a401959b9d5d7824e4296683e2467e5aafe01b7 |
02-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix typo in PPCISelLowering Thanks to Bill Schmidt for finding this in review of r178480. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178521 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a1646ceb9a5da080607e503c8bd36241aa465613 |
01-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix a bad assert in PPCTargetLowering git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178489 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
46479197843ecb651adc9417c49bbd1b00acfcb6 |
01-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add more PPC floating-point conversion instructions The P7 and A2 have additional floating-point conversion instructions which allow a direct two-instruction sequence (plus load/store) to convert from all combinations (signed/unsigned i32/i64) <--> (float/double) (on previous cores, only some combinations were directly available). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178480 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCSubtarget.cpp
PCSubtarget.h
|
a1f4290ac94f34173e3561c717390de07dccc646 |
01-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Use ImmToIdxMap.count in PPCRegisterInfo Code improvement suggested by Jakob (in review of r178450). No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178473 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1fce88313e4d46fdd432b68f7c54fde972c0b526 |
01-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add the PPC popcntw instruction The popcntw instruction is available whenever the popcntd instruction is available, and performs a separate popcnt on the lower and upper 32-bits. Ignoring the high-order count, this can be used for the 32-bit input case (saving on the explicit zero extension otherwise required to use popcntd). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178470 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
|
f170cc9b2eb98efee40ee22cff6bcf401c209b00 |
01-Apr-2013 |
Hal Finkel <hfinkel@anl.gov> |
Treat PPCISD::STFIWX like the memory opcode that it is PPCISD::STFIWX is really a memory opcode, and so it should come after FIRST_TARGET_MEMORY_OPCODE, and we should use DAG.getMemIntrinsicNode to create nodes using it. No functionality change intended (although there could be optimization benefits from preserving the MMO information). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178468 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4345e8040f14781d20fd5fa2f7ee3c75fa611fa1 |
31-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup ImmToIdxMap and noImmForm in PPCRegisterInfo ImmToIdxMap should be a DenseMap (not a std::map) because there is no ordering requirement. Also, we don't need a separate list of instructions for noImmForm in eliminateFrameIndex, because this list is essentially the complement of the keys in ImmToIdxMap. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178450 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
8049ab15e4b638a07d6f230329945c2310eca27b |
31-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add the PPC lfiwax instruction This instruction is available on modern PPC64 CPUs, and is now used to improve the SINT_TO_FP lowering (by eliminating the need for the separate sign extension instruction and decreasing the amount of needed stack space). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178446 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
PCRegisterInfo.cpp
PCSubtarget.cpp
PCSubtarget.h
|
9ad0f4907b3ba0916a8b6cdb95d298d2ddb7d405 |
31-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPC(64) i32 -> float/double conversion The existing SINT_TO_FP code for i32 -> float/double conversion was disabled because it relied on broken EXTSW_32/STD_32 instruction definitions. The original intent had been to enable these 64-bit instructions to be used on CPUs that support them even in 32-bit mode. Unfortunately, this form of lying to the infrastructure was buggy (as explained in the FIXME comment) and had therefore been disabled. This re-enables this functionality, using regular DAG nodes, but only when compiling in 64-bit mode. The old STD_32/EXTSW_32 definitions (which were dead) are removed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178438 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
|
0882fd6c4f90f1cbaa4bb6f6ceec289428cca734 |
29-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Implement FRINT lowering on PPC using frin Like nearbyint, rint can be implemented on PPC using the frin instruction. The complication comes from the fact that rint needs to set the FE_INEXACT flag when the result does not equal the input value (and frin does not do that). As a result, we use a custom inserter which, after the rounding, compares the rounded value with the original, and if they differ, explicitly sets the XX bit in the FPSCR register (which corresponds to FE_INEXACT). Once LLVM has better modeling of the floating-point environment we should be able to (often) eliminate this extra complexity. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178362 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
74a4533a4290b7c6f1fe04a30ca13ec25c529e0a |
29-Mar-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
Remove the old CodePlacementOpt pass. It was superseded by MachineBlockPlacement and disabled by default since LLVM 3.1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178349 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f5d5c434606161fb017a34cb656fa4aa5a3e076b |
29-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add PPC FP rounding instructions fri[mnpz] These instructions are available on the P5x (and later) and on the A2. They implement the standard floating-point rounding operations (floor, trunc, etc.). One caveat: frin (round to nearest) does not implement "ties to even", and so is only enabled in fast-math mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178337 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCInstrInfo.td
PCSubtarget.cpp
PCSubtarget.h
|
2544f221c5f4047d7bdf10ec911c86a1d8be4a29 |
28-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Only enable 64-bit bswap DAG combines for PPC64 Compiling in 32-bit mode on a P7 would assert after 64-bit DAG combines were added for bswap with load/store. This is because these combines are really only valid in 64-bit mode, regardless of the CPU (and this was not being checked). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178286 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b52980be0788a907c98fc08de090ad61aef86716 |
28-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix bad indentation in r178276 Thanks to Bill Schmidt for pointing this out! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178280 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
53774a821d21f954c1ba0eaa493d4142b68fbfcd |
28-Mar-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Use direct types in most PowerPC Altivec instructions and patterns. This follows up Ulrich Weigand's work in PPCInstrInfo.td and PPCInstr64Bit.td by doing the corresponding work for most of the Altivec patterns. I have not been able to do anything for the following classes of instructions: (1) Vector logicals. These don't have corresponding intrinsics and don't have a single obvious vector type. So far as I can tell I need to leave these as VRRC. Affected instructions are: VAND, VANDC, VNOR, VOR, VXOR, V_SET0. (2) Instructions that make use of vector shuffle. The selection code promotes all shuffles to v16i8, so any pattern that matches on a shuffle is constrained. I haven't found any way to make the patterns match on their natural types, so I plan to leave these as VRRC. Affected instructions are: VMRG*, VSPLTB, VSPLTH, VSPLTW, VPKUHUM, VPKUWUM. No change in behavior is anticipated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178277 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
efdd4673d6e78f3d406c5d1f44316aef8a5a9a48 |
28-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add the PPC64 ldbrx/stdbrx instructions These are 64-bit load/store with byte-swap, and available on the P7 and the A2. Like the similar instructions for 16- and 32-bit words, these are matched in the target DAG-combine phase against load/store-bswap pairs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178276 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCSubtarget.cpp
PCSubtarget.h
|
c53ab4d77f4b3d2905cf9ad625c28ff6b1c04aff |
28-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add the PPC64 popcntd instruction PPC ISA 2.06 (P7, A2, etc.) has a popcntd instruction. Add this instruction and tell TTI about it so that popcount-loop recognition will know about it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178233 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCInstr64Bit.td
PCSubtarget.cpp
PCSubtarget.h
PCTargetTransformInfo.cpp
|
d957f957eee12cf26a7160e6015f0a7c2629904f |
28-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPC CR-spill kill flags and 32- vs. 64-bit instructions There were a few places where kill flags were not being set correctly, and where 32-bit instruction variants were being used with 64-bit registers. After r178180, this code was being triggered causing llc to assert. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178220 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCRegisterInfo.cpp
|
d01efc737aad480eaaa1316b05b7165ce7c04c96 |
28-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix typo in PPCInstr64Bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178219 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
f25f93b685a6cb91d8370ae5dc1436a863a670d2 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Resynchronize isLoadFromStackSlot with LoadRegFromStackSlot (and stores) in PPCInstrInfo These functions should have the same list of load/store instructions. Now that all load/store forms have been normalized (to single instructions or pseudos) they can be resynchronized. Found by inspection, although hopefully this will improve optimization. I've also added some comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178180 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
e915047fed99221afb8c540d8a7e81038a6483f1 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix typo (common to both X86 and PPC) Thanks to Bill Schmidt for pointing this out during code review! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178170 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
fc8058696820332cfd3d382f6534edc96420a0b1 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove more dead LR-as-GPR PPC code I had removed similar code a few days ago, but somehow missed this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178169 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
e77918c355610ef2c68c3b666b3a3dd0085e1766 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove "gpr0 allocation" from the PPC README TODO list As Chris pointed out, post r178123, this is now done! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178165 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
32e12df253de7993f5a9bb89668d98ec0454f623 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Print PPC ZERO as 0 (not r0) even on Darwin It seems that the Darwin PPC assembler requires r0 to be written as 0 when it means 0 (at least in lwarx/stwcx.). Fixes PR15605. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178142 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
240b7f3324da70937d4fe6d0bd7278ae82849114 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Allocate r0 on PPC The R0 register can now be allocated because instructions that cannot use R0 as a GPR have been appropriately marked. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178123 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
6375e1b87b089093fecdb09f609251e91d1c2c4f |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Use the PPC no-r0 class on the TOC LD pseudos The register parameter in these instructions becomes the base register in an r+i ld instruction (and, thus, cannot be r0). This is not yet testable because we don't yet allocate r0 (and even then any test would be very fragile). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178121 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
ab42ec258627376e49f84141dd7be455b1e4ab3d |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Apply the no-r0 register class to the PPC SELECT_CC_I[4|8] pseudos Either operand of these pseudo instructions can be transformed into the first operand of an isel instruction (and this operand cannot be r0). This is not yet testable because we don't yet allocate r0 (and even when we do, any test would be very fragile). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178119 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
56d926ac14406ef87d34fbf77632c26d8e789818 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Apply the no-r0 class to PPC TOC ADDI[S] pseudo instructions Like the addi/addis instructions themselves, these pseudo instructions also cannot have r0 as their register parameter (because it will be interpreted as the value 0). This is not yet testable because we don't yet allocate r0 (and even when we do, any regression test would be very fragile because it would depend on the register allocator heuristics). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178118 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
37ef805818e32531c2c3a454fee33f06f363f9c2 |
27-Mar-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Remove the link register from the GPR classes on PowerPC. Some implementation detail in the forgotten past required the link register to be placed in the GPRC and G8RC register classes. This is just wrong on the face of it, and causes several extra intersection register classes to be generated. I found this was having evil effects on instruction scheduling, by causing the wrong register class to be consulted for register pressure decisions. No code generation changes are expected, other than some minor changes in instruction order. Seven tests in the test bucket required minor tweaks to adjust to the new normal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178114 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
b7e11e400dabced046e7ec53a66926716563bb36 |
27-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Don't spill PPC VRSAVE on non-Darwin (even in SjLj) As Bill Schmidt pointed out to me, only on Darwin do we need to spill/restore VRSAVE in the SjLj code. For non-Darwin, don't spill/restore VRSAVE (and I've added some asserts to make sure that we're not). As it turns out, we're not currently handling the Darwin case correctly (I've added a FIXME in the test case). I've tried adding various implied register definitions/uses to force the spill without success, so I'll need to address this later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178096 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
1a0034c74a0a8562199f9e6a00feb0a80619b886 |
26-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Restore real bit lengths on PPC register numbers As suggested by Bill Schmidt (in reviewing r178067), use the real register number bit lengths (which is self-documenting, and prevents using illegal numbers), and set only the relevant bits in HWEncoding (which defaults to 0). No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178077 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
aa6047d23d8ed55abd8545f5cbe82cd13cbd756a |
26-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC: Use HWEncoding and TRI->getEncodingValue As pointed out by Jakob, we don't need to maintain a separate register-numbering table. Instead we should let TableGen generate the table for us from the information (already present) in PPCRegisterInfo.td. TRI->getEncodingValue is now used to access register-encoding values. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178067 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/PPCBaseInfo.h
CTargetDesc/PPCMCCodeEmitter.cpp
PC.h
PCCodeEmitter.cpp
PCFrameLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.td
|
01f99d29c3010f2891e5edb78182216214017063 |
26-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Use multiple virtual registers in PPC CR spilling Now that the register scavenger can support multiple spill slots, and PEI can use virtual-register-based scavenging for multiple simultaneous registers, we can use a virtual register for the transfer register in the CR spilling code. This should eliminate the last place (outside of the prologue/epilogue) where we depend on the unconditional availability of the r0 register. We will soon be able to allocate it (in a somewhat restricted sense) as a GPR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178060 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCRegisterInfo.cpp
|
3b196f20fbd24b2c178a51e2473437655dc7066a |
26-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Update PPCRegisterInfo's use of virtual registers to be SSA PPC's use of PEI's virtual-register-based scavenging functionality had redefined the virtual registers (it was non-SSA). Now that PEI supports dealing with instructions with multiple virtual registers, this can be cleanup up to use multiple virtual registers and keep SSA form. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178059 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
d6f5a581ab968a2618b0c5a8472ea2ab37797916 |
26-Mar-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
Remove default case from fully covered switch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178025 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCPredicates.cpp
|
3d386421e0d8756a4665d00fcfa66a99990f0f91 |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Mark patterns as isCodeGenOnly. There remain a number of patterns that cannot (and should not) be handled by the asm parser, in particular all the Pseudo patterns. This commit marks those patterns as isCodeGenOnly. No change in generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178008 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrFormats.td
PCInstrInfo.td
|
65e90c036472380bba160c349412f37128608e1c |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Simplify handling of fixups. MCTargetDesc/PPCMCCodeEmitter.cpp current has code like: if (isSVR4ABI() && is64BitMode()) Fixups.push_back(MCFixup::Create(0, MO.getExpr(), (MCFixupKind)PPC::fixup_ppc_toc16)); else Fixups.push_back(MCFixup::Create(0, MO.getExpr(), (MCFixupKind)PPC::fixup_ppc_lo16)); This is a problem for the asm parser, since it requires knowledge of the ABI / 64-bit mode to be set up. However, more fundamentally, at this point we shouldn't make such distinctions anyway; in an assembler file, it always ought to be possible to e.g. generate TOC relocations even when the main ABI is one that doesn't use TOC. Fortunately, this is actually completely unnecessary; that code was added to decide whether to generate TOC relocations, but that information is in fact already encoded in the VariantKind of the underlying symbol. This commit therefore merges those fixup types into one, and then decides which relocation to use based on the VariantKind. No changes in generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178007 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
|
7d35d3f432cb59d3d1c0884af3023de9b5cb10b1 |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Simplify FADD in round-to-zero mode. As part of the the sequence generated to implement long double -> int conversions, we need to perform an FADD in round-to-zero mode. This is problematical since the FPSCR is not at all modeled at the SelectionDAG level, and thus there is a risk of getting floating point instructions generated out of sequence with the instructions to modify FPSCR. The current code handles this by somewhat "special" patterns that in part have dummy operands, and/or duplicate existing instructions, making them awkward to handle in the asm parser. This commit changes this by leaving the "FADD in round-to-zero mode" as an atomic operation on the SelectionDAG level, and only split it up into real instructions at the MI level (via custom inserter). Since at *this* level the FPSCR *is* modeled (via the "RM" hard register), much of the "special" stuff can just go away, and the resulting patterns can be used by the asm parser. No significant change in generated code expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178006 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrFormats.td
PCInstrInfo.td
|
d67768db809d6b1cfe6f7c484b3719a6103286ea |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Remove LDrs pattern. The LDrs pattern is a duplicate of LD, except that it accepts memory addresses where the displacement is a symbolLo64. An operand type "memrs" is defined for just that purpose. However, this wouldn't be necessary if the default "memrix" operand type were to simply accept 64-bit symbolic addresses directly. The only problem with that is that it uses "symbolLo", which is hardcoded to 32-bit. To fix this, this commit changes "memri" and "memrix" to use new operand types for the memory displacement, which allow iPTR instead of i32. This will also make address parsing easier to implment in the asm parser. No change in generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178005 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
2b0850b8305380244ec98e1b1c89aaf57adf3b09 |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Remove ADDIL patterns. The ADDI/ADDI8 patterns are currently duplicated into ADDIL/ADDI8L, which describe the same instruction, except that they accept a symbolLo[64] operand instead of a s16imm[64] operand. This duplication confuses the asm parser, and it actually not really needed, since symbolLo[64] already accepts immediate operands anyway. So this commit removes the duplicate patterns. No change in generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178004 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
a01c7dbaabae7cf569410bedd71361b75f65875f |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Use CCBITRC operand for ISEL patterns. This commit changes the ISEL patterns to use a CCBITRC operand instead of a "pred" operand. This matches the actual instruction text more directly, and simplifies use of ISEL with the asm parser. In addition, this change allows some simplification of handling the "pred" operand, as this is now only used by BCC. No change in generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178003 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
|
3b2552933642c19ce5e8836d82c26c562910e239 |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Simplify BLR pattern. The BLR pattern cannot be recognized by the asm parser in its current form. This complexity is due to an apparent attempt to enable conditional BLR variants. However, none of those can ever be generated by current code; the pattern is only ever created using the default "pred" operand. To simplify the pattern and allow it to be recognized by the parser, this commit removes those attempts at conditional BLR support. When we later come back to actually add real conditional BLR, this should probably be done via a fully generic conditional branch pattern. No change in generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178002 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/PPCPredicates.h
PCInstrInfo.td
|
e8680da874631c0531872c83d6643e05bbefebd1 |
26-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
PowerPC: Move some 64-bit branch patterns. In PPCInstr64Bit.td, some branch patterns appear in a different sequence than the corresponding 32-bit patterns in PPCInstrInfo.td. To simplify future changes that affect both files, this commit moves those patterns to rearrange them into a similar sequence. No effect on generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178001 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
5b390e4cd8838bad351364e65d20c292fae6bf23 |
25-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Use direct types in PowerPC instruction patterns. This commit updates the PowerPC back-end (PPCInstrInfo.td and PPCInstr64Bit.td) to use types instead of register classes in instruction patterns, along the lines of Jakob Stoklund Olesen's changes in r177835 for Sparc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177890 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
1492a4e5185d963cb79786311b882153fce6718a |
25-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Use direct types in PowerPC Pat patterns. This commit updates the PowerPC back-end (PPCInstrInfo.td and PPCInstr64Bit.td) to use types instead of register classes in Pat patterns, along the lines of Jakob Stoklund Olesen's changes in r177829 for Sparc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177889 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
526d6c451bf7cbffdb6976f551c42607680c1e3a |
23-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC ZERO register needs a register number of 0. In order for the new ZERO register to be used with MC, etc. we need to specify its register number (0). Thanks to Kai for reporting the problem! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177833 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCBaseInfo.h
|
3f2c047f32c9b488d9c49bb2dc87b979530dab3f |
23-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Note in PPCFunctionInfo VRSAVE spills In preparation for using the new register scavenger capability for providing more than one register simultaneously, specifically note functions that have spilled VRSAVE (currently, this can happen only in functions that use the setjmp intrinsic). As with CR spilling, such functions will need to provide two emergency spill slots to the scavenger. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177832 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCMachineFunctionInfo.h
|
7d35f74a5d5fafc66eafd945273153bf060a8bf4 |
23-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
MCize the bcl instruction in PPCAsmPrinter I recently added a BCL instruction definition as part of implementing SjLj support. This can also be used to MCize bcl emission in the asm printer. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177830 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
02327fefd8a4b7d9f4dc90e066ba70b1d6253c27 |
23-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup some unused reg. scavenger parameters in PPCRegisterInfo These spilling functions will eventually make use of the register scavenger, however, they'll do so by taking advantage of PEI's virtual-register-based delayed scavenging mechanism. As a result, these function parameters will not be used, and can be removed. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177827 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
7257fda1b3b047f6fd46df8a9999580fcfafbfae |
23-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove dead PPC LR spilling code The LR register is unconditionally reserved, and its spilling and restoration is handled by the prologue/epilogue code. As a result, it is never explicitly spilled by the register allocator. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177823 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
dc3beb90178fc316f63790812b22201884eaa017 |
23-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Allow the register scavenger to spill multiple registers This patch lets the register scavenger make use of multiple spill slots in order to guarantee that it will be able to provide multiple registers simultaneously. To support this, the RS's API has changed slightly: setScavengingFrameIndex / getScavengingFrameIndex have been replaced by addScavengingFrameIndex / isScavengingFrameIndex / getScavengingFrameIndices. In forthcoming commits, the PowerPC backend will use this capability in order to implement the spilling of condition registers, and some special-purpose registers, without relying on r0 being reserved. In some cases, spilling these registers requires two GPRs: one for addressing and one to hold the value being transferred. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177774 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
86765fbe170198e7bb40fd8499d1354f4c786f60 |
22-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Remove ABI-duplicated call instruction patterns. We currently have a duplicated set of call instruction patterns depending on the ABI to be followed (Darwin vs. Linux). This is a bit odd; while the different ABIs will result in different instruction sequences, the actual instructions themselves ought to be independent of the ABI. And in fact it turns out that the only nontrivial difference between the two sets of patterns is that in the PPC64 Linux ABI, the instruction used for indirect calls is marked to take X11 as extra input register (which is indeed used only with that ABI to hold an incoming environment pointer for nested functions). However, this does not need to be hard-coded at the .td pattern level; instead, the C++ code expanding calls can simply add that use, just like it adds uses for argument registers anyway. No change in generated code expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177735 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCHazardRecognizers.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.cpp
PCInstrInfo.td
|
89ec847ec79f422527dce0d5321be5526c84bb71 |
22-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Rename memrr ptrreg and offreg components. Currently, the sub-operand of a memrr address that corresponds to what hardware considers the base register is called "offreg", while the sub-operand that corresponds to the offset is called "ptrreg". To avoid confusion, this patch simply swaps the named of those two sub-operands and updates all uses. No functional change is intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177734 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
881a7154b9f9b85f6a8515e282cacdfc9df156cf |
22-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Fix swapped BasePtr and Offset in pre-inc memory addresses. PPCTargetLowering::getPreIndexedAddressParts currently provides the base part of a memory address in the offset result, and the offset part in the base result. That swap is then undone again when an MI instruction is generated (in PPCDAGToDAGISel::Select for loads, and using .md Pat patterns for stores). This patch reverts this double swap, to make common code and back-end be in sync as to which part of the address is base and which is offset. To avoid performance regressions in certain cases, target code now checks whether the choice of base register would be rejected for pre-inc accesses by common code, and attempts to swap base and offset again in such cases. (Overall, this means that now pre-ice accesses are generated *more* frequently than before.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177733 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
0301e79a1af665422f205fd367cdbd8e6164f324 |
22-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Tighten iaddroff ComplexPattern. The iaddroff ComplexPattern is supposed to recognize displacement expressions that have been processed by a SelectAddressRegImm, which means it needs to accept TargetConstant and TargetGlobalAddress nodes. Currently, it erroneously also accepts some other nodes, in particular Constant and PPCISD::Lo. While this problem is currently latent, it would cause wrong-code bugs with a follow-on patch I'm about to commit, so this patch tightens the ComplexPattern. The equivalent change is made in PPCDAGToDAGISel::Select, where pre-inc load patterns are handled (as opposed to store patterns, the loads are handled in C++ code without making use of the .td ComplexPattern). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177732 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
cff0faa16a7d03951fba0aa279a2c8441c5718f8 |
22-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Remove the xaddroff ComplexPattern. The xaddroff pattern is currently (mistakenly) used to recognize the *base* register in pre-inc store patterns. This patch replaces those uses by ptr_rc_nor0 (as is elsewhere done to match the base register of an address), and removes the now unused ComplexPattern. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177731 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
7697370adff8983e2a3de493362f0d8c9f9b0e17 |
22-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove the G8RC_NOX0_and_GPRC_NOR0 PPC register class As Jakob pointed out in his review of r177423, having a shared ZERO register between the 32- and 64-bit register classes causes this odd G8RC_NOX0_and_GPRC_NOR0 class to be created. As recommended, this adds a ZERO8 register which differentiates the 32- and 64-bit zeros. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177683 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.td
|
3ea1b064a0b9c3d161b0f77a9e957970f98907ab |
22-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix a register-class comparison bug in PPCCTRLoops Thanks to Jakob for isolating the underlying problem from the test case in r177423. The original commit had introduced asymmetric copy operations, but these turned out to be a work-around to the real problem (the use of == instead of hasSubClassEq in PPCCTRLoops). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177679 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
PCInstr64Bit.td
PCInstrInfo.cpp
|
7ee74a663a3b4d4ee6b55d23362f347ed1d390c2 |
21-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Implement builtin_{setjmp/longjmp} on PPC This implements SJLJ lowering on PPC, making the Clang functions __builtin_{setjmp/longjmp} functional on PPC platforms. The implementation strategy is similar to that on X86, with the exception that a branch-and-link variant is used to get the right jump address. Credit goes to Bill Schmidt for suggesting the use of the unconditional bcl form (instead of the regular bl instruction) to limit return-address-cache pollution. Benchmarking the speed at -O3 of: static jmp_buf env_sigill; void foo() { __builtin_longjmp(env_sigill,1); } main() { ... for (int i = 0; i < c; ++i) { if (__builtin_setjmp(env_sigill)) { goto done; } else { foo(); } done:; } ... } vs. the same code using the libc setjmp/longjmp functions on a P7 shows that this builtin implementation is ~4x faster with Altivec enabled and ~7.25x faster with Altivec disabled. This comparison is somewhat unfair because the libc version must also save/restore the VSX registers which we don't yet support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177666 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.h
|
10f7f2a222d0e83dc0c33ad506a7686190c2f7a2 |
21-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add support for spilling VRSAVE on PPC Although there is only one Altivec VRSAVE register, it is a member of a register class, and we need the ability to spill it. Because this register is normally callee-preserved and handled by special code this has never before been necessary. However, this capability will be required by a forthcoming commit adding SjLj support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177654 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.h
|
e9cc0a09ae38c87b1b26a44f5e32222ede4f84e6 |
21-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Correct PPC FRAMEADDR lowering using a pseudo-register The old code used to lower FRAMEADDR tried to replicate the logic in the real frame-lowering code that determines whether or not the frame pointer (r31) will be used. When it seemed as through the frame pointer would not be used, the stack pointer (r1) was used instead. Unfortunately, because the stack size is not yet known, this does not work. Instead, this change introduces new always-reserved pseudo-registers (FP and FP8) that are replaced during prologue insertion with the real frame-pointer register (either r1 or r31). It is important that this intrinsic always return a valid frame address because it is used by Clang to store the frame address as part of code generation for __builtin_setjmp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177653 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCFrameLowering.h
PCISelLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.td
|
dff4d1522a3a14df3c40c33421e24f59633da67b |
19-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Add missing mayLoad flag to LHAUX8 and LWAUX. All pre-increment load patterns need to set the mayLoad flag (since they don't provide a DAG pattern). This was missing for LHAUX8 and LWAUX, which is added by this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177431 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
8353d1e0e5fd23bb9b6c11acda8157d728d89223 |
19-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Rewrite LHAU8 pattern to use standard memory operand. As opposed to to pre-increment store patterns, the pre-increment load patterns were already using standard memory operands, with the sole exception of LHAU8. As there's no real reason why LHAU8 should be different here, this patch simply rewrites the pattern to also use a memri operand, just like all the other patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177430 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
5882e3d82831710a7ea1fe8de4813350d4eecf05 |
19-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Rewrite pre-increment store patterns to use standard memory operands. Currently, pre-increment store patterns are written to use two separate operands to represent address base and displacement: stwu $rS, $ptroff($ptrreg) This causes problems when implementing the assembler parser, so this commit changes the patterns to use standard (complex) memory operands like in all other memory access instruction patterns: stwu $rS, $dst To still match those instructions against the appropriate pre_store SelectionDAG nodes, the patch uses the new feature that allows a Pat to match multiple DAG operands against a single (complex) instruction operand. Approved by Hal Finkel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177429 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
880d82e3dbf8ae6c2babf5943d524bbe25015eba |
19-Mar-2013 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Fix sub-operand size mismatch in tocentry operands. The tocentry operand class refers to 64-bit values (it is only used in 64-bit, where iPTR is a 64-bit type), but its sole suboperand is designated as 32-bit type. This causes a mismatch to be detected at compile-time with the TableGen patch I'll check in shortly. To fix this, this commit changes the suboperand to a 64-bit type as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177427 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
a548afc98fd4c61a8dfdd550ba57c37f2cfe3ed9 |
19-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Prepare to make r0 an allocatable register on PPC Currently the PPC r0 register is unconditionally reserved. There are two reasons for this: 1. r0 is treated specially (as the constant 0) by certain instructions, and so cannot be used with those instructions as a regular register. 2. r0 is used as a temporary register in the CR-register spilling process (where, under some circumstances, we require two GPRs). This change addresses the first reason by introducing a restricted register class (without r0) for use by those instructions that treat r0 specially. These register classes have a new pseudo-register, ZERO, which represents the r0-as-0 use. This has the side benefit of making the existing target code simpler (and easier to understand), and will make it clear to the register allocator that uses of r0 as 0 don't conflict will real uses of the r0 register. Once the CR spilling code is improved, we'll be able to allocate r0. Adding these extra register classes, for some reason unclear to me, causes requests to the target to copy 32-bit registers to 64-bit registers. The resulting code seems correct (and causes no test-suite failures), and the new test case covers this new kind of asymmetric copy. As r0 is still reserved, no functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177423 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.td
|
ec2e968b7a60a4b48bbb315f8dd6e96e51c31691 |
19-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPC64 unaligned i64 load/store Remove an accidentally-added instruction definition and add a comment in the test case. This is in response to a post-commit review by Bill Schmidt. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177404 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
54e57f8cb79bdc23ed8289cf2a558fa7c9602972 |
19-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Don't reserve R31 on PPC64 unless the frame pointer is needed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177379 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
9f2518cdc6321d8cfb16973654df2996bad8ad78 |
19-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix a sign-extension bug in PPCCTRLoops Don't sign extend the immediate value from the OR instruction in an LIS/OR pair. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177361 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
08a215c2869a89b977754334943681a56f5fc460 |
19-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix PPC unaligned 64-bit loads and stores PPC64 supports unaligned loads and stores of 64-bit values, but in order to use the r+i forms, the offset must be a multiple of 4. Unfortunately, this cannot always be determined by examining the immediate itself because it might be available only via a TOC entry. In order to get around this issue, we additionally predicate the selection of the r+i form on the alignment of the load or store (forcing it to be at least 4 in order to select the r+i form). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177338 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
e39b107c468affd0aafa719edce67717cbb4bbec |
18-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix 80-col. violations in PPCCTRLoops git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177296 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
9887ec31e630ede8541dee1d90c44a1efb63c417 |
18-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Fix large count and negative constant count handling in PPCCTRLoops This commit fixes an assert that would occur on loops with large constant counts (like looping for ((uint32_t) -1) iterations on PPC64). The existing code did not handle counts that it computed to be negative (asserting instead), but these can be created with valid inputs. This bug was discovered by bugpoint while I was attempting to isolate a completely different problem. Also, in writing test cases for the negative-count problem, I discovered that the ori/lsi handling was broken (there was a typo which caused the logic that was supposed to detect these pairs and extract the iteration count to always fail). This has now also been corrected (and is covered by one of the new test cases). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177295 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
1448d06156728712f47e5a71fac8e8edc0aba73b |
18-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup initial-value constants in PPCCTRLoops Because the initial-value constants had not been added to the list of instructions considered for DCE the resulting code had redundant constant-materialization instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177294 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
53856be683113838cc112331adca3717d4a520cc |
17-Mar-2013 |
Sylvestre Ledru <sylvestre@debian.org> |
To avoid symbol clash, undefine PPC here. PPC may be predefined on some hosts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177234 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCTargetDesc.h
CTargetDesc/PPCPredicates.h
|
324972904353594ad4a0cdfc79370f85e9fb9c8f |
17-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Improve PPC VR (Altivec) register spilling This change cleans up two issues with Altivec register spilling: 1. The spilling code was inefficient (using two instructions, and add and a load, when just one would do) 2. The code assumed that r0 would always be available (true for now, but this will change) The new code handles VR spilling just like GPR spills but forced into r+r mode. As a result, when any VR spills are present, we must now always allocate the register-scavenger spill slot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177231 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
|
ce638c8248355452cb7892c9c27807a92176a7b2 |
16-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Remove PPC avoidWriteAfterWrite callback As a follow-up to r158719, remove PPCRegisterInfo::avoidWriteAfterWrite. Jakob pointed out in response to r158719 that this callback is currently unused and so this has no effect (and the speedups that I thought that I had observed as a result of implementing this function must have been noise). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177228 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
2d37f7b979a24930c444f9783173a90a6e548118 |
15-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Enable unaligned memory access on PPC for scalar types Unaligned access is supported on PPC for non-vector types, and is generally more efficient than manually expanding the loads and stores. A few of the existing test cases were using expanded unaligned loads and stores to test other features (like load/store with update), and for these test cases, unaligned access remains disabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177160 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
044f841267139c25240d93d5bf6b862d473cefd5 |
15-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Protect PPC Altivec patterns with a predicate In preparation for the addition of other SIMD ISA extensions (such as QPX) we need to make sure that all Altivec patterns are properly predicated on having Altivec support. No functionality change intended (one test case needed to be updated b/c it assumed that Altivec intrinsics would be supported without enabling Altivec support). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177152 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
0cfb42adb5072fb19a01dba3ea58a33fd5927947 |
15-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Allocate the RS spill slot for any PPC function with spills and a large stack frame For spills into a large stack frame, the FI-elimination code uses the register scavenger to obtain a free GPR for use with an r+r-addressed load or store. When there are no available GPRs, the scavenger gets one by using its spill slot. Previously, we were not always allocating that spill slot and the RS would assert when the spill slot was needed. I don't currently have a small test that triggered the assert, but I've created a small regression test that verifies that the spill slot is now added when the stack frame is sufficiently large. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177140 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCFrameLowering.h
PCInstrInfo.cpp
PCMachineFunctionInfo.h
|
3080d23fde4981835d8a7faf46c152441fadb11f |
14-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Provide the register scavenger to processFunctionBeforeFrameFinalized Add the current PEI register scavenger as a parameter to the processFunctionBeforeFrameFinalized callback. This change is necessary in order to allow the PowerPC target code to set the register scavenger frame index after the save-area offset adjustments performed by processFunctionBeforeFrameFinalized. Only after these adjustments have been made is it possible to estimate the size of the stack frame. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177108 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCFrameLowering.h
|
1c6c61a6089fb2bef47de5ee9a5f4acc34047600 |
14-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Use frame-index scavenging for PPC register spilling Make requiresFrameIndexScavenging return true, and create virtual registers in the spilling code instead of using the register scavenger directly. This makes the target-level code simpler, and importantly, delays the scavenging until after callee-saved register processing (which will be important for later changes). Also cleans up trackLivenessAfterRegAlloc (makes it inline in the header with the other related functions). This makes it clear that it always returns true. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177107 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
100a94bc93dcf9af99eba169599ce950faf0df7e |
14-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Not all PPC functions with a frame pointer need a RS spill slot We used to add a spill slot for the register scavenger whenever the function has a frame pointer. This is unnecessarily conservative: We may need the spill slot for dynamic stack allocations, and functions with dynamic stack allocations always have a FP, but we might also have a FP for other reasons (such as the user explicitly disabling frame-pointer elimination), and we don't necessarily need a spill slot for those functions. The structsinregs test needed adjustment because it disables FP elimination. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177106 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
6bc99603c0f4fdd15d734851a4343b768f4725a4 |
14-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add a comment about overlapping PPC frame offsets I don't think that it is otherwise clear how the overlapping offsets are processed into distinct spill slots. Comment that this is done in processFunctionBeforeFrameFinalized. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177094 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.h
|
4d53e7798c94143a22a9871261b8443592b929d5 |
12-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Don't reserve R2 on Darwin/PPC Now that only the register-scavenger version of the CR spilling code remains, we no longer need the Darwin R2 hack. Darwin can use R0 as a spare register in any case where the System V ABI uses it (R0 is special architecturally, and so is reserved under all common ABIs). A few test cases needed to be updated to reflect the register-allocation changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176868 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
7285e8d98c9a44b7efe792462188cfe713dd9641 |
12-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC should always use the register scavenger for CR spilling This removes the -disable-ppc[32|64]-regscavenger options; the code that uses the register scavenger has been working well (and has been the default) for some time, and we don't need options to enable the old (broken) CR spilling code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176865 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
3853f74aba301ef08b699bac2fa8e53230714a58 |
07-Mar-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
ArrayRefize some code. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176648 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a6b20ced765b67a85d9219d0c8547fc9c133e14f |
01-Mar-2013 |
Michael Liao <michael.liao@intel.com> |
Fix PR10475 - ISD::SHL/SRL/SRA must have either both scalar or both vector operands but TLI.getShiftAmountTy() so far only return scalar type. As a result, backend logic assuming that breaks. - Rename the original TLI.getShiftAmountTy() to TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to return target-specificed scalar type or the same vector type as the 1st operand. - Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176364 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
65396823305326bcb379e88a95ded318e1da875c |
26-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix PR15332 (patch by Florian Zeitz). There's no need to generate a stack frame for PPC32 SVR4 when there are no local variables assigned to the stack, i.e., when no red zone is needed. (PPC64 supports a red zone, but PPC32 does not.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176124 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
fc7695a653323071ec141aee994e4188592ad1f5 |
25-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix missing relocation for TLS addressing peephole optimization. Report and fix due to Kai Nacke. Testcase update by me. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176029 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
4edd84da1b3f7fd73e96a13b6b7e183ad04ac7c4 |
24-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix PR14364. This removes a const_cast hack from PPCRegisterInfo::hasReservedSpillSlot(). The proper place to save the frame index for the CR spill slot is in the PPCFunctionInfo object, not the PPCRegisterInfo object. No new test cases, as this just reimplements existing function. Existing tests such as test/CodeGen/PowerPC/crsave.ll are sufficient. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175998 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
700ed80d3da5e98e05ceb90e9bfb66058581a6db |
21-Feb-2013 |
Eli Bendersky <eliben@google.com> |
Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo to TargetFrameLowering, where it belongs. Incidentally, this allows us to delete some duplicated (and slightly different!) code in TRI. There are potentially other layering problems that can be cleaned up as a result, or in a similar manner. The refactoring was OK'd by Anton Korobeynikov on llvmdev. Note: this touches the target interfaces, so out-of-tree targets may be affected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175788 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCFrameLowering.h
PCISelLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
399eafb580f824d6df2d7392e1bc3e25ecb39f32 |
21-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Trivial cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175771 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
53b0b0e75480121e4e01a7a76e17909e92b1762a |
21-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Large code model support for PowerPC. Large code model is identical to medium code model except that the addis/addi sequence for "local" accesses is never used. All accesses use the addis/ld sequence. The coding changes are straightforward; most of the patch is taken up with creating variants of the medium model tests for large model. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175767 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
0514595b9b20c9d807a3e31ba6bc270fb6c3f9e7 |
21-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Code review cleanup for r175697 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175739 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
421021157eda12453b4fea7ea853d8c472bd8532 |
21-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
PPCDAGToDAGISel::PostprocessISelDAG() This patch implements the PPCDAGToDAGISel::PostprocessISelDAG virtual method to perform post-selection peephole optimizations on the DAG representation. One optimization is implemented here: folds to clean up complex addressing expressions for thread-local storage and medium code model. It will also be useful for large code model sequences when those are added later. I originally thought about doing this on the MI representation prior to register assignment, but it's difficult to do effective global dead code elimination at that point. DCE is trivial on the DAG representation. A typical example of a candidate code sequence in assembly: addis 3, 2, globalvar@toc@ha addi 3, 3, globalvar@toc@l lwz 5, 0(3) When the final instruction is a load or store with an immediate offset of zero, the offset from the add-immediate can replace the zero, provided the relocation information is carried along: addis 3, 2, globalvar@toc@ha lwz 5, globalvar@toc@l(3) Since the addi can in general have multiple uses, we need to only delete the instruction when the last use is removed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175697 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
06ab2c828a5605abec36eb0d6749940fa6eb7391 |
21-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Relocation enablement for PPC DAG postprocessing pass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175693 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
PC.h
PCInstrInfo.td
PCMCInstLower.cpp
|
3450f800aa65c91f0496816ba6061a422a74c1fe |
20-Feb-2013 |
Jim Grosbach <grosbach@apple.com> |
Update TargetLowering ivars for name policy. http://llvm.org/docs/CodingStandards.html#name-types-functions-variables-and-enumerators-properly ivars should be camel-case and start with an upper-case letter. A few in TargetLowering were starting with a lower-case letter. No functional change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175667 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
abc402886e407e21d845cccc15723cffd6e2dc20 |
20-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Additional fixes for bug 15155. This handles the cases where the 6-bit splat element is odd, converting to a three-instruction sequence to add or subtract two splats. With this fix, the XFAIL in test/CodeGen/PowerPC/vec_constants.ll is removed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175663 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
49deebb5ebcde502fa7908362a5c000e7adbb359 |
20-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix bug 14779 for passing anonymous aggregates [patch by Kai Nacke]. The PPC backend doesn't handle these correctly. This patch uses logic similar to that in the X86 and ARM backends to track these arguments properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175635 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b34c79e4bbe5accbb54d0291e8bef5d2bfef32e4 |
20-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Fix PR15155: lost vadd/vsplat optimization. During lowering of a BUILD_VECTOR, we look for opportunities to use a vector splat. When the splatted value fits in 5 signed bits, a single splat does the job. When it doesn't fit in 5 bits but does fit in 6, and is an even value, we can splat on half the value and add the result to itself. This last optimization hasn't been working recently because of improved constant folding. To circumvent this, create a pseudo VADD_SPLAT that can be expanded during instruction selection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175632 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
59d580c8d664448f01ea5652ea51b90e0b7e84f6 |
20-Feb-2013 |
Jakub Staszak <kubastaszak@gmail.com> |
Add missing #include. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175583 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCInstLower.cpp
|
a79cbb12324db93236e06cc820f0e36ea1f7e4c4 |
17-Feb-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
Make the visibility of LLVMPPCCompilationCallback work with GCC. GCC warns about the attribute being ignored if it occurs after void*. There seems to be some kind of incompatibility between clang and gcc here, but I can't fathom who's right. void* LLVM_LIBRARY_VISIBILITY foo(); // clang: hidden, gcc: default LLVM_LIBRARY_VISIBILITY void *bar(); // clang: hidden, gcc: hidden void LLVM_LIBRARY_VISIBILITY qux(); // clang: hidden, gcc: hidden git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175394 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
8a8a2dcae054a7b4dfea360b9b88e6be53fda40f |
15-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Give these callbacks hidden visibility. It is better to not export them more than we need to and some ELF linkers complain about directly accessing symbols with default visibility. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175268 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
9fa05f98e0e8410bc8c5e4000e0d47880f8b37c4 |
15-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Don't make assumptions about the mangling of static functions in extern "C" blocks. We still don't have consensus if we should try to change clang or the standard, but llvm should work with compilers that implement the current standard and mangle those functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175267 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
bf7ac42663e087b2effc6b9428eddab3b2475073 |
14-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Revert r175120 and r175121. Clang is producing the expected asm names again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175133 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
382a5530ec0682d8dd17f7d9212f52ace38460ed |
14-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Don't asume that a static function in an extern "C" block will not be mangled. Since functions with internal linkage don't have language linkage, it is valid to overload them: extern "C" { static int foo(); static int foo(int); } So we mangle them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175120 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
96848dfc465c8c7f156a562c246803ebefcf21cf |
13-Feb-2013 |
Krzysztof Parzyszek <kparzysz@codeaurora.org> |
Add registration for PPC-specific passes to allow the IR to be dumped via -print-after-all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175058 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCTRLoops.cpp
PCISelDAGToDAG.cpp
|
0f58dbae4ab2397dc310e19d171a4bc60fc6c9a7 |
08-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Refine fix to bug 15041. Thanks to help from Nadav and Hal, I have a more reasonable (and even correct!) approach. This specifically penalizes the insertelement and extractelement operations for the performance hit that will occur on PowerPC processors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174725 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetTransformInfo.cpp
|
8f7dc823bfda3efede14a3cf9c294a2da3ad8777 |
07-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Constrain PowerPC autovectorization to fix bug 15041. Certain vector operations don't vectorize well with the current PowerPC implementation. Element insert/extract performs poorly without VSX support because Altivec requires going through memory. SREM, UREM, and VSELECT all produce bad scalar code. There's a lot of work to do for the cost model before autovectorization will be tuned well, and this is not an attempt to address the larger problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174660 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetTransformInfo.cpp
|
212af6af024ca358ed109c7b1c3a6b1fd30fd71b |
06-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
PPC calling convention cleanup. Most of PPCCallingConv.td is used only by the 32-bit SVR4 ABI. Rename things to clarify this. Also delete some code that's been commented out for a long time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174526 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelLowering.cpp
|
6ab5061a2c01b68c6e47c55d4cfe29b3e3b29963 |
05-Feb-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Move MRI liveouts to PowerPC return instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174409 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0a9d1d31e9b3239b1dc38a67d31810c4bb405d0a |
05-Feb-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Avoid using MRI::liveout_iterator for computing VRSAVEs. The liveout lists are about to be removed from MRI, this is the only place they were used after register allocation. Get the live out V registers directly from the return instructions instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174399 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
0d3731478e6242cceae7c006a071b8b17f7fd298 |
04-Feb-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
Disable a couple more vector splat optimizations on PPC. I didn't see those because the test case used "not grep". FileCheck the test and XFAIL it, preserving the old optimization, so this can be fixed eventually. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174330 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4969310052f45b1e2e5d21735e38641a20be0e21 |
04-Feb-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
SelectionDAG: Teach FoldConstantArithmetic how to deal with vectors. This required disabling a PowerPC optimization that did the following: input: x = BUILD_VECTOR <i32 16, i32 16, i32 16, i32 16> lowered to: tmp = BUILD_VECTOR <i32 8, i32 8, i32 8, i32 8> x = ADD tmp, tmp The add now gets folded immediately and we're back at the BUILD_VECTOR we started from. I don't see a way to fix this currently so I left it disabled for now. Fix some trivially foldable X86 tests too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174325 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
87b1a453f08fd0d56a074d2d665f779232a6cac0 |
04-Feb-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCDarwinAsmPrinter::EmitStartOfAsmFile(): Add checking range in CPUDirectives[]. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174298 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b516e9b64850e0e1a50f680fd1443ac12e56557b |
04-Feb-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCDarwinAsmPrinter::EmitStartOfAsmFile(): Add possible elements in CPUDirectives[]. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174297 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
dbc86b98f2acd459ab3270cd8500afd32eba7b09 |
02-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Add notes about future PowerPC features git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174232 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
cdc3b74cfb8a1fb3d053106cd8843a39fbb5e2e5 |
01-Feb-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
LLVM enablement for some older PowerPC CPUs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174230 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCSubtarget.h
|
108fb3202af6f500073cdbb7be32c25d7a273a2e |
31-Jan-2013 |
Chad Rosier <mcrosier@apple.com> |
[PEI] Pass the frame index operand number to the eliminateFrameIndex function. Each target implementation was needlessly recomputing the index. Part of rdar://13076458 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174083 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
9a79b320cb7f179118e69427bc684f2232a24bd9 |
31-Jan-2013 |
Hal Finkel <hfinkel@anl.gov> |
PPC QPX requires a 32-byte aligned stack On systems which support the QPX vector instructions, the stack must be 32-byte aligned. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173993 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.h
PCSubtarget.cpp
|
f9cd7738a3966986dd50db56d8a74952b3016cc0 |
30-Jan-2013 |
Hal Finkel <hfinkel@anl.gov> |
Initialize hasQPX in PPCSubtarget This should have gone in with r173973. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173984 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
5bb16fdbb363abee2b9495116ff1a97568460cae |
30-Jan-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add definitions for the PPC a2q core marked as having QPX available This is the first commit of a large series which will add support for the QPX vector instruction set to the PowerPC backend. This instruction set is used on the IBM Blue Gene/Q supercomputers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173973 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCSubtarget.h
|
8688a58c53b46d2dda9bf50dafd5195790a7ed58 |
29-Jan-2013 |
Evan Cheng <evan.cheng@apple.com> |
Teach SDISel to combine fsin / fcos into a fsincos node if the following conditions are met: 1. They share the same operand and are in the same BB. 2. Both outputs are used. 3. The target has a native instruction that maps to ISD::FSINCOS node or the target provides a sincos library call. Implemented the generic optimization in sdisel and enabled it for Mac OSX. Also added an additional optimization for x86_64 Mac OSX by using an alternative entry point __sincos_stret which returns the two results in xmm0 / xmm1. rdar://13087969 PR13204 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173755 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d3427d3f4094767884f3eafdef3d60c7f5038197 |
29-Jan-2013 |
Hal Finkel <hfinkel@anl.gov> |
Add isBGQ method to PPCSubtarget This function will be used in future commits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173729 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
395210d15b323aa620059fe362e0f8e5eacc0b05 |
26-Jan-2013 |
Dmitri Gribenko <gribozavr@gmail.com> |
Remove unused variables, silences -Wunused-variable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173526 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetTransformInfo.cpp
|
a8b289b70d5ef416608bb71a874b8b4fe80158e1 |
26-Jan-2013 |
Hal Finkel <hfinkel@anl.gov> |
Initial implementation of PPCTargetTransformInfo This provides a place to add customized operation cost information and control some other target-specific IR-level transformations. The only non-trivial logic in this checkin assigns a higher cost to unaligned loads and stores (covered by the included test case). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173520 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
PCTargetTransformInfo.cpp
|
5928deaf2021b8fd6defa7138e15dc455e492316 |
25-Jan-2013 |
Hal Finkel <hfinkel@anl.gov> |
More cleanup of PPC register definitions. Uses the new !add TableGen operator to do more cleanup of the PPC register definitions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173446 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
78e10573710a2f2623dfd5a2cc66855814b7371f |
24-Jan-2013 |
Hal Finkel <hfinkel@anl.gov> |
Start cleanup of PPC register definitions using foreach loops. No functionality change intended. This captures the first two cases GPR32/64. For the others, we need an addition operator (if we have one, I've not yet found it). Based on a suggestion made by Tom Stellard in the AArch64 review! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173366 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
e807d1ea1e05fea895ba90dd4da8c91026ba1f29 |
23-Jan-2013 |
Eli Bendersky <eliben@google.com> |
Fix powerpc test failure - forgot to initialize stack slot size for PPCLinuxMCAsmInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173275 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
e752feee5228bfa33acee35ef9c606ce12f0f173 |
23-Jan-2013 |
Eli Bendersky <eliben@google.com> |
Clean up assignment of CalleeSaveStackSlotSize: get rid of the default and explicitly set this in every target that needs to change it from the default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173270 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
90230c84668269fbd53d163e398cd16486d5d414 |
19-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Sort all of the includes. Several files got checked in with mis-sorted includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172891 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
8f4ee4b2a2d2aa682643ee16da86195c804686a6 |
17-Jan-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch fixes PR13626 by providing i128 support in the return calling convention. 128-bit integers are now properly returned in GPR3 and GPR4 on PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172745 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
|
792b1233384da442e6c75cf580bd1927123a56f3 |
17-Jan-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch fixes the PPC calling convention to handle returns of _Complex float and _Complex long double, by simply increasing the number of floating point registers available for return values. The test case verifies that the correct registers are loaded. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172733 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
|
a1db5de9e70dd8ffda57b1a4373915ea866b6f1d |
09-Jan-2013 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: EH adjustments This patch adjust the r171506 to make all DWARF enconding pc-relative for PPC64. It also adds the R_PPC64_REL32 relocation handling in MCJIT (since the eh_frame will not generate PIC-relative relocation) and also adds the emission of stubs created by the TTypeEncoding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171979 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
68ca56285f9b6e82eb16ff8ea02a301f2c489fae |
09-Jan-2013 |
Eric Christopher <echristo@gmail.com> |
These functions have default arguments of 0 for the last arg. Use them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171933 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
251040bc18eedfa56d01fe92836e55cfd8c5d990 |
08-Jan-2013 |
Eli Bendersky <eliben@google.com> |
Renamed MCInstFragment to MCRelaxableFragment and added some comments. No change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171822 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
5b7f9216c357f1cdf507f300f396b44cb982eb3f |
07-Jan-2013 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch addresses bug 14678 by fixing two problems in medium code model code generation. Variables addressed through a GlobalAlias were not being handled, and variables with available_externally linkage were treated incorrectly. The patch contains two new tests to verify the correct code generation for these cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171778 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
|
aeef83c6afa1e18d1cf9d359cc678ca0ad556175 |
07-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Switch TargetTransformInfo from an immutable analysis pass that requires a TargetMachine to construct (and thus isn't always available), to an analysis group that supports layered implementations much like AliasAnalysis does. This is a pretty massive change, with a few parts that I was unable to easily separate (sorry), so I'll walk through it. The first step of this conversion was to make TargetTransformInfo an analysis group, and to sink the nonce implementations in ScalarTargetTransformInfo and VectorTargetTranformInfo into a NoTargetTransformInfo pass. This allows other passes to add a hard requirement on TTI, and assume they will always get at least on implementation. The TargetTransformInfo analysis group leverages the delegation chaining trick that AliasAnalysis uses, where the base class for the analysis group delegates to the previous analysis *pass*, allowing all but tho NoFoo analysis passes to only implement the parts of the interfaces they support. It also introduces a new trick where each pass in the group retains a pointer to the top-most pass that has been initialized. This allows passes to implement one API in terms of another API and benefit when some other pass above them in the stack has more precise results for the second API. The second step of this conversion is to create a pass that implements the TargetTransformInfo analysis using the target-independent abstractions in the code generator. This replaces the ScalarTargetTransformImpl and VectorTargetTransformImpl classes in lib/Target with a single pass in lib/CodeGen called BasicTargetTransformInfo. This class actually provides most of the TTI functionality, basing it upon the TargetLowering abstraction and other information in the target independent code generator. The third step of the conversion adds support to all TargetMachines to register custom analysis passes. This allows building those passes with access to TargetLowering or other target-specific classes, and it also allows each target to customize the set of analysis passes desired in the pass manager. The baseline LLVMTargetMachine implements this interface to add the BasicTTI pass to the pass manager, and all of the tools that want to support target-aware TTI passes call this routine on whatever target machine they end up with to add the appropriate passes. The fourth step of the conversion created target-specific TTI analysis passes for the X86 and ARM backends. These passes contain the custom logic that was previously in their extensions of the ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces. I separated them into their own file, as now all of the interface bits are private and they just expose a function to create the pass itself. Then I extended these target machines to set up a custom set of analysis passes, first adding BasicTTI as a fallback, and then adding their customized TTI implementations. The fourth step required logic that was shared between the target independent layer and the specific targets to move to a different interface, as they no longer derive from each other. As a consequence, a helper functions were added to TargetLowering representing the common logic needed both in the target implementation and the codegen implementation of the TTI pass. While technically this is the only change that could have been committed separately, it would have been a nightmare to extract. The final step of the conversion was just to delete all the old boilerplate. This got rid of the ScalarTargetTransformInfo and VectorTargetTransformInfo classes, all of the support in all of the targets for producing instances of them, and all of the support in the tools for manually constructing a pass based around them. Now that TTI is a relatively normal analysis group, two things become straightforward. First, we can sink it into lib/Analysis which is a more natural layer for it to live. Second, clients of this interface can depend on it *always* being available which will simplify their code and behavior. These (and other) simplifications will follow in subsequent commits, this one is clearly big enough. Finally, I'm very aware that much of the comments and documentation needs to be updated. As soon as I had this working, and plausibly well commented, I wanted to get it committed and in front of the build bots. I'll be doing a few passes over documentation later if it sticks. Commits to update DragonEgg and Clang will be made presently. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171681 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
7b449889e7886b263718b5103538970f287bc37e |
04-Jan-2013 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: Fix eh_frame relocation for PIC This patch fixes the PPC eh_frame definitions for the personality and frame unwinding for PIC objects. It makes PIC build correctly creates relative relocations in the '.rela.eh_frame' segments and thus avoiding a text relocation that generates a DT_TEXTREL segments in link phase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171506 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
0b8c9a80f20772c3793201ab5b251d3520b9cea3 |
02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCTRLoops.cpp
PCCodeEmitter.cpp
PCFrameLowering.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCJITInfo.cpp
PCRegisterInfo.cpp
PCSubtarget.cpp
PCTargetMachine.h
argetInfo/PowerPCTargetInfo.cpp
|
831737d329a727f53a1fb0572f7b7a8127208881 |
30-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the Function::getFnAttributes method in favor of using the AttributeSet directly. This is in preparation for removing the use of the 'Attribute' class as a collection of attributes. That will shift to the AttributeSet class instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171253 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelLowering.cpp
PCRegisterInfo.cpp
|
cd9ea5198660a80c9c28c6471b0983bb450ca8cb |
25-Dec-2012 |
Hal Finkel <hfinkel@anl.gov> |
Expand PPC64 atomic load and store Use of store or load with the atomic specifier on 64-bit types would cause instruction-selection failures. As with the 32-bit case, these can use the default expansion in terms of cmp-and-swap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171072 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
399532b25a939d8c653fd453137bb8e01dc4b8fc |
20-Dec-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
Undefine PPC harder. This was causing a build failure while trying to build on ppc ubuntu 12.10 with cmake. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170668 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.h
CTargetDesc/PPCPredicates.h
|
91223a41ef0f5b469b1230919cba9012beb6f321 |
19-Dec-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
PowerPC: Expand VSELECT nodes. There's probably a better expansion for those nodes than the default for altivec, but this is better than crashing. VSELECTs occur in loop vectorizer output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170551 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
034b94b17006f51722886b0f2283fb6fb19aca1f |
19-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelLowering.cpp
PCRegisterInfo.cpp
|
d3eb4f46f011f5880e09862559c17f03e38bef39 |
14-Dec-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch removes some nondeterminism from direct object file output for TLS dynamic models on 64-bit PowerPC ELF. The default sort routine for relocations only sorts on the r_offset field; but with TLS, there can be two relocations with the same r_offset. For PowerPC, this patch sorts secondarily on descending r_type, which matches the behavior expected by the linker. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170237 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
b453e16855f347e300f1dc0cd0dfbdd65c27b0d2 |
14-Dec-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch improves the 64-bit PowerPC InitialExec TLS support by providing for a wider range of GOT entries that can hold thread-relative offsets. This matches the behavior of GCC, which was not documented in the PPC64 TLS ABI. The ABI will be updated with the new code sequence. Former sequence: ld 9,x@got@tprel(2) add 9,9,x@tls New sequence: addis 9,2,x@got@tprel@ha ld 9,x@got@tprel@l(9) add 9,9,x@tls Note that a linker optimization exists to transform the new sequence into the shorter sequence when appropriate, by replacing the addis with a nop and modifying the base register and relocation type of the ld. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170209 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
1e18b861920ad2fd1a63e006cac61a4e274e5fdf |
13-Dec-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This is another cleanup patch for 64-bit PowerPC TLS processing. I had some hackery in place that hid my poor use of TblGen, which I've now sorted out and cleaned up. No change in observable behavior, so no new test cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170149 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
|
dfebc4cc4c267f797e823b781d73586cc6fc49c5 |
13-Dec-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This is just a clean-up patch that simplifies the initial-exec TLS logic by avoiding use of machine operand flags. No change in observable behavior, so no new test cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170141 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelLowering.cpp
PCInstr64Bit.td
PCMCInstLower.cpp
|
349c2787cf9e174c8aa955bf8e3b09a405b2aece |
12-Dec-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch implements local-dynamic TLS model support for the 64-bit PowerPC target. This is the last of the four models, so we now have full TLS support. This is mostly a straightforward extension of the general dynamic model. I had to use an additional Chain operand to tie ADDIS_DTPREL_HA to the register copy following ADDI_TLSLD_L; otherwise everything above the ADDIS_DTPREL_HA appeared dead and was removed. As before, there are new test cases to test the assembly generation, and the relocations output during integrated assembly. The expected code gen sequence can be read in test/CodeGen/PowerPC/tls-ld.ll. There are a couple of things I think can be done more efficiently in the overall TLS code, so there will likely be a clean-up patch forthcoming; but for now I want to be sure the functionality is in place. Bill git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170003 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
946a3a9f22c967d5432eaab5fa464b91343477cd |
12-Dec-2012 |
Evan Cheng <evan.cheng@apple.com> |
Sorry about the churn. One more change to getOptimalMemOpType() hook. Did I mention the inline memcpy / memset expansion code is a mess? This patch split the ZeroOrLdSrc argument into two: IsMemset and ZeroMemset. The first indicates whether it is expanding a memset or a memcpy / memmove. The later is whether the memset is a memset of zero. It's totally possible (likely even) that targets may want to do different things for memcpy and memset of zero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169959 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
7d34267df63e23be1957f738de783c145febb7af |
12-Dec-2012 |
Evan Cheng <evan.cheng@apple.com> |
- Rename isLegalMemOpType to isSafeMemOpType. "Legal" is a very overloade term. Also added more comments to explain why it is generally ok to return true. - Rename getOptimalMemOpType argument IsZeroVal to ZeroOrLdSrc. It's meant to be true for loaded source (memcpy) or zero constants (memset). The poor name choice is probably some kind of legacy issue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169954 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
57ac1f458a754f30cf500410b438fb260f9b8fe5 |
11-Dec-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch implements the general dynamic TLS model for 64-bit PowerPC. Given a thread-local symbol x with global-dynamic access, the generated code to obtain x's address is: Instruction Relocation Symbol addis ra,r2,x@got@tlsgd@ha R_PPC64_GOT_TLSGD16_HA x addi r3,ra,x@got@tlsgd@l R_PPC64_GOT_TLSGD16_L x bl __tls_get_addr(x@tlsgd) R_PPC64_TLSGD x R_PPC64_REL24 __tls_get_addr nop <use address in r3> The implementation borrows from the medium code model work for introducing special forms of ADDIS and ADDI into the DAG representation. This is made slightly more complicated by having to introduce a call to the external function __tls_get_addr. Using the full call machinery is overkill and, more importantly, makes it difficult to add a special relocation. So I've introduced another opcode GET_TLS_ADDR to represent the function call, and surrounded it with register copies to set up the parameter and return value. Most of the code is pretty straightforward. I ran into one peculiarity when I introduced a new PPC opcode BL8_NOP_ELF_TLSGD, which is just like BL8_NOP_ELF except that it takes another parameter to represent the symbol ("x" above) that requires a relocation on the call. Something in the TblGen machinery causes BL8_NOP_ELF and BL8_NOP_ELF_TLSGD to be treated identically during the emit phase, so this second operand was never visited to generate relocations. This is the reason for the slightly messy workaround in PPCMCCodeEmitter.cpp:getDirectBrEncoding(). Two new tests are included to demonstrate correct external assembly and correct generation of relocations using the integrated assembler. Comments welcome! Thanks, Bill git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169910 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
d7802bf0ddcac16ee910105922492aee86a53e1b |
04-Dec-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch introduces initial-exec model support for thread-local storage on 64-bit PowerPC ELF. The patch includes code to handle external assembly and MC output with the integrated assembler. It intentionally does not support the "old" JIT. For the initial-exec TLS model, the ABI requires the following to calculate the address of external thread-local variable x: Code sequence Relocation Symbol ld 9,x@got@tprel(2) R_PPC64_GOT_TPREL16_DS x add 9,9,x@tls R_PPC64_TLS x The register 9 is arbitrary here. The linker will replace x@got@tprel with the offset relative to the thread pointer to the generated GOT entry for symbol x. It will replace x@tls with the thread-pointer register (13). The two test cases verify correct assembly output and relocation output as just described. PowerPC-specific selection node variants are added for the two instructions above: LD_GOT_TPREL and ADD_TLS. These are inserted when an initial-exec global variable is encountered by PPCTargetLowering::LowerGlobalTLSAddress(), and later lowered to machine instructions LDgotTPREL and ADD8TLS. LDgotTPREL is a pseudo that uses the same LDrs support added for medium code model's LDtocL, with a different relocation type. The rest of the processing is straightforward. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169281 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
PC.h
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCMCInstLower.cpp
|
a1514e24cc24b050f53a12650e047799358833a1 |
04-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Sort includes for all of the .h files under the 'lib' tree. These were missed in the first pass because the script didn't yet handle include guards. Note that the script is now able to handle all of these headers without manual edits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169224 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.h
PCISelLowering.h
PCJITInfo.h
PCSubtarget.h
PCTargetMachine.h
|
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f |
03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib. Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCCodeEmitter.cpp
CTargetDesc/PPCMCTargetDesc.cpp
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCTRLoops.cpp
PCCodeEmitter.cpp
PCFrameLowering.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCJITInfo.cpp
PCMCInstLower.cpp
PCRegisterInfo.cpp
PCSubtarget.cpp
PCTargetMachine.cpp
|
375cbe414329ebade5b50cf3648611af58ae9de7 |
30-Nov-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
This patch fixes the Altivec addend construction for the fused multiply-add instruction (vmaddfp) to conform with IEEE to ensure the sign of a zero result when resulting product is -0.0. The -0.0 vector addend to vmaddfp is generated by a creating a vector with full bits sets and then shifting each elements by 31-bits to the left, resulting in a vector of 0x80000000 (or -0.0 as float). The 'buildvec_canonicalize.ll' was adjusted to reflect this change and the 'vec_mul.ll' was complemented with the float vector multiplication test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168998 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
781dfbd482c5177215ae7a43c9483e641eeb0d47 |
28-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Fix initial frame state on powerpc64. The createPPCMCAsmInfo routine used PPC::R1 as the initial frame pointer register, but on PPC64 the 32-bit R1 register does not have a corresponding DWARF number, causing invalid CIE initial frame state to be emitted. Fix by using PPC::X1 instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168799 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
a9fa4fd9736f7d1066223f32fa54efbe86c0fceb |
28-Nov-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove all references to TargetInstrInfoImpl. This class has been merged into its super-class TargetInstrInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168760 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
daa65f5e08e19b1fac5f476cef45223b1b4e5a8e |
28-Nov-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch makes medium code model the default for 64-bit PowerPC ELF. When the CodeGenInfo is to be created for the PPC64 target machine, a default code-model selection is converted to CodeModel::Medium provided we are not targeting the Darwin OS. Defaults for Darwin are unaffected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168747 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
34a9d4b3b9b7858b729a1af67afa721c048fe5e7 |
27-Nov-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch implements medium code model support for 64-bit PowerPC. The default for 64-bit PowerPC is small code model, in which TOC entries must be addressable using a 16-bit offset from the TOC pointer. Additionally, only TOC entries are addressed via the TOC pointer. With medium code model, TOC entries and data sections can all be addressed via the TOC pointer using a 32-bit offset. Cooperation with the linker allows 16-bit offsets to be used when these are sufficient, reducing the number of extra instructions that need to be executed. Medium code model also does not generate explicit TOC entries in ".section toc" for variables that are wholly internal to the compilation unit. Consider a load of an external 4-byte integer. With small code model, the compiler generates: ld 3, .LC1@toc(2) lwz 4, 0(3) .section .toc,"aw",@progbits .LC1: .tc ei[TC],ei With medium model, it instead generates: addis 3, 2, .LC1@toc@ha ld 3, .LC1@toc@l(3) lwz 4, 0(3) .section .toc,"aw",@progbits .LC1: .tc ei[TC],ei Here .LC1@toc@ha is a relocation requesting the upper 16 bits of the 32-bit offset of ei's TOC entry from the TOC base pointer. Similarly, .LC1@toc@l is a relocation requesting the lower 16 bits. Note that if the linker determines that ei's TOC entry is within a 16-bit offset of the TOC base pointer, it will replace the "addis" with a "nop", and replace the "ld" with the identical "ld" instruction from the small code model example. Consider next a load of a function-scope static integer. For small code model, the compiler generates: ld 3, .LC1@toc(2) lwz 4, 0(3) .section .toc,"aw",@progbits .LC1: .tc test_fn_static.si[TC],test_fn_static.si .type test_fn_static.si,@object .local test_fn_static.si .comm test_fn_static.si,4,4 For medium code model, the compiler generates: addis 3, 2, test_fn_static.si@toc@ha addi 3, 3, test_fn_static.si@toc@l lwz 4, 0(3) .type test_fn_static.si,@object .local test_fn_static.si .comm test_fn_static.si,4,4 Again, the linker may replace the "addis" with a "nop", calculating only a 16-bit offset when this is sufficient. Note that it would be more efficient for the compiler to generate: addis 3, 2, test_fn_static.si@toc@ha lwz 4, test_fn_static.si@toc@l(3) The current patch does not perform this optimization yet. This will be addressed as a peephole optimization in a later patch. For the moment, the default code model for 64-bit PowerPC will remain the small code model. We plan to eventually change the default to medium code model, which matches current upstream GCC behavior. Note that the different code models are ABI-compatible, so code compiled with different models will be linked and execute correctly. I've tested the regression suite and the application/benchmark test suite in two ways: Once with the patch as submitted here, and once with additional logic to force medium code model as the default. The tests all compile cleanly, with one exception. The mandel-2 application test fails due to an unrelated ABI compatibility with passing complex numbers. It just so happens that small code model was incredibly lucky, in that temporary values in floating-point registers held the expected values needed by the external library routine that was called incorrectly. My current thought is to correct the ABI problems with _Complex before making medium code model the default, to avoid introducing this "regression." Here are a few comments on how the patch works, since the selection code can be difficult to follow: The existing logic for small code model defines three pseudo-instructions: LDtoc for most uses, LDtocJTI for jump table addresses, and LDtocCPT for constant pool addresses. These are expanded by SelectCodeCommon(). The pseudo-instruction approach doesn't work for medium code model, because we need to generate two instructions when we match the same pattern. Instead, new logic in PPCDAGToDAGISel::Select() intercepts the TOC_ENTRY node for medium code model, and generates an ADDIStocHA followed by either a LDtocL or an ADDItocL. These new node types correspond naturally to the sequences described above. The addis/ld sequence is generated for the following cases: * Jump table addresses * Function addresses * External global variables * Tentative definitions of global variables (common linkage) The addis/addi sequence is generated for the following cases: * Constant pool entries * File-scope static global variables * Function-scope static variables Expanding to the two-instruction sequences at select time exposes the instructions to subsequent optimization, particularly scheduling. The rest of the processing occurs at assembly time, in PPCAsmPrinter::EmitInstruction. Each of the instructions is converted to a "real" PowerPC instruction. When a TOC entry needs to be created, this is done here in the same manner as for the existing LDtoc, LDtocJTI, and LDtocCPT pseudo-instructions (I factored out a new routine to handle this). I had originally thought that if a TOC entry was needed for LDtocL or ADDItocL, it would already have been generated for the previous ADDIStocHA. However, at higher optimization levels, the ADDIStocHA may appear in a different block, which may be assembled textually following the block containing the LDtocL or ADDItocL. So it is necessary to include the possibility of creating a new TOC entry for those two instructions. Note that for LDtocL, we generate a new form of LD called LDrs. This allows specifying the @toc@l relocation for the offset field of the LD instruction (i.e., the offset is replaced by a SymbolLo relocation). When the peephole optimization described above is added, we will need to do similar things for all immediate-form load and store operations. The seven "mcm-n.ll" test cases are kept separate because otherwise the intermingling of various TOC entries and so forth makes the tests fragile and hard to understand. The above assumes use of an external assembler. For use of the integrated assembler, new relocations are added and used by PPCELFObjectWriter. Testing is done with "mcm-obj.ll", which tests for proper generation of the various relocations for the same sequences tested with the external assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168708 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
ed9e442cf098663ce213cb16778b44be466b441f |
26-Nov-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Decouple MCInstBuilder from the streamer per Eli's request. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168597 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
391271f3bbcec02e0da26d7c246bfabff5cb4ddf |
26-Nov-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Add MCInstBuilder, a utility class to simplify MCInst creation similar to MachineInstrBuilder. Simplify some repetitive code with it. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168587 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
d3022b894691017169ff0681c6bea18725330cd1 |
24-Nov-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
PPC: Reinstate the fatal error when trying to emit a macho file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168543 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
915558e77559bf76c57031729d244d319fdce3e6 |
24-Nov-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
PPC: MCize most of the darwin PIC emission. The last remaining bit is "bcl 20, 31, AnonSymbol", which I couldn't find the instruction definition for. Only whitespace changes in assembly output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168541 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e8ca482c9734a556f3b66d44ba27e23a1d00b1e0 |
24-Nov-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
PPC: Share applyFixup between ELF and Darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168540 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
8f2dce0cda89a18c65735a62b2059a6d22d9ffd8 |
24-Nov-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
PPC: Simplify code with Twines. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168539 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
48f63be3684213e16fb657e9bb8c37ae02788e90 |
16-Nov-2012 |
Joe Abbey <jabbey@arxan.com> |
Using const cast to alleviate a warning. A PR is being filed to address some code issues here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168185 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
e95ed2b7afbe37f1831cb6d8d46d09ccb5cd6b7f |
15-Nov-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: Lowering floor intrinsic for Altivec This patch lowers the llvm.floor, llvm.ceil, llvm.trunc, and llvm.nearbyint to Altivec instruction when using 4 single-precision float vectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168086 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrAltivec.td
|
44e394cf618e67b74b0ca566c0acefbc3ca16a58 |
15-Nov-2012 |
Craig Topper <craig.topper@gmail.com> |
Make a bunch of floating point operations on vectors Expand so that instruction selection won't fail. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168028 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
490104720db9e1e0eb9cc27e88e2d7288ac27ff0 |
15-Nov-2012 |
Craig Topper <craig.topper@gmail.com> |
Add llvm.ceil, llvm.trunc, llvm.rint, llvm.nearbyint intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168025 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1ab489a42d013151b21655a4c011dc15d6d75eab |
14-Nov-2012 |
Craig Topper <craig.topper@gmail.com> |
Set FFLOOR of vectors to expand to keep intruction selection from failing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167922 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ba6086818d9c5070061f74ac9944666b4312c6f0 |
13-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Add (some) PowerPC TLS relocation types to ELF.h and generate them from PPCELFObjectWriter::getRelocTypeInner as appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167864 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
|
8f887369cbab012e39c3fc80b00ea399509aa24e |
13-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Fix wrong PowerPC instruction opcodes for: - lwaux - lhzux - stbu git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167863 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
4ff09818a945978920e9209a45db98fc6093101b |
13-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Fix wrong PowerPC instruction encodings due to operand field name mismatches in: - AForm_3 (fmul, fmuls) - XFXForm_5 (mtcrf) - XFLForm (mtfsf) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167862 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
18430436cad62d6215e1c07cba2059f6eecb7657 |
13-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Fix instruction encoding for "bd(n)z" on PowerPC, by using a new instruction format BForm_1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167861 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
|
bc40df3f22a026ffce616cbd69ddb28148b82aad |
13-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Fix instruction encoding for "isel" on PowerPC, using a new instruction format AForm_4. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167860 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
|
95d8afc5f2898b59240b0c0cd78d6f54140a91b8 |
12-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Make TOC order deterministic by using MapVector instead of DenseMap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167737 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
86aef0a4f093700420c76f313e5668c39db110aa |
05-Nov-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
On PowerPC64, integer return values (as well as arguments) are supposed to be extended to a full register. This is modeled in the IR by marking the return value (or argument) with a signext or zeroext attribute. However, while these attributes are respected for function arguments, they are currently ignored for function return values by the PowerPC back-end. This patch updates PPCCallingConv.td to ask for the promotion to i64, and fixes LowerReturn and LowerCallResult to implement it. The new test case verifies that both arguments and return values are properly extended when passing them; and also that the optimizers understand incoming argument and return values are in fact guaranteed by the ABI to be extended. The patch caused a spurious breakage in CodeGen/PowerPC/coalesce-ext.ll, since the test case used a "ret" instruction to create a use of an i32 value at the end of the function (to set up data flow as required for what the test is intended to test). Since there's now an implicit promotion to i64, that data flow no longer works as expected. To fix this, this patch now adds an extra "add" to ensure we have an appropriate use of the i32 value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167396 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelLowering.cpp
|
827b7a070d349737f1d6ff63115e0cbb0c031f9c |
05-Nov-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add support for the PowerPC-specific inline asm Z constraint and y modifier. The Z constraint specifies an r+r memory address, and the y modifier expands to the "r, r" in the asm string. For this initial implementation, the base register is forced to r0 (which has the special meaning of 0 for r+r addressing on PowerPC) and the full address is taken in the second register. In the future, this should be improved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167388 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelLowering.cpp
|
cfe09ed28d8a65b671e8b7a716a933e98e810e32 |
05-Nov-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
[PATCH] PowerPC: Expand load extend vector operations This patch expands the SEXTLOAD, ZEXTLOAD, and EXTLOAD operations for vector types when altivec is enabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167386 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
426c2bf5cdd2173e4a33aea8cb92cf684a724f4b |
01-Nov-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Revert the majority of the next patch in the address space series: r165941: Resubmit the changes to llvm core to update the functions to support different pointer sizes on a per address space basis. Despite this commit log, this change primarily changed stuff outside of VMCore, and those changes do not carry any tests for correctness (or even plausibility), and we have consistently found questionable or flat out incorrect cases in these changes. Most of them are probably correct, but we need to devise a system that makes it more clear when we have handled the address space concerns correctly, and ideally each pass that gets updated would receive an accompanying test case that exercises that pass specificaly w.r.t. alternate address spaces. However, from this commit, I have retained the new C API entry points. Those were an orthogonal change that probably should have been split apart, but they seem entirely good. In several places the changes were very obvious cleanups with no actual multiple address space code added; these I have not reverted when I spotted them. In a few other places there were merge conflicts due to a cleaner solution being implemented later, often not using address spaces at all. In those cases, I've preserved the new code which isn't address space dependent. This is part of my ongoing effort to clean out the partial address space code which carries high risk and low test coverage, and not likely to be finished before the 3.2 release looms closer. Duncan and I would both like to see the above issues addressed before we return to these changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167222 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
ece6c6bb6329748b92403c06ac87f45c43485911 |
01-Nov-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Revert the series of commits starting with r166578 which introduced the getIntPtrType support for multiple address spaces via a pointer type, and also introduced a crasher bug in the constant folder reported in PR14233. These commits also contained several problems that should really be addressed before they are re-committed. I have avoided reverting various cleanups to the DataLayout APIs that are reasonable to have moving forward in order to reduce the amount of churn, and minimize the number of commits that were reverted. I've also manually updated merge conflicts and manually arranged for the getIntPtrType function to stay in DataLayout and to be defined in a plausible way after this revert. Thanks to Duncan for working through this exact strategy with me, and Nick Lewycky for tracking down the really annoying crasher this triggered. (Test case to follow in its own commit.) After discussing with Duncan extensively, and based on a note from Micah, I'm going to continue to back out some more of the more problematic patches in this series in order to ensure we go into the LLVM 3.2 branch with a reasonable story here. I'll send a note to llvmdev explaining what's going on and why. Summary of reverted revisions: r166634: Fix a compiler warning with an unused variable. r166607: Add some cleanup to the DataLayout changes requested by Chandler. r166596: Revert "Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this! r166591: Delete a directory that wasn't supposed to be checked in yet. r166578: Add in support for getIntPtrType to get the pointer type based on the address space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167221 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
42d43351b274603ed0ac28128498a35b8987ce15 |
31-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch addresses an ABI compatibility issue with empty aggregate parameters. Examples of these are: struct { } a; union { } b[256]; int a[0]; An empty aggregate has an address, although dereferencing that address is pointless. When passed as a parameter, an empty aggregate does not consume a protocol register, nor does it consume a doubleword in the parameter save area. Passing an empty aggregate by reference passes an address just as for any other aggregate. Returning an empty aggregate uses GPR3 as a hidden address of the return value location, just as for any other aggregate. The patch modifies PPCTargetLowering::LowerFormalArguments_64SVR4 and PPCTargetLowering::LowerCall_64SVR4 to properly skip empty aggregate parameters passed by value. The handling of return values and by-reference parameters was already correct. Built on powerpc64-unknown-linux-gnu and tested with no new regressions. A test case is included to test proper handling of empty aggregate parameters on both sides of the function call protocol. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167090 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c83b5dc625bd85276a23c36c1fbad193203d2bc7 |
30-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: Expand FSRQT for vector types This patch expands FSQRT for floating point vector types when altivec is used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167034 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5f41fd685b6e82c3194be782566bbc438d697cc9 |
30-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: More support for Altivec compare operations This patch adds more support for vector type comparisons using altivec. It adds correct support for v16i8, v8i16, v4i32, and v4f32 vector types for comparison operators ==, !=, >, >=, <, and <=. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167015 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
e6c56433de56fb89f1d476332134b6b2e22cfa28 |
29-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch solves a problem with passing varargs parameters under the PPC64 ELF ABI. A varargs parameter consisting of a single-precision floating-point value, or of a single-element aggregate containing a single-precision floating-point value, must be passed in the low-order (rightmost) four bytes of the doubleword stack slot reserved for that parameter. If there are GPR protocol registers remaining, the parameter must also be mirrored in the low-order four bytes of the reserved GPR. Prior to this patch, such parameters were being passed in the high-order four bytes of the stack slot and the mirrored GPR. The patch adds a new test case to verify the correct code generation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166968 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
78dab643e0d49cc76ca20409d733c23bc17171dd |
29-Oct-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
Allow i32/i64 for 'f' constraint on PowerPC. This fixes PR12757. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166943 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
baafdeae0b1551c73f1a0052414530e061029e14 |
29-Oct-2012 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCSubtarget.h: Add explicit braces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166932 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
19ad3e2fa7cee27dd712157f5515c178a27bde8b |
29-Oct-2012 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCSubtarget.h: Whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166931 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
01d013ec043407a558b8b87f75ec207336e8a4ae |
29-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch adds alignment information for long double to the 64-bit PowerPC ELF subtarget. The existing logic is used as a fallback to avoid any changes to the Darwin ABI. PPC64 ELF now has two possible data layout strings: one for FreeBSD, which requires 8-byte alignment, and a default string that requires 16-byte alignment. I've added a test for PPC64 Linux to verify the 16-byte alignment. If somebody wants to add a separate test for FreeBSD, that would be great. Note that there is a companion patch to update the alignment information in Clang, which I am committing now as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166928 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
edf5e9a1d5f0cb4cfe747c761c73a2e303f365c4 |
26-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: Fix for rldcl/rldicl/rldicr MC emission This patch fixes the rldcl/rldicl/rldicr instruction emission. The issue is the MDForm_1 instruction defines the PowerISA MB field from 'rldicl' with the name MBE, but RLDCL/RLDICL/RLDICR definition uses as 'MB'. It end up by generatint the 'rldicl' enconding at 'lib/Target/PowerPC/PPCGenMCCodeEmitter.inc' to use the fourth argument as the third. The patch changes it by adjusting to use the fourth argument as intended. Fixes PR14180. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166770 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
18560fae0bb122857a61bb36f22628901cdc3dde |
25-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
This patch fixes the MC object emission of 'nop' for external function calls and also fixes the R_PPC64_TOC16 and R_PPC64_TOC16_DS relocation offset. The 'nop' is needed so a restore TOC instruction (ld r2,40(r1)) can be placed by the linker to correct restore the TOC of previous function. Current code has two issues: it defines in PPCInstr64Bit.td file a LDinto_toc and LDtoc_restore as a DSForm_1 with DS_RA=0 where it should be DS=2 (the 8 bytes displacement of the TOC saving). It also wrongly emits a MC intruction using an uint32_t value while the PPC::BL8_NOP_ELF and PPC::BLA8_NOP_ELF are both uint64_t (because of the following 'nop'). This patch corrects the remaining ExecutionEngine using MCJIT: ExecutionEngine/2002-12-16-ArgTest.ll ExecutionEngine/2003-05-07-ArgumentTest.ll ExecutionEngine/2005-12-02-TailCallBug.ll ExecutionEngine/hello.ll ExecutionEngine/hello2.ll ExecutionEngine/test-call.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166682 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCCodeEmitter.cpp
PCInstr64Bit.td
|
37900c5dcb254ef50c17c57a302c30626536917c |
25-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch addresses a PPC64 ELF issue with passing parameters consisting of structs having size 3, 5, 6, or 7. Such a struct must be passed and received as right-justified within its register or memory slot. The problem is only present for structs that are passed in registers. Previously, as part of a patch handling all structs of size less than 8, I added logic to rotate the incoming register so that the struct was left- justified prior to storing the whole register. This was incorrect because the address of the parameter had already been adjusted earlier to point to the right-adjusted value in the storage slot. Essentially I had accidentally accounted for the right-adjustment twice. In this patch, I removed the incorrect logic and reorganized the code to make the flow clearer. The removal of the rotates changes the expected code generation, so test case structsinregs.ll has been modified to reflect this. I also added a new test case, jaggedstructs.ll, to demonstrate that structs of these sizes can now be properly received and passed. I've built and tested the code on powerpc64-unknown-linux-gnu with no new regressions. I also ran the GCC compatibility test suite and verified that earlier problems with these structs are now resolved, with no new regressions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166680 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
aa71428378c1cb491ca60041d8ba7aa110bc963d |
25-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
Initial TOC support for PowerPC64 object creation This patch adds initial PPC64 TOC MC object creation using the small mcmodel (a single 64K TOC) adding the some TOC relocations (R_PPC64_TOC, R_PPC64_TOC16, and R_PPC64_TOC16DS). The addition of 'undefinedExplicitRelSym' hook on 'MCELFObjectTargetWriter' is meant to avoid the creation of an unreferenced ".TOC." symbol (used in the .odp creation) as well to set the R_PPC64_TOC relocation target as the temporary ".TOC." symbol. On PPC64 ABI, the R_PPC64_TOC relocation should not point to any symbol. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166677 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
PCAsmPrinter.cpp
PCSubtarget.cpp
|
270483466124fe1e19d5439e958fef63cebd43cd |
24-Oct-2012 |
Nadav Rotem <nrotem@apple.com> |
Implement a basic VectorTargetTransformInfo interface to be used by the loop and bb vectorizers for modeling the cost of instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166593 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
aa76e9e2cf50af190de90bc778b7f7e42ef9ceff |
24-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Add in support for getIntPtrType to get the pointer type based on the address space. This checkin also adds in some tests that utilize these paths and updates some of the clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166578 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
726c23705c056e4d86f0b3d833803f1d43e6eee4 |
23-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This is another TLC patch for separating code for the Darwin and ELF ABIs for the PowerPC target, and factoring the results. This will ease future maintenance of both subtargets. PPCTargetLowering::LowerCall_Darwin_Or_64SVR4() has grown a lot of special-case code for the different ABIs, making maintenance difficult. This is getting worse as we repair errors in the 64-bit ELF ABI implementation, while avoiding changes to the Darwin ABI logic. This patch splits the routine into LowerCall_Darwin() and LowerCall_64SVR4(), allowing both versions to be significantly simplified. I've factored out chunks of similar code where it made sense to do so. I also performed similar factoring on LowerFormalArguments_Darwin() and LowerFormalArguments_64SVR4(). There are no functional changes in this patch, and therefore no new test cases have been developed. Built and tested on powerpc64-unknown-linux-gnu with no new regressions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166480 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
cbd9a19b5d6ff93efa82c467508ede78b8af3bac |
19-Oct-2012 |
Nadav Rotem <nrotem@apple.com> |
Reapply the TargerTransformInfo changes, minus the changes to LSR and Lowerinvoke. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166248 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
6c28a7eec8d1794fb5476cd9fe14affb479ed1d9 |
18-Oct-2012 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
This patch fixes failures in the SingleSource/Regression/C/uint64_to_float test case on PowerPC caused by rounding errors when converting from a 64-bit integer to a single-precision floating point. The reason for this are double-rounding effects, since on PowerPC we have to convert to an intermediate double-precision value first, which gets rounded to the final single-precision result. The patch fixes the problem by preparing the 64-bit integer so that the first conversion step to double-precision will always be exact, and the final rounding step will result in the correctly-rounded single-precision result. The generated code sequence is equivalent to what GCC would generate. When -enable-unsafe-fp-math is in effect, that extra effort is omitted and we accept possible rounding errors (just like GCC does as well). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166178 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3b9a911efcf280950f878a050728450423875639 |
18-Oct-2012 |
Bob Wilson <bob.wilson@apple.com> |
Temporarily revert the TargetTransform changes. The TargetTransform changes are breaking LTO bootstraps of clang. I am working with Nadav to figure out the problem, but I am reverting it for now to get our buildbots working. This reverts svn commits: 165665 165669 165670 165786 165787 165997 and I have also reverted clang svn 165741 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166168 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
7a6cb15a929e76955471ef2a7b6db721198320a0 |
16-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch addresses PR13949. For the PowerPC 64-bit ELF Linux ABI, aggregates of size less than 8 bytes are to be passed in the low-order bits ("right-adjusted") of the doubleword register or memory slot assigned to them. A previous patch addressed this for aggregates passed in registers. However, small aggregates passed in the overflow portion of the parameter save area are still being passed left-adjusted. The fix is made in PPCTargetLowering::LowerCall_Darwin_Or_64SVR4 on the caller side, and in PPCTargetLowering::LowerFormalArguments_64SVR4 on the callee side. The main fix on the callee side simply extends existing logic for 1- and 2-byte objects to 1- through 7-byte objects, and correcting a constant left over from 32-bit code. There is also a fix to a bogus calculation of the offset to the following argument in the parameter save area. On the caller side, again a constant left over from 32-bit code is fixed. Additionally, some code for 1, 2, and 4-byte objects is duplicated to handle the 3, 5, 6, and 7-byte objects for SVR4 only. The LowerCall_Darwin_Or_64SVR4 logic is getting fairly convoluted trying to handle both ABIs, and I propose to separate this into two functions in a future patch, at which time the duplication can be removed. The patch adds a new test (structsinmem.ll) to demonstrate correct passing of structures of all seven sizes. Eight dummy parameters are used to force these structures to be in the overflow portion of the parameter save area. As a side effect, this corrects the case when aggregates passed in registers are saved into the first eight doublewords of the parameter save area: Previously they were stored left-justified, and now are properly stored right-justified. This requires changing the expected output of existing test case structsinregs.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166022 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2c39b15073db81d93bb629303915b7d7e5d088dc |
15-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Resubmit the changes to llvm core to update the functions to support different pointer sizes on a per address space basis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165941 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
f35c62bf025411393c7df0803851010cc0e597ba |
15-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: add EmitTCEntry class for TOC creation This patch replaces the EmitRawText by a EmitTCEntry class (specialized for each Streamer) in PowerPC64 TOC entry creation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165940 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
fb384d61c78b60787ed65475d8403aee65023962 |
11-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Revert 165732 for further review. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165747 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
f3840d2c16a4ec4c879a8ded402835746de380f8 |
11-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165726 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
a867f378979f26e7d87bb6db5b7665a2ee4c0293 |
11-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch addresses PR13947. For function calls on the 64-bit PowerPC SVR4 target, each parameter is mapped to as many doublewords in the parameter save area as necessary to hold the parameter. The first 13 non-varargs floating-point values are passed in registers; any additional floating-point parameters are passed in the parameter save area. A single-precision floating-point parameter (32 bits) must be mapped to the second (rightmost, low-order) word of its assigned doubleword slot. Currently LLVM violates this ABI requirement by mapping such a parameter to the first (leftmost, high-order) word of its assigned doubleword slot. This is internally self-consistent but will not interoperate correctly with libraries compiled with an ABI-compliant compiler. This patch corrects the problem by adjusting the parameter addressing on both sides of the calling convention. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165714 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e3d0e86919730784faaddcb5d9b0257c39b0804b |
11-Oct-2012 |
Nadav Rotem <nrotem@apple.com> |
Add a new interface to allow IR-level passes to access codegen-specific information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165665 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
26160f4e6403f3ddd7c4599422578cb46777103d |
10-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
When generating spill and reload code for vector registers on PowerPC, the compiler makes use of GPR0. However, there are two flavors of GPR0 defined by the target: the 32-bit GPR0 (R0) and the 64-bit GPR0 (X0). The spill/reload code makes use of R0 regardless of whether we are generating 32- or 64-bit code. This patch corrects the problem in the obvious manner, using X0 and ADDI8 for 64-bit and R0 and ADDI for 32-bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165658 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
a5d0ab555384baa293b06686bec5a01fb9638ca3 |
10-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
The PowerPC VRSAVE register has been somewhat of an odd beast since the Altivec extensions were introduced. Its use is optional, and allows the compiler to communicate to the operating system which vector registers should be saved and restored during a context switch. In practice, this information is ignored by the various operating systems using the SVR4 ABI; the kernel saves and restores the entire register state. Setting the VRSAVE register is no longer performed by the AIX XL compilers, the IBM i compilers, or by GCC on Power Linux systems. It seems best to avoid this logic within LLVM as well. This patch avoids generating code to update and restore VRSAVE for the PowerPC SVR4 ABIs (32- and 64-bit). The code remains in place for the Darwin ABI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165656 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelDAGToDAG.cpp
|
6765834754cbb3cb0f15b4b15e98c5e73fa50066 |
09-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Create enums for the different attributes. We use the enums to query whether an Attributes object has that attribute. The opaque layer is responsible for knowing where that specific attribute is stored. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165488 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelLowering.cpp
PCRegisterInfo.cpp
|
1c7d69bbe2de22f386ffd9ef4480f8a77be28130 |
08-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PR12716: PPC crashes on vector compare Vector compare using altivec 'vcmpxxx' instructions have as third argument a vector register instead of CR one, different from integer and float-point compares. This leads to a failure in code generation, where 'SelectSETCC' expects a DAG with a CR register and gets vector register instead. This patch changes the behavior by just returning a DAG with the vector compare instruction based on the type. The patch also adds a testcase for all vector types llvm defines. It also included a fix on signed 5-bits predicates printing, where signed values were not handled correctly as signed (char are unsigned by default for PowerPC). This generates 'vspltisw' (vector splat) instruction with SIM out of range. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165419 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
cd585084e500a36208a7185edf62cb279f83c26b |
08-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
PowerPC: Fix object creation with PPC::MTCRF8 instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165411 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
|
51aaadb7bda93040ebfc8341abed7627c99be8f7 |
08-Oct-2012 |
Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
Add floating-point to and from integer conversion This patch add altivec support for v4i32 to v4f32 and for v4f32 to v4i32 vector rounding conversion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165409 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrAltivec.td
|
3574eca1b02600bac4e625297f4ecf745f4c4f32 |
08-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Move TargetData to DataLayout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelLowering.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
|
b2544ece597192266199ec00ece2ee5bb6273cd9 |
05-Oct-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
This patch splits apart PPCISelLowering::LowerFormalArguments_Darwin_Or_64SVR4 into separate versions for the Darwin and 64-bit SVR4 ABIs. This will facilitate doing more major surgery on the 64-bit SVR4 ABI in the near future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165336 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
d875533b7f362933d2ce9cc24bc5917b07231340 |
05-Oct-2012 |
Will Schmidt <will_schmidt@vnet.ibm.com> |
- Mark the BCC and BLR defs as isCodeGenOnly per error output from llvm-tblgen -gen-asm-matcher. PPCInstrInfo.td | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165315 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
916381569aa5cd33e4ed4c1585f48cf5da1a6684 |
04-Oct-2012 |
Will Schmidt <will_schmidt@vnet.ibm.com> |
- add tokens to PPCInstrInfo.td and PPCInstr64Bit.td to resolve "Instruction 'foo' has no tokens" errors during llvm-tblgen -gen-asm-matcher attempts. At this time, the added tokens are "#comment" style rather than the actual mnemonic. This will be revisited once the rest of the base asmparser bits get straightened out for ppc64-elf-linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165237 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
e37091931cc409d3189a69eb581871c6e743832d |
04-Oct-2012 |
Will Schmidt <will_schmidt@vnet.ibm.com> |
test commit / whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165233 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
94c22716d60ff5edf6a98a3c67e0faa001be1142 |
27-Sep-2012 |
Sylvestre Ledru <sylvestre@debian.org> |
Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164768 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7e2c793a2b5c746344652b6579e958ee42fafdcc |
27-Sep-2012 |
Sylvestre Ledru <sylvestre@debian.org> |
Fix a typo 'iff' => 'if' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164767 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2c189061184925c6a8ecbb5a19e648b230a41c0e |
26-Sep-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the `hasFnAttr' method from Function. The hasFnAttr method has been replaced by querying the Attributes explicitly. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164725 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelLowering.cpp
PCRegisterInfo.cpp
|
5236ab3fdd4ce9b9990ef58cd8fac695cfbd0eaf |
24-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Specify MachinePointerInfo as refering to the argument value and offset of the store when handling byval arguments. Thus preventing reordering of the store with load with post-RA scheduler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164553 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
419f376564d17eaef7e5b4a77b066668e4272ecc |
19-Sep-2012 |
Bill Schmidt <wschmidt@linux.vnet.ibm.com> |
Small structs for PPC64 SVR4 must be passed right-justified in registers. lib/Target/PowerPC/PPCISelLowering.{h,cpp} Rename LowerFormalArguments_Darwin to LowerFormalArguments_Darwin_Or_64SVR4. Rename LowerFormalArguments_SVR4 to LowerFormalArguments_32SVR4. Receive small structs right-justified in LowerFormalArguments_Darwin_Or_64SVR4. Rename LowerCall_Darwin to LowerCall_Darwin_Or_64SVR4. Rename LowerCall_SVR4 to LowerCall_32SVR4. Pass small structs right-justified in LowerCall_Darwin_Or_64SVR4. test/CodeGen/PowerPC/structsinregs.ll New test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164228 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
6fc3ea2f997f30827eaeb5e5c279119c79568333 |
18-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Fix the isLocalCall() by checking for linker weakness as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164155 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f145c135f3a28e2c59bd02e475fbf09f4157c9fb |
18-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Avoid symbol name clash when filling TOC. Patch by Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164141 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
4cd56014ae05a6ccc92cdcc66d457ce37558fc31 |
18-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
On PPC64 emit the environment pointer. Patch by Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164139 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
eb8b7dc5362b66e45f17ce1c6d1ff1f5b79b9534 |
18-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Optimize local func calls to not emit nop for TOC restoration. Patch by Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164138 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
536a88ad5bf160232205192a7ce72e50bfadbded |
18-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
When creating MCAsmBackend pass the CPU string as well. In X86AsmBackend store this and use it to not emit long nops when the CPU is geode which doesnt support them. Fixes PR11212. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164132 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMCTargetDesc.h
|
6ffb4024d875570a01d6b8db900a0385a491403b |
16-Sep-2012 |
Craig Topper <craig.topper@gmail.com> |
Change unsigned to uint32_t to match base class declaration and other targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164001 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
86a1c32e67b23c5e9e42dff9eb86e99ba15bb42f |
15-Sep-2012 |
Craig Topper <craig.topper@gmail.com> |
Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163974 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
|
6c7ccaa3fd1d6e96d0bf922554b09d2b17c3b0e3 |
12-Sep-2012 |
Michael Liao <michael.liao@intel.com> |
Fix PR11985 - BlockAddress has no support of BA + offset form and there is no way to propagate that offset into machine operand; - Add BA + offset support and a new interface 'getTargetBlockAddress' to simplify target block address forming; - All targets are modified to use new interface and X86 backend is enhanced to support BA + offset addressing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163743 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ba9d069d797fbe204470c18a5f15e7f3cf763e0b |
12-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Enable exceptions handling on PPC64 now that cr misaligned spilling was fixed in r163713. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163715 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
9d760ae5c6bc1d1482e2824efcf9cb11db1cc16f |
12-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
This patch corrects logic in PPCFrameLowering for save and restore of nonvolatile condition register fields across calls under the SVR4 ABIs. * With the 64-bit ABI, the save location is at a fixed offset of 8 from the stack pointer. The frame pointer cannot be used to access this portion of the stack frame since the distance from the frame pointer may change with alloca calls. * With the 32-bit ABI, the save location is just below the general register save area, and is accessed via the frame pointer like the rest of the save areas. This is an optional slot, so it must only be created if any of CR2, CR3, and CR4 were modified. * For both ABIs, save/restore logic is generated only if one of the nonvolatile CR fields were modified. I also took this opportunity to clean up an extra FIXME in PPCFrameLowering.h. Save area offsets for 32-bit GPRs are meaningless for the 64-bit ABI, so I removed them for correctness and efficiency. Fixes PR13708 and partially also PR13623. It lets us enable exception handling on PPC64. Patch by William J. Schmidt! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163713 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCFrameLowering.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
39646d96e76aea5d20bffb386233a0dbb5932a21 |
07-Sep-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
MC: Overhaul handling of .lcomm - Darwin lied about not supporting .lcomm and turned it into zerofill in the asm parser. Push the zerofill-conversion down into macho-specific code. - This makes the tri-state LCOMMType enum superfluous, there are no targets without .lcomm. - Do proper error reporting when trying to use .lcomm with alignment on a target that doesn't support it. - .comm and .lcomm alignment was parsed in bytes on COFF, should be power of 2. - Fixes PR13755 (.lcomm crashes on ELF). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163395 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
c10d5e9dae40801622c73237b484d51da73f77b9 |
05-Sep-2012 |
Hal Finkel <hfinkel@anl.gov> |
Move the PPC TOC defs into the PPC64 InstrInfo file. Since TOC is just defined for PPC64, move its definition to PPC64 td file. Patch by Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163234 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
94b17f334ba28cc11b2bf89911189904d00e99f7 |
03-Sep-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Remove always true checks. Noticed by Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163117 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
d2a35f2937af443241fc3d1b0c6104a587170f24 |
30-Aug-2012 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCISelLowering.cpp: Fix r162725. [Tobias von Koch] What's happening here is that the CR6SET/CR6UNSET is breaking the chain of register copies glued to the function call (BL_SVR4 node). The scheduler then moves other instructions in between those and the function call, which isn't good! Right. That's the case where there is no chain of register copies before the call, so InFlag == 0... Attached is a new revision of the patch which should fix this for good. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162916 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
25f6b5a5541e34f8e703f0b5e090e4910dc9d0d7 |
30-Aug-2012 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCISelLowering.cpp: Whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162915 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bbd169b1d96e1012df9852d41b7fd00381ed9d48 |
29-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Reserve space for the mandatory traceback fields on PPC64. We need to reserve space for the mandatory traceback fields, though leaving them as zero is appropriate for now. Although the ABI calls for these fields to be filled in fully, no compiler on Linux currently does this, and GDB does not read these fields. GDB uses the first word of zeroes during exception handling to find the end of the function and the size field, allowing it to compute the beginning of the function. DWARF information is used for everything else. We need the extra 8 bytes of pad so the size field is found in the right place. As a comparison, GCC fills in a few of the fields -- language, number of saved registers -- but ignores the rest. IBM's proprietary OSes do make use of the full traceback table facility. Patch by Bill Schmidt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162854 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
c6c2ced38411215e5bf46ded787c23810160dfa7 |
28-Aug-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Emit word of zeroes after the last instruction as a start of the mandatory traceback table on PowerPC64. This helps gdb handle exceptions. The other mandatory fields are ignored by gdb and harder to implement so just add there a FIXME. Patch by Bill Schmidt. PR13641. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162778 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
621b77ade2ff46d1d8594bddee6931b2f4a14706 |
28-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add PPC Freescale e500mc and e5500 subtargets. Add subtargets for Freescale e500mc (32-bit) and e5500 (64-bit) to the PowerPC backend. Patch by Tobias von Koch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162764 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCAsmPrinter.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCSchedule.td
PCScheduleE500mc.td
PCScheduleE5500.td
PCSubtarget.h
|
8dc440a46a5153a1640a3050480cceca9b8af05d |
28-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Split several PPC instruction classes. Slight reorganisation of PPC instruction classes for scheduling. No functionality change for existing subtargets. - Clearly separate load/store-with-update instructions from regular loads and stores. - Split IntRotateD -> IntRotateD and IntRotateDI - Split out fsub and fadd from FPGeneral -> FPAddSub - Update existing itineraries Patch by Tobias von Koch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162729 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
PCSchedule.td
PCSchedule440.td
PCScheduleA2.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
f3c3828e57d922bbe912ffabbd9252b9f5100c14 |
28-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Allow remat of LI on PPC. Allow load-immediates to be rematerialised in the register coalescer for PPC. This makes test/CodeGen/PowerPC/big-endian-formal-args.ll fail, because it relies on a register move getting emitted. The immediate load is equivalent, so change this test case. Patch by Tobias von Koch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162727 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
82b3821208286aeb43f603fdac98832bd662dad9 |
28-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Eliminate redundant CR moves on PPC32. The 32-bit ABI requires CR bit 6 to be set if the call has fp arguments and unset if it doesn't. The solution up to now was to insert a MachineNode to set/unset the CR bit, which produces a CR vreg. This vreg was then copied into CR bit 6. When the register allocator saw a bunch of these in the same function, it allocated the set/unset CR bit in some random CR register (1 extra instruction) and then emitted CR moves before every vararg function call, rather than just setting and unsetting CR bit 6 directly before every vararg function call. This patch instead inserts a PPCcrset/PPCcrunset instruction which are then matched by a dedicated instruction pattern. Patch by Tobias von Koch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162725 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
97d047dec71cb37f31aac102cdc87b3dec0b1c46 |
28-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Optimize zext on PPC64. The zeroextend IR instruction is lowered to an 'and' node with an immediate mask operand, which in turn gets legalised to a sequence of ori's & ands. This can be done more efficiently using the rldicl instruction. Patch by Tobias von Koch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162724 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
1144af3c9b4da48cd581156e05b24261c8de366a |
25-Aug-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix integer undefined behavior due to signed left shift overflow in LLVM. Reviewed offline by chandlerc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162623 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
PCISelLowering.cpp
|
9fb8b49380e7cf6ce88400ad65051e830563bc81 |
24-Aug-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Lower constant pools and jump tables via TOC on PPC64/SVR4. In collaboration with Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162562 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelLowering.cpp
PCInstr64Bit.td
|
ea47628cbafb48bf2a51554328a6dd77be40f4df |
24-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add missing SDNPSideEffect flags. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162557 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
05b2bc8781d9af403a257599613e12cb8fef19e8 |
16-Aug-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Revert r162034, r162035 and r162037. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162039 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCFixupKinds.h
|
e88d17de99c5f46bc8104bc777f657d0299fd0e6 |
16-Aug-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Define and handle additional fixup kinds. By Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162037 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCFixupKinds.h
|
0016f73ae5ebdd8e62ee640d287482fed562b369 |
16-Aug-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Fix typo and grammar. By Adhemerval Zanella. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162032 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0c5f5f4916a5c72b2a6a9cb13f0b2c2add95b6f1 |
09-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't use getNextOperandForReg(). This way of using getNextOperandForReg() was unlikely to work as intended. We don't give any guarantees about the order of operands in the use-def chains, so looking only at operands following a given operand in the chain doesn't make sense. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161542 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
8da94ad6e0947690201c543da556ec0396ad9912 |
07-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add a comment about mftb vs. mfspr on PPC. Thanks to Alex Rosenberg for the suggestion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161428 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
f45717e985260e9416dbd2fe8df471d48705c86a |
06-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
MFTB on PPC64 should really be encoded using MFSPR. The MFTB instruction itself is being phased out, and its functionality is provided by MFSPR. According to the ISA docs, using MFSPR works on all known chips except for the 601 (which did not have a timebase register anyway) and the POWER3. Thanks to Adhemerval Zanella for pointing this out! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161346 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
8cc3474f72388836fa4ca7d3622289fb9ee08b41 |
04-Aug-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add readcyclecounter lowering on PPC64. On PPC64, this can be done with a simple TableGen pattern. To enable this, I've added the (otherwise missing) readcyclecounter SDNode definition to TargetSelectionDAG.td. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161302 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
|
4ecaedc771f47e099609c69ed2782c64fc653d05 |
03-Aug-2012 |
Gabor Greif <ggreif@gmail.com> |
allow 'make CPPFLAGS=<something>' work again this makes this hack a bit more bearable for poor souls who need to pass custom preprocessor flags to the build process git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161240 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/Makefile
|
68c10a2ff74fe882cfd789983b2d0f12e42fb0ec |
13-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove variable_ops from call instructions in most targets. Call instructions are no longer required to be variadic, and variable_ops should only be used for instructions that encode a variable number of arguments, like the ARM stm/ldm instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160189 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
769951f6cc6323821ce1e9f46a37817a541c884f |
03-Jul-2012 |
Evan Cheng <evan.cheng@apple.com> |
Target option DisableJumpTables is a gross hack. Move it to TargetLowering instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159611 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCTargetMachine.cpp
|
564fbf6aff8fb95646a1290078a37c2d4dbe629f |
02-Jul-2012 |
Bob Wilson <bob.wilson@apple.com> |
Add all codegen passes to the PassManager via TargetPassConfig. This is a preliminary step toward having TargetPassConfig be able to start and stop the compilation at specified passes for unit testing and debugging. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159567 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
0bcbd1df7a204e1e512f1a27066d725309de1b13 |
28-Jun-2012 |
Bill Wendling <isanbard@gmail.com> |
Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h. The reasoning is because the DebugInfo module is simply an interface to the debug info MDNodes and has nothing to do with analysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
0518fca843ff87d069ecb07fc00d306c1f587d58 |
26-Jun-2012 |
Jack Carter <jcarter@mips.com> |
There are a number of generic inline asm operand modifiers that up to r158925 were handled as processor specific. Making them generic and putting tests for these modifiers in the CodeGen/Generic directory caused a number of targets to fail. This commit addresses that problem by having the targets call the generic routine for generic modifiers that they don't currently have explicit code for. For now only generic print operands 'c' and 'n' are supported.vi Affected files: test/CodeGen/Generic/asm-large-immediate.ll lib/Target/PowerPC/PPCAsmPrinter.cpp lib/Target/NVPTX/NVPTXAsmPrinter.cpp lib/Target/ARM/ARMAsmPrinter.cpp lib/Target/XCore/XCoreAsmPrinter.cpp lib/Target/X86/X86AsmPrinter.cpp lib/Target/Hexagon/HexagonAsmPrinter.cpp lib/Target/CellSPU/SPUAsmPrinter.cpp lib/Target/Sparc/SparcAsmPrinter.cpp lib/Target/MBlaze/MBlazeAsmPrinter.cpp lib/Target/Mips/MipsAsmPrinter.cpp MSP430 isn't represented because it did not even run with the long existing 'c' modifier and it was not apparent what needs to be done to get it inline asm ready. Contributer: Jack Carter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159203 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
d5c407d2d01ff8797c29343e4da5f765fe52fb5f |
24-Jun-2012 |
NAKAMURA Takumi <geek4civic@gmail.com> |
llvm/lib: [CMake] Add explicit dependency to intrinsics_gen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159112 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
0a2f793d6e24acd00d9209b46436b4899feb1cdb |
23-Jun-2012 |
Craig Topper <craig.topper@gmail.com> |
Silence an unused variable warning on release builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159074 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
009f7afbeb77d1cc8e962bac7057b73b6d39d62f |
23-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add support for the PPC isel instruction. The isel (integer select) instruction is supported on the 440 and A2 embedded cores and on the POWER7. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159045 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
PC.td
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCSubtarget.cpp
PCSubtarget.h
|
070b8dba809dd75267327cc823118bf7e171d17d |
22-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Convert the PPC backend to use the new FMA infrastructure. The existing contraction patterns are replaced with fma/fneg. Overall functionality should be the same. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158955 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
PCInstrInfo.td
|
2bbc9193b4a9b4e53ec114fd98a587a2917c365b |
21-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Treat TargetGlobalAddress as a constant for the purpose of matching pre-inc stores on PPC. Thanks to Tobias von Koch for pointing out this problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158932 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
0fcdd8b2cc2b1bcf0aa64870d5269f9ac6dc76c0 |
20-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add support for generating reg+reg (indexed) pre-inc loads on PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158823 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
d693cafcfb9e67ba7040cb810e4409a166421482 |
20-Jun-2012 |
Lang Hames <lhames@gmail.com> |
Add DAG-combines for aggressive FMA formation. This patch adds DAG combines to form FMAs from pairs of FADD + FMUL or FSUB + FMUL. The combines are performed when: (a) Either AllowExcessFPPrecision option (-enable-excess-fp-precision for llc) OR UnsafeFPMath option (-enable-unsafe-fp-math) are set, and (b) TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) is true for the type of the FADD/FSUB, and (c) The FMUL only has one user (the FADD/FSUB). If your target has fast FMA instructions you can make use of these combines by overriding TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) to return true for types supported by your FMA instruction, and adding patterns to match ISD::FMA to your FMA instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158757 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7164288c3eb52e20454fc757440f867f04eb13a4 |
19-Jun-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Implement PPCInstrInfo::isCoalescableExtInstr(). The PPC::EXTSW instruction preserves the low 32 bits of its input, just like some of the x86 instructions. Use it to reduce register pressure when the low 32 bits have multiple uses. This requires a small change to PeepholeOptimizer since EXTSW takes a 64-bit input register. This is related to PR5997. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158743 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
fe5b65827f20a61bef817c6421f32b7e05d65caf |
19-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Mark most PPC register classes to avoid write-after-write. For processors with the G5-like instruction-grouping scheme, this helps avoid early group termination due to a write-after-write dependency within the group. It should also help on pipelined embedded cores. On POWER7, over the test suite, this gives an average 0.5% speedup. The largest speedups are: SingleSource/Benchmarks/Stanford/Quicksort - 33% MultiSource/Applications/d/make_dparser - 21% MultiSource/Benchmarks/FreeBench/analyzer/analyzer - 12% MultiSource/Benchmarks/MiBench/telecomm-FFT/telecomm-fft - 12% Largest slowdowns: SingleSource/Benchmarks/Stanford/Bubblesort - 23% MultiSource/Benchmarks/Prolangs-C++/city/city - 21% MultiSource/Benchmarks/BitBench/uuencode/uuencode - 16% MultiSource/Benchmarks/mediabench/mpeg2/mpeg2dec/mpeg2decode - 13% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158719 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
ac81cc3282750d724f824547bc519caec0a01bce |
19-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add support for generating reg+reg preinc stores on PPC. PPC will now generate STWUX and friends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158698 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
|
2741d2cfdff89e45c6b98cd520d5cd3fe97829ad |
16-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup trip-count finding for PPC CTR loops (and some bug fixes). This cleans up the method used to find trip counts in order to form CTR loops on PPC. This refactoring allows the pass to find loops which have a constant trip count but also happen to end with a comparison to zero. This also adds explicit FIXMEs to mark two different classes of loops that are currently ignored. In addition, we now search through all potential induction operations instead of just the first. Also, we check the predicate code on the conditional branch and abort the transformation if the code is not EQ or NE, and we then make sure that the branch to be transformed matches the condition register defined by the comparison (multiple possible comparisons will be considered). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158607 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
79248299f6ca12926088a4adebbbbe00b05a2642 |
13-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add another missing 64-bit itinerary definition for the PPC A2 core. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158393 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleA2.td
|
04dccea2c352e752e2823fac51051dd4ae0d8e67 |
12-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add some missing 64-bit itinerary definitions for the PPC A2 core. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158373 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleA2.td
|
16803097fbefa313fdadc3adede659bd0e52cec1 |
12-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Split out the PPC instruction class IntSimple from IntGeneral. On the POWER7, adds and logical operations can also be handled in the load/store pipelines. We'll call these IntSimple. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158366 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
PCSchedule.td
PCSchedule440.td
PCScheduleA2.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
6670c82df5ef7b97862ef2a0807aa835498b7306 |
12-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Fixes for PPC host detection and features. POWER4 is a 64-bit CPU (better matched to the 970). The g3 is really the 750 (no altivec), the g4+ is the 74xx (not the 750). Patch by Andreas Tobler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158363 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
4db738ae9862a2d00e2dca5b8fbf9d4dfa706142 |
12-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Reapply r158337, this time properly protect Darwin/PPC host CPU use with __ppc__. Original commit message: Move PPC host-CPU detection logic from PPCSubtarget into sys::getHostCPUName(). Both the new Linux functionality and the old Darwin functions have been moved. This change also allows this information to be queried directly by clang and other frontends (clang, for example, will now have real -mcpu=native support). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158349 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
138c2b4e8a4480f4d956980b24c504c27e18cfc1 |
12-Jun-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert r158337 "Move PPC host-CPU detection logic from PPCSubtarget into sys::getHostCPUName()." This commit broke most of the PowerPC unit tests when running on Intel/Apple. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158345 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
7bb39d861297398e62e2aed6dda3e80d82c453cd |
12-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Move PPC host-CPU detection logic from PPCSubtarget into sys::getHostCPUName(). Both the new Linux functionality and the old Darwin functions have been moved. This change also allows this information to be queried directly by clang and other frontends (clang, for example, will now have real -mcpu=native support). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158337 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
5a53c6e3452229759ad0b2d995bc7e37c167b631 |
11-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Enable MFOCRF generation on the PPC A2 core. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158324 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
bd5cafd9bbba2180e7179436fb29071201d5ea9f |
11-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Rename the PPC target feature gpul to mfocrf. The PPC target feature gpul (IsGigaProcessor) was only used for one thing: To enable the generation of the MFOCRF instruction. Furthermore, this instruction is available on other PPC cores outside of the G5 line. This feature now corresponds to the HasMFOCRF flag. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158323 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCSubtarget.cpp
PCSubtarget.h
|
9770be91de745e4727c65c45d13de2a787aef89f |
11-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add A2 to the list of PPC CPUs recognized by Linux host CPU-type detection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158322 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
0a1852b7748212632dc105670fda34c41311fa1e |
11-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Emit the two-operand form of the PPC mfcr instruction as mfocrf. This is necessary on Linux and supported on Darwin, see PR2604. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158315 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
2bd0acd2506c664573d2f0d7671932101c46899e |
11-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add local CPU detection for Linux PPC. This functionality mirrors that available on PPC/Darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158314 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
622382fc5effb34ccad6e029c9612c598a3dc050 |
11-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add POWER6 and POWER7 CPU types to the PPC backend. No functional change; these will be used by upcoming scheduler enhancements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158313 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCAsmPrinter.cpp
PCSubtarget.h
|
71ffcfe9f8602785d4d9133e029c37f2fac78cc3 |
10-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Enable ILP scheduling for all nodes by default on PPC. Over the entire test-suite, this has an insignificantly negative average performance impact, but reduces some of the worst slowdowns from the anti-dep. change (r158294). Largest speedups: SingleSource/Benchmarks/Stanford/Quicksort - 28% SingleSource/Benchmarks/Stanford/Towers - 24% SingleSource/Benchmarks/Shootout-C++/matrix - 23% MultiSource/Benchmarks/SciMark2-C/scimark2 - 19% MultiSource/Benchmarks/MiBench/automotive-bitcount/automotive-bitcount - 15% (matrix and automotive-bitcount were both in the top-5 slowdown list from the anti-dep. change) Largest slowdowns: MultiSource/Benchmarks/McCat/03-testtrie/testtrie - 28% MultiSource/Benchmarks/mediabench/gsm/toast/toast - 26% MultiSource/Benchmarks/MiBench/automotive-susan/automotive-susan - 21% SingleSource/Benchmarks/CoyoteBench/lpbench - 20% MultiSource/Applications/d/make_dparser - 16% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158296 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
01a90f4f8fc7187883377f69e2725ab5e23cc393 |
10-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Use critical anti-dep. breaking on all PPC targets, but also add other register classes. Using 'all' instead of 'critical' would be better because it would make it easier to satisfy the bundling constraints, but, as noted in the FIXME, that is currently not possible with the crs. This yields an average 1% speedup over the entire test suite (on Power 7). Largest speedups: SingleSource/Benchmarks/Shootout-C++/moments - 40% MultiSource/Benchmarks/McCat/03-testtrie/testtrie - 28% SingleSource/Benchmarks/BenchmarkGame/nsieve-bits - 26% SingleSource/Benchmarks/McGill/misr - 23% MultiSource/Applications/JM/ldecod/ldecod - 22% Largest slowdowns: SingleSource/Benchmarks/Shootout-C++/matrix - -29% SingleSource/Benchmarks/Shootout-C++/ary3 - -22% MultiSource/Benchmarks/BitBench/uuencode/uuencode - -18% SingleSource/Benchmarks/Shootout-C++/ary - -17% MultiSource/Benchmarks/MiBench/automotive-bitcount/automotive-bitcount - -15% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158294 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
0a3e33b633aa645465b6bda0bba82788b0644a01 |
10-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Improve ext/trunc patterns on PPC64. The PPC64 backend had patterns for i32 <-> i64 extensions and truncations that would leave self-moves in the final assembly. Replacing those patterns with ones based on the SUBREG builtins yields better-looking code. Thanks to Jakob and Owen for their suggestions in this matter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158283 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
8bf75ed41c95e50b62a4f8b03552d51ad6e86c7a |
09-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Enable tail merging on PPC. Tail merging had been disabled on PPC because it would disturb bundling decisions made during pre-RA scheduling on the 970 cores. Now, however, all bundling decisions are made during post-RA scheduling, and tail merging is generally beneficial (the average test-suite speedup is insignificantly positive). Largest test-suite speedups: MultiSource/Benchmarks/mediabench/gsm/toast/toast - 30% MultiSource/Benchmarks/BitBench/uuencode/uuencode - 23% SingleSource/Benchmarks/Shootout-C++/ary - 21% SingleSource/Benchmarks/Stanford/Queens - 17% Largest slowdowns: MultiSource/Benchmarks/MiBench/security-sha/security-sha - 24% MultiSource/Benchmarks/McCat/03-testtrie/testtrie - 22% MultiSource/Applications/JM/ldecod/ldecod - 14% MultiSource/Benchmarks/mediabench/g721/g721encode/encode - 9% This is improved by using full (instead of just critical) anti-dependency breaking, but doing so still causes miscompiles and so cannot yet be enabled by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158259 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
16b16ac8408f2d775db2110451877e5920032b8c |
08-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Remove the TODO statement in the PPC README re: CTR loops As Chris points out, this can now be removed! TODO: check if the associated section on viterbi's inner loop can also be removed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158224 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
7255d2a8084cb6aa96ea0e5f30acfff76df04ee8 |
08-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Enable PPC CTR loop formation by default. Thanks to Jakob's help, this now causes no new test suite failures! Over the entire test suite, this gives an average 1% speedup. The largest speedups are: SingleSource/Benchmarks/Misc/pi - 108% SingleSource/Benchmarks/CoyoteBench/lpbench - 54% MultiSource/Benchmarks/Prolangs-C/unix-smail/unix-smail - 50% SingleSource/Benchmarks/Shootout/ary3 - 32% SingleSource/Benchmarks/Shootout-C++/matrix - 30% The largest slowdowns are: MultiSource/Benchmarks/mediabench/gsm/toast/toast - -30% MultiSource/Benchmarks/Prolangs-C/bison/mybison - -25% MultiSource/Benchmarks/BitBench/uuencode/uuencode - -22% MultiSource/Applications/d/make_dparser - -14% SingleSource/Benchmarks/Shootout-C++/ary - -13% In light of these slowdowns, additional profiling work is obviously needed! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158223 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCTargetMachine.cpp
|
7e5631202ab5b5f2097d234d0357bc5b3b7f5530 |
08-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Mark the PPC CTRRC and CTRRC8 register classes as non-allocatable. Marking these classes as non-alocatable allows CTR loop generation to work correctly with the block placement passes, etc. These register classes are currently used only by some unused TCRETURN patterns. In future cleanup, these will be removed. Thanks again to Jakob for suggesting this fix to the CTR loop problem! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158221 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
09fdc7baae1b6905fe18df48e2278e74d4e39ccd |
08-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Disable the PPC CTR-Loops pass by default. The pass itself works well, but the something in the Machine* infrastructure does not understand terminators which define registers. Without the ability to use the block-placement pass, etc. this causes performance regressions (and so is turned off by default). Turning off the analysis turns off the problems with the Machine* infrastructure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158206 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCTargetMachine.cpp
|
daa03ec60475a641bcc66799764977f79997ca45 |
08-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Fix a bug in the new PPC CTR-Loops pass. The code which tests for an induction operation cannot assume that any ADDI instruction will have a register operand because the operand could also be a frame index; for example: %vreg16<def> = ADDI8 <fi#0>, 0; G8RC:%vreg16 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158205 91177308-0d34-0410-b5e6-96231b3b80d8
PCCTRLoops.cpp
|
99f823f94374917174f96a7689955b8463db6816 |
08-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add the PPCCTRLoops pass: a PPC machine-code-level optimization pass to form CTR-based loop branching code. This pass is derived from the Hexagon HardwareLoops pass. The only significant enhancement over the Hexagon pass is that PPCCTRLoops will also attempt to delete the replaced add and compare operations if they are no longer otherwise used. Also, invalid preheader DebugLoc is not used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158204 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
PC.h
PCBranchSelector.cpp
PCCTRLoops.cpp
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.td
PCTargetMachine.cpp
|
3e77af4318f48228f626bb92bdf73a38d851ae4d |
05-Jun-2012 |
Roman Divacky <rdivacky@freebsd.org> |
PPC32 uses R2 as the TLS register. Fix the copy and paste. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158004 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
fd42ed676e37c29364f53f848320b7cb706111e0 |
04-Jun-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Implement local-exec TLS on PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157935 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCMCInstLower.cpp
|
77a9e0f318a5454ee86bbf64858860fb6548d7d2 |
04-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Fix a copy-and-paste duplication error in the PPC 440 and A2 schedules (no functionality change). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157912 91177308-0d34-0410-b5e6-96231b3b80d8
PCSchedule440.td
PCScheduleA2.td
|
77838f9ca974bda956f4a93c20bb4307cf0c470f |
04-Jun-2012 |
Hal Finkel <hfinkel@anl.gov> |
Enable generating PPC pre-increment (r+imm) instructions by default. It seems that this no longer causes test suite failures on PPC64 (after r157159), and often gives a performance benefit, so it can be enabled by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157911 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d2ea0e10cbd158c93fb870cdd03001b9cd1156b8 |
25-May-2012 |
Justin Holewinski <jholewinski@nvidia.com> |
Change interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall to pass around a struct instead of a large set of individual values. This cleans up the interface and allows more information to be added to the struct for future targets without requiring changes to each and every target. NV_CONTRIB git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157479 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
2e8e5c0eca6f34a94f92824fc713afd6dc329e25 |
20-May-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add a missing PPC 64-bit stwu pattern. This seems to fix the remaining compile-time failures on PPC64 when compiling with -enable-ppc-preinc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157159 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
b8f2f29467b86a11e777e2ce071caf15ae6fcf75 |
19-May-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add a FIXME about access to negative stack-pointer offsets on PPC32. The current code will generate a prologue which starts with something like: mflr 0 stw 31, -4(1) stw 0, 4(1) stwu 1, -16(1) But under the PPC32 SVR4 ABI, access to negative offsets from R1 is not allowed. This was pointed out by Peter Bergner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157133 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
918f55fe239f00651e396be841f2b3b6e242f98d |
15-May-2012 |
Jim Grosbach <grosbach@apple.com> |
Allow MCCodeEmitter access to the target MCRegisterInfo. Add the MCRegisterInfo to the factories and constructors. Patch by Tom Stellard <Tom.Stellard@amd.com>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156828 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
CTargetDesc/PPCMCTargetDesc.h
|
d9b41b339d3a8b35fac73e63ad665140b5bc7bdc |
09-May-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Mark .opd @progbits, thus avoiding a warning from asm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156494 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
397fc4874efe9c17e737d4c5c50bd19dc3bf27f5 |
08-May-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass(). The getPointerRegClass() hook can return register classes that depend on the calling convention of the current function (ptr_rc_tailcall). So far, we have been able to infer the calling convention from the subtarget alone, but as we add support for multiple calling conventions per target, that no longer works. Patch by Yiannis Tsiouris! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156328 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
338607ae0ddab00e197222e769748e2e0c0b4e18 |
04-May-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove the SubRegClasses field from RegisterClass descriptions. This information in now computed by TableGen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156152 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
7c4ce30ea6a9d0410f306e805403dd224c3df65c |
01-May-2012 |
Bill Wendling <isanbard@gmail.com> |
Change the PassManager from a reference to a pointer. The TargetPassManager's default constructor wants to initialize the PassManager to 'null'. But it's illegal to bind a null reference to a null l-value. Make the ivar a pointer instead. PR12468 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155902 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
6a8c7bf8e72338e55f0f9583e1828f62da165d4a |
23-Apr-2012 |
Preston Gurd <preston.gurd@intel.com> |
This patch fixes a problem which arose when using the Post-RA scheduler on X86 Atom. Some of our tests failed because the tail merging part of the BranchFolding pass was creating new basic blocks which did not contain live-in information. When the anti-dependency code in the Post-RA scheduler ran, it would sometimes rename the register containing the function return value because the fact that the return value was live-in to the subsequent block had been lost. To fix this, it is necessary to run the RegisterScavenging code in the BranchFolding pass. This patch makes sure that the register scavenging code is invoked in the X86 subtarget only when post-RA scheduling is being done. Post RA scheduling in the X86 subtarget is only done for Atom. This patch adds a new function to the TargetRegisterClass to control whether or not live-ins should be preserved during branch folding. This is necessary in order for the anti-dependency optimizations done during the PostRASchedulerList pass to work properly when doing Post-RA scheduling for the X86 in general and for the Intel Atom in particular. The patch adds and invokes the new function trackLivenessAfterRegAlloc() instead of using the existing requiresRegisterScavenging(). It changes BranchFolding.cpp to call trackLivenessAfterRegAlloc() instead of requiresRegisterScavenging(). It changes the all the targets that implemented requiresRegisterScavenging() to also implement trackLivenessAfterRegAlloc(). It adds an assertion in the Post RA scheduler to make sure that post RA liveness information is available when it is needed. It changes the X86 break-anti-dependencies test to use –mcpu=atom, in order to avoid running into the added assertion. Finally, this patch restores the use of anti-dependency checking (which was turned off temporarily for the 3.1 release) for Intel Atom in the Post RA scheduler. Patch by Andy Zhang! Thanks to Jakob and Anton for their reviews. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155395 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
413ca0d34bfefbe62946a8febc2a4939f837291e |
20-Apr-2012 |
Gabor Greif <ggreif@gmail.com> |
effectively back out my last change (r155190) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155195 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c77d6781d53d4ebdb5e8dba26f34bd58af1ee7cb |
20-Apr-2012 |
Gabor Greif <ggreif@gmail.com> |
fix obviously bogus (IMO) operand index of the load in asserts (load only has one operand) and smuggle in some whitespace changes too NB: I am obviously testing the water here, and believe that the unguarded cast is still wrong, but why is the getZExtValue of the load's operand tested against zero here? Any review is appreciated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155190 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c909950c384e8234a7b3c5a76b7f79e3f7012ceb |
20-Apr-2012 |
Craig Topper <craig.topper@gmail.com> |
Convert some uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155186 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
|
a4b00b2db79bb97d29bf6b6e55322a70150527a6 |
19-Apr-2012 |
Gabor Greif <ggreif@gmail.com> |
zap tabs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155128 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ef1a3a25b3398768b9fad5526782675b1a8c128f |
17-Apr-2012 |
Jay Foad <jay.foad@gmail.com> |
Remove unused CCIfSubtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154921 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
|
26c8dcc692fb2addd475446cfff24d6a4e958bca |
04-Apr-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
Always compute all the bits in ComputeMaskedBits. This allows us to keep passing reduced masks to SimplifyDemandedBits, but know about all the bits if SimplifyDemandedBits fails. This allows instcombine to simplify cases like the one in the included testcase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154011 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
9cd5e7a47836a6be3d2c274a5b6b019aaad106ce |
03-Apr-2012 |
Anton Korobeynikov <asl@math.spbu.ru> |
Make PPCCompilationCallbackC function to be static, so there will be no need to issue call via PLT when LLVM is built as shared library. This mimics the X86 backend towards the approach. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153938 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
70272aac56830dc4a86de7bf12e591c812ee285b |
02-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
The binutils for the IBM BG/P are too old to support CFI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153886 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
PCTargetMachine.cpp
|
466958c2a04a74de99efd3d7e0d5bd81cdf1e1fe |
02-Apr-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Implement the SVR4 byval alignment for aggregates. Fixing a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153876 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c97ef618d2d849a272a353c2b4343fc5902cd921 |
02-Apr-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Move getOpcodeName from the various target InstPrinters into the superclass MCInstPrinter. All implementations used the same code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153866 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
7c0b3c1fb6395475e262d66ee403645f0c67dee2 |
02-Apr-2012 |
Craig Topper <craig.topper@gmail.com> |
Remove getInstructionName from MCInstPrinter implementations in favor of using the instruction name table from MCInstrInfo. Reduces static data in the InstPrinter implementations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153863 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
17463b3ef1a3d39b10619254f12e806c8c43f9e7 |
02-Apr-2012 |
Craig Topper <craig.topper@gmail.com> |
Make MCInstrInfo available to the MCInstPrinter. This will be used to remove getInstructionName and the static data it contains since the same tables are already in MCInstrInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153860 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCMCTargetDesc.cpp
|
b66e943d4cfa4a48ad028898d232754ecd3202c1 |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Fix some 80-col. violations I introduced with the A2 PPC64 core. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153852 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCScheduleA2.td
|
19aa2b5015205456b42c426ff2559e9b930e285c |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Enable prefetch generation on PPC64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153851 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
730acfb413849f05e9735145d6634c4429467ab7 |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add LdStSTD* itin. for the PPC64 A2 core. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153850 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleA2.td
|
3f31d492a5d0fadf11290e8453f8c519a89b1302 |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Set the default PPC node scheduling preference to ILP (for the embedded cores). The 440 and A2 cores have detailed itineraries, and this allows them to be fully used to maximize throughput. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153845 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
800125f3a3f77ed4b71f3fbc5d9c4c830a612c77 |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add ppc440 itin. entries for LdStSTD* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153844 91177308-0d34-0410-b5e6-96231b3b80d8
PCSchedule440.td
|
97c9d4c64c870c1eceb1d6264f2457273e6e0738 |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Use full anti-dep. breaking with post-ra sched. on the embedded ppc cores. Post-RA scheduling gives a significant performance improvement on the embedded cores, so turn it on. Using full anti-dep. breaking is important for FP-intensive blocks, so turn it on (just on the embedded cores for now; this should also be good on the 970s because post-ra scheduling is all that we have for now, but that should have more testing first). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153843 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
4d989ac93ce608057fb6b13a4068264ab037ecd5 |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Add instruction itinerary for the PPC64 A2 core. This adds a full itinerary for IBM's PPC64 A2 embedded core. These cores form the basis for the CPUs in the new IBM BG/Q supercomputer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153842 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCAsmPrinter.cpp
PCInstrInfo.cpp
PCSchedule.td
PCScheduleA2.td
PCSubtarget.cpp
PCSubtarget.h
|
20b529b3f90bf17b6023ed6f8983c53c1f5be1ad |
01-Apr-2012 |
Hal Finkel <hfinkel@anl.gov> |
Split the LdStGeneral PPC itin. class into LdStLoad and LdStStore. Loads and stores can have different pipeline behavior, especially on embedded chips. This change allows those differences to be expressed. Except for the 440 scheduler, there are no functionality changes. On the 440, the latency adjustment is only by one cycle, and so this probably does not affect much. Nevertheless, it will make a larger difference in the future and this removes a FIXME from the 440 itin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153821 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
PCSchedule.td
PCSchedule440.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
5b00ceaeeabff8c25abb09926343c3fcb06053d8 |
31-Mar-2012 |
Hal Finkel <hfinkel@anl.gov> |
Fix dynamic linking on PPC64. Dynamic linking on PPC64 has had problems since we had to move the top-down hazard-detection logic post-ra. For dynamic linking to work there needs to be a nop placed after every call. It turns out that it is really hard to guarantee that nothing will be placed in between the call (bl) and the nop during post-ra scheduling. Previous attempts at fixing this by placing logic inside the hazard detector only partially worked. This is now fixed in a different way: call+nop codegen-only instructions. As far as CodeGen is concerned the pair is now a single instruction and cannot be split. This solution works much better than previous attempts. The scoreboard hazard detector is also renamed to be more generic, there is currently no cpu-specific logic in it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153816 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.td
|
c89c744b69cecac576317a98322fd295e36e9886 |
27-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Remove unnecessary llvm:: qualifications git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153500 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f1d0f7781e766df878bec4e7977fa3204374f394 |
26-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Prune some includes and forward declarations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153429 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
179a4ddd1fe52a3698a4b87e024250ed508df77a |
24-Mar-2012 |
Hal Finkel <hfinkel@anl.gov> |
Fix small-integer VAARG on SVR4 ABI PPC64. The PPC64 SVR4 ABI requires integer stack arguments, and thus the var. args., that are smaller than 64 bits be zero extended to 64 bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153373 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f2f6182f6a88cf4b8d8cb95686d68aa14ddb6857 |
22-Mar-2012 |
Hal Finkel <hfinkel@anl.gov> |
PPC::DBG_VALUE must use Reg+Imm frame-index elimination even for large offsets. Fixes PR12203. I don't have a small test case yet, but I'll try to construct one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153240 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
79aa3417eb6f58d668aadfedf075240a41d35a26 |
17-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Reorder includes in Target backends to following coding standards. Remove some superfluous forward declarations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152997 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
PC.h
PCAsmPrinter.cpp
PCHazardRecognizers.h
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.h
PCRegisterInfo.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
c5eaae4e9bc75b203b3a9922b480729bc4f340e2 |
11-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Convert more static tables of registers used by calling convention to uint16_t to reduce space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152538 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b78ca423844f19f4a838abb49b4b4fa7ae499707 |
11-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Use uint16_t to store registers and opcode in static tables in the target specific backends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152537 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelLowering.cpp
|
e46137f498fa81a088f13d24c79242eed3ff45a7 |
06-Mar-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Convert PowerPC to register mask operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152122 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.h
|
c6449b636f4984be88f128d0375c056ad05e7e8f |
05-Mar-2012 |
Jim Grosbach <grosbach@apple.com> |
Make MCRegisterInfo available to the the MCInstPrinter. Used to allow context sensitive printing of super-register or sub-register references. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152043 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCMCTargetDesc.cpp
|
015f228861ef9b337366f92f637d4e8d624bb006 |
04-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Use uint16_t to store registers in callee saved register tables to reduce size of static data. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151996 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
4bfcd4acbc7d12aa55f8de9af84a38422f0f6d83 |
28-Feb-2012 |
Evan Cheng <evan.cheng@apple.com> |
Re-commit r151623 with fix. Only issue special no-return calls if it's a direct call. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151645 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
21a1401413f074ffb216f74f94c5bc7a0e6cc1e1 |
28-Feb-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Properly MCize the section switch, removing a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151639 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
20bd5296cec8d8d597ab9db2aca7346a88e580c8 |
28-Feb-2012 |
Daniel Dunbar <daniel@zuster.org> |
Revert r151623 "Some ARM implementaions, e.g. A-series, does return stack prediction. ...", it is breaking the Clang build during the Compiler-RT part. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151630 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ec52aaa12f57896fc806e849fa21a61603050ac4 |
28-Feb-2012 |
Evan Cheng <evan.cheng@apple.com> |
Some ARM implementaions, e.g. A-series, does return stack prediction. That is, the processor keeps a return addresses stack (RAS) which stores the address and the instruction execution state of the instruction after a function-call type branch instruction. Calling a "noreturn" function with normal call instructions (e.g. bl) can corrupt RAS and causes 100% return misprediction so LLVM should use a unconditional branch instead. i.e. mov lr, pc b _foo The "mov lr, pc" is issued in order to get proper backtrace. rdar://8979299 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151623 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4328f9f1749698fcf7ec0339666f6129847d258b |
27-Feb-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Reapply r151278 with fixes. MCize function entry label emission on PowerPC64 properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151547 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
9b4d7088681b3386359497d5806b7365d5f6c39a |
25-Feb-2012 |
Hal Finkel <hfinkel@anl.gov> |
Revert r151278, breaks static linking. Reverting this because it breaks static linking on ppc64. Specifically, it may be linkonce_odr functions that are the problem. With this patch, if you link statically, calls to some functions end up calling their descriptor addresses instead of calling to their entry points. This causes the execution to fail with SIGILL (b/c the descriptor address just has some pointers, not code). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151433 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3161039cf3318a1634af04e1da2038e9dc1f4b3a |
24-Feb-2012 |
Hal Finkel <hfinkel@anl.gov> |
X11/X2 loads around indirect calls on ppc64 should not be deleted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151374 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
ca0af3a971eac682b1a60987831ae84b256ce37a |
23-Feb-2012 |
Roman Divacky <rdivacky@freebsd.org> |
MCize function entry label emission on PowerPC64 properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151278 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
d55a2664f9493a4c3be242a75d339fac0ebe2e21 |
22-Feb-2012 |
Hal Finkel <hfinkel@anl.gov> |
Allow the use of an alternate symbol for calculating a function's size. The standard function epilog includes a .size directive, but ppc64 uses an alternate local symbol to tag the actual start of each function. Until recently, binutils accepted the .size directive as: .size test1, .Ltmp0-test1 however, using this directive with recent binutils will result in the error: .size expression for XXX does not evaluate to a constant so we must use the label which actually tags the start of the function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151200 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
44d23825d61d530b8d562329ec8fc2d4f843bb8d |
22-Feb-2012 |
Craig Topper <craig.topper@gmail.com> |
Make all pointers to TargetRegisterClass const since they are all pointers to static data that should not be modified. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151134 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
31d157ae1ac2cd9c787dc3c1d28e64c682803844 |
18-Feb-2012 |
Jia Liu <proljc@gmail.com> |
Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, MSP430, PPC, PTX, Sparc, X86, XCore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150878 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.h
CTargetDesc/PPCBaseInfo.h
CTargetDesc/PPCMCAsmInfo.cpp
CTargetDesc/PPCMCAsmInfo.h
CTargetDesc/PPCMCTargetDesc.cpp
PC.td
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCallingConv.td
PCCodeEmitter.cpp
PCFrameLowering.cpp
PCFrameLowering.h
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCJITInfo.h
PCMachineFunctionInfo.cpp
PCPerfectShuffle.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
PCRelocations.h
PCSchedule.td
PCSchedule440.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.h
|
61f1e3db43e556f495b6b9360d2f550291f78471 |
08-Feb-2012 |
Andrew Trick <atrick@apple.com> |
Move pass configuration out of pass constructors: BranchFolderPass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150095 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
bc2198133a1836598b54b943420748e75d5dea94 |
07-Feb-2012 |
Craig Topper <craig.topper@gmail.com> |
Convert assert(0) to llvm_unreachable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149961 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/PPCAsmBackend.cpp
PCISelLowering.cpp
PCMCInstLower.cpp
|
655b8de7b2ab773a977e0c524307e71354d8af29 |
05-Feb-2012 |
Craig Topper <craig.topper@gmail.com> |
Convert assert(0) to llvm_unreachable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149814 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
061efcfb3e79899493d857f49e50d09f29037e0a |
04-Feb-2012 |
Andrew Trick <atrick@apple.com> |
TargetPassConfig: confine the MC configuration to TargetMachine. Passes prior to instructon selection are now split into separate configurable stages. Header dependencies are simplified. The bulk of this diff is simply removal of the silly DisableVerify flags. Sorry for the target header churn. Attempting to stabilize them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149754 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
843ee2e6a46b2b2d74a84c2eea68dec35cb359cc |
03-Feb-2012 |
Andrew Trick <atrick@apple.com> |
Added TargetPassConfig. The first little step toward configuring codegen passes. Allows command line overrides to be centralized in LLVMTargetMachine.cpp. LLVMTargetMachine can intercept common passes and give precedence to command line overrides. Allows adding "internal" target configuration options without touching TargetOptions. Encapsulates the PassManager. Provides a good point to initialize all CodeGen passes so that Pass ID's can be used in APIs. Allows modifying the target configuration hooks without rebuilding the world. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149672 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
8247e0dca6759d9a22ac4c5cf305fac052b285ac |
03-Feb-2012 |
Andrew Trick <atrick@apple.com> |
whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149671 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
4f8dc7b17accf4f2ec953b80b2cc79786207492e |
24-Jan-2012 |
Owen Anderson <resistor@mac.com> |
Widen the instruction encoder that TblGen emits to a 64 bits, which should accomodate every target I can think of offhand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148833 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCCodeEmitter.cpp
PCCodeEmitter.cpp
|
4d6ccb5f68cd7c6418a209f1fa4dbade569e4493 |
20-Jan-2012 |
David Blaikie <dblaikie@gmail.com> |
More dead code removal (using -Wunreachable-code) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148578 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
263109d822314305822796a2cc05e98304793051 |
20-Jan-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Remove a bunch of unused variable assignments. Found by the clang static analyzer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148541 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
71f0fc1ca88965b69b4b2c8794a7144bc93d4bba |
19-Jan-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Ignore register mask operands when lowering instructions to MC. This is similar to implicit register operands. MC doesn't understand register liveness and call clobbers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148437 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCInstLower.cpp
|
bc3af9b618c061294c7df00f3313f9c5234b8450 |
18-Jan-2012 |
Jim Grosbach <grosbach@apple.com> |
Tidy up. 80 columns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148401 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
ec3433852dd11e8ff60c9610b4c84468e5935f2b |
18-Jan-2012 |
Jim Grosbach <grosbach@apple.com> |
Tidy up. MCAsmBackend naming conventions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148400 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
17d2dbd5f9dd6c0de86398178f302ef46ba6ec79 |
17-Jan-2012 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup PPC RLWINM8 vs RLWINM No test case: output assembly will be identical. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148261 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
ed4c8c633c52a40ad1a3e8687f290be4aeb1f0e8 |
15-Jan-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Return an ArrayRef from ShuffleVectorSDNode::getMask and push it through CodeGen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148218 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2bd335470f8939782f3df7f6180282d3825d4f09 |
10-Jan-2012 |
David Blaikie <dblaikie@gmail.com> |
Remove unnecessary default cases in switches that cover all enum values. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147855 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
f321e1075eabae96f62b1f2570d9dee5d10b8200 |
07-Jan-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Remove VectorExtras. This unused helper was written for a type of API that is discouraged now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147738 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2e95afa04cd1c89de7e4abaeead66cd8e51ec929 |
30-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
Cleanup stack/frame register define/kill states. This fixes two bugs: 1. The ST*UX instructions that store and update the stack pointer did not set define/kill on R1. This became a problem when I activated post-RA scheduling (and had incorrectly adjusted the Frames-large test). 2. eliminateFrameIndex did not kill its scavenged temporary register, and this could cause the scavenger to exhaust all available registers (and its emergency spill slot) when there were a lot of CR values to spill. The 2010-02-12-saveCR test has been adjusted to check for this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147359 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCRegisterInfo.cpp
|
f51e95a9f2ce10ca0eb8a353e1fc1d9d49ec130c |
22-Dec-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix an incomplete refactoring of the ppc backend. Thanks to rdivacky for reporting it. It does need some some tests... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147154 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCELFObjectWriter.cpp
|
dcc557f1463107d0f2f6b0099c99593b8fce4e36 |
22-Dec-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix cmake. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147126 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/CMakeLists.txt
|
f3a86fb03d196994dc7923351f15d8ed9343013e |
22-Dec-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Move PPC bits to lib/Target/PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147124 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCELFObjectWriter.cpp
CTargetDesc/PPCMCTargetDesc.h
|
dc9a8a378daf432d8dcfc178507afe149706f9a6 |
21-Dec-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Reduce the exposure of Triple::OSType in the ELF object writer. This will avoid including ADT/Triple.h in many places when the target specific bits are moved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147059 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
cfb75fba735edd44841eb21c72c3a9736a7d9af2 |
20-Dec-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Fix up the CMake build for the new files added in r146960, they're likely to stay either way that discussion ends up resolving itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146966 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
2d24e2a396a1d211baaeedf32148a3b657240170 |
20-Dec-2011 |
David Blaikie <dblaikie@gmail.com> |
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146960 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
CTargetDesc/PPCMCAsmInfo.h
PCMachineFunctionInfo.cpp
PCMachineFunctionInfo.h
PCTargetMachine.cpp
PCTargetMachine.h
|
7f370b615515af6422eb0d5d08f1c4c5db95fbbc |
15-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
Ensure that the nop that should follow a bl call in PPC64 ELF actually does git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146664 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
|
63974b2144c87c962effdc0508c27643c8ad98b6 |
13-Dec-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Initial CodeGen support for CTTZ/CTLZ where a zero input produces an 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146466 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b0c594fd422417e1e290da166b566c7bee74644b |
12-Dec-2011 |
Daniel Dunbar <daniel@zuster.org> |
LLVMBuild: Introduce a common section which currently has a list of the 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146436 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
|
4ab406d7fc06b1272d02cd8be46f0c5ebe51a3da |
12-Dec-2011 |
Daniel Dunbar <daniel@zuster.org> |
LLVMBuild: Remove trailing newline, which irked me. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146409 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/LLVMBuild.txt
LVMBuild.txt
CTargetDesc/LLVMBuild.txt
argetInfo/LLVMBuild.txt
|
fed4d19eddcedf2a210a0ff3a290f4bf70927452 |
10-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
Make CR spill and restore use a reserved register. These operations cannot use the register scavenger because the scavenger can only scavenge one register and frame-index elimination may have already grabbed it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146318 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
4a4fdf3476473021f62d5b02e8ee8802f5b25e5a |
08-Dec-2011 |
Owen Anderson <resistor@mac.com> |
Teach SelectionDAG to match more calls to libm functions onto existing SDNodes. Mark these nodes as illegal by default, unless the target declares otherwise. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146171 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
67724526447efae608ef3c8cf333cd797efa8737 |
08-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
MTCTR needs to be glued to BCTR so that CTR is not marked dead in MTCTR (another find by -verify-machineinstrs) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146137 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
5a96b3dad2f634c9081c8b2b6c2575441dc5a2bd |
07-Dec-2011 |
Evan Cheng <evan.cheng@apple.com> |
Add bundle aware API for querying instruction properties and switch the code 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelDAGToDAG.cpp
|
234bb38d6c421ea22229087a9835afe99e531276 |
07-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
make CR spill and restore 64-bit clean (no functional change), and fix some other problems found with -verify-machineinstrs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146024 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
|
6d0e014b1fecb35a06e551165614c08edc30194a |
07-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
make base register selection used in eliminateFrameIndex 64-bit clean git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146023 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
ae37cd0a37ccbdf6ca2ddcc18079b1454d784eb4 |
07-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
set mayStore and mayLoad on CR pseudos git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146022 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7ad6b7d35978e1bb89de90aa732cf2f57377d69d |
07-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
64-bit LR8 load should use X11 not R11 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146021 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
d21e930eac3d99dd77ee33ea5826700b4bc97ae8 |
06-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
add RESTORE_CR and support CR unspills git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145961 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.h
|
16588e794c7528c24fb15ee8e28653bffe78c3da |
06-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
remove old FIXME git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145960 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
6482e9114954def43fc08e83aadec1aadfc64200 |
06-Dec-2011 |
NAKAMURA Takumi <geek4civic@gmail.com> |
MipsAsmBackend.cpp, PPCAsmBackend.cpp: Fix -Asserts build to appease msvc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145894 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
370b78d795154899a22ca2b4674e890661ff1d59 |
06-Dec-2011 |
Jim Grosbach <grosbach@apple.com> |
Move target-specific logic out of generic MCAssembler. 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145881 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
|
3fd0018af1b692cabfa5a002bf41f1e756aa9dde |
05-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
enable PPC register scavenging by default (update tests and remove some FIXMEs) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145819 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
9489487f9863ca9f0ae9b4572d206910f1c5a581 |
05-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
don't include CR bit subregs in callee-saved list git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145818 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
2e313caa3631e2c94bb6d81429b77a30b116b520 |
05-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
add register pressure for CR regs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145816 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
8a8d479214745c82ef00f08d4e4f1c173b5f9ce2 |
02-Dec-2011 |
Nick Lewycky <nicholas@mxc.ca> |
Move global variables in TargetMachine into new TargetOptions class. As an API change, now you need a TargetOptions object to create a TargetMachine. Clang patch to follow. One small functionality change in PTX. PTX had commented out the machine verifier parts in their copy of printAndVerify. That now calls the version in LLVMTargetMachine. Users of PTX who need verification disabled should rely on not passing the command-line flag to enable it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145714 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
PCISelLowering.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
826941a0af2c8ef695a6424cc5c712ac3df67f4c |
02-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
remove unneeded FIXME comment git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145679 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
64c34e253563a8ba6b41fbce2bb020632cf65961 |
02-Dec-2011 |
Hal Finkel <hfinkel@anl.gov> |
update PPC 940 hazard rec. to function in postRA mode git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145676 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCInstrInfo.cpp
PCInstrInfo.h
PCSubtarget.cpp
PCSubtarget.h
|
32e698cc104f4716dabddeae15133ba1b25969a1 |
01-Dec-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Small fix for assembler generation on Darwin PPC64. Patch by Michael Kostylev. PR11437. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145553 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
d782bae970e888572f0458ac05369bbd7752f05a |
29-Nov-2011 |
Daniel Dunbar <daniel@zuster.org> |
build/CMake: Finish removal of add_llvm_library_dependencies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145420 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nstPrinter/CMakeLists.txt
CTargetDesc/CMakeLists.txt
argetInfo/CMakeLists.txt
|
768c65f677af3f05c2e94982043f90a1bfaceda5 |
22-Nov-2011 |
Hal Finkel <hfinkel@anl.gov> |
add basic PPC register-pressure feedback; adjust the vaarg test to match the new register-allocation pattern git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145065 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
b95fc31aa2e5a0a0b9ee1909d1cb949577c5aa16 |
16-Nov-2011 |
Evan Cheng <evan.cheng@apple.com> |
Sink codegen optimization level into MCCodeGenInfo along side relocation model and code model. This eliminates the need to pass OptLevel flag all over the place and makes it possible for any codegen pass to use this information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144788 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCISelDAGToDAG.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
978e0dfe46e481bfb1281e683aa308329e879e95 |
15-Nov-2011 |
Jay Foad <jay.foad@gmail.com> |
Make use of MachinePointerInfo::getFixedStack. This removes all mention of PseudoSourceValue from lib/Target/. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144632 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
d9190c0f148b218ab046deadd0c7ae475414cde5 |
15-Nov-2011 |
Jay Foad <jay.foad@gmail.com> |
Remove some unnecessary includes of PseudoSourceValue.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144631 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b8ebca83f4dff04ba21cc97673003f0bd35a2e49 |
12-Nov-2011 |
Daniel Dunbar <daniel@zuster.org> |
build: Attempt to rectify inconsistencies between CMake and LLVMBuild versions of explicit dependencies. - The hope is that we have a tool/test to verify these are accurate (and tight) soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144444 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/LLVMBuild.txt
|
5ed5506f18fcc0a277c863f7a21b39f58e892ca5 |
11-Nov-2011 |
Daniel Dunbar <daniel@zuster.org> |
LLVMBuild: Add explicit information on whether targets define an assembly printer, assembly parser, or disassembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144344 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
|
affc6cf9d2b2b74532ce82027ac4524d1e29a658 |
10-Nov-2011 |
Daniel Dunbar <daniel@zuster.org> |
llvm-build: Add --native-target and --enable-targets options, and add logic to handle defining the "magic" target related components (like native, nativecodegen, and engine). - We still require these components to be in the project (currently in lib/Target) so that we have a place to document them and hopefully make it more obvious that they are "magic". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144253 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
|
c352caf168094c83f05a8010ca14c2e643dbf618 |
10-Nov-2011 |
Daniel Dunbar <daniel@zuster.org> |
llvm-build: Add an explicit component type to represent targets. - Gives us a place to hang target specific metadata (like whether the target has a JIT). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144250 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
|
f4e0d5d83db8bf73328d59d35471d0edd0b984f4 |
09-Nov-2011 |
Devang Patel <dpatel@apple.com> |
Remove unnecessary include. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144211 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
d752e0f7e64585839cb3a458ef52456eaebbea3c |
08-Nov-2011 |
Pete Cooper <peter_cooper@apple.com> |
Added invariant field to the DAG.getLoad method and changed all calls. When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144100 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0839033cbca20a1d1348bdf1c9f63fb263b248a6 |
08-Nov-2011 |
NAKAMURA Takumi <geek4civic@gmail.com> |
PPCInstrInfo.cpp: Fix one "unused" warning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144071 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
b0d9ce567f5aee3af94c290d7cd52b1582c27b4f |
04-Nov-2011 |
Daniel Dunbar <daniel@zuster.org> |
build/cmake: Use tblgen macro directly instead of llvm_tablegen, which just added a layer of indirection with no value (not even conciseness). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143727 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
a3a2dfd4a2a8265a9a0c962cb776e2e6ba123956 |
03-Nov-2011 |
Daniel Dunbar <daniel@zuster.org> |
build: Add initial cut at LLVMBuild.txt files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143634 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/LLVMBuild.txt
LVMBuild.txt
CTargetDesc/LLVMBuild.txt
argetInfo/LLVMBuild.txt
|
95c885d65a0da92f6661fd160d8ce13b30e3892c |
29-Oct-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
PPC: Disable moves for all CR subregisters. Should fix assertion failures on ppc buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143290 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
15701f8969fcb36899a75ca2df6fdcbc52141106 |
27-Oct-2011 |
Lang Hames <lhames@gmail.com> |
Rename NonScalarIntSafe to something more appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143080 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ed8db320af68556de5fcfe2cbec688003acc33f5 |
21-Oct-2011 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix unused variable warning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142630 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
5bdab4a63cab2ed2f96a3490fa2349550da7c7f9 |
20-Oct-2011 |
Dan Gohman <gohman@apple.com> |
Disable the PPC hazard recognizer. It currently only supports top-down scheduling and top-down scheduling is going away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142621 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
c61291609d5d2044fa9f9fdcb1fe22cfd7c998e2 |
17-Oct-2011 |
Hal Finkel <hfinkel@anl.gov> |
Revert change to function alignment b/c existing logic was fine git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142224 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e9e579155614654665ef7a4e3aa5c7a8d4a49f01 |
17-Oct-2011 |
Hal Finkel <hfinkel@anl.gov> |
Remove >80-col line and unicode git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142209 91177308-0d34-0410-b5e6-96231b3b80d8
PCSchedule440.td
|
98daa9dcc8cf5bf87f06a085793c543c035313d9 |
17-Oct-2011 |
Hal Finkel <hfinkel@anl.gov> |
Instructions for Book E PPC should be word aligned, set function alignment to reflect this git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142194 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b31d3d271f75c17593e917575dc324b50615a630 |
17-Oct-2011 |
Hal Finkel <hfinkel@anl.gov> |
Add PPC 440 scheduler and some associated tests (new files) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142171 91177308-0d34-0410-b5e6-96231b3b80d8
PCSchedule440.td
|
c6d08f10bf797cc78068ef30bd0e8812a5bdc9a2 |
17-Oct-2011 |
Hal Finkel <hfinkel@anl.gov> |
Add PPC 440 scheduler and some associated tests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142170 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCAsmPrinter.cpp
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCInstrInfo.cpp
PCInstrInfo.td
PCSchedule.td
PCSubtarget.cpp
PCSubtarget.h
|
d712f935f7e027a733741e6ca67b3237a59f65d1 |
14-Oct-2011 |
Hal Finkel <hfinkel@anl.gov> |
Add an implementation of the CanLowerReturn function to the PPC backend git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141981 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
8ee53e2eb6f669fd69eb146e56c07823cbed99e7 |
14-Oct-2011 |
Hal Finkel <hfinkel@anl.gov> |
initial test commit (remove whitespace) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141972 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
de8f33c199f3bf2049b0b732169f2bd8717469c6 |
06-Oct-2011 |
Peter Collingbourne <peter@pcc.me.uk> |
Build system infrastructure for multiple tblgens. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141266 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
01faf432d9d81212b492f326594d43a951fe64f0 |
04-Oct-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Teach PPCInstrInfo to handle sub-classes. This has already been done for most other targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141083 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
519020adf1cf57e2e93cc4fd49c385c47f7ff0f7 |
21-Sep-2011 |
Owen Anderson <resistor@mac.com> |
These do not need to be conditional on the presence of CommentStream, as they have a fallback path now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140267 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
317eaf19937813d630166bfec7b933a98ea89aa5 |
21-Sep-2011 |
Owen Anderson <resistor@mac.com> |
In the disassembler C API, be careful not to confuse the comment streamer that the disassembler outputs annotations on with the streamer that the InstPrinter will print them on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140217 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
98c5ddabca1debf935a07d14d0cbc9732374bdb8 |
16-Sep-2011 |
Owen Anderson <resistor@mac.com> |
Don't attach annotations to MCInst's. Instead, have the disassembler return, and the printer accept, an annotation string which can be passed through if the client cares about annotations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139876 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
b950585cc5a0d665e9accfe5ce490cd269756f2e |
07-Sep-2011 |
James Molloy <james.molloy@arm.com> |
Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
28b77e968d2b01fc9da724762bd8ddcd80650e32 |
06-Sep-2011 |
Duncan Sands <baldrick@free.fr> |
Add codegen support for vector select (in the IR this means a select with a vector condition); such selects become VSELECT codegen nodes. This patch also removes VSETCC codegen nodes, unifying them with SETCC nodes (codegen was actually often using SETCC for vector SETCC already). This ensures that various DAG combiner optimizations kick in for vector comparisons. Passes dragonegg bootstrap with no testsuite regressions (nightly testsuite as well as "make check-all"). Patch mostly by Nadav Rotem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139159 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4a544a79bd735967f1d33fe675ae4566dbd17813 |
06-Sep-2011 |
Duncan Sands <baldrick@free.fr> |
Split the init.trampoline intrinsic, which currently combines GCC's init.trampoline and adjust.trampoline intrinsics, into two intrinsics like in GCC. While having one combined intrinsic is tempting, it is not natural because typically the trampoline initialization needs to be done in one function, and the result of adjust trampoline is needed in a different (nested) function. To get around this llvm-gcc hacks the nested function lowering code to insert an additional parent variable holding the adjust.trampoline result that can be accessed from the child function. Dragonegg doesn't have the luxury of tweaking GCC code, so it stored the result of adjust.trampoline in the memory GCC set aside for the trampoline itself (this is always available in the child function), and set up some new memory (using an alloca) to hold the trampoline. Unfortunately this breaks Go which allocates trampoline memory on the heap and wants to use it even after the parent has exited (!). Rather than doing even more hacks to get Go working, it seemed best to just use two intrinsics like in GCC. Patch mostly by Sanjoy Das. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139140 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
36a16015ac108e2f0dd2d6d96a6d364bc74c50d7 |
02-Sep-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Don't drop alignment info on local common symbols. - On COFF the .lcomm directive has an alignment argument. - On ELF we fall back to .local + .comm Based on a patch by NAKAMURA Takumi. Fixes PR9337, PR9483 and PR10128. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138976 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
0aaa9195b53e693eb8618fef305e3799b5b77771 |
30-Aug-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Set CR1EQ only when lowering vararg floating arguments (not any vararg arguments as before), unset CR1EQ otherwise. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138802 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
4db5acaf48c119b2bb7ad93b10dfcfe8b58dcfdb |
29-Aug-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Expand ATOMIC_LOAD and ATOMIC_STORE for architectures I don't know well enough to fix properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138751 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3e74d6fdd248e20a280f1dff3da9a6c689c2c4c3 |
24-Aug-2011 |
Evan Cheng <evan.cheng@apple.com> |
Move TargetRegistry and TargetSelect from Target to Support where they belong. These are strictly utilities for registering targets and components. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138450 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMCTargetDesc.cpp
PCAsmPrinter.cpp
PCInstrInfo.cpp
PCSubtarget.cpp
PCTargetMachine.cpp
argetInfo/PowerPCTargetInfo.cpp
|
7801136b95d1fbe515b9655b73ada39b05a33559 |
23-Aug-2011 |
Evan Cheng <evan.cheng@apple.com> |
Some refactoring so TargetRegistry.h no longer has to include any files from MC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138367 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
26689ac37ebec3b358588089415509285e558de9 |
03-Aug-2011 |
Eli Friedman <eli.friedman@gmail.com> |
New approach to r136737: insert the necessary fences for atomic ops in platform-independent code, since a bunch of platforms (ARM, Mips, PPC, Alpha are the relevant targets here) need to do essentially the same thing. I think this completes the basic CodeGen for atomicrmw and cmpxchg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136813 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
29630ff214085365d11f1a58251ba07326e21398 |
02-Aug-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Remove trailing semicolon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136690 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
2c0d69fad0e658117922f3d96d9b732bedf9fd47 |
02-Aug-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Sketch out PowerPC ELF writer. This is enough to get clang -integrated-as to compile a working hello world on FreeBSD/PPC32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136689 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMCTargetDesc.cpp
|
81fd0ba8ab153b8344527a461545dbd87642ed83 |
01-Aug-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Actually finish switching to the new system for Target sublibrary TableGen deps introduced in r136023. This completes the fixing that dgregor started in r136621. Sorry for missing these the first time around. This should fix some of the random race-condition failures people are still seeing with CMake. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136643 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/CMakeLists.txt
|
8ead80db20ec05fd8e613084abfdb8714703fc5f |
01-Aug-2011 |
Evan Cheng <evan.cheng@apple.com> |
Set endianess and pointer size for PPC Linux. Bug noticed by Roman Divacky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136639 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
ac03e736c77bcf7e8deb515fc16a7e55d343dc8d |
29-Jul-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Rewrite the CMake build to use explicit dependencies between libraries, specified in the same file that the library itself is created. This is more idiomatic for CMake builds, and also allows us to correctly specify dependencies that are missed due to bugs in the GenLibDeps perl script, or change from compiler to compiler. On Linux, this returns CMake to a place where it can relably rebuild several targets of LLVM. I have tried not to change the dependencies from the ones in the current auto-generated file. The only places I've really diverged are in places where I was seeing link failures, and added a dependency. The goal of this patch is not to start changing the dependencies, merely to move them into the correct location, and an explicit form that we can control and change when necessary. This also removes a serialization point in the build because we don't have to scan all the libraries before we begin building various tools. We no longer have a step of the build that regenerates a file inside the source tree. A few other associated cleanups fall out of this. This isn't really finished yet though. After talking to dgregor he urged switching to a single CMake macro to construct libraries with both sources and dependencies in the arguments. Migrating from the two macros to that style will be a follow-up patch. Also, llvm-config is still generated with GenLibDeps.pl, which means it still has slightly buggy dependencies. The internal CMake 'llvm-config-like' macro uses the correct explicitly specified dependencies however. A future patch will switch llvm-config generation (when using CMake) to be based on these deps as well. This may well break Windows. I'm getting a machine set up now to dig into any failures there. If anyone can chime in with problems they see or ideas of how to solve them for Windows, much appreciated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136433 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nstPrinter/CMakeLists.txt
CTargetDesc/CMakeLists.txt
argetInfo/CMakeLists.txt
|
4ebc5916e9b3a43af8aff8e1b8744b1644457a4b |
28-Jul-2011 |
Oscar Fuentes <ofv@wanadoo.es> |
Explicitly declare a library dependency of LLVM*Desc to LLVM*AsmPrinter. GenLibDeps.pl fails to detect vtable references. As this is the only referenced symbol from LLVM*Desc to LLVM*AsmPrinter on optimized builds, the algorithm that creates the list of libraries to be linked into tools doesn't know about the dependency and sometimes places the libraries on the wrong order, yielding error messages like this: ../../lib/libLLVMARMDesc.a(ARMMCTargetDesc.cpp.o): In function `llvm::ARMInstPrinter::ARMInstPrinter(llvm::MCAsmInfo const&)': ARMMCTargetDesc.cpp:(.text._ZN4llvm14ARMInstPrinterC1ERKNS_9MCAsmInfoE [llvm::ARMInstPrinter::ARMInstPrinter(llvm::MCAsmInfo const&)]+0x2a): undefined reference to `vtable for llvm::ARMInstPrinter' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136328 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/CMakeLists.txt
|
14648468011c92a4210f8118721d58c25043daf8 |
28-Jul-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Code generation for 'fence' instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136283 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
28c85a81a17dd719a254dc00cbeb484774893197 |
26-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Rename createCodeEmitter to createMCCodeEmitter; createObjectStreamer to createMCObjectStreamer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136031 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
06825978176a1438578ab0bf538e705de6a295c1 |
26-Jul-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Remove a file from CMakeLists.txt that Evan removed in r136027. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136030 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
94b9550a32d189704a8eae55505edf62662c0534 |
26-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Rename TargetAsmParser to MCTargetAsmParser and TargetAsmLexer to MCTargetAsmLexer; rename createAsmLexer to createMCAsmLexer and createAsmParser to createMCAsmParser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136027 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
CTargetDesc/CMakeLists.txt
CTargetDesc/PPCPredicates.cpp
CTargetDesc/PPCPredicates.h
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCPredicates.cpp
PCPredicates.h
|
b35552d440581265a982d7523c33e7466437bfb0 |
26-Jul-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Clean up a pile of hacks in our CMake build relating to TableGen. The first problem to fix is to stop creating synthetic *Table_gen targets next to all of the LLVM libraries. These had no real effect as CMake specifies that add_custom_command(OUTPUT ...) directives (what the 'tablegen(...)' stuff expands to) are implicitly added as dependencies to all the rules in that CMakeLists.txt. These synthetic rules started to cause problems as we started more and more heavily using tablegen files from *subdirectories* of the one where they were generated. Within those directories, the set of tablegen outputs was still available and so these synthetic rules added them as dependencies of those subdirectories. However, they were no longer properly associated with the custom command to generate them. Most of the time this "just worked" because something would get to the parent directory first, and run tablegen there. Once run, the files existed and the build proceeded happily. However, as more and more subdirectories have started using this, the probability of this failing to happen has increased. Recently with the MC refactorings, it became quite common for me when touching a large enough number of targets. To add insult to injury, several of the backends *tried* to fix this by adding explicit dependencies back to the parent directory's tablegen rules, but those dependencies didn't work as expected -- they weren't forming a linear chain, they were adding another thread in the race. This patch removes these synthetic rules completely, and adds a much simpler function to declare explicitly that a collection of tablegen'ed files are referenced by other libraries. From that, we can add explicit dependencies from the smaller libraries (such as every architectures Desc library) on this and correctly form a linear sequence. All of the backends are updated to use it, sometimes replacing the existing attempt at adding a dependency, sometimes adding a previously missing dependency edge. Please let me know if this causes any problems, but it fixes a rather persistent and problematic source of build flakiness on our end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136023 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nstPrinter/CMakeLists.txt
CTargetDesc/CMakeLists.txt
|
78c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5c |
26-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Rename TargetAsmBackend to MCAsmBackend; rename createAsmBackend to createMCAsmBackend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136010 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCMCTargetDesc.cpp
CTargetDesc/PPCMCTargetDesc.h
|
4b64e8a9e13ba782da2034e1dee52f077bdb759c |
25-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Separate MCInstPrinter registration from AsmPrinter registration. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135974 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCAsmPrinter.cpp
|
54134708f5debe1631f9ea9b232f78758a2151e4 |
25-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Code clean up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135954 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCBaseInfo.h
PC.h
|
b024572444d19a6e06624328ea6a75a2f3342eaf |
25-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Missed a file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135943 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCBaseInfo.h
|
966aeb5788c242cfaca35c56c0ddc0ff778d4376 |
25-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Refactor PPC target to separate MC routines from Target routines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135942 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
CTargetDesc/CMakeLists.txt
CTargetDesc/PPCAsmBackend.cpp
CTargetDesc/PPCFixupKinds.h
CTargetDesc/PPCMCCodeEmitter.cpp
CTargetDesc/PPCMCTargetDesc.cpp
CTargetDesc/PPCMCTargetDesc.h
PC.h
PCAsmBackend.cpp
PCCodeEmitter.cpp
PCFixupKinds.h
PCFrameLowering.cpp
PCInstrInfo.cpp
PCMCCodeEmitter.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
PCTargetMachine.cpp
|
d5601cc810486e6ca9b5bfb3634455061eb10f07 |
24-Jul-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Set PPCII::MO_DARWIN_STUB only on MacOSX < 10.5. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135866 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a7cfc08ebe737062917b442830eb5321b0f79e89 |
23-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Move TargetAsmParser.h TargetAsmBackend.h and TargetAsmLexer.h to MC where they belong. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135833 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
7f8dff65717b1e4090ba4a648f9ec4f037a66c1e |
23-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
createXXXMCCodeGenInfo should be static. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135826 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
e78085a3c03de648a481e9751c3094c517bd7123 |
22-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Combine all MC initialization routines into one. e.g. InitializeX86MCAsmInfo, InitializeX86MCInstrInfo, etc. are combined into InitializeX86TargetMC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135812 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
|
34ad6db8b958fdc0d38e122edf753b5326e69b03 |
20-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
- Move CodeModel from a TargetMachine global option to MCCodeGenInfo. - Introduce JITDefault code model. This tells targets to set different default code model for JIT. This eliminates the ugly hack in TargetMachine where code model is changed after construction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135580 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
439661395fd2a2a832dba01c65bc88718528313c |
19-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Introduce MCCodeGenInfo, which keeps information that can affect codegen (including compilation, assembly). Move relocation model Reloc::Model from TargetMachine to MCCodeGenInfo so it's accessible even without TargetMachine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135468 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
2d28617de2b0b731c08d1af9e830f31e14ac75b4 |
19-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for better location welcome). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135438 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCFrameLowering.cpp
PCFrameLowering.h
PCRegisterInfo.cpp
|
0e6a052331f674dd70e28af41f654a7874405eab |
18-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Sink getDwarfRegNum, getLLVMRegNum, getSEHRegNum from TargetRegisterInfo down to MCRegisterInfo. Also initialize the mapping at construction time. This patch eliminate TargetRegisterInfo from TargetAsmInfo. It's another step towards fixing the layering violation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135424 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCTargetDesc.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e |
18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
land David Blaikie's patch to de-constify Type, with a few tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
1be0e271a07925b928ba89848934f1ea6f1854e2 |
15-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Move some parts of TargetAsmInfo down to MCAsmInfo. This is not the greatest solution but it is a small step towards removing the horror that is TargetAsmInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135237 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/PPCMCAsmInfo.cpp
|
1abf2cb59b8d63415780a03329307c0997b2670c |
15-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Rename createAsmInfo to createMCAsmInfo and move registration code to MCTargetDesc to prepare for next round of changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135219 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
CTargetDesc/CMakeLists.txt
CTargetDesc/PPCMCAsmInfo.cpp
CTargetDesc/PPCMCAsmInfo.h
CTargetDesc/PPCMCTargetDesc.cpp
PCMCAsmInfo.cpp
PCMCAsmInfo.h
PCTargetMachine.cpp
|
c60f9b752381baa6c4b80c0739034660f1748c84 |
14-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Next round of MC refactoring. This patch factor MC table instantiations, MC registeration and creation code into XXXMCDesc libraries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135184 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
CTargetDesc/CMakeLists.txt
CTargetDesc/Makefile
CTargetDesc/PPCMCTargetDesc.cpp
CTargetDesc/PPCMCTargetDesc.h
akefile
PC.h
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCSubtarget.cpp
|
af0a2e6730ffb59405352269e1500b6e83e42d6a |
11-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Most MCCodeEmitter's don't meed MCContext. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134922 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCCodeEmitter.cpp
|
59ee62d2418df8db499eca1ae17f5900dc2dcbba |
11-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
- Eliminate MCCodeEmitter's dependency on TargetMachine. It now uses MCInstrInfo and MCSubtargetInfo. - Added methods to update subtarget features (used when targets automatically detect subtarget features or switch modes). - Teach X86Subtarget to update MCSubtargetInfo features bits since the MCSubtargetInfo layer can be shared with other modules. - These fixes .code 16 / .code 32 support since mode switch is updated in MCSubtargetInfo so MC code emitter can do the right thing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134884 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCInstrInfo.cpp
PCMCCodeEmitter.cpp
PCSubtarget.cpp
|
ffc0e73046f737d75e0a62b3a83ef19bcef111e3 |
09-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Change createAsmParser to take a MCSubtargetInfo instead of triple, CPU, and feature string. Parsing some asm directives can change subtarget state (e.g. .code 16) and it must be reflected in other modules (e.g. MCCodeEmitter). That is, the MCSubtargetInfo instance must be shared. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134795 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
33390848a7eca75301d04a59b89b516d83e19ee0 |
08-Jul-2011 |
Cameron Zwarich <zwarich@apple.com> |
Add an intrinsic and codegen support for fused multiply-accumulate. The intent is to use this for architectures that have a native FMA instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134742 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ebdeeab812beec0385b445f3d4c41a114e0d972f |
08-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Eliminate asm parser's dependency on TargetMachine: - Each target asm parser now creates its own MCSubtatgetInfo (if needed). - Changed AssemblerPredicate to take subtarget features which tablegen uses to generate asm matcher subtarget feature queries. e.g. "ModeThumb,FeatureThumb2" is translated to "(Bits & ModeThumb) != 0 && (Bits & FeatureThumb2) != 0". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134678 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCTargetMachine.cpp
|
0ddff1b5359433faf2eb1c4ff5320ddcbd42f52f |
07-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Compute feature bits at time of MCSubtargetInfo initialization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134606 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
b262799d49891b036daa00eddf51947487346c98 |
06-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
createMCInstPrinter doesn't need TargetMachine anymore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134525 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.h
PCAsmPrinter.cpp
|
cbb11869c47bdf8f3fa540dc0ee44075c0da8598 |
04-Jul-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Remove accidentaly left node from previous iteration of the patch. Noticed by Benjamin Kramer! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134376 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b272332e6120413b13dcaef7a5415783a99df073 |
03-Jul-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Make the i64 and f64 be 64bit ABI aligned in the target description. This is what both the ABI and clang says. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134367 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
385e930d55f3ecd3c9538823dfa5896a12461845 |
02-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Rename XXXGenSubtarget.inc to XXXGenSubtargetInfo.inc for consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134281 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
PCSubtarget.cpp
PCSubtarget.h
|
5b1b4489cf3a0f56f8be0673fc5cc380a32d277b |
01-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Rename TargetSubtarget to TargetSubtargetInfo for consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134259 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
94214703d97d8d9dfca88174ffc7e94820a85e62 |
01-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
- Added MCSubtargetInfo to capture subtarget features and scheduling itineraries. - Refactor TargetSubtarget to be based on MCSubtargetInfo. - Change tablegen generated subtarget info to initialize MCSubtargetInfo and hide more details from targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134257 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
4db3cffe94a5285239cc0056f939c6b74a5ca0b6 |
01-Jul-2011 |
Evan Cheng <evan.cheng@apple.com> |
Hide the call to InitMCInstrInfo into tblgen generated ctor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134244 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
276365dd4bc0c2160f91fd8062ae1fc90c86c324 |
30-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
Fix the ridiculous SubtargetFeatures API where it implicitly expects CPU name to be the first encoded as the first feature. It then uses the CPU name to look up features / scheduling itineray even though clients know full well the CPU name being used to query these properties. The fix is to just have the clients explictly pass the CPU name! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134127 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
|
ab8be96fd30ca9396e6b84fdddf1ac6208984cad |
29-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
Sink SubtargetFeature and TargetInstrItineraries (renamed MCInstrItineraries) into MC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134049 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
d5b03f252c0db6b49a242abab63d7c5a260fceae |
28-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
Move CallFrameSetupOpcode and CallFrameDestroyOpcode to TargetInstrInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134030 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
6844f7bcdec8c2691c8d1067d90e4a02cf658c27 |
28-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
Hide more details in tablegen generated MCRegisterInfo ctor function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134027 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
22fee2dff4c43b551aefa44a96ca74fcade6bfac |
28-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
Merge XXXGenRegisterNames.inc into XXXGenRegisterInfo.inc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134024 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
PC.h
PCInstrInfo.cpp
|
e837dead3c8dc3445ef6a0e2322179c57e264a13 |
28-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
- Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and sink them into MC layer. - Added MCInstrInfo, which captures the tablegen generated static data. Chang TargetInstrInfo so it's based off MCInstrInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134021 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstrInfo.cpp
|
bdb226ec83adf2e052f80f31ead21006b240c82f |
28-Jun-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Implement ISD::VAARG lowering on PPC32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134005 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
73f50d9bc3bd46cc0abeba9bb0d46977ba1aea42 |
27-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
Merge XXXGenRegisterDesc.inc XXXGenRegisterNames.inc XXXGenRegisterInfo.h.inc into XXXGenRegisterInfo.inc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133922 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
PC.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
ba8297ec08cdf7ae0c1e0c18ce07922e1f822643 |
25-Jun-2011 |
Jim Grosbach <grosbach@apple.com> |
Refactor MachO relocation generaration into the Target directories. Move the target-specific RecordRelocation logic out of the generic MC MachObjectWriter and into the target-specific object writers. This allows nuking quite a bit of target knowledge from the supposedly target-independent bits in lib/MC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133844 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
a347f85dbeee37a7f2bb68df1a7d4cdfbb7b576d |
24-Jun-2011 |
Evan Cheng <evan.cheng@apple.com> |
Starting to refactor Target to separate out code that's needed to fully describe target machine from those that are only needed by codegen. The goal is to sink the essential target description into MC layer so we can start building MC based tools without needing to link in the entire codegen. First step is to refactor TargetRegisterInfo. This patch added a base class MCRegisterInfo which TargetRegisterInfo is derived from. Changed TableGen to separate register description from the rest of the stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133782 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
PCRegisterInfo.cpp
|
8e9d6720c3b62ad45bb97d43b47867a3097b433a |
20-Jun-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Don't apply on PPC64 the 32bit ADDIC optimizations as there's no overflow with 32bit values. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133439 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
951cd021c10966f3ae146588b2466deaef730cb6 |
17-Jun-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Fix a few places where 32bit instructions/registerset were used on PPC64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133260 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCRegisterInfo.cpp
|
f28987b76e758b5f2fcc2c5d2c8e073df54ca91e |
16-Jun-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use set operations instead of plain lists to enumerate register classes. This simplifies many of the target description files since it is common for register classes to be related or contain sequences of numbered registers. I have verified that this doesn't change the files generated by TableGen for ARM and X86. It alters the allocation order of MBlaze GPR and Mips FGR32 registers, but I believe the change is benign. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133105 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
e355b80194ac5c908cecbecd6f3c137b2c9802cb |
15-Jun-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Make PPC64CompilationCallback compilable no non-darwin platforms. Patch by Nathan Whitehorn! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133059 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
4e3adfde653e8216a7f6faa726775f63f16e28d2 |
15-Jun-2011 |
Eli Friedman <eli.friedman@gmail.com> |
PR10136: fix PPCTargetLowering::LowerCall_SVR4 so that a necessary CopyToReg doesn't appear to be dead. Roman, since you're writing tests for other PPC-SVR4 vararg-related stuff, would you mind writing a test for this? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133018 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a1000742d28f33dd8dd9858e64282e7749c0bd64 |
09-Jun-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Fix emission of PPC64 assembler on non-darwin platforms by splitting VK_PPC_{HA,LO}16 into darwin and gas variants. Darwin wants {ha,lo}16(symbol) while gnu as wants symbol@{ha,l}. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132802 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCMCInstLower.cpp
|
2a9d1ca9c244aeac98044a5fc9a081ff3df7b2ff |
09-Jun-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove custom allocation order boilerplate that is no longer needed. The register allocators automatically filter out reserved registers and place the callee saved registers last in the allocation order, so custom methods are no longer necessary just for that. Some targets still use custom allocation orders: ARM/Thumb: The high registers are removed from GPR in thumb mode. The NEON allocation orders prefer to use non-VFP2 registers first. X86: The GR8 classes omit AH-DH in x86-64 mode to avoid REX trouble. SystemZ: Some of the allocation orders are omitting R12 aliases without explanation. I don't understand this target well enough to fix that. It looks like all the boilerplate could be removed by reserving the right registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132781 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
471e4224809f51652c71f319532697a879a75a0d |
09-Jun-2011 |
Eric Christopher <echristo@apple.com> |
Add a parameter to CCState so that it can access the MachineFunction. No functional change. Part of PR6965 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132763 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0c9b559bfd0b476c2dde787285a1195f3142c423 |
03-Jun-2011 |
Roman Divacky <rdivacky@freebsd.org> |
Fix wrong usages of CTR/MCTR where CTR8/MCTR8 was meant. - Check for MTCTR8 in addition to MTCTR when looking up a hazard. - When lowering an indirect call use CTR8 when targeting 64bit. - Introduce BCTR8 that uses CTR8 and use it on 64bit when expanding ISD::BRIND. The last change fixes PR8487. With those changes, we are able to compile a running "ls" and "sh" on FreeBSD/PowerPC64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132552 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
|
100c83341676d8aae8fc34b5452563ed08b14f3e |
03-Jun-2011 |
Eric Christopher <echristo@apple.com> |
Have LowerOperandForConstraint handle multiple character constraints. Part of rdar://9119939 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132510 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
cde4ce411b1ace4a80ea1dd38df97e8508aed0c9 |
02-Jun-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Don't hardcode the %reg format in the streamer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132451 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
6e032942cf58d1c41f88609a1cec74eb74940ecd |
30-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Use the dwarf->llvm mapping to print register names in the cfi directives. Fixes PR9826. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132317 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
PCFrameLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
67dc11352df491a6be79b615f0920ff377bcae5d |
30-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Split ppc dwarf regnums into ppc64 and ppc32 flavours. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132315 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.td
|
11fd5c0cd989010a2dfa59c75e3d5a5d2a970300 |
29-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Dwarf register 0 is r0, remove incorrect entries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132276 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
25b15d8502cf80e8dd332ba359ae2690885e4505 |
27-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove DwarfRegNum from the individual bits of the condition register. These should be DW_OP_bit_piece of CR (64). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132192 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
a5e62019d771fd0b01311cc0136e64b66b299eb1 |
26-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix some dwarf register numbers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132136 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
fc2bb8c4448fa884d79e437cc2d2627a7d7740a8 |
25-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Replace the -unwind-tables option with a per function flag. This is more LTO friendly as we can now correctly merge files compiled with or without -fasynchronous-unwind-tables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132033 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
d76773a22169fae235be98df7034bc2544492333 |
19-May-2011 |
Cameron Zwarich <zwarich@apple.com> |
Make CodeGen/PowerPC/2007-09-11-RegCoalescerAssert.ll pass with the verifier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131627 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0113e4e3f242fef41e6c733d1945f9950276cc9c |
19-May-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix PR8828 by removing the explicit def in MovePCToLR as well as the pointless piclabel operand. The operand in the tablegen definition doesn't actually turn into an MI operand, so it just confuses anything checking the TargetInstrDesc for the number of operands. It suffices to just have an implicit def of LR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131626 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
fc5d305597ea6336d75bd7f3b741e8d57d6a5105 |
06-May-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Make the logic for determining function alignment more explicit. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131012 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
108709d4d1ff02317972956540dad571bdf43e95 |
05-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Move PPC Linux to CFI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130951 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
2866edf1204133b4627358d9d5ccd80a4b699cf1 |
02-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add 130690 back. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130693 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
b2d7336fde9bc545dbcf5f47d4d1140f28a8918e |
02-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Revert while I debug the tests that use march but not mtriple. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130691 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
433771c514fbb871f251119f3815c45b29385dc6 |
02-May-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Move ppc OS X to cfi too. I am building it on an old ppc mini, but it will take some time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130690 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
558692fd0a31d4d3ae4fd09a3a02f80da2e44e5c |
20-Apr-2011 |
Daniel Dunbar <daniel@zuster.org> |
ADT/Triple: Renambe isOSX... methods to isMacOSX for consistency with the OS triple component. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129838 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCSubtarget.h
|
912225e18559a73228099330a4c253fdccf9fa3d |
19-Apr-2011 |
Daniel Dunbar <daniel@zuster.org> |
ADT/Triple: Move a variety of clients to using isOSDarwin() and isOSWindows() predicates. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129816 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
PCTargetMachine.cpp
|
18a0929a7a0b87cc50565250e33c33925a57d498 |
19-Apr-2011 |
Daniel Dunbar <daniel@zuster.org> |
Target/PPC: Kill off DarwinVers, which is now dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129811 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
14e2a90b7b0bb4e53e0e66866575d143ce5997b4 |
19-Apr-2011 |
Daniel Dunbar <daniel@zuster.org> |
Target/PPC: Eliminate a use of getDarwinVers(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129810 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
869eca129b2560a59b8aa0e8fd57b5d8f7de1f96 |
19-Apr-2011 |
Daniel Dunbar <daniel@zuster.org> |
Target/PPC: Add a TargetTriple field. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129809 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
7a2bdde0a0eebcd2125055e0eacaca040f0b766c |
15-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
Fix a ton of comment typos found by codespell. Patch by Luis Felipe Strano Moraes! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129558 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5fcb81dace175106024941b09fa27aecba2d7db7 |
04-Apr-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Insert code in the right location when lowering PowerPC atomics. This causes defs to dominate uses, no instructions after terminators, and other goodness. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128836 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
cf3a74824f7c8936fc5c2ebb8ec215621963844e |
04-Apr-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
PowerPC atomic pseudos clobber CR0, they don't read it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128829 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
2684c5db84479456b2ff8264df6f414c9d240fa1 |
04-Apr-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use X0 instead of R0 for the zero register on ppc64. The 32-bit R0 cannot be used where a 64-bit register is expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128828 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a5c177e70a42f48e4885075c4c48aad0816a2817 |
21-Mar-2011 |
Bill Wendling <isanbard@gmail.com> |
We need to pass the TargetMachine object to the InstPrinter if we are printing the alias of an InstAlias instead of the thing being aliased. Because we need to know the features that are valid for an InstAlias. This is part of a work-in-progress. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127986 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.h
PCAsmPrinter.cpp
|
95771afbfd604ad003fa3723cac66c9370fed55d |
25-Feb-2011 |
Owen Anderson <resistor@mac.com> |
Allow targets to specify a the type of the RHS of a shift parameterized on the type of the LHS. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126518 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
68e6beeccc0b9ac2e8d3687a8a5b7d4b172edca1 |
22-Feb-2011 |
Devang Patel <dpatel@apple.com> |
Revert r124611 - "Keep track of incoming argument's location while emitting LiveIns." In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body. This requires some coordination with debugger to get this working. - The debugger needs to be aware of prolog_end attribute attached with line table entries. - The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126155 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
00d78f1348a5980a276bed8f9be09ce2412a6a12 |
20-Feb-2011 |
Oscar Fuentes <ofv@wanadoo.es> |
Use explicit add_subdirectory's for LLVM target sublibraries instead of testing for its presence at cmake time. This way the build automatically regenerates the makefiles when a svn update brings in a new sublibrary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126068 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
a901129169194881a78b7fd8953e09f55b846d10 |
16-Feb-2011 |
Stuart Hastings <stuart@apple.com> |
Swap VT and DebugLoc operands of getExtLoad() for consistency with other getNode() methods. Radar 9002173. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125665 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e9a7ea68653689966417443b8ac2528c1d9d3ccf |
31-Jan-2011 |
Devang Patel <dpatel@apple.com> |
Keep track of incoming argument's location while emitting LiveIns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124611 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
96aa78c8c5ef1a5f268539c9edc86569b436d573 |
23-Jan-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add support for the --noexecstack option. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124077 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
955ed73d12f2b186ef3f80da872b702cd7f2895b |
18-Jan-2011 |
Jeffrey Yasskin <jyasskin@google.com> |
Remove unused variables found by gcc-4.6's -Wunused-but-set-variable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123707 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3965b5e974d57f3e56a2c7f37d76d73e572dfb20 |
14-Jan-2011 |
Anton Korobeynikov <asl@math.spbu.ru> |
Add a possibility to switch between CFI directives- and table-based frame description emission. Currently all the backends use table-based stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123476 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
4f28c1c71450c711e96aa283de53739d8b4504cd |
13-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Teach frame lowering to ignore debug values after the terminators. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123399 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameLowering.cpp
|
7af6fad0a73f33a6782166676d48073ce8565c47 |
10-Jan-2011 |
Anton Korobeynikov <asl@math.spbu.ru> |
Update CMake stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123171 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
16c29b5f285f375be53dabaa73e3e91107485fe4 |
10-Jan-2011 |
Anton Korobeynikov <asl@math.spbu.ru> |
Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123170 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.cpp
PCFrameInfo.h
PCFrameLowering.cpp
PCFrameLowering.h
PCISelLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.td
PCTargetMachine.cpp
PCTargetMachine.h
|
b2581353011673d1241af2d7d334be46088248d8 |
09-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix the last virtual register enumerations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123102 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2da8bc8a5f7705ac131184cd247f48500da0d74e |
24-Dec-2010 |
Andrew Trick <atrick@apple.com> |
Various bits of framework needed for precise machine-level selection DAG scheduling during isel. Most new functionality is currently guarded by -enable-sched-cycles and -enable-sched-hazard. Added InstrItineraryData::IssueWidth field, currently derived from ARM itineraries, but could be initialized differently on other targets. Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is active, and if so how many cycles of state it holds. Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry into the scheduler's available queue. ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to get information about it's SUnits, provides RecedeCycle for bottom-up scheduling, correctly computes scoreboard depth, tracks IssueCount, and considers potential stall cycles when checking for hazards. ScheduleDAGRRList now models machine cycles and hazards (under flags). It tracks MinAvailableCycle, drives the hazard recognizer and priority queue's ready filter, manages a new PendingQueue, properly accounts for stall cycles, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122541 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCInstrInfo.cpp
PCInstrInfo.h
|
6e8f4c404825b79f9b9176483653f1aa927dfbde |
24-Dec-2010 |
Andrew Trick <atrick@apple.com> |
whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122539 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCInstrInfo.cpp
PCInstrInfo.h
|
036609bd7d42ed1f57865969e059eb7d1eb6c392 |
23-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
Flag -> Glue, the ongoing saga git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122513 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
29d8f0cae425f1bba583565227eaebf58f26ce73 |
23-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
flags -> glue for selectiondag git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122509 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
8e68c3873549ca31533e2e3e40dda3a43cb79566 |
23-Dec-2010 |
Jeffrey Yasskin <jyasskin@google.com> |
Change all self assignments X=X to (void)X, so that we can turn on a new gcc warning that complains on self-assignments and self-initializations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122458 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f1b4eafbfec976f939ec0ea3e8acf91cef5363e3 |
21-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for something that just glues two nodes together, even if it is sometimes used for flags. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122310 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
c8bd78c16ba0489835f2eb6101d9bdb96301cfe7 |
18-Dec-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Restore the behavior of frame lowering before my refactoring. It turns out that ppc backend has really weird interdependencies over different hooks and all stuff is fragile wrt small changes. This should fix PR8749 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122155 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.cpp
PCFrameInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.td
|
1ec5bd31fe491e610839ea448bd99fd171785837 |
18-Dec-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove the MCObjectFormat class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122147 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
7b62afac0a6f967e7466e60ceb26bfdcff2e59f4 |
17-Dec-2010 |
Daniel Dunbar <daniel@zuster.org> |
MC/Target: Remove HasScatteredSymbols target hook variable, which has been superceded and was effectively dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122024 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
5d05d9769ec98cdee359fd934a56c9455e21232b |
16-Dec-2010 |
Daniel Dunbar <daniel@zuster.org> |
MC/Mach-O: Lift some MachObjectWriter arguments into the target specific interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121981 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
ae5abd595f5442767313a4c8a24008ad19323ceb |
16-Dec-2010 |
Daniel Dunbar <daniel@zuster.org> |
MC/Mach-O: Stub out explicit MCMachObjectTargetWriter interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121973 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
297ed28bf9c633db52ff31115d439a0133b00efb |
16-Dec-2010 |
Daniel Dunbar <daniel@zuster.org> |
Fix indentation (per style guide). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121972 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
aa4b7dd13ba83152473950d7014a29686dc7eef6 |
16-Dec-2010 |
Daniel Dunbar <daniel@zuster.org> |
MC/Mach-O: Move createMachObjectWriter into MCMachObjectWriter.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121971 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
2761fc427082215c2affcc9d8db8491400bc9e5d |
16-Dec-2010 |
Daniel Dunbar <daniel@zuster.org> |
MC: Move target specific fixup info descriptors to TargetAsmBackend instead of the MCCodeEmitter, which seems like a better organization. - Also, cleaned up some magic constants while in the area. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121953 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
PCMCCodeEmitter.cpp
|
179821ac1f282ef6f8d24d5ea346028aee8ba4c7 |
06-Dec-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove the instruction fragment to data fragment lowering since it was causing freed data to be read. I will open a bug to track it being reenabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121028 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
0bbe0b440ee2cef47dcb7b281825eb70341c16dd |
06-Dec-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
Second try at making direct object emission produce the same results as llc + llvm-mc. This time ELF is not changed and I tested that llvm-gcc bootstrap on darwin10 using darwin9's assembler and linker. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121006 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
5d4918dbd116b0b5e561c431b1ea527ee1b9302a |
04-Dec-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
There are two reasons why we might want to use foo = a - b .long foo instead of just .long a - b First, on darwin9 64 bits the assembler produces the wrong result. Second, if "a" is the end of the section all darwin assemblers (9, 10 and mc) will not consider a - b to be a constant but will if the dummy foo is created. Split how we handle these cases. The first one is something MC should take care of. The second one has to be handled by the caller. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120889 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
3cc52ea33c0b96d1682f14fc45c45b57df0f39b6 |
29-Nov-2010 |
Michael J. Spencer <bigcheesegs@gmail.com> |
I swear I did a make clean and make before committing all this... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120304 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
94c5ae08750f314bc3cf1bf882b686244a3927d9 |
28-Nov-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Move more PEI-related hooks to TFI git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120229 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.cpp
PCFrameInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
36d76a8dbc87b62de82a4a8c0d7cb4bb2a202934 |
27-Nov-2010 |
Daniel Dunbar <daniel@zuster.org> |
MC/Mach-O: Switch to using MachOFormat.h. - I'm leaving MachO.h, because I believe it has external consumers, but I would really like to eliminate it (we have stylistic disagreements with one another). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120187 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
fd46797d0da4970a40f8b5648b8f9b186ce5adb9 |
26-Nov-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove the unused TheTarget member. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120168 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
c62feda741f9d5811b625967c40f1847fb2040e7 |
25-Nov-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Namespacify. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120146 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
bf17cfa3f904e488e898ac2e3af706fd1a892f08 |
23-Nov-2010 |
Wesley Peck <peckw@wesleypeck.com> |
Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119990 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
EADME.txt
|
d9e3385ced2dc887e2fe8e1c071bd2611e4d3ede |
19-Nov-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Move getInitialFrameState() to TargetFrameInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119754 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.cpp
PCFrameInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
d0c38176690e9602a93a20a43f1bd084564a8116 |
18-Nov-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Move hasFP() and few related hooks to TargetFrameInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119740 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.cpp
PCFrameInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
|
f2dc4aa562e2478a73fe5aeeeec16b1e496a0642 |
17-Nov-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
make isVirtualSection a virtual method on MCSection. Chris' suggestion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119547 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmBackend.cpp
|
b8efa6b475ed2f7d3797a8719cd27ab5fd64ae42 |
16-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
Fix a bug I introduced in the ppc refactoring, which caused long branches to be emitted as: bne cr0, 2 instead of: bne cr0, $+8 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119317 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
0382a4c98ea8a73cbe2232d71b4bf1303d718274 |
16-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
add copy of comment to the code that will survive the mcjit'ization git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119308 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCCodeEmitter.cpp
|
b69cdfa6f3d5a0661354e744a11caa7b3342b83e |
16-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
relax an assertion a bit, allowing the GPR argument of these instructions to be encoded with getMachineOpValue. This unbreaks ExecutionEngine/2003-01-04-ArgumentBug.ll when running on a G5 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119307 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCMCCodeEmitter.cpp
|
bc4434135fca0e0feff89cf6fe3baa25c6bd4ee0 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
fix a pasto that massively broke the ppc jit while the buildbots happened to be broken for other reasons git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119283 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
b46443a686c29a1aa8f881c48c35d3f61a35f7ac |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
Wire up primitive support in the assembler backend for writing .o files directly on the mac. This is very early, doesn't support relocations and has a terrible hack to avoid .machine from being printed, but despite that it generates an bitwise-identical-to-cctools .o file for stuff like this: define i32 @test() nounwind { ret i32 42 } I don't plan to continue pushing this forward, but if anyone else was interested in doing it, it should be really straight-forward. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119136 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
PC.h
PCAsmBackend.cpp
PCAsmPrinter.cpp
PCTargetMachine.cpp
|
b7035d04421112a4585245f67bc564170ec45b29 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
split out an encoder for memri operands, allowing a relocation to be plopped into the immediate field. This allows us to encode stuff like this: lbz r3, lo16(__ZL4init)(r4) ; globalopt.cpp:5 ; encoding: [0x88,0x64,A,A] ; fixup A - offset: 0, value: lo16(__ZL4init), kind: fixup_ppc_lo16 stw r3, lo16(__ZL1s)(r5) ; globalopt.cpp:6 ; encoding: [0x90,0x65,A,A] ; fixup A - offset: 0, value: lo16(__ZL1s), kind: fixup_ppc_lo16 With this, we should have a completely function MCCodeEmitter for PPC, wewt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119134 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
PCMCCodeEmitter.cpp
|
17e2c188359769a1df18c42593a94ce0fc2a9a75 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
add support for encoding the lo14 forms used for a few PPC64 addressing modes. For example, we now get: ld r3, lo16(_G)(r3) ; encoding: [0xe8,0x63,A,0bAAAAAA00] ; fixup A - offset: 0, value: lo16(_G), kind: fixup_ppc_lo14 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119133 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
PCMCCodeEmitter.cpp
|
f3b6e0667996347e8c65e0173352d25d98ff0678 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
fix a regression with the new instprinter: we lost the ability to print DBG_VALUE instructions. This should unbreak the llvm-gcc-powerpc-darwin9 buildbot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119132 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
85cf7d737dd26e984974e072d28225bd00c625c2 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
implement the start of support for lo16 and ha16, allowing us to get stuff like: lis r4, ha16(__ZL4init) ; encoding: [0x3c,0x80,A,A] ; fixup A - offset: 0, value: ha16(__ZL4init), kind: fixup_ppc_ha16 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119127 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCFixupKinds.h
PCInstr64Bit.td
PCInstrInfo.td
PCMCCodeEmitter.cpp
|
b719437325681bec89572cccb53916b7a17f1e60 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
add a fixup for conditional branches, giving us output like this: beq cr0, LBB0_4 ; encoding: [0x41,0x82,A,0bAAAAAA00] ; fixup A - offset: 0, value: LBB0_4, kind: fixup_ppc_brcond14 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119126 91177308-0d34-0410-b5e6-96231b3b80d8
PCFixupKinds.h
PCMCCodeEmitter.cpp
|
8d70411dcd5e1af47c3f4fddb993bb93c8eed6d0 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
change direct branches to encode with the same encoding method as direct calls. Change conditional branches to encode with their own method, simplifying the JIT encoder and making room for adding an mc fixup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119125 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCInstrInfo.td
PCMCCodeEmitter.cpp
|
019aef6df791bbccc26b2a18b17ab42aad6aaa0d |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate a now-unneeded operand printer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119124 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.h
PCInstrInfo.td
|
a9d9ab9673ec73817f3059ea430f1930a5b14948 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
split call operands out to their own encoding class, simplifying code in the JIT. Use this to form the first fixup for the PPC backend, giving us stuff like this: bl L_foo$stub ; encoding: [0b010010AA,A,A,0bAAAAAA01] ; fixup A - offset: 0, value: L_foo$stub, kind: fixup_ppc_br24 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119123 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCFixupKinds.h
PCInstrInfo.td
PCMCCodeEmitter.cpp
|
7192eb873201ff201681fefd1f5bf6ca2b2bc98e |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
add proper encoding for MTCRF instead of using a hack. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119121 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCInstrInfo.td
PCMCCodeEmitter.cpp
|
a04084e777db923faea0d2c93ce667054fdf576f |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
add basic encoding support for immediates and registers, allowing us to encode all of these instructions correctly (for example): mflr r0 ; encoding: [0x7c,0x08,0x02,0xa6] stw r0, 8(r1) ; encoding: [0x90,0x01,0x00,0x08] stwu r1, -64(r1) ; encoding: [0x94,0x21,0xff,0xc0] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119118 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
PCMCCodeEmitter.cpp
|
a2d602529d4ddde934bde14b43d15a0d009f76d3 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
add a dummy entry to fix a build error git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119117 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCCodeEmitter.cpp
|
5ffe38ef6ae3427b39b2d866ab8d1a73f9f69e56 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
Implement a basic MCCodeEmitter for PPC. This doesn't handle fixups yet, and doesn't handle actually encoding operand values, but this is enough for llc -show-mc-encoding to show the base instruction encoding information, e.g.: mflr r0 ; encoding: [0x7c,0x08,0x02,0xa6] stw r0, 8(r1) ; encoding: [0x90,0x00,0x00,0x00] stwu r1, -64(r1) ; encoding: [0x94,0x00,0x00,0x00] Ltmp0: lhz r4, 4(r3) ; encoding: [0xa0,0x00,0x00,0x00] cmplwi cr0, r4, 8 ; encoding: [0x28,0x00,0x00,0x00] beq cr0, LBB0_2 ; encoding: [0x40,0x00,0x00,0x00] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119116 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
PC.h
PCMCCodeEmitter.cpp
PCTargetMachine.cpp
|
84a04adf3a766c1d40ba100b9b7235531122e468 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
dissolve some more hacks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119115 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
PC.td
|
0fe7184ba156c87deee090001ba1d7af05e84fc1 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
fix some fixme's, removing dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119114 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
ab638645647bef87ffe8d545fbcb1b69d3af45ce |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
remove asmstrings (which can never be printed) from pseudo instructions, allowing is to eliminate some dead operand printing methods from the instprinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119113 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
PCInstr64Bit.td
PCInstrInfo.td
|
374c608fcac7fd550ce0cb1826355849a5e015be |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
strength reduce TOC temp label generation, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119112 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
cb22fa6536bd17e54a89dc82cafc9fdf48321c36 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
rip out a ton of old instruction printing junk now that the new instprinting logic is there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119111 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3a4dd305ac7a3ddce109b359c8994c1a7868316a |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
Turn on the new instprinter by default. The only change in the output is: 1) we get a better comment on mfcr, we get: mfcr r2 ; cr2 instead of: mfcr r2 ; 32 2) we no longer emit $stub's on powerpc/leopard. The Leopard linker autosynthesizes them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119108 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
6d2ff122af017a24b6e94d4f98f40a3edc0bb62d |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
convert the operand bits into bitfields since they are all combinable in different ways. Add $non_lazy_ptr support, and proper lowering for global values. Now all the ppc regression tests pass with the new instruction printer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119106 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelLowering.cpp
PCMCInstLower.cpp
|
1e61e69d401045c54b15815f15a0fdb3ca56a9b5 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
add targetoperand flags for jump tables, constant pool and block address nodes to indicate when ha16/lo16 modifiers should be used. This lets us pass PowerPC/indirectbr.ll. The one annoying thing about this patch is that the MCSymbolExpr isn't expressive enough to represent ha16(label1-label2) which we need on PowerPC. I have a terrible hack in the meantime, but this will have to be revisited at some point. Last major conversion item left is global variable references. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119105 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
PC.h
PCISelLowering.cpp
PCISelLowering.h
PCMCInstLower.cpp
PCSubtarget.cpp
|
dd57417c08d3fbb52935b70cf14edef34535d045 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
remove some extraneous quotes to make the new instprinter match. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119104 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a460e4a1427260bd46171e674d0a4c41cdd6313f |
15-Nov-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Attempt to unbreak cmake-based builds git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119098 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
33464912237efaa0ed7060829e66b59055bdd48b |
15-Nov-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
First step of huge frame-related refactoring: move emit{Prologue,Epilogue} out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119097 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.cpp
PCFrameInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCTargetMachine.cpp
|
78b4fee8fd040d802e027da7bef3f707b12d8df5 |
15-Nov-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Whitespace cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119096 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
b908258d59745ab9f150c66f94541951cf9c9211 |
15-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
implement support for the MO_DARWIN_STUB TargetOperand flag, and have isel apply to to call operands as required. This allows us to get $stub suffixes on label references on ppc/tiger with the new instprinter, fixing two tests. Only 2 to go. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119093 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelLowering.cpp
PCInstrInfo.h
PCMCInstLower.cpp
|
749ba48fabc929ae39d750e39231919f2135a500 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
with the picbase nonsense starting to be figured out, implement lowering support for MovePCtoLR[8]. Down to 4 failures again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119090 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
142b531e024c7b814df74951b378b9e3e11d0d42 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
move the pic base symbol stuff up to MachineFunction since it is trivial and will be shared between ppc and x86. This substantially simplifies the X86 backend also. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119089 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstr64Bit.td
|
6135a96792ca05f6366e5dbaee6208e84589c47f |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
reimplement ppc asmprinter "toc" handling to use a VariantKind on the operand, required for .o file writing and fixing the PowerPC/mult-alt-generic-powerpc64.ll failure with the new instprinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119087 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstr64Bit.td
|
2ead458ae8423d6ecaec7cbd45e1e2c71ce9e618 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
lower PPC::MFCRpseud when transforming to MC, avoiding calling the aborting printSpecial() method. This gets us to 8 failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119084 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstrInfo.td
|
959fb3dd5cfaf2aae44321b58ff87dce4632438d |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
make the stubbed-out printer methods abort instead of printing nothing. This gets us back up to 24 failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119083 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
b2e477f5463795de8265939300fb5c0abfdded77 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
wire up a few more things, down to 4 test failures, all about handling $stub, lo/hi etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119082 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
fd6688f59aac65008f1a1ae6ce0529c72288361c |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
properly wire up the instprinter to the ppc64 backend, down to 5 failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119081 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
2e35248f14ac449774de9727b460469fc3c93249 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
implement pretty printing support for the various pseudo ops the asmprinter supported, fixing PowerPC/rlwimi2.ll among others. Down to 20 failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119080 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
|
58d014f6031ab95b0057a54dc377e7b0d23d674f |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
Wire up symbol hi/lo printing. We don't print hi()/lo(), but this gets us further along. Only 28 failures now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119079 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
1520fd60950c1c347457b225dbbd72224d4fcd19 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
implement basic support for symbol operand lowering, and printing support for call operands. Down to 77 failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119078 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
PCMCInstLower.cpp
|
a7217c824d512d6a80fbe97b82f4c2e15ec2a338 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
switch PPC to a simplified MCInstLowering model. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119074 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCMCInstLower.cpp
PCMCInstLower.h
|
8d63ba8260d26a256a082089e8fe8fcd38b5b949 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
fix PPC.h to not pull in TargetMachine.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119072 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
|
fdb2ded765316ee2ee2f796b0e2befa2c23acd1d |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
implement basic support for memory operands and crbit operands, this fixes 3 more ppc tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119065 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
99889132f3d6b3f5eab80934b3a0f1687904e5a2 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
implement several trivial operand printers, reducing failures in CodeGen/PowerPC from 120 -> 117 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119063 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
|
0d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
Implement support for printing register and immediate operands, add support for darwin vs aix syntax. We now can print instructions like this: add r3, r3, r4 blr and (in aix mode): add 3, 3, 4 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119062 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
PCAsmPrinter.cpp
|
293ef9ae0fd533429dc54d94c895c39a564466f7 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
stub out PPCMCInstLowering, add a new option that uses it and the new instprinter when -enable-ppc-inst-printer is passed to llc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119061 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
PCAsmPrinter.cpp
PCMCInstLower.cpp
PCMCInstLower.h
|
60d5b5fdeec64b69c92db60242d3d90b3f978e69 |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
stub out a powerpc MCInstPrinter implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119059 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/CMakeLists.txt
nstPrinter/Makefile
nstPrinter/PPCInstPrinter.cpp
nstPrinter/PPCInstPrinter.h
akefile
PCAsmPrinter.cpp
|
0094345184bc0a791f0811c8d7f5b6f9c8296e0f |
14-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
move PPCAsmPrinter into the main PPC library, like ARM and X86. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119054 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
smPrinter/Makefile
smPrinter/PPCAsmPrinter.cpp
MakeLists.txt
akefile
PCAsmPrinter.cpp
|
1e96bab329eb23e4ce8a0dc3cc6b33a3f03d15bf |
04-Nov-2010 |
Duncan Sands <baldrick@free.fr> |
In the calling convention logic, ValVT is always a legal type, and as such can be represented by an MVT - the more complicated EVT is not needed. Use MVT for ValVT everywhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118245 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1440e8b918d7116c3587cb95f4f7ac7a0a0b65ad |
03-Nov-2010 |
Duncan Sands <baldrick@free.fr> |
Inside the calling convention logic LocVT is always a simple value type, so there is no point in passing it around using an EVT. Use the simpler MVT everywhere. Rather than trying to propagate this information maximally in all the code that using the calling convention stuff, I chose to do a mainly low impact change instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118167 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
44ab89eb376af838d1123293a79975aede501464 |
29-Oct-2010 |
John Thompson <John.Thompson.JTSoftware@gmail.com> |
Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117667 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
6abfa46987e4cb47e2d88ea02574c2c082b0625d |
21-Oct-2010 |
Duncan Sands <baldrick@free.fr> |
Remove some variables that are never really used (gcc-4.6 warns about these). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117021 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4f9af2ef65febd20e73ef00d868d3fb94db7afd9 |
11-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
PowerPC varargs functions store live-in registers on the stack. Make sure we use virtual registers for those stores since RegAllocFast requires that each live physreg only be used once. This fixes PR8357. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116222 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
749dc72bdcf214b1a3e2b4eee37e836a39e6bdea |
10-Oct-2010 |
Chris Lattner <sabre@nondot.org> |
fix the expansion of va_arg instruction on PPC to know the arg alignment for PPC32/64, avoiding some masking operations. llvm-gcc expands vaarg inline instead of using the instruction so it has never hit this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116168 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bade37bb8b83deefa166776b1b5185c237a42e71 |
08-Oct-2010 |
Jim Grosbach <grosbach@apple.com> |
Make <target>CodeEmitter::getBinaryCodeForInstr() a const method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116018 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
63d66eed16a6ee4e838f2f7a4c8299def0722c20 |
29-Sep-2010 |
Evan Cheng <evan.cheng@apple.com> |
Add support to model pipeline bypass / forwarding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115005 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
3609eb0de2f786ca6917d0388c37c23873dbd247 |
29-Sep-2010 |
Oscar Fuentes <ofv@wanadoo.es> |
Removed a bunch of unnecessary target_link_libraries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114999 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
52a261b3c1391c5fec399ddeb3fc6ee9541e8790 |
21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
fix a long standing wart: all the ComplexPattern's were being passed the root of the match, even though only a few patterns actually needed this (one in X86, several in ARM [which should be refactored anyway], and some in CellSPU that I don't feel like detangling). Instead of requiring all ComplexPatterns to take the dead root, have targets opt into getting the root by putting SDNPWantRoot on the ComplexPattern. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114471 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6229d0acb8f395552131a7015a5d1e7b2bae2111 |
21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
update a bunch of code to use the MachinePointerInfo version of getStore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114461 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
da2d8e1032eb4c2fefb1f647d7877910b9483835 |
21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate an old SelectionDAG::getTruncStore method, propagating MachinePointerInfo around more. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114452 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3d6ccfba314ed38e4506dae2781a060e9a3e07ac |
21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
propagate MachinePointerInfo through various uses of the old SelectionDAG::getExtLoad overload, and eliminate it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114446 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d1c24ed81c43635d00ff099844a9d0614021a72b |
21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
convert the targets off the non-MachinePointerInfo of getLoad. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114410 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e72f2027e9116c55a5b39ac72732df8d6c45d37c |
21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
reimplement memcpy/memmove/memset lowering to use MachinePointerInfo instead of srcvalue/offset pairs. This corrects SV info for mem operations whose size is > 32-bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114401 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
59db5496f4fc2ef6111569e542f8b65480ef14c1 |
21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
convert targets to the new MF.getMachineMemOperand interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114391 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.cpp
|
702917d4e836ec8346c05aadbc2c1a461c6c3ca6 |
19-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
add a readme. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114303 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
3ef1c8759a20167457eb7fd82ebcaffe7ccaa1d1 |
10-Sep-2010 |
Evan Cheng <evan.cheng@apple.com> |
Teach if-converter to be more careful with predicating instructions that would take multiple cycles to decode. For the current if-converter clients (actually only ARM), the instructions that are predicated on false are not nops. They would still take machine cycles to decode. Micro-coded instructions such as LDM / STM can potentially take multiple cycles to decode. If-converter should take treat them as non-micro-coded simple instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113570 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.h
|
17aa68055beed6faa48ca3a995c5b6fdf5092fd4 |
04-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
zap dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113073 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
|
fcb4a8ead3cd8d9540d5eaa448af5d14a0ee341a |
27-Aug-2010 |
Jim Grosbach <grosbach@apple.com> |
Simplify eliminateFrameIndex() interface back down now that PEI doesn't need to try to re-use scavenged frame index reference registers. rdar://8277890 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112241 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
11bc1652c9447d85204dc6f7c878b9c95e668a96 |
23-Aug-2010 |
Gabor Greif <ggreif@gmail.com> |
tyops git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111835 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
23e70ebf352ff4938210711464c68b5a6e46e61c |
17-Aug-2010 |
Chris Lattner <sabre@nondot.org> |
fix emacs language spec's, patch by Edmund Grimley-Evans! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111241 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
|
90c579de5a383cee278acc3f7e7b9d0a656e6a35 |
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Reapply r110396, with fixes to appease the Linux buildbot gods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
1f74590e9d1b9cf0f1f81a156efea73f76546e05 |
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Revert r110396 to fix buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
9ccaf53ada99c63737547c0235baeb8454b04e80 |
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
40e0bad33193112eab0cc40a556ed347e6568cfe |
05-Aug-2010 |
Devang Patel <dpatel@apple.com> |
Implement target specific getDebugValueLocation(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110256 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0e3a1a8f8fbe34d47c83d19c8b11a3bfdcacad00 |
04-Aug-2010 |
Torok Edwin <edwintorok@gmail.com> |
Use indirect calls in PowerPC JIT. See PR5201. There is no way to know if direct calls will be within the allowed range for BL. Hence emit all calls as indirect when in JIT mode. Without this long-running applications will fail to JIT on PowerPC with a relocation failure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110246 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCSubtarget.cpp
PCSubtarget.h
|
e3837014d6793cafdeba99c21dd5682f16131fd5 |
02-Aug-2010 |
Eli Friedman <eli.friedman@gmail.com> |
PR7781: Fix incorrect shifting in PPCTargetLowering::LowerBUILD_VECTOR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109998 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
38cb1381b5ec8c75242650491c2b8e7e8a302665 |
30-Jul-2010 |
Dale Johannesen <dalej@apple.com> |
PPC doesn't supported VLA with large alignment. This was formerly rejected by the FE, so asserted in the BE; now the FE only warns, so we treat it as a legitimate fatal error in PPC BE. This means the test for the feature won't pass, so it's xfail'd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109892 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
04577efaf2263cc50095500348b2b9b791a43bed |
23-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
fix constness warnings git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109224 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
2062875a7d8f7dd94a20d9e3a298e9e216efb4b5 |
22-Jul-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate the TargetInstrInfo::GetInstSizeInBytes hook. ARM/PPC/MSP430-specific code (which are the only targets that implement the hook) can directly reference their target-specific instrinfo classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109171 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
78e6e009223a38739797629ca2d217acf86dda93 |
17-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove the isMoveInstr() hook. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108567 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
7431beaba2a01c3fe299c861b2ec85cbf1dc81c4 |
17-Jul-2010 |
Bill Wendling <isanbard@gmail.com> |
Rename DBG_LABEL PROLOG_LABEL, because it's only used during prolog emission and thus is a much more meaningful name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108563 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
a90c3f600d5bea9e01722d7df5752f9adfcf4635 |
16-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Emit COPY instead of FMR/FMSD instructions for floating point conversion on PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108555 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.td
|
7a79fcb55b83b8b98b9853c390cc5bf8ce382dd3 |
16-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Teach PPCInstrInfo::storeRegToStackSlot and loadRegFromStackSlot to add memory operands. Hopefully this fixes the llvm-gcc-powerpc-darwin9 buildbot. It really shouldn't since missing memoperands should not affect correctness. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108540 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
600f171486708734e2b9c9c617528cfc51c16850 |
11-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
RISC architectures get their memory operand folding for free. The only folding these load/store architectures can do is converting COPY into a load or store, and the target independent part of foldMemoryOperand already knows how to do that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108099 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
27689b0affee8fb1bfbef11dcc84287b7757cfe8 |
11-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Replace copyRegToReg with copyPhysReg for PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108083 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
bcc8017c738e92d9c1af221b11c4916cb524184e |
08-Jul-2010 |
Evan Cheng <evan.cheng@apple.com> |
Move getExtLoad() and (some) getLoad() DebugLoc argument after EVT argument for consistency sake. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107820 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c9403659a98bf6487ab6fbf40b81628b5695c02e |
07-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Split the SDValue out of OutputArg so that SelectionDAG-independent code can do calling-convention queries. This obviates OutputArgReg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107786 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
0d881dabc1a4e1aefad6dd38de166d8358285638 |
07-Jul-2010 |
Devang Patel <dpatel@apple.com> |
Propagate debug loc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107710 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
14152b480d09c7ca912af7c06d00b0ff3912e4f5 |
06-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Reapply r107655 with fixes; insert the pseudo instruction into the block before calling the expansion hook. And don't put EFLAGS in a mbb's live-in list twice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107691 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
258c58cc6257cf61c9bdbb9c4cea67ba2691adf0 |
06-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Revert r107655. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107668 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b81c771c0d9ab5a980caf3383932b051eafd1a39 |
06-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Fix a bunch of custom-inserter functions to handle the case where the pseudo instruction is not at the end of the block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107655 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ed2ae136d29dd36122d2476801e7d7a86e8301e3 |
03-Jul-2010 |
Evan Cheng <evan.cheng@apple.com> |
Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107550 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCRegisterInfo.cpp
|
90c64f4aac95ebfcdeb8ad78a373fdb9e61b002c |
29-Jun-2010 |
Duncan Sands <baldrick@free.fr> |
Remove initialized but otherwise unused variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107127 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1784d160e4efa75782884d451d0788b9457e67dc |
25-Jun-2010 |
Dale Johannesen <dalej@apple.com> |
The hasMemory argument is irrelevant to how the argument for an "i" constraint should get lowered; PR 6309. While this argument was passed around a lot, this is the only place it was used, so it goes away from a lot of other places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106893 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
e368b460a206fafa0d31d5d059b1779b94f7df8c |
18-Jun-2010 |
Dan Gohman <gohman@apple.com> |
Eliminate unnecessary uses of getZExtValue(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106279 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3bf912593301152b65accb9d9c37a95172f1df5a |
18-Jun-2010 |
Stuart Hastings <stuart@apple.com> |
Add a DebugLoc parameter to TargetInstrInfo::InsertBranch(). This addresses a longstanding deficiency noted in many FIXMEs scattered across all the targets. This effectively moves the problem up one level, replacing eleven FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path through FastISel where we actually supply a DebugLoc, fixing Radar 7421831. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106243 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
99405df044f2c584242e711cc9023ec90356da82 |
09-Jun-2010 |
Bruno Cardoso Lopes <bruno.cardoso@gmail.com> |
Reapply r105521, this time appending "LLU" to 64 bit immediates to avoid breaking the build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105652 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
1087f54ddb70bd2a7ab62608161e4a3f0c345935 |
05-Jun-2010 |
Chris Lattner <sabre@nondot.org> |
revert r105521, which is breaking the buildbots with stuff like this: In file included from X86InstrInfo.cpp:16: X86GenInstrInfo.inc:2789: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2790: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2792: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2793: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2808: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2809: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2816: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2817: error: integer constant is too large for 'long' type git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105524 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
3eca98bb3ab1ec27ab8763298c416d282cdaa261 |
05-Jun-2010 |
Bruno Cardoso Lopes <bruno.cardoso@gmail.com> |
Initial AVX support for some instructions. No patterns matched yet, only assembly encoding support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105521 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
42d075c4fb21995265961501cec9ff6e3fb497ce |
02-Jun-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove the TargetRegisterClass member from CalleeSavedInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105344 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
6f07bd6ae8c2b11e78f351d7751d1e9b32f38a75 |
02-Jun-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105322 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
ca561ffcf320e9dbfafcac5efcee81471f3259c3 |
26-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Replace the SubRegSet tablegen class with a less error-prone mechanism. A Register with subregisters must also provide SubRegIndices for adressing the subregisters. TableGen automatically inherits indices for sub-subregisters to minimize typing. CompositeIndices may be specified for the weirder cases such as the XMM sub_sd index that returns the same register, and ARM NEON Q registers where both D subregs have ssub_0 and ssub_1 sub-subregs. It is now required that all subregisters are named by an index, and a future patch will also require inherited subregisters to be named. This is necessary to allow composite subregister indices to be reduced to a single index. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104704 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
b555609e73f5091bf8180c0875fb1fa6c5ad0e7a |
26-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert "Replace the SubRegSet tablegen class with a less error-prone mechanism." This reverts commit 104654. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104660 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
6a45d681e53a99b4c4f63e0b1664626a596a8151 |
26-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Replace the SubRegSet tablegen class with a less error-prone mechanism. A Register with subregisters must also provide SubRegIndices for adressing the subregisters. TableGen automatically inherits indices for sub-subregisters to minimize typing. CompositeIndices may be specified for the weirder cases such as the XMM sub_sd index that returns the same register, and ARM NEON Q registers where both D subregs have ssub_0 and ssub_1 sub-subregs. It is now required that all subregisters are named by an index, and a future patch will also require inherited subregisters to be named. This is necessary to allow composite subregister indices to be reduced to a single index. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104654 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
4fda9670f0a9cd448d1905ab669421316b8864c5 |
25-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove NumberHack entirely. SubRegIndex instances are now numbered uniquely the same way Register instances are - in lexicographical order by name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104627 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
33276d95ef4191663d8e6b972481f9faf37ce541 |
25-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Switch SubRegSet to using symbolic SubRegIndices git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104571 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
09bc0298650c76db1a06e20ca84c1dcb34071600 |
24-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Replace the tablegen RegisterClass field SubRegClassList with an alist-like data structure that represents a mapping without any dependencies on SubRegIndex numbering. This brings us closer to being able to remove the explicit SubRegIndex numbering, and it is now possible to specify any mapping without inventing *_INVALID register classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104563 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
a1132276e7513aa08e4f099039243b93e029ccf6 |
24-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add SubRegIndex defs to PowerPC. It looks like the CR subregister indices are never used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104517 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
2457f2c66184e978d4ed8fa9e2128effff26cb0b |
22-May-2010 |
Evan Cheng <evan.cheng@apple.com> |
Implement @llvm.returnaddress. rdar://8015977. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104421 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5f07d5224ddc32f405d7e19de8e58e91ab2816bc |
20-May-2010 |
Dale Johannesen <dalej@apple.com> |
The PPC MFCR instruction implicitly uses all 8 of the CR registers. Currently it is not so marked, which leads to VCMPEQ instructions that feed into it getting deleted. If it is so marked, local RA complains about this sequence: vreg = MCRF CR0 MFCR <kill of whatever preg got assigned to vreg> All current uses of this instruction are only interested in one of the 8 CR registers, so redefine MFCR to be a normal unary instruction with a CR input (which is emitted only as a comment). That avoids all problems. 7739628. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104238 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.h
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
|
b92187a4103dca24c3767c380f63593d1f6161a7 |
14-May-2010 |
Bill Wendling <isanbard@gmail.com> |
Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what the variable actually tracks. N.B., several back-ends are using "HasCalls" as being synonymous for something that adjusts the stack. This isn't 100% correct and should be looked into. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103802 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
effc8c52693d4b65941ff160cc5ab7f87595e2f0 |
14-May-2010 |
Dan Gohman <gohman@apple.com> |
Set isTerminator on TRAP instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103778 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
c0c32ae5c2eb2934d51d8edcb3d7fa4e19f50c48 |
14-May-2010 |
Dan Gohman <gohman@apple.com> |
Don't use isBarrier for the PowerPC sync instruction. isBarrier is for control barriers, not memory ordering barriers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103777 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
ff7a562751604a9fe13efc75bd59622244b54d35 |
11-May-2010 |
Dan Gohman <gohman@apple.com> |
Implement a bunch more TargetSelectionDAGInfo infrastructure. Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and EmitTargetCodeForMemmove out of TargetLowering and into SelectionDAGInfo to exercise this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103481 91177308-0d34-0410-b5e6-96231b3b80d8
PCSelectionDAGInfo.cpp
PCSelectionDAGInfo.h
PCTargetMachine.cpp
PCTargetMachine.h
|
34dcc6fadca0a1117cdbd0e9b35c991a55b6e556 |
06-May-2010 |
Dan Gohman <gohman@apple.com> |
Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that it doesn't have to guess. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103194 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
746ad69e088176819981b4b2c5ac8dcd49f5e60e |
06-May-2010 |
Evan Cheng <evan.cheng@apple.com> |
Add argument TargetRegisterInfo to loadRegFromStackSlot and storeRegToStackSlot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103193 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
9f2cda73e470673ab63509adc9d096b0a1d13c54 |
05-May-2010 |
Dan Gohman <gohman@apple.com> |
No-ops emitted for scheduling don't correspond with anything in the user's source, so don't arbitrarily assign them a debug location. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103121 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
08673d295056c93628973c5c54724ac294faef88 |
04-May-2010 |
Dale Johannesen <dalej@apple.com> |
Implement builtin_return_address(x) and builtin_frame_address(x) on PPC for x!=0. 7624113. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102972 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
af1d8ca44a18f304f207e209b3bdb94b590f86ff |
01-May-2010 |
Dan Gohman <gohman@apple.com> |
Get rid of the EdgeMapping map. Instead, just check for BasicBlock changes before doing phi lowering for switches. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102809 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
8c5358c93675b009ba2d57c3a5980f6bc58ba536 |
29-Apr-2010 |
Dale Johannesen <dalej@apple.com> |
Make naked functions work on PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102657 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
8601a3d4decff0a380e059b037dabf71075497d3 |
29-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Frame index can be negative. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102577 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
a00adba6a7e9b0f6600cb6c8c627bb0c705d2f59 |
28-Apr-2010 |
Devang Patel <dpatel@apple.com> |
Use MachineOperand::is* predicates. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102472 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
efc3a6348addd7c9158348fa01f4602e0e0b1688 |
26-Apr-2010 |
Dale Johannesen <dalej@apple.com> |
Add PPC AsmPrinter handling for target-specific form of DBG_VALUE, and a cautionary comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102371 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0965217e74fe07f1451350a80114ab566ced5de0 |
26-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Add PPC specific emitFrameIndexDebugValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102325 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
e566763b1915c7a4821ce95937b763724d271fec |
21-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Implement -disable-non-leaf-fp-elim which disable frame pointer elimination optimization for non-leaf functions. This will be hooked up to gcc's -momit-leaf-frame-pointer option. rdar://7886181 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101984 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCRegisterInfo.cpp
|
f0757b0edc1ef3d1998485d3f74cadaa3f7180a0 |
21-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Add more const qualifiers on TargetMachine and friends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101977 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
928eb49cae286c95dceecf4442997dd561c6e3b7 |
18-Apr-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Make processor FUs unique for given itinerary. This extends the limit of 32 FU per CPU arch to 32 per intinerary allowing precise modelling of quite complex pipelines in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101754 91177308-0d34-0410-b5e6-96231b3b80d8
PCSchedule.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
0d805c33d134d88169e3dc4a3272cff9a5713ce7 |
17-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Add const qualifiers to TargetLoweringObjectFile usage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d858e90f039f5fcdc2fa93035e911a5a9505cc50 |
17-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Use const qualifiers with TargetLowering. This eliminates several const_casts, and it reinforces the design of the Target classes being immutable. SelectionDAGISel::IsLegalToFold is now a static member function, because PIC16 uses it in an unconventional way. There is more room for API cleanup here. And PIC16's AsmPrinter no longer uses TargetLowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101635 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCTargetMachine.h
|
1e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6 |
17-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Move per-function state out of TargetLowering subclasses and into MachineFunctionInfo subclasses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101634 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCMachineFunctionInfo.h
|
2329d66a9f961b5ec463640f67ac451645aa6093 |
17-Apr-2010 |
Chandler Carruth <chandlerc@gmail.com> |
Name these stub files consistently with the SPU and PPC targets' conventions. Also rename the classes appropriately. The CMake build already used these names. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101631 91177308-0d34-0410-b5e6-96231b3b80d8
PCSelectionDAGInfo.cpp
PCSelectionDAGInfo.h
owerPCSelectionDAGInfo.cpp
owerPCSelectionDAGInfo.h
|
53c5e42ab9c1a2cce7ad19bb0b4dffe33c9473e6 |
17-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Add skeleton target-specific SelectionDAGInfo files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101564 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
owerPCSelectionDAGInfo.cpp
owerPCSelectionDAGInfo.h
|
37f32ee7ffe77d7c2bc1b185802e98979612f041 |
16-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Eliminate an unnecessary SelectionDAG dependency in getOptimalMemOpType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101531 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
82bcd236937b378e56e46bdde9c17a3ea3377068 |
15-Apr-2010 |
Dan Gohman <gohman@apple.com> |
EnablePPC64RS and EnablePPC32RS are used in multiple files, so they can't be static. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101377 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
b35798347ea87b8b6d36155b211016a7769f01ab |
15-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Fix a bunch of namespace polution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101376 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
46510a73e977273ec67747eb34cbdb43f815e451 |
15-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Add const qualifiers to CodeGen's use of LLVM IR constructs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101334 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelLowering.cpp
|
22772214de79aa1c5ca38c4fb1da137d8fb30a05 |
08-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
remove the TargetLoweringObjectFileMachO::getMachoSection api and update clients to use MCContext instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100808 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c3b0c341e731b27b550ee9dcded9c17232b296b8 |
08-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Avoid using f64 to lower memcpy from constant string. It's cheaper to use i32 store of immediates. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100751 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
e3a601b648e4cbb916e33f969a1b9d3d40b36734 |
08-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
add newlines at end of files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100706 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
|
375be7730a6f3dee7a6dc319ee6c355a11ac99ad |
07-Apr-2010 |
Dale Johannesen <dalej@apple.com> |
Educate GetInstrSizeInBytes implementations that DBG_VALUE does not generate code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100681 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
a267b0076e7887f5566e635ba35790f24d4524d9 |
05-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
remove the MMI pointer from MachineFrameInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100415 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
fddb7667ca4d8fe83f96b388295849281ddaa5b4 |
05-Apr-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field. When a target instruction wants to set target-specific flags, it should simply set bits in the TSFlags bit vector defined in the Instruction TableGen class. This works well because TableGen resolves member references late: class I : Instruction { AddrMode AM = AddrModeNone; let TSFlags{3-0} = AM.Value; } let AM = AddrMode4 in def ADD : I; TSFlags gets the expected bits from AddrMode4 in this example. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100384 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCInstrFormats.td
|
90429c487fe62582241ffe0d3e8acce936f2f8bc |
05-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
just have all targets create the DwarfWriter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
8e680482c19a2fab185f88a0dea18313e4be70a9 |
05-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
simplify various getAnalysisUsage implementations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100376 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
3d2251361171b1a41bdb2ac71882e69d48617f49 |
05-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate the magic AbsoluteDebugSectionOffsets MAI hook, which is really a property of the section being referenced. Add a predicate to MCSection to replace it. Yay for reduction in magic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100367 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
d290505f0f991268d63a5c5d41f7e40a30dc72fd |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
don't reset the default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100352 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
b23569aff0a6d2b231cb93cc4acd0ac060ba560f |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
Momentous day: remove the "O" member from AsmPrinter. Now all "asm printering" happens through MCStreamer. This also Streamerizes PIC16 debug info, which escaped my attention. This removes a leak from LLVMTargetMachine of the 'legacy' output stream. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
1841b34f533f6553acd57b0dd92467c5fbf9fb2e |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
finish eliminating uses of O. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100321 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
2dc6fa67ee80c0e948437ec20df1ca6cf5e1c713 |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
mcize more of ppc stub printing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100320 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
9d7efd3081ef13b4d1ac7e0ad4854e92e5f132ad |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
mcize a bunch more stuff, using EmitRawText for things we don't have mcstreamer support for yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100319 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
7ad07c46362500f7291a92742569e94fd3538dfd |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
convert the non-MCInstPrinter'ized EmitInstruction implementations to use EmitRawText instead of writing directly to "O". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100318 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c75c028a15a13786eee585aa634b4faf694dd00a |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
fix PrintAsmOperand and PrintAsmMemoryOperand to pass down raw_ostream to print to. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100313 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
35c33bd772b3cfb34fdc6b5c9171f955454d0043 |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
change a ton of code to not implicitly use the "O" raw_ostream member of AsmPrinter. Instead, pass it in explicitly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
20adc9dc4650313f017b27d9818eb2176238113d |
04-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0c08d092049c025c9ccf7143e39f39dc4e30d6b4 |
04-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
asmstreamerize the .size directive for function bodies, force clients of printOffset to pass in a stream to print to. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c7f3ace20c325521c68335a1689645b43b06ddf0 |
02-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
use DebugLoc default ctor instead of DebugLoc::getUnknownLoc() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100214 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
f28f8bc40eedc6304ab25dd8bed486fa08f51f70 |
02-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Correctly lower memset / memcpy of undef. It should be a nop. PR6767. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100208 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
e754d3fb852abdeaf910c7331eed60f6303597c1 |
02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Revert r100191 since it breaks objc in clang git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e33c848fa481b038d5ad0c7c898c33b2b27ec71e |
02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
93d6a7e9c21204c52d6efec6c672163e7de79660 |
02-Apr-2010 |
Dale Johannesen <dalej@apple.com> |
Teach AnalyzeBranch, RemoveBranch and the branch folder to be tolerant of debug info following the branch(es) at the end of a block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100168 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
42642d06c915a26af1400de6ce6a53c333e5c247 |
01-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Add comments about DstAlign and SrcAlign. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100132 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
94107ba9ceaa199f8e5c03912511b0619c84226d |
01-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
- Avoid using floating point stores to implement memset unless the value is zero. - Do not try to infer GV alignment unless its type is sized. It's not possible to infer alignment if it has opaque type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100118 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
255f20f7f76e4ca1ac1c73294852cb6fcb18c77d |
01-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Fix sdisel memcpy, memset, memmove lowering: 1. Makes it possible to lower with floating point loads and stores. 2. Avoid unaligned loads / stores unless it's fast. 3. Fix some memcpy lowering logic bug related to when to optimize a load from constant string into a constant. 4. Adjust x86 memcpy lowering threshold to make it more sane. 5. Fix x86 target hook so it uses vector and floating point memory ops more effectively. rdar://7774704 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100090 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
5e1b55d67288874f8669621b9176814ce449f8f5 |
31-Mar-2010 |
Bill Wendling <isanbard@gmail.com> |
Comment the changes for r98218 and friends inside the source code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100031 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
100f090adde26005b9f1eca96871dff52825b27b |
31-Mar-2010 |
Bob Wilson <bob.wilson@apple.com> |
Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
808bab0169ab7d2e8dfdc72dd2c991cd8ff2396d |
30-Mar-2010 |
Mon P Wang <wangmp@apple.com> |
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
9b97a73dedf736e14b04a3d1a153f10d25b2507b |
30-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
Rip out the 'is temporary' nonsense from the MCContext interface to create symbols. It is extremely error prone and a source of a lot of the remaining integrated assembler bugs on x86-64. This fixes rdar://7807601. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
34247a0f356edf45ae3ad9ce04e1f90a77c6dba7 |
29-Mar-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Make isInt?? and isUint?? template specializations of the generic versions. This makes calls a little bit more consistent and allows easy removal of the specializations in the future. Convert all callers to the templated functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99838 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCRegisterInfo.cpp
|
e4c868ff6aee68e8a447a39013043b3e015683a0 |
28-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
fix up vnot matching, eliminating a dead pattern, correcting a couple of patterns that would never match because of bitcast, and eliminating use of vnot_conv. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99753 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
5d067fe1580772a8e012ff0acc06e21e9b95d340 |
20-Mar-2010 |
Daniel Dunbar <daniel@zuster.org> |
TargetRegistry: Fix create{AsmInfo,MCDisassembler} to return non-const objects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99097 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
60e9eac357dc6e6d9396f02b171baf9e70d97649 |
19-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
set SDNPVariadic on nodes throughout the rest of the targets that need them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98937 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
505ad8bed3321bc4b99af8fba4844efe2fe9e67a |
15-Mar-2010 |
Bill Wendling <isanbard@gmail.com> |
Now that the default for Darwin platforms is to place the LSDA into the TEXT section, remove the target-specific code that performs this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98580 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
PCISelLowering.cpp
PCTargetObjectFile.cpp
PCTargetObjectFile.h
|
149add0d2855aee8f5821542c98121c11293ee83 |
14-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
tidy indentation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98523 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
63d7836267298f5b6cde43f0a89acbabfc109f48 |
14-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
get MMI out of the label uniquing business, just go to MCContext to get unique assembler temporary labels. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98489 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
2e9919a5e5fe76f4b1e3290103c4bfd149ebba9c |
14-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
Now that DBG_LABEL is updated, we can finally make MachineMove contain an MCSymbol instead of a label index. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98482 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
6ffcccab5191ef1dcde876800c24a1f58b3b7ad8 |
14-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
change the DBG_LABEL MachineInstr to always be created with an MCSymbol instead of an immediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98481 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCRegisterInfo.cpp
|
7561d480953e0a2faa4af9be0a00b1180097c4bd |
14-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
change the LabelSDNode to be EHLabelSDNode and make it hold an MCSymbol. Make the EH_LABEL MachineInstr hold its label with an MCSymbol instead of ID. Fix a bug in MMI.cpp which would return labels named "Label4" instead of "label4". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98463 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
1611273351d75b5cbe2a67485bb9831d5916fe26 |
14-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
change EH related stuff (other than EH_LABEL) to use MCSymbol instead of label ID's. This cleans up and regularizes a bunch of code and makes way for future progress. Unfortunately, this pointed out to me that JITDwarfEmitter.cpp is largely copy and paste from DwarfException/MachineModuleInfo and other places. This is very sad and disturbing. :( One major change here is that TidyLandingPads moved from being called in DwarfException::BeginFunction to being called in DwarfException::EndFunction. There should not be any functionality change from doing this, but I'm not an EH expert. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98459 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
1b2eb0e8a6aaf034675b17be6d853cb1c666200f |
13-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate the now-unneeded context argument of MBB::getSymbol() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98451 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
11d53c129fc9c2a4510605ec0a1696f58750af52 |
13-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
rearrange MCContext ownership. Before LLVMTargetMachine created it and passing off ownership to AsmPrinter. Now MachineModuleInfo creates it and owns it by value. This allows us to use MCSymbols more consistently throughout the rest of the code generator, and simplifies a bit of code. This also allows MachineFunction to keep an MCContext reference handy, and cleans up the TargetRegistry interfaces for AsmPrinters. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
150ae119761df40ca12f5d975a667778a7d011d7 |
12-Mar-2010 |
Jeffrey Yasskin <jyasskin@google.com> |
Fix LLVM build when the user specifies CPPFLAGS on the make command line. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98394 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
|
d62f1b4168d4327c119642d28c26c836ae6717ab |
12-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
inline GetGlobalValueSymbol into the rest its callers and remove it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98390 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
53351a175df59c0f8b96011f30842d87046fc9d6 |
12-Mar-2010 |
Bill Wendling <isanbard@gmail.com> |
The same situation that effected ARM effects PPC with regards to placing the LSDA into the TEXT section. We need to generate non-lazy pointers to it on Mach-O. However, the object the NLP points to may be local to the translation unit. If so, then the NLP needs to have the value of that object specified instead of "0", which the linker interprets as "external". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
MakeLists.txt
PCISelLowering.cpp
PCTargetObjectFile.cpp
PCTargetObjectFile.h
|
08d726c912f74d6ea61bea97e7719fc635927dbf |
12-Mar-2010 |
Bill Wendling <isanbard@gmail.com> |
MC-ize PPC's asm printing of stubs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98300 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
cebae36f57456fe6b0e13726acd1e0250654f02d |
10-Mar-2010 |
Bill Wendling <isanbard@gmail.com> |
Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that indicates that an MCSymbol is external or not. (It's true if it's external.) This will be used to specify the correct information to add to non-lazy pointers. That will be explained further when this bit is used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
98cdab53c302a2d6686fa428c0e896b1fb195311 |
10-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
set the temporary bit on MCSymbols correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98124 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
dff4b4c5a7cc894d3b4b6c6e779ea8f47fa50630 |
09-Mar-2010 |
Jim Grosbach <grosbach@apple.com> |
Change the Value argument to eliminateFrameIndex to a type-tagged value. This is preparatory to having PEI's scavenged frame index value reuse logic properly distinguish types of frame values (e.g., whether the value is stack-pointer relative or frame-pointer relative). No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98086 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
f7b730425fc45a28cafddf6e9907cd89acdae2aa |
09-Mar-2010 |
Dale Johannesen <dalej@apple.com> |
The address of an indirect call must be in R12 on Darwin. Make it so. (This patch is in LowerCall_Darwin, which seems to be used by SVR4 code as well; since that doesn't belong here, I haven't worried about this case.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98077 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b200f1c28ee49fcb7876406fd26debc20cecbc5f |
08-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
Fix a bunch of ambiguous patterns which tblgen happens to infer types for, due to a bug. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97953 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
7c306da505e2d7f64e160890b274a47fa0740962 |
02-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
Sink InstructionSelect() out of each target into SDISel, and rename it DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader. Sink some other stuff out of DAGISelHeader into SDISel. Eliminate the various 'Indent' stuff from various targets, which dates to when isel was recursive. 17 files changed, 114 insertions(+), 430 deletions(-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97555 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
46ada19645c981a0b7932487d163f7582074a4d9 |
02-Mar-2010 |
Bill Wendling <isanbard@gmail.com> |
Remove dead parameter passing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97536 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a9445e11c553855a6caacbbbf77a9b993ecc651e |
02-Mar-2010 |
Dan Gohman <gohman@apple.com> |
Floating-point add, sub, and mul are now spelled fadd, fsub, and fmul, respectively. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97531 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
9fa200d2a2360412465bbd6cfb485af2e9d5b1b4 |
27-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
remove a bogus pattern, which had the same pattern as STDU but codegen'd differently. This really wanted to use some sort of subreg to get the low 4 bytes of the G8RC register or something. However, it's invalid and nothing is testing it, so I'm just zapping the bogosity. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97345 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstr64Bit.td
|
baafcbb4dbbda50d5b811b6888c77fd64d073865 |
26-Feb-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Merge PPC instructions FMRS and FMRD into a single FMR instruction. This is possible because F8RC is a subclass of F4RC. We keep FMRSD around so fextend has a pattern. Also allow folding of memory operands on FMRSD. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97275 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.td
|
243296690ec78fc918762bd73896b09e26537f47 |
26-Feb-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use the right floating point load/store instructions in PPCInstrInfo::foldMemoryOperandImpl(). The PowerPC floating point registers can represent both f32 and f64 via the two register classes F4RC and F8RC. F8RC is considered a subclass of F4RC to allow cross-class coalescing. This coalescing only affects whether registers are spilled as f32 or f64. Spill slots must be accessed with load/store instructions corresponding to the class of the spilled register. PPCInstrInfo::foldMemoryOperandImpl was looking at the instruction opcode which is wrong. X86 has similar floating point register classes, but doesn't try to fold memory operands, so there is no problem there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97262 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
6d9f86b7735700f8881e0359fa90c33f984ce2d9 |
23-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
remove a bunch of dead named arguments in input patterns, though some look dubious afaict, these are all ok. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96899 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
9f036412ac6f66405f07259185bc63153fb8e059 |
21-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
Eliminate some uses of immAllOnes, just use -1, it does the same thing and is more efficient for the matcher. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96712 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
5994fd0f4d6bbe6955ac07b39e3befb4f5834134 |
16-Feb-2010 |
Dale Johannesen <dalej@apple.com> |
Really reserve R2 on PPC Darwin. PR 6314. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96399 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
a3b1119977857c7e424f83b25b7e1c7c00783429 |
16-Feb-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
Drop support for the InReg attribute on the ppc backend. This was used by llvm-gcc but has been replaced with pad argument which don't need any special backend support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96312 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
|
362dd0bef5437f85586c046bc53287b6fbe9c099 |
15-Feb-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Move TLOF implementations to libCodegen to resolve layering violation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96288 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCISelLowering.cpp
|
9184b25fa543a900463215c11635c2c014ddb623 |
15-Feb-2010 |
Anton Korobeynikov <asl@math.spbu.ru> |
Preliminary patch to improve dwarf EH generation - Hooks to return Personality / FDE / LSDA / TType encoding depending on target / options (e.g. code model / relocation model) - MCIzation of Dwarf EH printer to use encoding information - Stub generation for ELF target (needed for indirect references) - Some other small changes here and there git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96285 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
534502d1e9579ceb843860d6fa886fb4265fee94 |
15-Feb-2010 |
David Greene <greened@obbligato.org> |
Remove an assumption of default arguments. This is in anticipation of a change to SelectionDAG build APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96236 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
15ce1d71f1dca69eff13e5a56e3209558dcc1fc0 |
13-Feb-2010 |
Dale Johannesen <dalej@apple.com> |
Add the problem I just hacked around in 96015/96020. The solution there produces correct code, but is seriously deficient in several ways. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96039 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
ee25bc294204ef326994d4142dd6bea9605e6a63 |
12-Feb-2010 |
Dale Johannesen <dalej@apple.com> |
This should have gone in with 26015, see comments there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96020 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c12da8d30a1394847ee4608fcd54daa24b889b37 |
12-Feb-2010 |
Dale Johannesen <dalej@apple.com> |
When save/restoring CR at prolog/epilog, in a large stack frame, the prolog/epilog code was using the same register for the copy of CR and the address of the save slot. Oops. This is fixed here for Darwin, sort of, by reserving R2 for this case. A better way would be to do the store before the decrement of SP, which is safe on Darwin due to the red zone. SVR4 probably has the same problem, but I don't know how to fix it; there is no red zone and R2 is already used for something else. I'm going to leave it to someone interested in that target. Better still would be to rewrite the CR-saving code completely; spilling each CR subregister individually is horrible code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96015 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
f451cb870efcf9e0302d25ed05f4cac6bb494e42 |
10-Feb-2010 |
Dan Gohman <gohman@apple.com> |
Fix "the the" and similar typos. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95781 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
|
8e089a9e4d6b7aa2b3968c38644f926f60a7c670 |
10-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
print all the newlines at the end of instructions with OutStreamer.AddBlankLine instead of textually. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
518bb53485df640d7b7e3f6b0544099020c42aa7 |
09-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
move target-independent opcodes out of TargetInstrInfo into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCRegisterInfo.cpp
|
1797ed50f488f2030f9f9a0ac7426262abf5220a |
08-Feb-2010 |
Dan Gohman <gohman@apple.com> |
Rename the PerformTailCallOpt variable to GuaranteedTailCallOpt to reflect its current purpose. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95564 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCRegisterInfo.cpp
|
2f82ca904a2146a0cafa4c19568ec379ac1aa44f |
06-Feb-2010 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix alignment on ppc linux. This fixes the build of crtend.o git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95477 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
d269a6e460a71a6c5c361a26c56c91fdb9486f45 |
03-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
make MachineModuleInfoMachO hold non-const MCSymbol*'s instead of const ones. non-const ones aren't very useful, because you can't even, say, emit them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d1ff72b8a797304f146e4293db8c814231ea8cb3 |
03-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
rejigger the world so that EmitInstruction prints the \n at the end of the instruction instead of expecting the caller to do it. This currently causes the asm-verbose instruction comments to be on the next line. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
022d9e1cef7586a80a96446ae8691a37def9bbf4 |
03-Feb-2010 |
Evan Cheng <evan.cheng@apple.com> |
Revert 95130. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95160 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
56591ab218639d8a6e4c756ca37adaf20215c3b6 |
03-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
refactor code so that LLVMTargetMachine creates the asmstreamer and mccontext instead of having AsmPrinter do it. This allows other types of MCStreamer's to be passed in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
55fed86353fb39924378dc0e5d29cb273f5e2138 |
02-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
tidy some targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95146 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
|
fc89bc903ca068eac7d311158d19ddee25db7154 |
02-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
detemplatize the ppc code emitter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95142 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
5335bce43dbf72ac364bd59a431f7b50f0e413f3 |
02-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
remove dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95141 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCCodeEmitter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
f1d6b107d2ea4518d240ee93bf4bffd53e71206d |
02-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate all the dead addSimpleCodeEmitter implementations. eliminate random "code emitter" stuff in Alpha, except for the JIT path. Next up, remove the template cruft. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95131 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
942619695f4bd77934c09a1cae0fb39ae59edac3 |
02-Feb-2010 |
Evan Cheng <evan.cheng@apple.com> |
Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95130 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
6914b8611a29933bf23928cc539d5c09e48c5543 |
02-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
remove PPCMachOWriterInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95111 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
PCMachOWriterInfo.cpp
PCMachOWriterInfo.h
PCTargetMachine.cpp
PCTargetMachine.h
|
6c2e8a9217ced50da49fb79c569317a50b101f90 |
30-Jan-2010 |
Evan Cheng <evan.cheng@apple.com> |
PPC is not ready for sibcall optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94853 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d49fe1b6bc4615684c2ec71140a21e9c4cd69ce3 |
28-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
Give AsmPrinter the most common expected implementation of runOnMachineFunction, and switch PPC to use EmitFunctionBody. The two ppc asmprinters now don't heave to define runOnMachineFunction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
14c38ec2afeaf25c53a50c2c65116aca8c889401 |
28-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
Remove the argument from EmitJumpTableInfo, because it doesn't need it. Move the X86 implementation of function body emission up to AsmPrinter::EmitFunctionBody, which works by calling the virtual EmitInstruction method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94716 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
f0356fe140af1a30587b9a86bcfb1b2c51b8ce20 |
27-Jan-2010 |
Jeffrey Yasskin <jyasskin@google.com> |
Kill ModuleProvider and ghost linkage by inverting the relationship between Modules and ModuleProviders. Because the "ModuleProvider" simply materializes GlobalValues now, and doesn't provide modules, it's renamed to "GVMaterializer". Code that used to need a ModuleProvider to materialize Functions can now materialize the Functions directly. Functions no longer use a magic linkage to record that they're materializable; they simply ask the GVMaterializer. Because the C ABI must never change, we can't remove LLVMModuleProviderRef or the functions that refer to it. Instead, because Module now exposes the same functionality ModuleProvider used to, we store a Module* in any LLVMModuleProviderRef and translate in the wrapper methods. The bindings to other languages still use the ModuleProvider concept. It would probably be worth some time to update them to follow the C++ more closely, but I don't intend to do it. Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94686 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
2cf7251d39f28888af06b6f941eabd1d10995382 |
27-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
add a new AsmPrinter::EmitFunctionEntryLabel virtual function, which allows targets to override function entry label emission. Use it to convert linux/ppc to use EmitFunctionHeader(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94667 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
37469d1ac1e96754fdf42a7112d5f2286a5e5d24 |
27-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
ppc/linux isn't ready for this and it was an accident that it was included. This should fix a bunch of linux buildbot failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94643 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
4129ccdb7048ac9bc671c4f47e86e9144235000d |
27-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
Switch MSP430, CellSPU, SystemZ, Darwin/PPC, Alpha, and Sparc to EmitFunctionHeader: 7 files changed, 16 insertions(+), 210 deletions(-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94630 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0c439eb2c8397996cbccaf2798e598052d9982c8 |
27-Jan-2010 |
Evan Cheng <evan.cheng@apple.com> |
Eliminate target hook IsEligibleForTailCallOptimization. Target independent isel should always pass along the "tail call" property. Change target hook LowerCall's parameter "isTailCall" into a refernce. If the target decides it's impossible to honor the tail call request, it should set isTailCall to false to make target independent isel happy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94626 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
cee63322eaccc2f1067bdf5eab506e440f867da1 |
26-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
Eliminate SetDirective, and replace it with HasSetDirective. Default HasSetDirective to true, since most targets have it. The targets that claim to not have it probably do, or it is spelled differently. These include Blackfin, Mips, Alpha, and PIC16. All of these except pic16 are normal ELF targets, so they almost certainly have it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94585 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
f71cb015c1386ff8adc9ef0aa03fc0f0fc4a6e3e |
26-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
add a new MachineBasicBlock::getSymbol method, replacing the AsmPrinter::GetMBBSymbol. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
1e459c446786f46ed865183f1c6adb17e2e8fcea |
26-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
don't bother setting the AsmPrinter::MF ivar, now that AsmPrinter::SetupMachineFunction sets it. Note that systemz and msp430 didn't. Yay for reduced inconsistency! :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94510 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
44e87255e9b7a9d8ecb558690db1181882c08045 |
25-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate redundant argument to EmitJumpTableInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
75f9b4b63a7c271b29897db35f3453fb89a1cac6 |
24-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
linux/ppc does use alignment in bytes, not pow-2. This fixes PR6129. It looks like linux/arm and linux/mips have the same setting, which are probably wrong. Someone who cares about ARM and MIPS should investigate with the testcase in PR6129. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94381 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
43b5f9312d56be400af031f7487a99b75b7b0f97 |
24-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
argetInfo/Makefile
|
3f6bfdaedaca984c178f1668c1ca08f52d607aee |
24-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
move PR5945 here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94350 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
abb992d6a3d2dc05d3f3c62a367ea8977a7dd070 |
24-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
change the canonical form of "cond ? -1 : 0" to be "sext cond" instead of a select. This simplifies some instcombine code, matches the policy for zext (cond ? 1 : 0 -> zext), and allows us to generate better code for a testcase on ppc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94339 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
a9cf5b3cc9082acee5b6e30e989a667fed286b05 |
23-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94317 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
9eb158d5b4cd4f6fc80912e2dd77bdf13c3ca0e7 |
23-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
mcize lcomm, simplify .comm, extend both to support 64-bit sizes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94299 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
a5ad93a10a5435f21090b09edb6b3a7e44967648 |
23-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
move the various directive enums out of the MCStreamer class into a new MCDirectives.h file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d4acde2f493891ed082def4850e460c5a7056c7c |
23-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
remove unneeded directive set. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94286 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
e73a31f667ad2fe03e25c97ac45b58c30d7f07c3 |
22-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
Stop building RTTI information for *most* llvm libraries. Notable missing ones are libsupport, libsystem and libvmcore. libvmcore is currently blocked on bugpoint, which uses EH. Once it stops using EH, we can switch it off. This #if 0's out 3 unit tests, because gtest requires RTTI information. Suggestions welcome on how to fix this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94164 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
argetInfo/Makefile
|
717ce2b8d81f0c12145248e92c37ee7547276ce2 |
21-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
remove dead .erase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94098 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
26141721d5923e46b46a54aa8e5ce147f8f63699 |
21-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
fix a problem with a missing _, testcase pending. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94095 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
73a1aa0966af7605b5a15585b1b88ffc7dbd3e3e |
20-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate FnStubInfo, using MachineModuleInfoMachO instead. this makes function stub emission determinstic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94033 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
917d6282567e4d0bb0e0e4ef4b4cd153661fccfa |
20-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
split function stub printing out to its own function, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94030 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d3ec0b5446441f39988db4107cd37f6e7349f399 |
20-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate the GVStubs and HiddenGVStubs maps, and use MachineModuleInfoMachO instead. This eliminates two sources of nondeterministic output in the ppc backend, but function stubs are still bad. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94029 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
8eeba35babf3114966fc4e6e8522057e46b610db |
20-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
revert 93934, removing the MCAsmInfo endianness bit. I can't stomache MCAsmInfo having this, and I found a better solution to this layering issue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93985 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
c7b8814bb4f2e6052060d6118d3bc3b66f5c5b0b |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
give MCAsmInfo a 'has little endian' bit. This is unfortunate, but I really want clients of the streamer to be able to say "emit this 64-bit integer" and have it get broken down right by the streamer. I may change this in the future, we'll see how it works out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93934 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
74bfe21b50c14c15f55ce3bd5857d65b588fae3c |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
Now that we have everything nicely factored (e.g. asmprinter is not doing global variable classification anymore) and hookized, sink almost all target targets global variable emission code into AsmPrinter and out of each target. Some notes: 1. PIC16 does completely custom and crazy stuff, so it is not changed. 2. XCore has some custom handling for extra directives. I'll look at it next. 3. This switches linux/ppc to use .globl instead of .global. If .globl is actually wrong, let me know and I'll fix it. 4. This makes linux/ppc get a lot of random cases right which were obviously wrong before, it is probably now a bit healthier. 5. Blackfin will probably start getting .comm and other things that it didn't before. If this is undesirable, it should explicitly opt out of these things by clearing the relevant fields of MCAsmInfo. This leads to a nice diffstat: 14 files changed, 127 insertions(+), 830 deletions(-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93858 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
7517b249caa793a9a01e4b6aff9c47fd88a153cc |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
add a bool for whether .lcomm takes an alignment instead of basing this on "isdarwin". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93852 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
48d64ba9d846229339b2431b298620cb8a01ffc5 |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
hoist handling of external globals and special globals up to common code. This makes a similar code dead in all the other targets, I'll clean it up in a bit. This also moves handling of lcomm up before acquisition of a section, since lcomm never needs a section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93851 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
71eae713153e564ec743c5c4162ff258c255de78 |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
move production of .reference directives for static ctor/dtor list on darwin into common code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93849 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c1ef06ac5264cb43f148590091606f0ed90a72e9 |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
use BSSLocal classifier to identify 'lcomm' data instead of duplicating the logic (differently) in lots of different targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
56b1319fbe18e886f7cff415b45df404fac39623 |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
now that elf weak bss symbols are handled correctly, simplify a bunch of code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93845 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
a3839bc3714e6a84222f45cf4c0f1a20a88b10cd |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
introduce a section kind for common linkage. Use this to slightly simplify and commonize some of the asmprinter logic for globals. This also avoids printing the MCSection for .zerofill, which broke the llvm-gcc build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
e1e0f485f9721a0c4236326f32d0a48561a1af7a |
19-Jan-2010 |
Bill Wendling <isanbard@gmail.com> |
Even more explanation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93841 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
6e3be14be4eadd9aefea654611c808eea9eb8aea |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
change an accessor to a predicate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93839 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
aac138e84dee1cb3ffc1035b2a1e4361fe0b4f80 |
19-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
Cleanup handling of .zerofill on darwin: 1. TargetLoweringObjectFileMachO should decide if something goes in zerofill instead of having every target do it. 2. TargetLoweringObjectFileMachO should assign said symbols to the right MCSection, the asmprinters should just emit to the right section. 3. Since all zerofill stuff goes through mcstreamer anymore, MAI can have a bool "haszerofill" instead of having the textual directive to emit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
48814681d72242e0179d7100f263952fdf4f51d6 |
18-Jan-2010 |
Bill Wendling <isanbard@gmail.com> |
- Add getLSDAEncoding to the PowerPC backend. - Greatly improve the comments to the getLSDAEncoding method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93796 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
10b318bcb39218d2ed525e4862c854bc8d1baf63 |
17-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
now that MCSymbol::print doesn't use it's MAI argument, we can remove it and change all the code that prints MCSymbols to use << instead, which is much simpler and cleaner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
45111d160cf0910030eeb6a949c69273502e5ad5 |
16-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
move the mangler into libtarget from vmcore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93664 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
7a2ba94d03b43f41b54872dacd7b2250dde4c7bd |
16-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
rename GetPrivateGlobalValueSymbolStub -> GetSymbolWithGlobalValueBase, and add an explicit ForcePrivate argument. Switch FunctionEHFrameInfo to be MCSymbol based instead of string based. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
75abc68d324158b72c58b5caf2224b1e35ac0c92 |
16-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
more string -> sym, getMangledName is now gone from this file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93624 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
a40128c3504b1b650fc57882b7b5d8efd3f7de28 |
16-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
use symbols instead of strings, eliminating a bunch of getMangledName calls. Add FIXMEs about a bunch of nondeterminism in stub output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93621 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
76a3c48e68afd51ba51b354c40d34203679476bb |
16-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
simplify some code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93619 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
9c09363637c43ce7c28898993c32b9a63ded5b46 |
16-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
switch more stuff onto MCSymbols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93608 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
12164414dd3daa6974985eeb2e89bfb93cf07641 |
16-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
MCize a bunch more stuff, eliminating a lot of uses of the mangler and CurrentFnName. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93594 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
13c10c4e49109054281a8e2c074f8c901ab0404a |
15-Jan-2010 |
Jeffrey Yasskin <jyasskin@google.com> |
Teach PPC how to replaceMachineCodeForFunction correctly. (Fixes JITTest.FunctionIsRecompiledAndRelinked.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93475 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
656bb20d61c38966246fbe94afa68f2045841e34 |
13-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
just finish MCizing FnStubInfo which cleans it up and simplifies it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93334 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
59b34fe55fc2aaec2ebc9fd8e62a96e3686fa5c3 |
13-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
don't call getNameWithPrefix repeatedly and unnecesarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93333 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0b4bad54f64944880eca9331fbb34545adbe7833 |
13-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
properly use MCSymbol to print the strings aquired from getNameWithPrefix. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93332 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
ee9250bb4f88364511cfda9ae95ad787bff1a72c |
13-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
eliminate some uses of Mangler::makeNameProper. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93305 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
4813035b726e7f0a3fd17bec437185fc72a50988 |
13-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
change Mangler::makeNameProper to return its result in a SmallVector instead of returning it in an std::string. Based on this change: 1. Change TargetLoweringObjectFileCOFF::getCOFFSection to take a StringRef 2. Change a bunch of targets to call makeNameProper with a smallstring, making several of them *much* more efficient. 3. Rewrite Mangler::makeNameProper to not build names and then prepend prefixes, not use temporary std::strings, and to avoid other crimes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
ddac70674723ea8c6f115b39b40528f0d0cd76a6 |
07-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
constant materialization could be improved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92921 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
b7339d079d410524f59066b2987fb91f5193dd32 |
06-Jan-2010 |
Dale Johannesen <dalej@apple.com> |
Reenable debug info on PPC. Works well enough to bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92818 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
e89c510c0a1d94b3176e3f07e85bf4d75bc45086 |
06-Jan-2010 |
Dale Johannesen <dalej@apple.com> |
Make sure debug info hook gets called when emitting synonyms for PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92817 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
e5319202af267acc1bc876d0da993dde5c3dbf8a |
05-Jan-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't specify CR sub-registers as implicit defs of BL instructions. It is enough to give the super registers CR0, CR1, ..., and specifying the sub-registers as well causes confusion in the liveness computations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92778 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
eeb3a00b84b7767d236ec8cf0619b9217fc247b9 |
05-Jan-2010 |
Dan Gohman <gohman@apple.com> |
Change SelectCode's argument from SDValue to SDNode *, to make it more clear what information these functions are actually using. This is also a micro-optimization, as passing a SDNode * around is simpler than passing a { SDNode *, int } by value or reference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92564 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
3ea3c2461932d96d3defa0a9aa93ffaf631bb19d |
22-Dec-2009 |
Bill Wendling <isanbard@gmail.com> |
Add more plumbing. This time in the LowerArguments and "get" functions which return partial registers. This affected the back-end lowering code some. Also patch up some places I missed before in the "get" functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91880 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
cfcb7997ad4a829de4abd55903863db3c9d414ef |
18-Dec-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Fix wrong frame pointer save offset in the 64-bit PowerPC SVR4 ABI. Patch contributed by Ken Werner of IBM! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91681 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
3a84dae654630a89a91a73807201b6067c4774ec |
18-Dec-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Add support for calls through function pointers in the 64-bit PowerPC SVR4 ABI. Patch contributed by Ken Werner of IBM! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91680 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
32d7e6ebde29faeea75ecb718b4281414b0eea0b |
15-Dec-2009 |
Jeffrey Yasskin <jyasskin@google.com> |
Change indirect-globals to use a dedicated allocIndirectGV. This lets us remove start/finishGVStub and the BufferState helper class from the MachineCodeEmitter interface. It has the side-effect of not setting the indirect global writable and then executable on ARM, but that shouldn't be necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91464 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
864e2efce2cb5d02e376933933d96074723fe77c |
05-Dec-2009 |
Dan Gohman <gohman@apple.com> |
Remove the target hook TargetInstrInfo::BlockHasNoFallThrough in favor of MachineBasicBlock::canFallThrough(), which is target-independent and more thorough. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90634 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
15217e63bce6c161b355b63d6496c7c327d15817 |
30-Nov-2009 |
Bob Wilson <bob.wilson@apple.com> |
Remove isProfitableToDuplicateIndirectBranch target hook. It is profitable for all the processors where I have tried it, and even when it might not help performance, the cost is quite low. The opportunities for duplicating indirect branches are limited by other factors so code size does not change much due to tail duplicating indirect branches aggressively. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90144 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
de9b1dae37877f1b31e8cf42a14195c3fffbae3f |
25-Nov-2009 |
Bob Wilson <bob.wilson@apple.com> |
Tail duplicate indirect branches for PowerPC, too. With the testcase for pr3120, the "threaded interpreter" runtime decreases from 1788 to 1413 with this change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89877 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
0106a0aafe8a169ad39736ddeb591ccde7cdca97 |
25-Nov-2009 |
Dale Johannesen <dalej@apple.com> |
Fix compiler warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89824 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
7dbc61030975220ac981117056f4acad127abdc0 |
25-Nov-2009 |
Devang Patel <dpatel@apple.com> |
Revert r89803. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89819 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
f7801b493ef94c3a7edf8d57cc564f08fce6e624 |
24-Nov-2009 |
Dale Johannesen <dalej@apple.com> |
Do not store R31 into the caller's link area on PPC. This violates the ABI (that area is "reserved"), and while it is safe if all code is generated with current compilers, there is some very old code around that uses that slot for something else, and breaks if it is stored into. Adjust testcases looking for current behavior. I've verified that the stack frame size is right in all testcases, whether it changed or not. 7311323. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89811 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
PCRegisterInfo.cpp
|
eac79170d2c66f1d6a433b0cac2696926eeff783 |
24-Nov-2009 |
Devang Patel <dpatel@apple.com> |
Enable debug info for ppc-darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89803 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
b60d5194f52349b74914593919764fe8f4396bdf |
24-Nov-2009 |
Dale Johannesen <dalej@apple.com> |
Make capitalization of names starting "is" more consistent. No functional change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89724 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCRegisterInfo.cpp
|
108c838093704650378b194fe9afc5ebb9e91455 |
24-Nov-2009 |
Jeffrey Yasskin <jyasskin@google.com> |
* Move stub allocation inside the JITEmitter, instead of exposing a way for each TargetJITInfo subclass to allocate its own stubs. This means stubs aren't as exactly-sized anymore, but it lets us get rid of TargetJITInfo::emitFunctionStubAtAddr(), which lets ARM and PPC support the eager JIT, fixing http://llvm.org/PR4816. * Rename the JITEmitter's stub creation functions to describe the kind of stub they create. So far, all of them create lazy-compilation stubs, but they sometimes get used when far-call stubs are needed. Fixing http://llvm.org/PR5201 will involve fixing this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89715 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
PCJITInfo.h
|
735afe14eea8049bf69210ce8a3512e391fc643f |
24-Nov-2009 |
Dan Gohman <gohman@apple.com> |
Remove ISD::DEBUG_LOC and ISD::DBG_LABEL, which are no longer used. Note that "hasDotLocAndDotFile"-style debug info was already broken; people wanting this functionality should implement it in the AsmPrinter/DwarfWriter code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89711 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
0261d795f83a45dd53d82e511ae672d6d1f4e298 |
23-Nov-2009 |
Jeffrey Yasskin <jyasskin@google.com> |
Allow more than one stub to be being generated at the same time. It's probably better in the long run to replace the indirect-GlobalVariable system. That'll be done after a subsequent patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89708 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
bef8888a9197655512f156e50b10799da7240252 |
21-Nov-2009 |
Devang Patel <dpatel@apple.com> |
We are not using DBG_STOPPOINT anymore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89536 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
29cbade25aa094ca9a149a96a8614cf6f3247480 |
21-Nov-2009 |
Dan Gohman <gohman@apple.com> |
Target-independent support for TargetFlags on BlockAddress operands, and support for blockaddresses in x86-32 PIC mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89506 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5ca124691bc81ed013593151c500d8104f7068dd |
20-Nov-2009 |
Dale Johannesen <dalej@apple.com> |
Remove an incorrect overaggressive optimization (PPC specific). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89496 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
1924aabf996be9335fab34e7ee4fa2aa5911389c |
13-Nov-2009 |
David Greene <greened@obbligato.org> |
Move DebugInfo checks into EmitComments and remove them from target-specific AsmPrinters. Not all comments need DebugInfo. Re-enable the line numbers comment test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88697 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
1e608819aa26c06b1552521469f2211339e3bfe0 |
13-Nov-2009 |
Dale Johannesen <dalej@apple.com> |
Adjust isConstantSplat to allow for big-endian targets. PPC is such a target; make it work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87060 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b9c2fd964ee7dd7823ac71db8443055e4d0f1c15 |
12-Nov-2009 |
David Greene <greened@obbligato.org> |
Make the MachineFunction argument of getFrameRegister const. This also fixes a build error. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87027 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.h
|
3f2bf85d14759cc4b28a86805f566ac805a54d00 |
12-Nov-2009 |
David Greene <greened@obbligato.org> |
Add a bool flag to StackObjects telling whether they reference spill slots. The AsmPrinter will use this information to determine whether to print a spill/reload comment. Remove default argument values. It's too easy to pass a wrong argument value when multiple arguments have default values. Make everything explicit to trap bugs early. Update all targets to adhere to the new interfaces.. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87022 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCRegisterInfo.cpp
|
b19a5e9be6097eab311678ccbd9e046c72f7e052 |
10-Nov-2009 |
Bill Wendling <isanbard@gmail.com> |
Modify how the prologue encoded the "move" information for the FDE. GCC generates a sequence similar to this: __Z4funci: LFB2: mflr r0 LCFI0: stmw r30,-8(r1) LCFI1: stw r0,8(r1) LCFI2: stwu r1,-80(r1) LCFI3: mr r30,r1 LCFI4: where LCFI3 and LCFI4 are used by the FDE to indicate what the FP, LR, and other things are. We generated something more like this: Leh_func_begin1: mflr r0 stw r31, 20(r1) stw r0, 8(r1) Llabel1: stwu r1, -80(r1) Llabel2: mr r31, r1 Note that we are missing the "mr" instruction. This patch makes it more like the GCC output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86729 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
2718e43d6ae4f1c15823069566f18f7339cc976e |
09-Nov-2009 |
Bill Wendling <isanbard@gmail.com> |
Similar to r86588, but for Darwin this time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86592 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
b1ec31d71184e318cae8c147658162f7ed019ada |
09-Nov-2009 |
Bill Wendling <isanbard@gmail.com> |
The jump table was being generated before the end label for exception handling was generated. This caused code like this: ## The asm code for the function .section __TEXT,__const .align 2 lJTI11_0: LJTI11_0: .long LBB11_16 .long LBB11_4 .long LBB11_5 .long LBB11_6 .long LBB11_7 .long LBB11_8 .long LBB11_9 .long LBB11_10 .long LBB11_11 .long LBB11_12 .long LBB11_13 .long LBB11_14 Leh_func_end11: ## <---now in the wrong section! The `Leh_func_end11' would then end up in the wrong section, causing the resulting EH frame information to be wrong: __ZL11CheckRightsjPKcbRbRP6NSData.eh: .set Lset500eh,Leh_frame_end11-Leh_frame_begin11 .long Lset500eh ; Length of Frame Information Entry Leh_frame_begin11: .long Leh_frame_begin11-Leh_frame_common .long Leh_func_begin11-. .set Lset501eh,Leh_func_end11-Leh_func_begin11 .long Lset501eh ; FDE address range `Lset501eh' is now something huge instead of the real value. The X86 back-end generates the jump table after the EH information is emitted. Do the same here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86588 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
59a9178fbedb88427c8ff9e5fa7a8f2038f80a2e |
07-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
indicate what the native integer types for the target are. Please verify. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86397 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
2928c83b010f7cfdb0f819199d806f6942a7d995 |
06-Nov-2009 |
Daniel Dunbar <daniel@zuster.org> |
Pass StringRef by value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86251 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
73bb251cd7a535fb93bb3a52eda61555fb253f41 |
05-Nov-2009 |
Dan Gohman <gohman@apple.com> |
Remove uninteresting and confusing debug output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86149 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
3d90dbee695e723f422dafca3fc75f193268ab9e |
04-Nov-2009 |
Bob Wilson <bob.wilson@apple.com> |
Add PowerPC codegen for indirect branches. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86050 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
533297b58da8c74bec65551e1aface9801fc2259 |
29-Oct-2009 |
Dan Gohman <gohman@apple.com> |
Rename usesCustomDAGSchedInserter to usesCustomInserter, and update a bunch of associated comments, because it doesn't have anything to do with DAGs or scheduling. This is another step in decoupling MachineInstr emitting from scheduling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85517 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
f5a86f45e75ec744c203270ffa03659eb0a220c1 |
25-Oct-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove includes of Support/Compiler.h that are no longer needed after the VISIBILITY_HIDDEN removal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
|
6726b6d75a8b679068a58cb954ba97cf9d1690ba |
25-Oct-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces. Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
|
74cd3b7ceb61b9335fbed1a124324fffd96ded6a |
19-Oct-2009 |
Chris Lattner <sabre@nondot.org> |
emit .subsections_via_symbols through MCStreamer instead of textually. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84509 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
ff89dcb06fbd103373436e2d0ae85f252fae2254 |
18-Oct-2009 |
Evan Cheng <evan.cheng@apple.com> |
-Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixed stack slots and giving them different PseudoSourceValue's did not fix the problem of post-alloc scheduling miscompiling llvm itself. - Apply Dan's conservative workaround by assuming any non fixed stack slots can alias other memory locations. This means a load from spill slot #1 cannot move above a store of spill slot #2. - Enable post-alloc scheduling for x86 at optimization leverl Default and above. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84424 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
20270c909357e5e501cac1f5393430dfacfc57d8 |
18-Oct-2009 |
Evan Cheng <evan.cheng@apple.com> |
Only fixed stack objects and spill slots should be get FixedStack PseudoSourceValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84411 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6553155172a2e74feff1253837daa608123de54a |
17-Oct-2009 |
Evan Cheng <evan.cheng@apple.com> |
Revert 84315 for now. Re-thinking the patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84321 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bf125583f8bd8196a34921276add7f304b7c1433 |
17-Oct-2009 |
Evan Cheng <evan.cheng@apple.com> |
Rename getFixedStack to getStackObject. The stack objects represented are not necessarily fixed. Only those will negative frame indices are "fixed." git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84315 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3a6b9eb868f579b945aa8ec8fadf65e4dd913555 |
12-Oct-2009 |
Dale Johannesen <dalej@apple.com> |
Revert the kludge in 76703. I got a clean bootstrap of FSF-style PPC, so there is some reason to believe the original bug (which was never analyzed) has been fixed, probably by 82266. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83871 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
b58f498f7502e7e1833decbbbb4df771367c7341 |
07-Oct-2009 |
Jim Grosbach <grosbach@apple.com> |
Add register-reuse to frame-index register scavenging. When a target uses a virtual register to eliminate a frame index, it can return that register and the constant stored there to PEI to track. When scavenging to allocate for those registers, PEI then tracks the last-used register and value, and if it is still available and matches the value for the next index, reuses the existing value rather and removes the re-materialization instructions. Fancier tracking and adjustment of scavenger allocations to keep more values live for longer is possible, but not yet implemented and would likely be better done via a different, less special-purpose, approach to the problem. eliminateFrameIndex() is modified so the target implementations can return the registers they wish to be tracked for reuse. ARM Thumb1 implements and utilizes the new mechanism. All other targets are simply modified to adjust for the changed eliminateFrameIndex() prototype. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83467 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
e3cc3f3c84abfdf8eb3bd19dfa806ceea49f15d6 |
06-Oct-2009 |
Dan Gohman <gohman@apple.com> |
Instead of printing unnecessary basic block labels as labels in verbose-asm mode, print comments instead. This eliminates a non-comment difference between verbose-asm mode and non-verbose-asm mode. Also, factor out the relevant code out of all the targets and into target-independent code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
af0e2726835e096e32c30c1b88cc7a6232a6ef69 |
06-Oct-2009 |
Devang Patel <dpatel@apple.com> |
Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83363 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCCodeEmitter.cpp
|
b0fdedb3fd123a47e7deca75d1e6f7d64218b07a |
01-Oct-2009 |
Devang Patel <dpatel@apple.com> |
Use MachineInstr as an processDebugLoc() argument. This will allow processDebugLoc() to handle scopes for DWARF debug info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
812209a58c5520c604bc9279aa069e5ae066e860 |
01-Oct-2009 |
Bob Wilson <bob.wilson@apple.com> |
Add a new virtual EmitStartOfAsmFile method to the AsmPrinter and use this to emit target-specific things at the beginning of the asm output. This fixes a problem for PPC, where the text sections are not being kept together as expected. The base class doInitialization code calls DW->BeginModule() which emits a bunch of DWARF section directives. The PPC doInitialization code then emits all the TEXT section directives, with the intention that they will be kept together. But as I understand it, the Darwin assembler treats the default TEXT section as a special case and moves it to the beginning of the file, which means that all those DWARF sections are in the middle of the text. With this change, the EmitStartOfAsmFile hook is called before the DWARF section directives are emitted, so that all the PPC text section directives come out right at the beginning of the file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83176 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
26207e5bf1123a793bd9b38bcda2f569a6b45ef2 |
28-Sep-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Introduce the TargetInstrInfo::KILL machine instruction and get rid of the unused DECLARE instruction. KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF in the places where IMPLICIT_DEF is just used to alter liveness of physical registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83006 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
ae03af26635b5831d1370b5bc161ced577397200 |
28-Sep-2009 |
Dan Gohman <gohman@apple.com> |
LBRX no longer has an explicit SrcValueSDNode operand, so the type operand is now at index 2, rather than 3. This fixes the "Invalid child # of SDNode!" failures on PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82942 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8ff95de83cbe85d939535d2f4fb5f9b2b721081a |
27-Sep-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Use explicit structs instead of std::pair to map callee saved regs to spill slots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82909 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
c76909abfec876c6b751d693ebd3df07df686aa0 |
25-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Improve MachineMemOperand handling. - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions. This eliminates MachineInstr's std::list member and allows the data to be created by isel and live for the remainder of codegen, avoiding a lot of copying and unnecessary translation. This also shrinks MemSDNode. - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated fields for MachineMemOperands. - Change MemSDNode to have a MachineMemOperand member instead of its own fields with the same information. This introduces some redundancy, but it's more consistent with what MachineInstr will eventually want. - Ignore alignment when searching for redundant loads for CSE, but remember the greatest alignment. Target-specific code which previously used MemOperandSDNodes with generic SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range so that the SelectionDAG framework knows that MachineMemOperand information is available. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82794 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
602b0c8c17f458d2c80f2deb3c8e554d516ee316 |
25-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Rename getTargetNode to getMachineNode, for consistency with the naming scheme used in SelectionDAG, where there are multiple kinds of "target" nodes, but "machine" nodes are nodes which represent a MachineInstr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82790 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
6acaaa8f32a52772952c2171ad8ee1f7a896a1c9 |
25-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Don't try to use pre-indexed addressing with sthbrx/stwbrx instructions. This fixes a PowerPC bug exposed by some unrelated changes I'm working on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82743 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a279bc3da55691784064cb47200a1c584408b8ab |
20-Sep-2009 |
Daniel Dunbar <daniel@zuster.org> |
Tabs -> spaces, and remove trailing whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82355 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
ce31910eae5bd4896fa6c27798e7b26885691d3b |
19-Sep-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82311 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
fb2e752e4175920d0531f2afc93a23d0cdf4db14 |
18-Sep-2009 |
Evan Cheng <evan.cheng@apple.com> |
Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that sdisel will use to properly complete phi nodes. Not functionality change yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82273 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
8dffc819c5f4326700262e7d1ff906d0d44ca906 |
18-Sep-2009 |
Dale Johannesen <dalej@apple.com> |
Model the carry bit on ppc32. Without this we could move a SUBFC (etc.) below the SUBFE (etc.) that consumed the carry bit. Add missing ADDIC8, noticed along the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82266 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.td
|
8c6ed05157e9c97ff8f3ccb211dd797e53228da1 |
16-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
Big change #1 for personality function references: Eliminate the PersonalityPrefix/Suffix & NeedsIndirectEncoding fields from MAI: they aren't part of the asm syntax, they are related to the structure of the object file. To replace their functionality, add a new TLOF::getSymbolForDwarfGlobalReference method which asks targets to decide how to reference a global from EH in a pc-relative way. The default implementation just returns the symbol. The default darwin implementation references the symbol through an indirect $non_lazy_ptr stub. The bizarro x86-64 darwin specialization handles the weird "foo@GOTPCREL+4" hack. DwarfException.cpp now uses this to emit the reference to the symbol in the right way, and this also eliminates another horrible hack from DwarfException.cpp: - if (strcmp(MAI->getPersonalitySuffix(), "+4@GOTPCREL")) - O << "-" << MAI->getPCSymbol(); git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81991 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
|
8deedba8412acdd30dc91cc213c706e94253c5b2 |
16-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate the PPC backend's implementation of EmitExternalGlobal and use PersonalityPrefix/Suffix to achieve the same effect (like the x86 backend). This changes the code generated for ppc static mode, but guess what, we were generating this before: .byte 0x9B ; Personality (indirect pcrel sdata4) .long ___gxx_personality_v0-. ; Personality which is not correct! (it is not an 'indirect' reference). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81965 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCMCAsmInfo.cpp
|
762ccea600158bb317dcccdff3303e942426cb71 |
13-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
remove all but one reference to TargetRegisterDesc::AsmName. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d95148f073c31924f275a34296da52a7cdefad91 |
13-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
the tblgen produced 'getRegisterName' method does not access the object, make it static instead of const. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81711 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
05af2616d0df19638e799d3e7afadea26d96a4ba |
13-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
make tblgen produce a function that returns the name for a physreg. Nothing is using this info yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81707 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
70a54c07a0807bf89d1a8b4414e53298c376eb61 |
13-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
replace printBasicBlockLabel with EmitBasicBlockStart, now that printBasicBlockLabel is only used for starting a MBB. This allows elimination of a bunch of arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
325d3dcfe4d5efc91db0f59b20a72a11dea024ed |
13-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
convert some uses of printBasicBlockLabel to use GetMBBSymbol instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81677 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c5ea263a23f4f15587e35c9cb07cf72a9fba7613 |
10-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
remove DebugLoc from MCInst and eliminate "Comment printing" from the MCInst path of the asmprinter. Instead, pull comment printing out of the autogenerated asmprinter into each target that uses the autogenerated asmprinter. This causes code duplication into each target, but in a way that will be easier to clean up later when more asmprinter stuff is commonized into the base AsmPrinter class. This also fixes an xcore strangeness where it inserted two tabs before every instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
634cca377a8254cfe8a5afe99ef2e6c6db7f0c6b |
09-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
hoist the call to processDebugLoc out of the generated asm printer into the "printInstruction" routine. This fixes a problem where the experimental asmprinter would drop debug labels in some cases, and fixes issues on ppc/xcore where pseudo instructions like "mr" didn't get debug locs properly. It is annoying that this moves the call from one place into each target, but a future set of more invasive refactorings will fix that problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c2d98bc0d682419f09659d94afefd6a6266dd6ee |
06-Sep-2009 |
Duncan Sands <baldrick@free.fr> |
Remove some not-really-used variables, as warned about by icc (#593, partial). Patch by Erick Tryzelaar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81115 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
65c3c8f323198b99b88b109654194540cf9b3fa5 |
02-Sep-2009 |
Sandeep Patel <deeppatel1987@gmail.com> |
Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80773 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
c69d74a5d41a6c5e92f9d947f2fa181f48626ca5 |
31-Aug-2009 |
Duncan Sands <baldrick@free.fr> |
Revert commit 80428. It completely broke exception handling on x86-32 linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80592 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
b4f770b68a2f1890e17f634b695d19bb7d07168d |
31-Aug-2009 |
Benjamin Kramer <benny.kra@googlemail.com> |
Normalize makefile comments and sort cmake file lists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80584 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
argetInfo/Makefile
|
9b35a09e7e5b1aa26588e3852fe00a42b4f383ba |
29-Aug-2009 |
Bill Wendling <isanbard@gmail.com> |
- Add target lowering methods to get the preferred format for the FDE and LSDA encodings. - Make some of the values emitted by the FDEs dependent upon the pointer size. This is in line with how GCC does things. And it has the benefit of working for Darwin in 64-bit mode now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80428 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4e68f8803d8e28d52cc2f16a4eef5c175878b0f3 |
26-Aug-2009 |
Dale Johannesen <dalej@apple.com> |
Alter 79292 to produce output that actually assembles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80119 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
a60e51f7e81bdb99ca331776a06c93dfd6043762 |
24-Aug-2009 |
Dale Johannesen <dalej@apple.com> |
Make linkerprivate work for ARM and PPC. Testcase covers all Darwin targets; could be split into separate tests for the chip subdirectories, but from Chris' last mail on testing I assume he'd rather have only one test. Generic seems to be the best available, maybe there should be a Darwin subdirectory? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
893e1c90a03a53cf13f73849324e83612688428a |
23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate the last DOUTs from the targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79833 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
45cfe545ec8177262dabc70580ce05feaa1c3880 |
23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
Change Pass::print to take a raw ostream instead of std::ostream, update all code that this affects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79830 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
705e07f578e2b3af47ddab610feb4e7f2d3063a5 |
23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove various std::ostream version of printing methods from MachineInstr and MachineOperand. This required eliminating a bunch of stuff that was using DOUT, I hope that bill doesn't mind me stealing his fun. ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79813 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
f682f3d019794d4402b73701a06a4bb117f5d5e7 |
23-Aug-2009 |
Benjamin Kramer <benny.kra@googlemail.com> |
Forgot to update some CMakeLists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79780 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
33adcfb4d217f5f23d9bde8ba02b8e48f9605fc5 |
22-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
rename TAI -> MAI, being careful not to make MAILJMP instructions :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79777 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
2807afa664b579af4c559b3880d6763b9e7e236a |
22-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
rename COFFMCAsmInfo -> MCAsmInfoCOFF, likewise for darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79773 91177308-0d34-0410-b5e6-96231b3b80d8
PCMCAsmInfo.cpp
PCMCAsmInfo.h
PCTargetMachine.cpp
|
af76e592c7f9deff0e55c13dbb4a34f07f1c7f64 |
22-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
Rename TargetAsmInfo (and its subclasses) to MCAsmInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79763 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCInstrInfo.cpp
PCMCAsmInfo.cpp
PCMCAsmInfo.h
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
PCTargetMachine.cpp
|
24f20e083280d979e8fa1bc88959ae9e8339ee99 |
22-Aug-2009 |
Devang Patel <dpatel@apple.com> |
Record variable debug info at ISel time directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79742 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6c2f9e14fdf14d8c1c687c6bd9918183fa7f8a7f |
19-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate AsmPrinter::SwitchToSection and just have clients talk to the MCStreamer directly instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c0823fe7c679ca8f7d1667a310c2fca97b9402d5 |
18-Aug-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Simplify RegScavenger::FindUnusedReg. - Drop the Candidates argument and fix all callers. Now that RegScavenger tracks available registers accurately, there is no need to restict the search. - Make sure that no aliases of the found register are in use. This was a potential bug. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79369 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
5cfd4ddece1b73a719830ae84eb74d491f87b9d5 |
18-Aug-2009 |
Dale Johannesen <dalej@apple.com> |
PowerPC inline asm was emitting two output operands for a single "m" constraint; this is wrong because the opcode of a load or store would have to change in parallel. This patch makes it always compute addresses into a register, which is correct but not as efficient as possible. 7144566. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79292 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCISelDAGToDAG.cpp
|
6b16eff207f99bbde3c0f7340452a5287218772c |
15-Aug-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Add support for the PowerPC 64-bit SVR4 ABI. The Link Register is volatile when using the 32-bit SVR4 ABI. Make it possible to use the 64-bit SVR4 ABI. Add non-volatile registers for the 64-bit SVR4 ABI. Make sure r2 is a reserved register when using the 64-bit SVR4 ABI. Update PPCFrameInfo for the 64-bit SVR4 ABI. Add FIXME for 64-bit Darwin PPC. Insert NOP instruction after direct function calls. Emit official procedure descriptors. Create TOC entries for GlobalAddress references. Spill 64-bit non-volatile registers to the correct slots. Only custom lower VAARG when using the 32-bit SVR4 ABI. Use simple VASTART lowering for the 64-bit SVR4 ABI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79091 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCFrameInfo.h
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.td
PCSubtarget.h
|
bd51c677390d8e13560cbf3ea972b95a5fbc1f9a |
15-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Simplify a few more things, eliminating a few more dependencies on "the current basic block". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79069 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
789457847002f5289dbbc5cfce9d68c72e00bed1 |
14-Aug-2009 |
Daniel Dunbar <daniel@zuster.org> |
TargetRegistry: Change AsmPrinter constructor to be typed as returning an AsmPrinter instance (instead of just a FunctionPass) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78962 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
fdf229eda95a542fc34d5182e1a91a22789ba122 |
14-Aug-2009 |
Bruno Cardoso Lopes <bruno.cardoso@gmail.com> |
Remove HasCrazyBSS and add a flag in TAI to indicate that '.section' must be emitted for PowerPC-Linux '.bss' section git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78958 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCTargetAsmInfo.cpp
|
1d0be15f89cb5056e20e2d24faa8d6afb1573bca |
13-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Push LLVMContexts through the IntegerType APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
67d894ea64bc52245abf3f2ba89122a749d99c53 |
13-Aug-2009 |
Daniel Dunbar <daniel@zuster.org> |
TargetRegistry: Reorganize AsmPrinter construction so that clients pass in the TargetAsmInfo. This eliminates a dependency on TargetMachine.h from TargetRegistry.h, which technically was a layering violation. - Clients probably can only sensibly pass in the same TargetAsmInfo as the TargetMachine has, but there are only limited clients of this API. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
b42dad4761968b4b052e72494ce1bf0c7b3aba3e |
13-Aug-2009 |
Daniel Dunbar <daniel@zuster.org> |
Revert 78892 and 78895, these break generating working executables on x86_64-apple-darwin10. --- Reverse-merging r78895 into '.': U test/CodeGen/PowerPC/2008-12-12-EH.ll U lib/Target/DarwinTargetAsmInfo.cpp --- Reverse-merging r78892 into '.': U include/llvm/Target/DarwinTargetAsmInfo.h U lib/Target/X86/X86TargetAsmInfo.cpp U lib/Target/X86/X86TargetAsmInfo.h U lib/Target/ARM/ARMTargetAsmInfo.h U lib/Target/ARM/ARMTargetMachine.cpp U lib/Target/ARM/ARMTargetAsmInfo.cpp U lib/Target/PowerPC/PPCTargetAsmInfo.cpp U lib/Target/PowerPC/PPCTargetAsmInfo.h U lib/Target/PowerPC/PPCTargetMachine.cpp G lib/Target/DarwinTargetAsmInfo.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78919 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
PCTargetMachine.cpp
|
b2d3169d96ee780e6b8f43230e36e41d97ed3140 |
13-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
fix a minor fixme. When building with SL and later tools, the ".eh" symbols don't need to be exported from the .o files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78892 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
PCTargetMachine.cpp
|
cf20ac4fd12ea3510a8f32a24fff69eebe7b6f4a |
13-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Various AsmWriter output cleanups. Use WriteAsOperand instead of PrintUnmangledNameSafely. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
a7ac47cee1a0b3f4c798ecaa22ecf9d1be9c07e6 |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
Change TargetAsmInfo to be constructed via TargetRegistry from a Target+Triple pair instead of from a virtual method on TargetMachine. This cuts the final ties of TargetAsmInfo to TargetMachine, meaning that MC can now use TargetAsmInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78802 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
23b9b19b1a5a00faa9fce0788155c7dbfd00bfb1 |
12-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Add contexts to some of the MVT APIs. No functionality change yet, just the infrastructure work needed to get the contexts to where they need to be first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78759 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6b883e329734c67f14800ba3264b6b268c1b6c15 |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
fix CodeGen/PowerPC/2007-01-15-AsmDialect.ll, fallout from r78742 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78747 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
09652df5fc19b088d8baf43dd7839d9c2fc24980 |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
second half of commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78744 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
5b67bb1922386615936b2647b5681f6430746ac1 |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
pass "is64Bit" flag into PPC TAI ctors instead of a whole targetmachine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78743 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
74da671c36cdaa6bea3fa7889dc9aeab572b609c |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate asmflavor from subtarget, PPCTAI is the only client and each callee knows that it returns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78742 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
PCTargetAsmInfo.cpp
|
e2b060161c92ddf60b5d020f981451e9e34a3f02 |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
Change the asmprinter to print the comment character before the "inlineasmstart/end" strings so that the contents of the directive are separate from the comment character. This lets elf targets get #APP/#NOAPP for free even if they don't use "#" as the comment character. This also allows hoisting the darwin stuff up to the shared TAI class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78737 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
e28a2e8b70e926324575ddec0a1565c6dba7d404 |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
factorize more darwin TAI stuff. Note that this gives darwin/arm support for .no_dead_strip git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78734 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
e2811a74803d24fff45a186d2871377d248cec1c |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
factorize darwin ProtectedDirective and SetDirective. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78732 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
b6ba9c36dbc54c85b86b29d9491c457b4de8b60c |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
all darwin targets have .space and .zerofill, pull up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78730 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
c89ecc5c2f6c089db328e2856aadf9fd4a1a0bd3 |
12-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
move LCOMMDirective = "\t.lcomm\t" up to DarwinTAI, eliminate template in PPC backend for TAI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78727 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
825b72b0571821bf2d378749f69d6c4cfb52d2f9 |
11-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Split EVT into MVT and EVT, the former representing _just_ a primitive type, while the latter is capable of representing either a primitive or an extended type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78713 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
0a31d2f6456069adba19b8aeca66c68b633c38b4 |
11-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
pass the TargetTriple down from each target ctor to the LLVMTargetMachine ctor. It is currently unused. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78711 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
1b747ad8a0694b86e8d98a8b9a05ddfe74ec0cd3 |
11-Aug-2009 |
Jim Grosbach <grosbach@apple.com> |
SjLj based exception handling unwinding support. This patch is nasty, brutish and short. Well, it's kinda short. Definitely nasty and brutish. The front-end generates the register/unregister calls into the SjLj runtime, call-site indices and landing pad dispatch. The back end fills in the LSDA with the call-site information provided by the front end. Catch blocks are not yet implemented. Built on Darwin and verified no llvm-core "make check" regressions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78625 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
e50ed30282bb5b4a9ed952580523f2dda16215ac |
11-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78610 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
70671845adce8ab36ae596bb06d0375459a7a2af |
10-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Continue the SimpleValueType-ification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78593 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
77547befdc430633aaedf4130ddf17d953ed552e |
10-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Start moving TargetLowering away from using full MVTs and towards SimpleValueType, which will simplify the privatization of IntegerType in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78584 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
f9bdeddb96043559c61f176f8077e3b91a0c544f |
10-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
split MachO section handling stuff out to its out .h/.cpp file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78576 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
e1e8a82986e12f9cf841004c78ff051df9df11d8 |
10-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
Fix a weird ppc64-specific link error during an llvm-gcc build: ld: bad offset (0x00000091) for lo14 instruction pic-base fix-up in ___popcountdi2 from libgcc/./_popcountsi2_s.o The problem is that the non lazy symbol pointers need to be 8 byte aligned on ppc64 and .section doesn't have an implicit alignment like ".non_lazy_symbol_pointer" does. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
ff4bc460c52c1f285d8a56da173641bf92d49e3f |
10-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
Make the big switch: Change MCSectionMachO to represent a section *semantically* instead of syntactically as a string. This means that it keeps track of the segment, section, flags, etc directly and asmprints them in the right format. This also includes parsing and validation support for llvm-mc and "attribute(section)", so we should now start getting errors about invalid section attributes from the compiler instead of the assembler on darwin. Still todo: 1) Uniquing of darwin mcsections 2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h] 3) there are a few FIXMEs, for example what is the syntax to get the S_GB_ZEROFILL segment type? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78547 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
892e18239308f8a02a4c83758616be84a459c19d |
09-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
1. Make MCSection an abstract class. 2. Move section switch printing to MCSection virtual method which takes a TAI. This eliminates textual formatting stuff from TLOF. 3. Eliminate SwitchToSectionDirective, getSectionFlagsAsString, and TLOFELF::AtIsCommentChar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78510 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
41aefdcdd1c1631041834d53ffada106a5cfaf02 |
08-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
make printInstruction return void since its result is omitted. Make the error condition get trapped with an assert. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78449 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
2698cb6811276736a8e892e545609a9048a917fe |
08-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
don't check the result of printInstruction anymore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78444 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
e22f4da01d57f51757663fdcae986af0aeca49fe |
05-Aug-2009 |
Daniel Dunbar <daniel@zuster.org> |
Remove some dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78219 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
bccdcb1857f400206ed07984dc04e229c6013cc6 |
05-Aug-2009 |
Devang Patel <dpatel@apple.com> |
Remove dead code. MDNode and MDString are not Constant anymore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78207 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
98ca4f2a325f72374a477f9deba7d09e8999c29b |
05-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Major calling convention code refactoring. Instead of awkwardly encoding calling-convention information with ISD::CALL, ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering provides three virtual functions for targets to override: LowerFormalArguments, LowerCall, and LowerRet, which replace the custom lowering done on the special nodes. They provide the same information, but in a more immediately usable format. This also reworks much of the target-independent tail call logic. The decision of whether or not to perform a tail call is now cleanly split between target-independent portions, and the target dependent portion in IsEligibleForTailCallOptimization. This also synchronizes all in-tree targets, to help enable future refactoring and feature work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78142 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
1c55fab53455f11fbd7bde69d0c5911031218e35 |
05-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Don't flush the raw_ostream between each MachineFunction. These flush calls were originally put in place because errs() at one time was not unbuffered, and these print routines are commonly used with errs() for debugging. However, errs() is now properly unbuffered, so the flush calls are no longer needed. This significantly reduces the number of write(2) calls for regular asm printing when there are many small functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
3b24c0172069a2546cd095e4b91f8b88c1ea0722 |
04-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
make MergeableCString be a SectionKind "abstract class", and add new concrete versions for 1/2/4-byte mergable strings. These are not actually created yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78055 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
2dfddee396d4e65c5458bcec8513a20336fbc5b4 |
04-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
switch ppc to using SwitchToSection instead of textual section stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78013 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
e28039cfd1a9c43b5fa9274bf19372d96f58f460 |
03-Aug-2009 |
Daniel Dunbar <daniel@zuster.org> |
Move most targets TargetMachine constructor to only taking a target triple. - The C, C++, MSIL, and Mips backends still need the module. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77927 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
3be03406c9c3b2075d5ae416499af2f15f703d6f |
03-Aug-2009 |
Daniel Dunbar <daniel@zuster.org> |
Normalize Subtarget constructors to take a target triple string instead of Module*. Also, dropped uses of TargetMachine where unnecessary. The only target which still takes a TargetMachine& is Mips, I would appreciate it if someone would normalize this to match other targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77918 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
|
18a4c16726db2b8874c7b84d04650dda80746074 |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
move dwarf debug info section selection stuff from TAI to TLOF, unifying all the dwarf targets at the same time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77889 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
35039ac24163e99cfab161620a9fb41f944a63d5 |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
convert EHFrameSection to be managed by TLOF instead of TAI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77888 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
d90183d25dcbc0eabde56319fed4e8d6ace2e6eb |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
Move the getInlineAsmLength virtual method from TAI to TII, where the only real caller (GetFunctionSizeInBytes) uses it. The custom ARM implementation of this is basically reimplementing an assembler poorly for negligible gain. It should be removed IMNSHO, but I'll leave that to ARMish folks to decide. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77877 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
9ba8c6872dc722d0f9f804fcd67bace4acfe67ba |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove the dead ELFTargetAsmInfo.h/cpp file. TargetAsmInfo defaults to being ELF. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77866 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.h
|
8d4a0a328a89d1f3c7ad83048e04ace53b6ba781 |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove TargetAsmInfo::TM, which is now dead. The basic TAI class now no longer depends on TM! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77863 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
83f08a2efdbe18e1eba866a25aa7e37c555de4c1 |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove the x86/ppc impls of getEHGlobalPrefix, which is already dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77861 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
d5bbb07ec806e6fa1e804afd7073987fdacc83e4 |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
move getDwarfExceptionSection from TAI to TLOF and rename it to getLSDASection() to be more specific. This makes it pretty obvious that the ELF LSDA section is being specified wrong in PIC mode. We're probably getting a lot of startup-time relocations to a readonly page, which is expensive and bad. Someone who cares about ELF C++ should investigate this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77847 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
73e789fd377a0ea5348b76e159aece89fe6ec383 |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
don't override the default of this, the only difference is \t instead of ' '. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77838 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
b80610cd13e7accf6db0924c75d0914bf566922b |
02-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
REmove dead fields of TAI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77820 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
a9c1dd7820d0444802d42e5761e36c6e60e404d6 |
01-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Fix typos in comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77806 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
1db511cc911be75c18fb8e64a22fc5d25e479b10 |
31-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
remove the PPCLinuxTargetAsmInfo implementation of PreferredEHDataFormat, because it just calls the default impl. Remove the PPCDarwinTargetAsmInfo version of PreferredEHDataFormat because it just returns DW_EH_PE_absptr unless on 10.6. However, 10.6 doesn't support PPC, so the default impl is just fine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77724 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
a87dea4f8c546ca748f1777a8d1cabcc06515d91 |
31-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
switch off of 'Section' onto MCSection. We're not properly using MCSection subclasses yet, but this is a step in the right direction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
ad2afc2a421a0e41603d5eee412d4d8c77e9bc1c |
31-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage shouldn't do AU.setPreservesCFG(), because even though CodeGen passes don't modify the LLVM IR CFG, they may modify the MachineFunction CFG, and passes like MachineLoop are registered with isCFGOnly set to true. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77691 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f26e03bc7e30162197641406e37e662a15d80f7e |
31-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
refactor section construction in TLOF to be through an explicit initialize method, which can be called when an MCContext is available. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77687 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c5b19b21d84814d19692a6bbea11fbd135f4b094 |
31-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many failures when building assorted projects with clang. --- Reverse-merging r77654 into '.': U include/llvm/CodeGen/Passes.h U include/llvm/CodeGen/MachineFunctionPass.h U include/llvm/CodeGen/MachineFunction.h U include/llvm/CodeGen/LazyLiveness.h U include/llvm/CodeGen/SelectionDAGISel.h D include/llvm/CodeGen/MachineFunctionAnalysis.h U include/llvm/Function.h U lib/Target/CellSPU/SPUISelDAGToDAG.cpp U lib/Target/PowerPC/PPCISelDAGToDAG.cpp U lib/CodeGen/LLVMTargetMachine.cpp U lib/CodeGen/MachineVerifier.cpp U lib/CodeGen/MachineFunction.cpp U lib/CodeGen/PrologEpilogInserter.cpp U lib/CodeGen/MachineLoopInfo.cpp U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp D lib/CodeGen/MachineFunctionAnalysis.cpp D lib/CodeGen/MachineFunctionPass.cpp U lib/CodeGen/LiveVariables.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77661 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
933c762371fe8cc6e2ef5d00d6866f4924852fed |
31-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Manage MachineFunctions with an analysis Pass instead of the Annotable mechanism. To support this, make MachineFunctionPass a little more complete. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77654 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
debcb01b0f0a15f568ca69e8f288fade4bfc7297 |
30-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move types back to the 2.5 API. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77516 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2cfd52c507bd5790457a171eb9bcb39019cc6860 |
29-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Give getPointerRegClass() a "kind" value so that targets can support multiple different pointer register classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77501 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
e53a600f065075731d0aeb9dc8f4f3d75f5a05f8 |
29-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
pass the mangler down into the various SectionForGlobal methods. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
859cc77963d4d3a477abebe62b1ff15e4d849e19 |
29-Jul-2009 |
Bill Wendling <isanbard@gmail.com> |
Change the "PreferredEHDataFormat" from "absptr" if we're on a Darwin system > Leopard. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77414 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
1711a7c8cf363278d4dae5591b015261d04380dc |
29-Jul-2009 |
Bill Wendling <isanbard@gmail.com> |
Output the correct format for Darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77376 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
0a9f7b9c3ebe7d0ec033462e1a7c9101279956f9 |
28-Jul-2009 |
Devang Patel <dpatel@apple.com> |
Rename MDNode.h header. It defines MDnode and other metadata classes. New name is Metadata.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77370 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
4bb253c60f895131371aa2ad1bfa5a2bea213f78 |
28-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
the apple "ld_classic" linker doesn't support .literal16 in 32-bit mode, and "ld64" (the default linker) falls back to it in -static mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77334 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f0144127b98425d214e59e4a1a4b342b78e3642b |
28-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Rip all of the global variable lowering logic out of TargetAsmInfo. Since it is highly specific to the object file that will be generated in the end, this introduces a new TargetLoweringObjectFile interface that is implemented for each of ELF/MachO/COFF/Alpha/PIC16 and XCore. Though still is still a brutal and ugly refactoring, this is a major step towards goodness. This patch also: 1. fixes a bunch of dangling pointer problems in the PIC16 backend. 2. disables the TargetLowering copy ctor which PIC16 was accidentally using. 3. gets us closer to xcore having its own crazy target section flags and pic16 not having to shadow sections with its own objects. 4. fixes wierdness where ELF targets would set CStringSection but not CStringSection_. Factor the code better. 5. fixes some bugs in string lowering on ELF targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCISelLowering.cpp
PCTargetAsmInfo.cpp
|
e346694a81cbead3289d11057111fba46aa30aae |
27-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Eliminate getNamed/getUnnamedSection, adding a new and unified getOrCreateSection instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77186 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
5fe575ff4fdefc1b003a009b1b9282526a26c237 |
27-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Eliminate SectionFlags, just embed a SectionKind into Section instead and drive things based off of that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77184 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
0fcf4dc6d367216ff51501af282e33e93da8586f |
26-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
untangle a TargetAsmInfo hack where ELFTargetAsmInfo would create a 'unnamed' bss section, but some impls would want a named one. Since they don't have consistent behavior, just make each target do their own thing, instead of doing something "sortof common" then having targets change immutable objects later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77165 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
93b67e40de356569493c285b86b138a3f11b5035 |
26-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Eliminate some uses of DOUT, cerr, and getNameStart(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
8977d087c693fd581db82bcff134d12da0f48bd3 |
26-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Factor commonality in triple match routines into helper template for registering classes, and migrate existing targets over. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77126 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/PowerPCTargetInfo.cpp
|
fa27ff296d3694a68e7abb3b6b7629588def3e58 |
26-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Kill Target specific ModuleMatchQuality stuff. - This was overkill and inconsistently implemented. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77114 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/PowerPCTargetInfo.cpp
|
03d7651c3652e1f0cc86e79b26585d86818da9cf |
26-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Remove Value::{isName, getNameRef}. Also, change MDString to use a StringRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77098 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
b4fc419d83bc4afc8ce5a204dd226d5ae58f5896 |
25-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
this is (unfortunately) several changes mixed together: 1. Spell SectionFlags::Writeable as "Writable". 2. Add predicates for deriving SectionFlags from SectionKinds. 3. Sink ELF-specific getSectionPrefixForUniqueGlobal impl into ELFTargetAsmInfo. 4. Fix SectionFlagsForGlobal to know that BSS/ThreadBSS has the BSS bit set (the real fix for PR4619). 5. Fix isSuitableForBSS to not put globals with explicit sections set in BSS (which was the reason #4 wasn't fixed earlier). 6. Remove my previous hack for PR4619. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77085 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
d6fd377f3333922c4e928019cdfa124ff7f4dd2e |
25-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Simplify JIT target selection. - Instead of requiring targets to define a JIT quality match function, we just have them specify if they support a JIT. - Target selection for the JIT just gets the host triple and looks for the best target which matches the triple and has a JIT. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77060 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/PowerPCTargetInfo.cpp
|
0c795d61878156817cedbac51ec2921f2634c1a5 |
25-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Add new helpers for registering targets. - Less boilerplate == good. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77052 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
|
23ed52752bb40a9085c9d36bbc6603972c3e0080 |
24-Jul-2009 |
Eli Friedman <eli.friedman@gmail.com> |
Remove unused member functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76960 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
c440cc7f2c1e1e02fb4526babc9ab99986beb6e0 |
24-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
use section flags more correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
fb3431aec52f1d4d9305159d9f4e652c81b4d9fb |
24-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
reduce api exposure: clients shouldn't call SectionKindForGlobal directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76941 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d2cb3d2c32b8f53bf94d56fbdd48503ace28df4b |
24-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Remove the IA-64 backend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76920 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
fc6ad402fb267cba1625801444aad30da43d383a |
22-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Let each target determines whether a machine instruction is dead. If true, that allows late codeine passes to delete it. This is considered a workaround. The problem is some targets are not modeling side effects correctly. PPC is apparently one of those. This patch allows ppc llvm-gcc to bootstrap on Darwin. Once we find out which instruction definitions are wrong, we can remove the PPCInstrInfo workaround. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76703 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
e922c0201916e0b980ab3cfe91e1413e68d55647 |
22-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Get rid of the Pass+Context magic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
40bbebde9d250b875a47a688d0c6552834ada48f |
21-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
make AsmPrinter::doFinalization iterate over the global variables and call PrintGlobalVariable, allowing elimination and simplification of various targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
5c0ba804c02777c53c0842d0be2d16d1d92b9a46 |
20-Jul-2009 |
Bill Wendling <isanbard@gmail.com> |
Rename Mangler linkage enums to something less gross. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76456 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
3d10a5a75794356a0a568ce283713adc3a963200 |
20-Jul-2009 |
Bill Wendling <isanbard@gmail.com> |
Add plumbing for the `linker_private' linkage type. This type is meant for "private" symbols which the assember shouldn't strip, but which the linker may remove after evaluation. This is mostly useful for Objective-C metadata. This is plumbing, so we don't have a use of it yet. More to come, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76385 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
b384c85877d9fd3e9f3ae8d1b68c7c610bc5a1f4 |
19-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Add dependencies from TargetInfo onto .td generation. - Shouldn't really be necessary, but currently .inc files get included into some main target headers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76349 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/CMakeLists.txt
|
4cb1e13769856716261a4d315f8202bd918502c3 |
19-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Put Target definitions inside Target specific header, and llvm namespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76344 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
argetInfo/PowerPCTargetInfo.cpp
|
75402822d6acc1fe62d911771cd7cf8358c718d7 |
17-Jul-2009 |
Jeffrey Yasskin <jyasskin@google.com> |
r76102 added the MachineCodeEmitter::processDebugLoc call and called it from the X86 Emitter. This patch extends that to the rest of the targets that can write to a MachineCodeEmitter: ARM, Alpha, and PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76211 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
f366beca480087841330c1e19865139cb3fc2963 |
16-Jul-2009 |
Anton Korobeynikov <asl@math.spbu.ru> |
Do not put bunch of target-specific stuff into common namespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75971 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrBuilder.h
|
64cc97212346992892b6c92158c08cd93149a882 |
16-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Kill off <TARGET>MachineModule variables, and <TARGETASMPRINTER>ForceLink variables. - Module initialization functions supplanted the need for these. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75886 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCTargetMachine.cpp
|
fe2fe7094e7dff91acb52b030dec097910000a54 |
16-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
fix section switching to ensure that stubs are emitted to the right section on ppc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75881 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
5d77cad60bd82dfa2d00f78e26443d667922efbf |
16-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Lift addAssemblyEmitter into LLVMTargetMachine. - No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75859 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
cfe9a605eea542d91e3db74289b69b7e317d90a6 |
16-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Lift DumpAsm / -print-emitted-asm functionality into LLVMTargetMachine. - No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75848 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
f05522974b3c1b9dc2644831364e19d5132e751b |
16-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Remove old style hacks to register AsmPrinter into TargetMachine. - No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
51b198af83cb0080c2709b04c129a3d774c07765 |
15-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Reapply TargetRegistry refactoring commits. --- Reverse-merging r75799 into '.': U test/Analysis/PointerTracking U include/llvm/Target/TargetMachineRegistry.h U include/llvm/Target/TargetMachine.h U include/llvm/Target/TargetRegistry.h U include/llvm/Target/TargetSelect.h U tools/lto/LTOCodeGenerator.cpp U tools/lto/LTOModule.cpp U tools/llc/llc.cpp U lib/Target/PowerPC/PPCTargetMachine.h U lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp U lib/Target/PowerPC/PPCTargetMachine.cpp U lib/Target/PowerPC/PPC.h U lib/Target/ARM/ARMTargetMachine.cpp U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp U lib/Target/ARM/ARMTargetMachine.h U lib/Target/ARM/ARM.h U lib/Target/XCore/XCoreTargetMachine.cpp U lib/Target/XCore/XCoreTargetMachine.h U lib/Target/PIC16/PIC16TargetMachine.cpp U lib/Target/PIC16/PIC16TargetMachine.h U lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp U lib/Target/Alpha/AlphaTargetMachine.cpp U lib/Target/Alpha/AlphaTargetMachine.h U lib/Target/X86/X86TargetMachine.h U lib/Target/X86/X86.h U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h U lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h U lib/Target/X86/X86TargetMachine.cpp U lib/Target/MSP430/MSP430TargetMachine.cpp U lib/Target/MSP430/MSP430TargetMachine.h U lib/Target/CppBackend/CPPTargetMachine.h U lib/Target/CppBackend/CPPBackend.cpp U lib/Target/CBackend/CTargetMachine.h U lib/Target/CBackend/CBackend.cpp U lib/Target/TargetMachine.cpp U lib/Target/IA64/IA64TargetMachine.cpp U lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp U lib/Target/IA64/IA64TargetMachine.h U lib/Target/IA64/IA64.h U lib/Target/MSIL/MSILWriter.cpp U lib/Target/CellSPU/SPUTargetMachine.h U lib/Target/CellSPU/SPU.h U lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp U lib/Target/CellSPU/SPUTargetMachine.cpp U lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp U lib/Target/Mips/MipsTargetMachine.cpp U lib/Target/Mips/MipsTargetMachine.h U lib/Target/Mips/Mips.h U lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp U lib/Target/Sparc/SparcTargetMachine.cpp U lib/Target/Sparc/SparcTargetMachine.h U lib/ExecutionEngine/JIT/TargetSelect.cpp U lib/Support/TargetRegistry.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75820 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
2286f8dc4cec0625f7d7a14e2570926cf8599646 |
15-Jul-2009 |
Stuart Hastings <stuart@apple.com> |
Revert 75762, 75763, 75766..75769, 75772..75775, 75778, 75780, 75782 to repair broken LLVM-GCC build. Will revert 75770 in the llvm-gcc trunk. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75799 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
f3f4715ac1de3ae4c89eeb96f23d6cd4876cc323 |
15-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Replace large swaths of copy-n-paste code with obvious helper function... - Which was already present in the module! - I skipped this xform for Alpha, since it runs an extra pass during assembly emission, but not when emitting assembly via the DumpAsm flag. - No functionality change. -- ddunbar@giles:llvm$ svn diff | grep '^- ' | sort | uniq -c 18 - PM.add(AsmPrinterCtor(ferrs(), *this, true)); 18 - assert(AsmPrinterCtor && "AsmPrinter was not linked in"); 18 - if (AsmPrinterCtor) 18 - if (DumpAsm) { 18 - } ddunbar@giles:llvm$ svn diff | grep '^+ ' | sort | uniq -c 18 + addAssemblyEmitter(PM, OptLevel, true, ferrs()); 18 + if (DumpAsm) -- git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75782 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
6c05796294a7a0693d96c0c87194b9d5ddf55a94 |
15-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Kill off old (TargetMachine level, not Target level) match quality functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75780 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
03f4bc5d6cf777c8aa559c299ef7f85126872881 |
15-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Provide TargetMachine implementations with reference to Target they were created from. - This commit is almost entirely propogating the reference through the TargetMachine subclasses' constructor calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75778 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
4246790aa84a530b0378d917023584c2c7adb4a9 |
15-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Register Target's TargetMachine and AsmPrinter in the new registry. - This abuses TargetMachineRegistry's constructor for now, this will get cleaned up in time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75762 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
c984df8602a8b2450cbdb6ff55fd49ba709a391e |
15-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Add TargetInfo libraries for all targets. - Intended to match current TargetMachine implementations. - No facilities for linking these in yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75751 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
argetInfo/CMakeLists.txt
argetInfo/Makefile
argetInfo/PowerPCTargetInfo.cpp
|
392db3e11d93990e5c8382776b91d73ef40db005 |
15-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
get the PPC stub temporary label from the mangler instead of using horrible string hacking. This gives us a different label, but it's just an assembler temporary, so the name doesn't matter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75733 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
1a87c05ec011eaccb950e5f0160e2162e5747553 |
15-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
turn some if/then's into ?: git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75732 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
defd3000dc34cc237dc44530f930ebf184d5e890 |
15-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate a bunch of printSuffixedName's by using info computed from Mangler in FnStubs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75731 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
9ec8facd10e48d1ec62c7c91cbd5f003771764d8 |
15-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
convert FnStubs to using a more structured form, eliminating a couple instances of printSuffixedName (in favor of having the mangler do stuff). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75729 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0f6c8f25aa96f765f19b555e4d610d5a7557ee95 |
15-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
simplify "EmitExternalGlobal": it is only used to output a reference to the personality function for a module, and those are all added to the GVStubs array by looping over MMI->getPersonalities() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75720 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
8f831cbf0d9d1eb7de08d50b5d55ef84fdacba2e |
15-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Convert GVStubs and HiddenGVStubs to work more like the X86 backend, this eliminates a bunch of uses of "printSuffixedName" and "getGlobalLinkName". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75719 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
ea56f109db4d27475999af9b64ae6d74a858e329 |
15-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
minor cleanups: only switch sections once before all function stubs, instead of before each one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75718 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
71847813bc419f7a0667468136a07429c6d9f164 |
14-Jul-2009 |
David Greene <greened@obbligato.org> |
Have asm printers use formatted_raw_ostream directly to avoid a dynamic_cast<>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75670 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
b8158acc23f5f0bf235fb1c6a8182a38ec9b00b2 |
14-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Reapply my previous asmprinter changes now with more testing and two additional bug fixes: 1. The bug that everyone hit was a problem in the asmprinter where it would remove $stub but keep the L prefix on a name when emitting the indirect symbol. This is easy to fix by keeping the name of the stub and the name of the symbol in a StringMap instead of just keeping a StringSet and trying to reconstruct it late. 2. There was a problem printing the personality function. The current logic to print out the personality function from the DWARF information is a bit of a cesspool right now that duplicates a bunch of other logic in the asm printer. The short version of it is that it depends on emitting both the L and _ prefix for symbols (at least on darwin) and until I can untangle it, it is best to switch the mangler back to emitting both prefixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c23197a26f34f559ea9797de51e187087c039c42 |
14-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCCodeEmitter.cpp
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCJITInfo.cpp
PCMachOWriterInfo.cpp
PCPredicates.cpp
PCRegisterInfo.cpp
|
192957d376923cefc993c1b5c04127c42f1008ec |
14-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Revert r75615, which depended on 75610. --- Reverse-merging r75615 into '.': U lib/Target/XCore/XCoreAsmPrinter.cpp U lib/Target/PIC16/PIC16AsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp U lib/Target/MSP430/MSP430AsmPrinter.cpp U lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp U lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp U lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp U lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp U lib/Target/MSIL/MSILWriter.cpp U lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp U lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
481d15a12289ec4d058b863da93794fd8be1e702 |
14-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
eliminate extra space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75630 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
b09d2ccc0f23107fc1047694ce266a9cf5e0a3c2 |
14-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Rename getValueName -> getMangledName. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c25e7581b9b8088910da31702d4ca21c4734c6d7 |
11-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
assert(0) -> LLVM_UNREACHABLE. Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCCodeEmitter.cpp
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCJITInfo.cpp
PCMachOWriterInfo.cpp
PCPredicates.cpp
PCRegisterInfo.cpp
|
d1474d09cbe5fdeec8ba0d6c6b52f316f3422532 |
09-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Thread LLVMContext through MVT and related parts of SDISel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75153 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
dac237e18209b697a8ba122d0ddd9cad4dfba1f8 |
08-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
Implement changes from Chris's feedback. Finish converting lib/Target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75043 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCJITInfo.cpp
PCRegisterInfo.cpp
|
ac57e6e498abccb117e0d61c2fa0f733845e50cb |
06-Jul-2009 |
Bruno Cardoso Lopes <bruno.cardoso@gmail.com> |
Add the Object Code Emitter class. Original patch by Aaron Gray, I did some cleanup, removed some #includes and moved Object Code Emitter out-of-line. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74813 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCCodeEmitter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
6a3a1ba97e996bfdc061f9a51bd4cf4915962913 |
03-Jul-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Various small changes related to the Condition Register on PowerPC. Don't spill to the CR save area when using the SVR4 ABI for now. Don't rely on constants assigned for registers to be in order (they aren't assigned in order). Make sure CR bits are mapped to the corresponding CR field. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74767 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.td
|
2a9ddfb903ae3baede7282348afae1f750905248 |
03-Jul-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Refactor ABI code in the PowerPC backend. Make CalculateParameterAndLinkageAreaSize() Darwin-specific. Remove SVR4 specific code from LowerCALL_Darwin() and LowerFORMAL_ARGUMENTS_Darwin(). Rename MachoABI to DarwinABI for consistency. Rename ELF ABI to SVR4 ABI for consistency. Factor out common call return lowering between the Darwin and SVR4 ABI. Factor out common call lowering between the Darwin and SVR4 ABI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74766 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCCodeEmitter.cpp
PCFrameInfo.h
PCHazardRecognizers.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCJITInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.td
PCSubtarget.h
|
ffd0200abfd63177257f949a3674b91dcf87bf23 |
03-Jul-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Implement the SVR4 ABI for PowerPC. Implement LowerFORMAL_ARGUMENTS_SVR4(). Implement LowerCALL_SVR4(). Add support for split arguments. Implement by value parameter passing for aggregates. Add support for variable argument lists. Create the spill area for argument registers of variable argument functions no longer at a fixed offset. Make sure callee saved registers are spilled to the correct stack offsets. Change allocation order of non-volatile floating-point registers. Add VRSAVE to the list of callee-saved registers, add CallConvLowering for vararg calls. Add support for variable argument calls with Vector arguments. Add support for VR and VRSAVE save area, improve allocation order for non-volatile vector registers. Stop creating illegal i8 values in LowerVASTART(). Add memory access width hints. Make sure to reserve space on the stack for the frame pointer. When using the SVR4 ABI, reserve r13 for the Small Data Area pointer. Assure that the frame pointer is spilled to the correct location on the stack. Some FP registers were not marked as volatile. Make sure the i64 words from a long double are passed either both in registers or both on the stack. Only put integer arguments in registers which are not marked with the inreg flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74765 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCFrameInfo.h
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
|
6b61cd185eeb90bec93f042535594132ae1f0f41 |
03-Jul-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call. With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack. The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74764 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
667ee3cb436029e55cc788a3648ddd9f94678744 |
03-Jul-2009 |
Tilmann Scheller <tilmann.scheller@googlemail.com> |
Small cleanups in the PowerPC backend. Small refactoring in LowerFORMAL_ARGUMENTS(). Correct minor formatting issues. Remove size argument of CreateCopyOfByValArgument(). Remove dead argument from CalculateStackSlotSize(). Remove unused variable ReturnAddrIndex from various targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74763 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
033080cf6a6f6ca94f20c410204405471c19c535 |
02-Jul-2009 |
Douglas Gregor <dgregor@apple.com> |
CMake build fixes, from Xerxes Ranby git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74720 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
|
20674338529dc034211b41d9224e536ab3893e8d |
02-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
simplify some logic by using isWeakForLinker(). Thanks to Anton for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74700 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c4b0b400b0546aab03be16b8fe1dd27e2fbb041c |
02-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
clarify: stub emission depends on the version of the linker you use, it has nothing to do with the target. Also, the stub elimination optimization *requires* making the stub explicit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74682 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
7074feab96ef137eb6c6afb4cea8765d430f601a |
02-Jul-2009 |
Dale Johannesen <dalej@apple.com> |
Add darwin stub removal to wishlist. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74667 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
b4202b84d7e54efe5e144885c7da63e6cc465f80 |
01-Jul-2009 |
Bill Wendling <isanbard@gmail.com> |
Update comments to make it clear that the function alignment is the Log2 of the bytes and not bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74624 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4fb75e542539153acaf31d9221845a7d0feccbf6 |
01-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Fix codegen for references to available_externally symbols. This fixes PR4482. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74613 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
2578ba26e72e36dde64be0f52a2788480aad3378 |
01-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74580 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
5bcc8bd0c60cfe583ee47852950aad9e532c932e |
01-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Remove unused AsmPrinter OptLevel argument, and propogate. - This more or less amounts to a revert of r65379. I'm curious to know what happened that caused this variable to become unused. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
20c568f366be211323eeaf0e45ef053278ec9ddc |
01-Jul-2009 |
Bill Wendling <isanbard@gmail.com> |
Add an "alignment" field to the MachineFunction object. It makes more sense to have the alignment be calculated up front, and have the back-ends obey whatever alignment is decided upon. This allows for future work that would allow for precise no-op placement and the like. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74564 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCISelLowering.cpp
PCISelLowering.h
|
0f05d22a31bf76a1e066592a567217b73fcc4d7d |
26-Jun-2009 |
Devang Patel <dpatel@apple.com> |
Let's ignore MDStrings also! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74255 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
4b73893d82866fc6889e550bedda0e4d76ad930a |
25-Jun-2009 |
Douglas Gregor <dgregor@apple.com> |
Add missing dependencies to the CMake build system. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74161 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
|
e4c0c0fab8caadd8159f6bdd6fa03e66d4b4af9c |
25-Jun-2009 |
Devang Patel <dpatel@apple.com> |
No need to code gen MDNodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74150 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0de1fc4f416b3e94749ca84cdaede55b040a8b60 |
24-Jun-2009 |
Chris Lattner <sabre@nondot.org> |
sink management of DwarfWriter & MachineModuleInfo into the AsmPrinter base class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74101 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
1f522feabf25134249bc7894e04f5b89fa071b7f |
24-Jun-2009 |
Chris Lattner <sabre@nondot.org> |
sink dwarf finalization out of each target into AsmPrinter::doFinalization git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0a7befa8bd56621f51eaf9196417b866962bf7b1 |
24-Jun-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates a bunch of code from all the targets, and eliminates nondeterministic ordering of directives being emitted in the output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
a96751fc8ff1cc9a225ffbba73de53e2b9e1ae35 |
24-Jun-2009 |
Bob Wilson <bob.wilson@apple.com> |
Provide InitializeAllTargets and InitializeNativeTarget functions in the C bindings. Change all the backend "Initialize" functions to have C linkage. Change the "llvm/Config/Targets.def" header to use C-style comments to avoid compile warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74026 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCTargetMachine.cpp
|
7e9e36a23e07dfb0d7ceda3e76450073c0534f35 |
23-Jun-2009 |
Douglas Gregor <dgregor@apple.com> |
Eliminate object-relinking support from CMake. Fixes PR 4429 and cleans up the CMake-based build system a bit. Started by a patch from Xerxes RÃ¥nby. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
|
66b4d3ba52f37e38a112f57612343b8f6dd7719e |
20-Jun-2009 |
Devang Patel <dpatel@apple.com> |
Initialize MMI git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73813 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
14a55d952cf238fff42da53a75f39cf06dab184b |
19-Jun-2009 |
Devang Patel <dpatel@apple.com> |
Move up dwarf writer initialization in common AsmPrinter class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73784 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
4e0f25b603c96ce43474441e99252c5cd88c2e2e |
19-Jun-2009 |
Chris Lattner <sabre@nondot.org> |
merge the common darwin settings from the X86/PPC/ARM targets into DarwinTargetAsmInfo.cpp. The remaining differences should be evaluated. It seems strange that x86/arm has .zerofill but ppc doesn't, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73742 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
a93ca92379129e87e0130609ac78422fcf6dd21e |
19-Jun-2009 |
Chris Lattner <sabre@nondot.org> |
move mangler quote handling from asm printers to TargetAsmInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73738 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
b839c3f577e03467bce8904eb2a02b124ec19ec8 |
19-Jun-2009 |
Chris Lattner <sabre@nondot.org> |
simplify macro debug info directive handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73736 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
b13bafe5c12dd908b55c559c93adaeb1627ed096 |
18-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
On Darwin, ams printer should output a second label before a jump table so the linker knows it's a new atom. But this is only needed if the jump table is put in a separate section from the function body. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73720 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
1555a23335400143f2b54a66aedc4b5cbbb79f8d |
16-Jun-2009 |
Douglas Gregor <dgregor@apple.com> |
Introduce new headers whose inclusion forces linking and initialization of all targets (InitializeAllTargets.h) or assembler printers (InitializeAllAsmPrinters.h). This is a step toward the elimination of relinked object files, so that we can build normal archives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73543 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCTargetMachine.cpp
|
0da9975299aa68b34464cea4344102466743c28f |
07-Jun-2009 |
Eli Friedman <eli.friedman@gmail.com> |
PR3628: Add patterns to match SHL/SRL/SRA to the corresponding Altivec instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73009 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
2392efef1bd2599231ab659dd6ba4233bf5df94c |
06-Jun-2009 |
Dan Gohman <gohman@apple.com> |
Add explicit keywords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72969 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachineFunctionInfo.h
|
d18e31ae17390d9c6f6cf93d18badf962452031d |
05-Jun-2009 |
Devang Patel <dpatel@apple.com> |
Add new function attribute - noredzone. Update code generator to use this attribute and remove DisableRedZone target option. Update llc to set this attribute when -disable-red-zone command line option is used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72894 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
4c9369df57a52cec5e1fc735e61a979766288074 |
04-Jun-2009 |
Dale Johannesen <dalej@apple.com> |
Fix FP_TO_UINT->i32 on ppc32 -mcpu=g5. This was using Promote which won't work because i64 isn't a legal type. It's easy enough to use Custom, but then we have the problem that when the type legalizer is promoting FP_TO_UINT->i16, it has no way of telling it should prefer FP_TO_SINT->i32 to FP_TO_UINT->i32. I have uncomfortably hacked this by making the type legalizer choose FP_TO_SINT when both are Custom. This fixes several regressions in the testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72891 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
434dd4fd94f5f248492c675e4285e7d67342d4c4 |
01-Jun-2009 |
Bruno Cardoso Lopes <bruno.cardoso@gmail.com> |
Fix new CodeEmitter stuff to follow LLVM codying style. Patch by Aaron Gray git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72697 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCTargetMachine.cpp
|
a3f99f90338d89354384ca25f53ca4450a1a9d18 |
30-May-2009 |
Bruno Cardoso Lopes <bruno.cardoso@gmail.com> |
First patch in the direction of splitting MachineCodeEmitter in two subclasses: JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72631 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCCodeEmitter.cpp
PCJITInfo.cpp
PCJITInfo.h
PCTargetMachine.cpp
PCTargetMachine.h
|
c06441e5ea55d1e48a85e99ed2615ff4f459b4c2 |
28-May-2009 |
Eli Friedman <eli.friedman@gmail.com> |
Return the operand rather than a null SDValue when the given SELECT_CC is actually legal. Part of LegalizeDAG cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72513 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ba2352b0663e718855d1898fab6d3308dedd14fc |
27-May-2009 |
Eli Friedman <eli.friedman@gmail.com> |
Ger rid of some dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72494 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1a8229b1628831da37778e9200824e48c5a38172 |
24-May-2009 |
Eli Friedman <eli.friedman@gmail.com> |
Make the PPC backend use a legal type for the operands to the BUILD_VECTOR nodes it generates. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72356 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
41a024385f1220eadc48b48cb4c044a5fbc1b361 |
23-May-2009 |
Anton Korobeynikov <asl@math.spbu.ru> |
Propagate CPU string out of SubtargetFeatures git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72335 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
587daedce2d6c2b2d380b6a5843a6f8b6cfc79e4 |
13-May-2009 |
Bill Wendling <isanbard@gmail.com> |
Change MachineInstrBuilder::addReg() to take a flag instead of a list of booleans. This gives a better indication of what the "addReg()" is doing. Remembering what all of those booleans mean isn't easy, especially if you aren't spending all of your time in that code. I took Jakob's suggestion and made it illegal to pass in "true" for the flag. This should hopefully prevent any unintended misuse of this (by reverting to the old way of using addReg()). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71722 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
8d730fbde54b7ac9809fc12852c2a8d30f5bec3d |
11-May-2009 |
Jay Foad <jay.foad@gmail.com> |
Don't #include DerivedTypes.h from TargetData.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71468 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
777d2306b36816a53bc1ae1244c0dc7d998ae691 |
09-May-2009 |
Duncan Sands <baldrick@free.fr> |
Rename PaddedSize to AllocSize, in the hope that this will make it more obvious what it represents, and stop it being confused with the StoreSize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
82ae933e55839713ea039e7c6353483b14dc5724 |
09-May-2009 |
Evan Cheng <evan.cheng@apple.com> |
PPC::B and PPC::BCC's target operand may be an immediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71282 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
98a366d547772010e94609e4584489b3e5ce0043 |
30-Apr-2009 |
Bill Wendling <isanbard@gmail.com> |
Instead of passing in an unsigned value for the optimization level, use an enum, which better identifies what the optimization is doing. And is more flexible for future uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b |
29-Apr-2009 |
Bill Wendling <isanbard@gmail.com> |
Second attempt: Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'll change the JIT with a follow-up patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
c69d56f1154342a57c9bdd4c17a10333e3520127 |
28-Apr-2009 |
Bill Wendling <isanbard@gmail.com> |
r70270 isn't ready yet. Back this out. Sorry for the noise. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70275 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
2e9d5f912a9841d3685ba0241abe1131943fed29 |
28-Apr-2009 |
Bill Wendling <isanbard@gmail.com> |
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'm not 100% sure if it's necessary to change it there... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
9008ca6b6b4f638cfafccb593cbc5b1d3f5ab877 |
27-Apr-2009 |
Nate Begeman <natebegeman@mac.com> |
2nd attempt, fixing SSE4.1 issues and implementing feedback from duncan. PR2957 ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70225 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
15684b29552393553524171bff1913e750f390f8 |
24-Apr-2009 |
Rafael Espindola <rafael.espindola@gmail.com> |
Revert 69952. Causes testsuite failures on linux x86-64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69967 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
b706d29f9c5ed3ed9acc82f7ab46205ba56b92dc |
24-Apr-2009 |
Nate Begeman <natebegeman@mac.com> |
PR2957 ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69952 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
f1d012c5956fc94ef9570855f4d276598c297eda |
24-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Fix spurious indentation in a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69934 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
9062d9a55b0b8b473b927d8b020e36990e147a58 |
17-Apr-2009 |
Chris Lattner <sabre@nondot.org> |
Fix some failures in targets on available_externally functions, this fixes a crash on CodeGen/Generic/externally_available.ll on ppc hosts. Thanks to Nicholas L for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69333 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7d16e85bfc2c6423c81ce87a177bf3b1b1012a04 |
10-Apr-2009 |
Bill Wendling <isanbard@gmail.com> |
Pass in the std::string parameter instead of returning it by value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68747 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
022a27e363dcd3b8d4f7e6426559ab29d7a86d70 |
26-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
fix warning in -asserts build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67736 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
42bf74be1402df7409efbea089310d4c276fde37 |
25-Mar-2009 |
Evan Cheng <evan.cheng@apple.com> |
CodeGen still defaults to non-verbose asm, but llc now overrides it and default to verbose. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67668 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
f1c0ae9de5365a578fbdfebe4625fb281b0be592 |
24-Mar-2009 |
Evan Cheng <evan.cheng@apple.com> |
Do not emit comments unless -asm-verbose. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67580 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
4dc2b39bf89d7c87868008ef8a0f807e0419aca6 |
11-Mar-2009 |
Duncan Sands <baldrick@free.fr> |
It makes no sense to have a ODR version of common linkage, so remove it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66690 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
667d4b8de6dea70195ff12ef39a4deebffa2f5c7 |
07-Mar-2009 |
Duncan Sands <baldrick@free.fr> |
Introduce new linkage types linkonce_odr, weak_odr, common_odr and extern_weak_odr. These are the same as the non-odr versions, except that they indicate that the global will only be overridden by an *equivalent* global. In C, a function with weak linkage can be overridden by a function which behaves completely differently. This means that IP passes have to skip weak functions, since any deductions made from the function definition might be wrong, since the definition could be replaced by something completely different at link time. This is not allowed in C++, thanks to the ODR (One-Definition-Rule): if a function is replaced by another at link-time, then the new function must be the same as the original function. If a language knows that a function or other global can only be overridden by an equivalent global, it can give it the weak_odr linkage type, and the optimizers will understand that it is alright to make deductions based on the function body. The code generators on the other hand map weak and weak_odr linkage to the same thing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66339 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
f2950b00513e3d3c67c957e664eb3533adc3da22 |
03-Mar-2009 |
Bob Wilson <bob.wilson@apple.com> |
Use early exit to reduce indentation. No functional change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65962 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0f8b53f19d29013ab18f3d444cea1e6305405611 |
03-Mar-2009 |
Dan Gohman <gohman@apple.com> |
Fix a bunch of Doxygen syntax issues. Escape special characters, and put @file directives on their own comment line. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCRegisterInfo.cpp
|
24e338e8a3dab2923db30fe63d77a5ac95456ff9 |
03-Mar-2009 |
Bob Wilson <bob.wilson@apple.com> |
Generalize BuildVectorSDNode::isConstantSplat to use APInts and handle arbitrary vector sizes. Add an optional MinSplatBits parameter to specify a minimum for the splat element size. Update the PPC target to use the revised interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65899 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a27ea9e89f38e9bcca4d67defb0bae887a16d72c |
01-Mar-2009 |
Bob Wilson <bob.wilson@apple.com> |
Combine PPC's GetConstantBuildVectorBits and isConstantSplat functions to a new method in a BuildVectorSDNode "pseudo-class". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65747 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ded2b20e7e5399c90ee7cb560e70ab92ba620dcd |
27-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Alignment values for i64 and f64 on ppc64 were wrong, possibly for the reason suggested by the comment. No wonder it didn't work very well. This unblocks bootstrap with assertions on ppc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65601 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
a87008d90b7d894cfca53d407642acfd7be2af3c |
25-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
Revert BuildVectorSDNode related patches: 65426, 65427, and 65296. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65482 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
df38043a46b873acb98e7ce0c700d82c1d888772 |
25-Feb-2009 |
Scott Michel <scottm@aero.org> |
Remove all "cached" data from BuildVectorSDNode, preferring to retrieve results via reference parameters. This patch also appears to fix Evan's reported problem supplied as a reduced bugpoint test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65426 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
57f0db833dc30404f1f5d28b23df326e520698ec |
24-Feb-2009 |
Bill Wendling <isanbard@gmail.com> |
Overhaul my earlier submission due to feedback. It's a large patch, but most of them are generic changes. - Use the "fast" flag that's already being passed into the asm printers instead of shoving it into the DwarfWriter. - Instead of calling "MI->getParent()->getParent()" for every MI, set the machine function when calling "runOnMachineFunction" in the asm printers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
4214a5531cdbe538a358033f1847e55c4436be1b |
23-Feb-2009 |
Scott Michel <scottm@aero.org> |
Introduce the BuildVectorSDNode class that encapsulates the ISD::BUILD_VECTOR instruction. The class also consolidates the code for detecting constant splats that's shared across PowerPC and the CellSPU backends (and might be useful for other backends.) Also introduces SelectionDAG::getBUID_VECTOR() for generating new BUILD_VECTOR nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65296 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
97357614b5957cc167c261d3be54713802715d9a |
18-Feb-2009 |
Dan Gohman <gohman@apple.com> |
Factor out the code to add a MachineOperand to a MachineInstrBuilder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64891 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
caa0c2caddcfb56de09e016c4c153d0609ffcf6e |
18-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
GV with null value initializer shouldn't go to BSS if it's meant for a mergeable strings section. Currently it only checks for Darwin. Someone else please check if it should apply to other targets as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
fdc40a0a696c658d550d894ea03772e5f8af2c94 |
17-Feb-2009 |
Scott Michel <scottm@aero.org> |
Remove trailing whitespace to reduce later commit patch noise. (Note: Eventually, commits like this will be handled via a pre-commit hook that does this automagically, as well as expand tabs to spaces and look for 80-col violations.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64827 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
536a2f1f8467a17f6d145bd83f25faae1f689839 |
13-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove refs to non-DebugLoc version of BuildMI from PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64431 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
21b5541814d57d0a31f353948e4e933dbb1af6a4 |
13-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Eliminate a couple of non-DebugLoc BuildMI variants. Modify callers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64409 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
f902d246b69c972fa3e8f652b44d10abbb1f9355 |
12-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
fix PR3538 for PPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64383 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d1c321a89ab999b9bb602b0f398ecd4c2022262c |
12-Feb-2009 |
Bill Wendling <isanbard@gmail.com> |
Move debug loc info along when the spiller creates new instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64342 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
dc54d317e7a381ef8e4aca80d54ad1466bb85dda |
09-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nasty suprise to some callers, e.g. register coalescer. For now, add an parameter that tells AnalyzeBranch whether it's safe to modify the mbb. A better solution is out there, but I don't have time to deal with it right now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64124 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
6f38cb61a94b3abab70f0ee463bdcf55d86d334e |
07-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Use getDebugLoc forwarder instead of getNode()->getDebugLoc. No functional change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64026 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1fdbc1dd4e9cb42c79a30e8dc308c322e923cc52 |
07-Feb-2009 |
Dan Gohman <gohman@apple.com> |
Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowing ScheduleDAG's TLI member to use const. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64018 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
b300d2aa3ef08b5074449e2c05804717f488f4e4 |
07-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Get rid of the last non-DebugLoc versions of getNode! Many targets build placeholder nodes for special operands, e.g. GlobalBaseReg on X86 and PPC for the PIC base. There's no sensible way to associate debug info with these. I've left them built with getNode calls with explicit DebugLoc::getUnknownLoc operands. I'm not too happy about this but don't see a good improvement; I considered adding a getPseudoOperand or something, but it seems to me that'll just make it harder to read. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63992 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e8d7230f480654cdb8ff1c3d0a38e1e9ab0bd55f |
07-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove more non-DebugLoc getNode variants. Use getCALLSEQ_{END,START} to permit passing no DebugLoc there. UNDEF doesn't logically have DebugLoc; add getUNDEF to encapsulate this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63978 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
de06470330260f5937e7ca558f5f5b3e171f2ee5 |
06-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove more non-DebugLoc versions of getNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63969 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f5f5dce897269885754fc79adeb809194da52942 |
06-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Eliminate remaining non-DebugLoc version of getTargetNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63951 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
770bcc7b15adbc978800db70dbb1c3c22913b52c |
06-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
Move getPointerRegClass from TargetInstrInfo to TargetRegisterInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63938 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
ed2eee63a6858312ed17582d8cb85a6856d8eb34 |
06-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Get rid of one more non-DebugLoc getNode and its corresponding getTargetNode. Lots of caller changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63904 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
3484c09e0da3c05c8a78946e090c7610208d937b |
05-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove a non-DebugLoc version of getNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63889 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4be0bdf7c1162824927dd3de89e016ae4934d0d6 |
05-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove non-DebugLoc versions of getMergeValues, ZeroExtendInReg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63800 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a05dca4f9e051fad19fe9b5f6cce2715c1e5d505 |
05-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove non-DebugLoc forms of CopyToReg and CopyFromReg. Adjust callers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63789 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
33c960f523f2308482d5b2816af46a7ec90a6d3d |
04-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove non-DebugLoc versions of getLoad and getStore. Adjust the many callers of those versions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63767 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
39355f9fea790c5a1b12ef0fdcfeac3f533232ea |
04-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove non-DebugLoc forms of the exotic forms of Lod and Sto; patch uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63716 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f5d9789a7fddc9173cee104c8f25a7564bad3f28 |
04-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove some more non-DebugLoc versions of construction functions, with callers adjusted to fit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63705 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8ad9b43e690e8773cf836b30e8da26bc71e18844 |
04-Feb-2009 |
Dale Johannesen <dalej@apple.com> |
Remove a few non-DebugLoc versions of node creation functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63703 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7d2ad624fa749a6d3edac0d94e9c107989c16304 |
31-Jan-2009 |
Dale Johannesen <dalej@apple.com> |
Make LowerCallTo and LowerArguments take a DebugLoc argument. Adjust all callers and overloaded versions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63444 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1465d61bdd36cfd6021036a527895f0dd358e97d |
28-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
Rename getAnalysisToUpdate to getAnalysisIfAvailable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
9e79091f1a2c8a4ef0d238dbddaea273d27ef404 |
27-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Respect the DisableRedZone flag on PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63119 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1902a129a5b9fc9ac1ecbaf76d2ff7a1bf04691a |
25-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Private linkage support for PPC / Darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62955 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
04ee5a1d9267e5e6fab8f088095fcb83c3c5cbd1 |
20-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62600 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
c1a168a0fcbc7483a879e617e91824c4a7e6eece |
19-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix 80 col violations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62518 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
5fc742d5b2b647b3dce2c9ba943a2499d980c347 |
19-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Handle ISD::DECLARE with PIC relocation model. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62516 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ee5c2b8ba2bd9670931705ca04a46052d534ade9 |
16-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix PPC ISD::Declare isel and eliminate the need for PPCTargetLowering::LowerGlobalAddress to check if isVerifiedDebugInfoDesc() is true. Given the recent changes, it would falsely return true for a lot of GlobalAddressSDNode's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62373 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
2836c283bb1c14baa50994f60769d665da608ad7 |
16-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Initial hazard recognizer support in post-pass scheduling. This includes a new toy hazard recognizier heuristic which attempts to direct the scheduler to avoid clumping large groups of loads or stores too densely. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62291 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
|
fc54c552963545a81e4ea38e60460590afb2d5ae |
15-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Generalize the HazardRecognizer interface so that it can be used to support MachineInstr-based scheduling in addition to SDNode-based scheduling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62284 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
|
bb46f52027416598a662dc1c58f48d9d56b1a65b |
15-Jan-2009 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add the private linkage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62279 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
79ce276083ced01256a0eb7d80731e4948ca6e87 |
15-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph and into the ScheduleDAGInstrs class, so that they don't get destructed and re-constructed for each block. This fixes a compile-time hot spot in the post-pass scheduler. To help facilitate this, tidy and do some minor reorganization in the scheduler constructor functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62275 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
73e0914848662404cf2aa18eb049ff5aae543388 |
15-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Const-qualify getPreIndexedAddressParts and friends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62259 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ceb4d1aecb9deffe59b3dcdc9a783ffde8477be9 |
12-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
Rename getABITypeSize to getTypePaddedSize, as suggested by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
9b8f542e2746b28721b3ec603c3aaaa10ea708fc |
09-Jan-2009 |
Misha Brukman <brukman+llvm@gmail.com> |
Removed trailing whitespace from Makefiles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
akefile
|
eb3fc289141ad44883acbb91e839ab1b9a0f2025 |
09-Jan-2009 |
Devang Patel <dpatel@apple.com> |
Convert DwarfWriter into a pass. Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61955 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d68a07650cdb2e18f18f362ba533459aa10e01b6 |
05-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Tidy up #includes, deleting a bunch of unnecessary #includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61715 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCSubtarget.cpp
|
5480c0469e5c0323ffb12f1ead2abd169d6cc0e7 |
01-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
Fix PR3274: when promoting the condition of a BRCOND node, promote from i1 all the way up to the canonical SetCC type. In order to discover an appropriate type to use, pass MVT::Other to getSetCCResultType. In order to be able to do this, change getSetCCResultType to take a type as an argument, not a value (this is also more logical). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61542 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
2f6fea90a54787d873cfc25f33668cb4cc7d6e1e |
19-Dec-2008 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix bug 3202. The EH_frame and .eh symbols are now private, except for darwin9 and earlier. The patch also fixes the definition of PrivateGlobalPrefix on pcc linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61242 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
ae94e594164b193236002516970aeec4c4574768 |
05-Dec-2008 |
Evan Cheng <evan.cheng@apple.com> |
Re-did 60519. It turns out Darwin's handling of hidden visibility symbols are a bit more complicate than I expected. Both declarations and weak definitions still need a stub indirection. However, the stubs are in data section and they contain the addresses of the actual symbols. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60571 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCSubtarget.cpp
|
a8103dad4e84e031c5845e18268655cc0bfbdb8d |
04-Dec-2008 |
Bill Wendling <isanbard@gmail.com> |
Temporarily revert r60519. It was causing a bootstrap failure: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT barrier.lo -MD -MP -MF .deps/barrier.Tpo -c ../../../llvm-gcc.src/libgomp/barrier.c -fno-common -DPIC -o .libs/barrier.o checking for sys/file.h... /var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:non-relocatable subtraction expression, "_gomp_tls_key" minus "L1$pb" /var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:symbol: "_gomp_tls_key" can't be undefined in a subtraction expression make[4]: *** [barrier.lo] Error 1 make[4]: *** Waiting for unfinished jobs.... /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT alloc.lo -MD -MP -MF .deps/alloc.Tpo -c ../../../llvm-gcc.src/libgomp/alloc.c -o alloc.o >/dev/null 2>&1 yes checking for sys/param.h... make[3]: *** [all-recursive] Error 1 make[2]: *** [all] Error 2 make[1]: *** [all-target-libgomp] Error 2 make[1]: *** Waiting for unfinished jobs.... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60527 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCSubtarget.cpp
|
eb83dfde66b4614fe48a572ea2ee1d7b91bcbc19 |
04-Dec-2008 |
Evan Cheng <evan.cheng@apple.com> |
Visibility hidden GVs do not require extra load of symbol address from the GOT or non-lazy-ptr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60519 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCSubtarget.cpp
|
f94a3273617e7f28518e871516a24ddc272bb1e8 |
03-Dec-2008 |
Dale Johannesen <dalej@apple.com> |
A step towards geting linux ppc to work (see PR 3099) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60497 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c54baa2d43730f1804acfb4f4e738fba72f966bd |
03-Dec-2008 |
Dan Gohman <gohman@apple.com> |
Split foldMemoryOperand into public non-virtual and protected virtual parts, and add target-independent code to add/preserve MachineMemOperands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60488 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
15511cf1660cfd6bb8b8e8fca2db9450f50430ee |
03-Dec-2008 |
Dan Gohman <gohman@apple.com> |
Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60487 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
|
952b839ce9bc0c6d605d8b202c9cd76f7f05a77d |
03-Dec-2008 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix bug 3140. Print a single parameter .file directive if we have an ELF target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60480 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
41474baac839da410302950305722cb0e026a094 |
03-Dec-2008 |
Dan Gohman <gohman@apple.com> |
Add a sanity-check to tablegen to catch the case where isSimpleLoad is set but mayLoad is not set. Fix all the problems this turned up. Change code to not use isSimpleLoad instead of mayLoad unless it really wants isSimpleLoad. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60459 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
aaffa05d0a652dd3eae76a941d02d6b0469fa821 |
01-Dec-2008 |
Duncan Sands <baldrick@free.fr> |
There are no longer any places that require a MERGE_VALUES node with only one operand, so get rid of special code that only existed to handle that possibility. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60349 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1607f05cb7d77d01ce521a30232faa389dbed4e2 |
01-Dec-2008 |
Duncan Sands <baldrick@free.fr> |
Change the interface to the type legalization method ReplaceNodeResults: rather than returning a node which must have the same number of results as the original node (which means mucking around with MERGE_VALUES, and which is also easy to get wrong since SelectionDAG folding may mean you don't get the node you expect), return the results in a vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60348 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
25cf2275ff7de3de3bc0e508abaf457413d74725 |
24-Nov-2008 |
Duncan Sands <baldrick@free.fr> |
If the type legalizer actually legalized anything (this doesn't happen that often, since most code does not use illegal types) then follow it by a DAG combiner run that is allowed to generate illegal operations but not illegal types. I didn't modify the target combiner code to distinguish like this between illegal operations and illegal types, so it will not produce illegal operations as well as not producing illegal types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59960 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
19ea77f09d7226d4515b67e72be2f7b4dfee36dd |
24-Nov-2008 |
Matthijs Kooijman <matthijs@stdin.nl> |
Fix comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59958 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
|
027fdbe3ba6762b9867c6f891d64f76b7d6a4557 |
24-Nov-2008 |
Evan Cheng <evan.cheng@apple.com> |
Move target independent td files from lib/Target/ to include/llvm/Target so they can be distributed along with the header files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59953 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
03228089d5235f8c90477f88809139464e9c6ea5 |
23-Nov-2008 |
Duncan Sands <baldrick@free.fr> |
Rename SetCCResultContents to BooleanContents. In practice these booleans are mostly produced by SetCC, however the concept is more general. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59911 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7751ad92daeea5a3502fbc266ae814baec5c03e6 |
22-Nov-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Make a convenient helper for printing offsets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59872 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
343f0c046702831a4a6aec951b6a297a23241a55 |
20-Nov-2008 |
Dan Gohman <gohman@apple.com> |
Experimental post-pass scheduling support. Post-pass scheduling is currently off by default, and can be enabled with -disable-post-RA-scheduler=false. This doesn't have a significant impact on most code yet because it doesn't yet do anything to address anti-dependencies and it doesn't attempt to disambiguate memory references. Also, several popular targets don't have pipeline descriptions yet. The majority of the changes here are splitting the SelectionDAG-specific code out of ScheduleDAG, so that ScheduleDAG can be moved to libLLVMCodeGen.a. The interface between ScheduleDAG-using code and the rest of the scheduling code is somewhat rough and will evolve. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59676 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.h
|
cbad42cfd1cc93a41ff26ea2e8895bfbc09f54f2 |
18-Nov-2008 |
Dan Gohman <gohman@apple.com> |
Add more const qualifiers. This fixes build breakage from r59540. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59542 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
a7647e68a451994c5ae012b6a39e0d8d76d95653 |
17-Nov-2008 |
Dale Johannesen <dalej@apple.com> |
Move some former testcases (low-probability codegen optimizations) into this wishlist. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59455 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
92adc19be95347225f713db8cc1b5e22ac08bb5e |
15-Nov-2008 |
Oscar Fuentes <ofv@wanadoo.es> |
Adds extern "C" ints to the .cpp files that use RegisterTarget, as well as 2 files that use "Registrator"s. These are to be used by the MSVC builds, as the Win32 linker does not include libs that are otherwise unreferenced, even if global constructors in the lib have side-effects. Patch by Scott Graham! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59378 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCTargetMachine.cpp
|
0b45c9957fb7ad47e653fb43d455f6727170dad0 |
09-Nov-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Temporary revert my last commit: it seems it's triggering some subtle bug in backend and breaks llvm-gcc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58926 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0f569535676325a94981881eba6f8c7e61630992 |
08-Nov-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Factor out offset printing code into generic AsmPrinter. FIXME: it seems, that most of targets don't support offsets wrt CPI/GlobalAddress', was it intentional? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58917 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
ce4a70bd7608861e104b04265a0c71e5df8ecefe |
08-Nov-2008 |
Evan Cheng <evan.cheng@apple.com> |
Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ptr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58897 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
53e4e4478c69c2c2115db833b54385117c764d14 |
07-Nov-2008 |
Dale Johannesen <dalej@apple.com> |
Make FP tests requiring two compares work on PPC (PR 642). This is Chris' patch from the PR, modified to realize that SETUGT/SETULT occur legitimately with integers, plus two fixes in LegalizeDAG to pass a valid result type into LegalizeSetCC. The argument of TLI.getSetCCResultType is ignored on PPC, but I think I'm following usage elsewhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58871 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
e5f4de42b5d26f60cec6fab0482eaf579246b218 |
07-Nov-2008 |
Dan Gohman <gohman@apple.com> |
Flush the raw_ostream after emitting the assembly for a function. This is a temporary fix for the -print-emitted-asm option, where errs() is used as the stream, in the case where other code is using stderr without using errs()' buffer. Hopefully soon we'll fix errs() to be non-buffered instead. Patch by Preston Gurd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58859 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
cbb7ab259d08ac5aa5a4764b48628c4bcb5110c7 |
05-Nov-2008 |
Dan Gohman <gohman@apple.com> |
Reintroduce a comment that was removed with the AddToISelQueue changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58760 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
8be6bbe5bfd50945ac6c5542e0f54a0924a5db8d |
05-Nov-2008 |
Dan Gohman <gohman@apple.com> |
Eliminate the ISel priority queue, which used the topological order for a priority function. Instead, just iterate over the AllNodes list, which is already in topological order. This eliminates a fair amount of bookkeeping, and speeds up the isel phase by about 15% on many testcases. The impact on most targets is that AddToISelQueue calls can be simply removed. In the x86 target, there are two additional notable changes. The rule-bending AND+SHIFT optimization in MatchAddress that creates new pre-isel nodes during isel is now a little more verbose, but more robust. Instead of either creating an invalid DAG or creating an invalid topological sort, as it has historically done, it can now just insert the new nodes into the node list at a position where they will be consistent with the topological ordering. Also, the address-matching code has logic that checked to see if a node was "already selected". However, when a node is selected, it has all its uses taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any further visits from MatchAddress. This code is now removed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58748 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2fbfbd2a052fc3935271e441ceb1e401f26d145f |
30-Oct-2008 |
Duncan Sands <baldrick@free.fr> |
Shift amounts should have type getShiftAmountTy (i32 for PPC, not i8). Correct this, and some formatting while there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58451 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b384ab9ea113ad22a9c7034b98060c7470f0dcc5 |
29-Oct-2008 |
Dale Johannesen <dalej@apple.com> |
Add a RM pseudoreg for the rounding mode, which allows ppcf128->int conversion to work with DeadInstructionElimination. This is now turned off but RM is harmless. It does not do a complete job of modeling the rounding mode. Revert marking MFCR as using all 7 CR subregisters; while correct, this caused the problem in PR 2964, plus the local RA crash noted in the comments. This was needed to make DeadInstructionElimination, but as we are not running that, it is backed out for now. Eventually it should go back in and the other problems fixed where they're broken. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58391 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.td
|
57760d96e2dfb485dc53fe2799df24bd18157abb |
28-Oct-2008 |
Duncan Sands <baldrick@free.fr> |
Fix darwin ppc llvm-gcc build breakage: intercept ppcf128 to i32 conversion and expand it into a code sequence like in LegalizeDAG. This needs custom ppc lowering of FP_ROUND_INREG, so turn that on and make it work with LegalizeTypes. Probably PPC should simply custom lower the original conversion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58329 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8ad4c00c00233acb8a3395098e2b575cc34de46b |
27-Oct-2008 |
David Greene <greened@obbligato.org> |
Have TableGen emit setSubgraphColor calls under control of a -gen-debug flag. Then in a debugger developers can set breakpoints at these calls to see waht is about to be selected and what the resulting subgraph looks like. This really helps when debugging instruction selection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58278 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f14df0234030edee0ae02dfc1de3a4eb0c3b5977 |
25-Oct-2008 |
Dale Johannesen <dalej@apple.com> |
Mark MFCR as reading all condition code registers. Prevents some more overzealous deletions (mostly in AltiVec code). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58121 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
c12e5812be4dacc30781db84b045775c46580240 |
24-Oct-2008 |
Dale Johannesen <dalej@apple.com> |
Rewrite logic to figure out whether LR needs to be saved/restored in the prolog/epilog. We need to do this iff something in the function stores into it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58116 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
|
639076fb84ab02e75d39415bd426a6a576ddef62 |
23-Oct-2008 |
Dale Johannesen <dalej@apple.com> |
Mark defs and uses of CTR and LR correctly. Prevents DeadMachineInstructionElim from thinking things like MTCTR are dead (fixes massive testsuite breakage at -O0). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58043 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
5c5b6dfd0e1525305674560dd5d995e5f7eff2e5 |
22-Oct-2008 |
Oscar Fuentes <ofv@wanadoo.es> |
CMake: Turned some libraries into partially linked objects. Corrected names of LLVMCore and ARMCodeGen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57943 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
|
54aeea39a743effe88eedb43d2f7f4805e806ab5 |
21-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Disable constant-offset folding for PowerPC, as the PowerPC target isn't yet prepared for it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57886 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
f522068412218cd14b2c2df74a3437717d255381 |
16-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Trim #includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57649 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCJITInfo.cpp
|
e79f5ef4e7b6dd5a2cc88de412c7dd65a7afbf44 |
16-Oct-2008 |
Duncan Sands <baldrick@free.fr> |
Fix warnings about mb/me being potentially used uninitialized in these functions with gcc-4.3. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57635 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
8e8b8a223c2b0e69f44c0639f846260c8011668f |
16-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Const-ify several TargetInstrInfo methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57622 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
0329466b6b4927f4e6f5d144891fef06a027fec5 |
14-Oct-2008 |
Evan Cheng <evan.cheng@apple.com> |
Rename LoadX to LoadExt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57526 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b8cab9227a0f6ffbdaae33e3c64268e265008a6a |
14-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Fix command-line option printing to print two spaces where needed, instead of requiring all "short description" strings to begin with two spaces. This makes these strings less mysterious, and it fixes some cases where short description strings mistakenly did not begin with two spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57521 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
e563bbc312f8b11ecfe12b8187176f667df1dff3 |
12-Oct-2008 |
Chris Lattner <sabre@nondot.org> |
Change CALLSEQ_BEGIN and CALLSEQ_END to take TargetConstant's as parameters instead of raw Constants. This prevents the constants from being selected by the isel pass, fixing PR2735. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57385 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
4520dd2b7b20af07d5a3e4d06d964a532044eb10 |
08-Oct-2008 |
Duncan Sands <baldrick@free.fr> |
Add <cstdio> include where needed by gcc-4.4. Patch by Samuel Tardieu. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57291 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriterInfo.cpp
|
6381a1334afa211fea8ec76ca7b22d26aee940dd |
05-Oct-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Fix weird think-o and unbreak build on all gcc-3.4.x-based platforms (e.g. mingw) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57106 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
da8ac5fd9130b70b61be61e4819faa8d842d708f |
03-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Avoid creating two TargetLowering objects for each target. Instead, just create one, and make sure everything that needs it can access it. Previously most of the SelectionDAGISel subclasses all had their own TargetLowering object, which was redundant with the TargetLowering object in the TargetMachine subclasses, except on Sparc, where SparcTargetMachine didn't have a TargetLowering object. Change Sparc to work more like the other targets here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57016 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d735b8019b0f297d7c14b55adcd887af24d8e602 |
03-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Switch the MachineOperand accessors back to the short names like isReg, etc., from isRegister, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
4ae641f4d12c60ee1aaca5e42b6de231c6a02c40 |
02-Oct-2008 |
Devang Patel <dpatel@apple.com> |
Remove OptimizeForSize global. Use function attribute optsize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56937 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
5df3186f598163258fabf3448d9372843804d1ab |
29-Sep-2008 |
Duncan Sands <baldrick@free.fr> |
Rename isWeakForLinker to mayBeOverridden. Use it instead of hasWeakLinkage in a bunch of optimization passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56782 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
d5d8191b202c0f96f33c826c93d9796451ff7fca |
27-Sep-2008 |
Bill Wendling <isanbard@gmail.com> |
Temporarily reverting r56683. This is causing a failure during the build of llvm-gcc: /Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -mmacosx-version-min=10.4 -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Gir/devel/llvm/clean/llvm.obj/include -I/Volumes/Gir/devel/llvm/clean/llvm.src/include -fexceptions -fvisibility=hidden -DHIDE_EXPORTS -c ../../llvm-gcc.src/gcc/unwind-dw2-fde-darwin.c -o libgcc/./unwind-dw2-fde-darwin.o Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) && TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical register live information"), function runOnMachineFunction, file /Volumes/Gir/devel/llvm/clean/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp, line 311. ../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://developer.apple.com/bugreporter> for instructions. {standard input}:3521:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb" {standard input}:3521:symbol: "_dwarf_reg_size_table" can't be undefined in a subtraction expression {standard input}:3520:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb" ... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56703 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
7810bfed5570c192e0714a8fd0e5130a0c38dd2e |
26-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Rename ConstantSDNode's getSignExtended to getSExtValue, for consistancy with ConstantInt, and re-implement it in terms of ConstantInt's getSExtValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56700 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
36a55023c1daae86afedf6e6672c0adad7bbe5ea |
26-Sep-2008 |
Evan Cheng <evan.cheng@apple.com> |
Fix @llvm.frameaddress codegen. FP elimination optimization should be disabled when frame address is desired. Also add support for depth > 0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56683 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
86098bd6a63d2cdf0c9be9ef3151bd2728281fd7 |
26-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Add "inreg" field to CallSDNode (doesn't increase its size). Adjust various lowering functions to pass this info through from CallInst. Use it to implement sseregparm returns on X86. Remove X86_ssecall calling convention. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56677 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e1ad087fcbb51ed66e450d010f849b5792b4b6fc |
26-Sep-2008 |
Oscar Fuentes <ofv@wanadoo.es> |
CMake: Builds all targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56641 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
|
d751c64a679148bfe111bbba47f4a344ba813df9 |
26-Sep-2008 |
Bill Wendling <isanbard@gmail.com> |
If we have a function with an unreachable statement such that the ending debug information is in an unreachable block, then it's possible that the high/low pc values won't be set for the dwarf information. E.g., this function: void abort(void) __attribute__((__noreturn__)); void dead_beef(void) __attribute__ ((noreturn)); int *b; void dead_beef(void) { *b=0xdeadbeef; abort(); } has a call to "@llvm.dbg.region.end" only in the unreachable block: define void @dead_beef() noreturn nounwind { entry: call void @llvm.dbg.func.start(...) call void @llvm.dbg.stoppoint(...) ... call void @abort( ) noreturn nounwind unreachable return: ; No predecessors! call void @llvm.dbg.stoppoint(...) call void @llvm.dbg.region.end(...) ret void } The dwarf information emitted is something like: 0x00000084: TAG_subprogram [5] AT_name( "dead_beef" ) AT_external( 0x01 ) AT_prototyped( 0x01 ) AT_decl_file( 0x01 ) AT_decl_line( 0x08 ) Note that this is *not* the best fix for this problem, but a band-aid for an gaping wound. This code needs to be changed when we revamp our debugging information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56628 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
32b952a2a60d1091e0e17bb6ce788cd1d41e6f8b |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Reapply 56585:56589 with proper fix for some gcc versions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56621 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
688535e005f370a98e82c10be7346eb981b3dfc7 |
25-Sep-2008 |
Evan Cheng <evan.cheng@apple.com> |
Temporarily backing out 56585:56589 to unbreak the build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56607 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
742fd195a687d8b22bde060783c1032dd62b07ab |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Minor cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56588 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
93ed1029ecbd6975d7158881ffcc51235f8dd826 |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Get rid of virtual inheritance for PPC TAI git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56586 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
00181a33d87d0c7676547d979b2faa1c08c91732 |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Get rid of ReadOnlySection duplicate git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56582 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
6481873dc042d33c974399a7761a72524d1fe957 |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Get rid of now unused {Four,Eight,Sixteen}ByteConstantSection git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56580 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
d7ca416d6c9ae1966e0df8193112e3c5f430a053 |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Get rid of duplicate char*/Section* TextSection git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56574 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
c25e1ea5e9aa54952b6736a9579e25a5c2d8139f |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Move actual section printing stuff to AsmPrinter from TAI reducing heap traffic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
0c8e80607bc3296a4775f05c02f0d11df8e5cb04 |
25-Sep-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Drop obsolete hook and change all usage to new interface git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
|
da43bcf624acb56a3d77bb5ae9a02728af032613 |
24-Sep-2008 |
Evan Cheng <evan.cheng@apple.com> |
Properly handle 'm' inline asm constraints. If a GV is being selected for the addressing mode, it requires the same logic for PIC relative addressing, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56526 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
eaf42abab6d465c38891345d999255871cf03943 |
24-Sep-2008 |
Devang Patel <dpatel@apple.com> |
s/ParameterAttributes/Attributes/g git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56513 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0ba2bcfcc3149a25d08aa8aa00fb6c34a4e25bdd |
23-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Fix these enums' starting values to reflect the way that instruction opcodes are now numbered. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56497 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
0bb41608e94adfe9884bc188457c4f6ae47ea43c |
22-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Make log, log2, log10, exp, exp2 use Expand by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56471 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7795932d41a84c921a5d348b7fa70f5d32e146d0 |
17-Sep-2008 |
Bill Wendling <isanbard@gmail.com> |
Add trampoline support to PPC. GCC simply calls the "__trampoline_setup" function with appropriate parameters. This allows us to support blocks on PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56267 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
056292fd738924f3f7703725d8f630983794b5a5 |
16-Sep-2008 |
Bill Wendling <isanbard@gmail.com> |
Reverting r56249. On further investigation, this functionality isn't needed. Apologies for the thrashing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56251 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
9468a9b6beed640eca64274c8dcc5aed3b94450b |
16-Sep-2008 |
Bill Wendling <isanbard@gmail.com> |
- Change "ExternalSymbolSDNode" to "SymbolSDNode". - Add linkage to SymbolSDNode (default to external). - Change ISD::ExternalSymbol to ISD::Symbol. - Change ISD::TargetExternalSymbol to ISD::TargetSymbol These changes pave the way to allowing SymbolSDNodes with non-external linkage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56249 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
014278e6a11fa0767853b831e5bf51b95bf541c5 |
13-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Remove isImm(), isReg(), and friends, in favor of isImmediate(), isRegister(), and friends, to avoid confusion about having two different names with the same meaning. I'm not attached to the longer names, and would be ok with changing to the shorter names if others prefer it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56189 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
095cc29f321382e1f7d295e262a28197f92c5491 |
13-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Define CallSDNode, an SDNode subclass for use with ISD::CALL. Currently it just holds the calling convention and flags for isVarArgs and isTailCall. And it has several utility methods, which eliminate magic 5+2*i and similar index computations in several places. CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle nodes that are not CSE'd gracefully. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56183 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
f5aeb1a8e4cf272c7348376d185ef8d8267653e0 |
12-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Rename ConstantSDNode::getValue to getZExtValue, for consistency with ConstantInt. This led to fixing a bug in TargetLowering.cpp using getValue instead of getAPIntValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56159 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
209a4099f96f0dfd340fab4ffaf2c2d8fc15aad6 |
11-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Succumb utterly to compatibility and implement __sync_fetch_and_nand as ANDC, even though that's not what nand means. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56087 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b2dfb89e0e7f1ee3e4fe4a3a1b3af148f0aec34f |
09-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Fix logic for not emitting no-dead-strip for some objects in llvm.used (thanks Anton). Makes visible the magic 'l' prefix for symbols on Darwin which are to be passed through the assembler, then removed at linktime (previously all references to this had been hidden in the ObjC FE code, oh well). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55973 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
3b217c6f5c21a5f16670b14e3beeaff5ee74df1c |
06-Sep-2008 |
Owen Anderson <resistor@mac.com> |
Fix constant pool loads, and remove broken versions of addConstantPoolReference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55868 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrBuilder.h
|
ae73dc1448d25b02cabc7c64c86c64371453dda8 |
04-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Tidy up several unbeseeming casts from pointer to intptr_t. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
6448d91ad1e5497fe2f7015d61b57cb5f3040879 |
04-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Clean up uses of TargetLowering::getTargetMachine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55769 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7794f2a3a7778bdbc9bdd861db1fe914450e0470 |
04-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Add intrinsics for log, log2, log10, exp, exp2. No functional change (and no FE change to generate them). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55753 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a619d012c13bee0572b96b045723dff5a117a5c2 |
02-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Fix some bugs in the code sequences for atomics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55643 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
acff339e391d23e748b69f61ae5c27fd5620c69f |
02-Sep-2008 |
Evan Cheng <evan.cheng@apple.com> |
Change getBinaryCodeForInstr prototype. First operand MachineInstr& should be const. Make corresponding changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55623 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
93c53e5583427ee567293a9a21c6c76fccf218ca |
31-Aug-2008 |
Gabor Greif <ggreif@gmail.com> |
fix a bunch of 80-col violations git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55588 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
3156b62855667566bf48641252526b57a8c46a49 |
31-Aug-2008 |
Bill Wendling <isanbard@gmail.com> |
Expand for ROTR with MVT::i64. Dale, Could you please review this? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55581 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ea9eedb7877008082b314b7ab322843fe2d402b5 |
30-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Add ppc partial-word ATOMIC_CMP_SWAP. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55554 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0e55f0678cf3b40aa6e6d6139419254e568d7227 |
29-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Add partial word version of ATOMIC_SWAP. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55546 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ba36cb5242eb02b12b277f82b9efe497f7da4d7f |
28-Aug-2008 |
Gabor Greif <ggreif@gmail.com> |
erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55504 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrAltivec.td
|
5ad0bf658aa1e3df4b15b64647a6f91e0641c294 |
28-Aug-2008 |
Mon P Wang <wangmp@apple.com> |
In lowering SELECT_CC, removed cases where we can't flip the true and false when the compare value has a NaN git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55499 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
97efa365869d3b7b62836434585360a232836f0e |
28-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Implement partial-word binary atomics on ppc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55478 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
99a6cb92d173c142073416c81efe6d3daeb80b49 |
27-Aug-2008 |
Gabor Greif <ggreif@gmail.com> |
disallow direct access to SDValue::ResNo, provide a getter instead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55394 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
940f83e772ca2007d62faffc83094bd7e8da6401 |
26-Aug-2008 |
Owen Anderson <resistor@mac.com> |
Make TargetInstrInfo::copyRegToReg return a bool indicating whether the copy requested was inserted or not. This allows bitcast in fast isel to properly handle the case where an appropriate reg-to-reg copy is not available. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55375 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
bdab93a2ef5d9574bb4e322e020849f9bc9c90d7 |
26-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Implement 32 & 64 bit versions of PPC atomic binary primitives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55343 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
140a8bb00640a5af4ae29516ac7c18c22f75c2be |
25-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Remove PPC-specific lowering for atomics; the generic stuff works fine. Mark rewritten cmp-and-swap as not using CR1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55336 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
65e3973dff46a54ff764d09f57ebe59fbff6bbdf |
25-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
It's important for the cmp-and-swap to balance loads and stores but it's even more important for it to store the right value.:( git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55319 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f350b277f32d7d47f86c0e54f4aec4d470500618 |
23-Aug-2008 |
Dan Gohman <gohman@apple.com> |
Move the point at which FastISel taps into the SelectionDAGISel process up to a higher level. This allows FastISel to leverage more of SelectionDAGISel's infastructure, such as updating Machine PHI nodes. Also, implement transitioning from SDISel back to FastISel in the middle of a block, so it's now possible to go back and forth. This allows FastISel to hand individual CallInsts and other complicated things off to SDISel to handle, while handling the rest of the block itself. To help support this, reorganize the SelectionDAG class so that it is allocated once and reused throughout a function, instead of being completely reallocated for each block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f87d6c02f5ef43c2ed54d14e4cd137758401a947 |
22-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Implement __sync_synchronize on ppc32. Patch by Gary Benson. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55186 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrFormats.td
PCInstrInfo.td
|
5f0cfa299d16e6d43577317176cab1a463c912da |
22-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Rewrite ppc code generated for __sync_{bool|val}_compare_and_swap so that lwarx and stwcx are always executed the same number of times. This is important for performance, I'm told. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55163 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
ad3460c3c968e33c5b9a07104b9fe5a5c27ff55b |
21-Aug-2008 |
Dan Gohman <gohman@apple.com> |
Simplify SelectRoot's interface, and factor out some common code from all targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55124 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
cb3718832375a581c5ea23f15918f3ea447a446c |
21-Aug-2008 |
Owen Anderson <resistor@mac.com> |
Use raw_ostream throughout the AsmPrinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55092 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/PPCAsmPrinter.cpp
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
676fa7df9c53f97fd1a9419780573dfb788049b4 |
17-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Use correct name for PPC codegen library git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54888 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
06be997654120c92f99850bf1a1704a2042ef639 |
17-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Factor out asmprinter out of ppc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54887 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
smPrinter/PPCAsmPrinter.cpp
akefile
PCAsmPrinter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
afc20ae0e538a731f379dc1ae9ac564023078978 |
16-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
PPC/Linux normally uses named section for bss git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54847 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
888839e5edfa7e6678272f38f4d8b6ce7ff9029c |
16-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Use proper strings section name for PPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54846 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
44eb65cf58e3ab9b5621ce72256d1621a18aeed7 |
15-Aug-2008 |
Owen Anderson <resistor@mac.com> |
Convert uses of std::vector in TargetInstrInfo to SmallVector. This change had to be propoagated down into all the targets and up into all clients of this API. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54802 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
1db3c92306f551a81440dffd88ce07b9fbea97f4 |
11-Aug-2008 |
Nate Begeman <natebegeman@mac.com> |
Implement ISD::TRAP support on PPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54644 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrFormats.td
PCInstrInfo.td
EADME.txt
|
f5b6a47bb57fb5ffc734416d4d5d993e1a06273b |
08-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Handle visibility printing with all generality. Remove bunch of duplicate code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54540 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
382f0022726bff5ed088a171005c1ebde3635925 |
08-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Use chars, where possible git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54539 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
7396e595434285d210fdafe51c41385b9fa709e3 |
08-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Convert PPC/Linux to new section printing stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54538 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
bc331a8d6f8231ba383e00b9f8adcf72db8f5358 |
08-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Switch PPC/Darwin to new section handling stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54537 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
34da127be57c4d153f3ceae7a04b31aec373641f |
08-Aug-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54536 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
7232464bdaae5e6e48986a1e3b9a95fac7aa7bdf |
31-Jul-2008 |
Dale Johannesen <dalej@apple.com> |
Add a flag to disable jump table generation (all switches use the binary search algorithm) for environments that don't support it. PPC64 JIT is such an environment; turn the flag on for that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54248 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCTargetMachine.cpp
|
475871a144eb604ddaf37503397ba0941442e5fb |
27-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Rename SDOperand to SDValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
8968450305c28444edc3c272d8752a8db0c2f34a |
27-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Tidy SDNode::use_iterator, and complete the transition to have it parallel its analogue, Value::value_use_iterator. The operator* method now returns the user, rather than the use. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54127 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
982a05955ae9cfa71b8c6f3e80fed8ce5b778a1e |
24-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
Fix a catastrophic PPC64 ABI bug: i32 operands which are passed in memory (all of the parameter registers are used) are loaded from sp offsets that were off by 4. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53979 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d038e04188047eca4749d025ef1f05f7ae660bca |
21-Jul-2008 |
Duncan Sands <baldrick@free.fr> |
Add VerifyNode, a place to put sanity checks on generic SDNode's (nodes with their own constructors should do sanity checking in the constructor). Add sanity checks for BUILD_VECTOR and fix all the places that were producing bogus BUILD_VECTORs, as found by "make check". My favorite is the BUILD_VECTOR with only two operands that was being used to build a vector with four elements! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53850 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
badd8df972e158548d7014a193e44ff1bce55686 |
19-Jul-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Unbreak build: 'DarwinTargetAsmInfo' was already taken as PPC TAI flavour. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53801 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
PCTargetMachine.cpp
|
a7360f0178327e1ef4b1789612dbded46a704156 |
19-Jul-2008 |
Duncan Sands <baldrick@free.fr> |
Make sure custom lowering for LegalizeTypes returns a node with the right number of return values. This fixes codegen of Generic/cast-fp.ll, Generic/fp_to_int.ll and PowerPC/multiple-return-values.ll when using -march=ppc32 -mattr=+64bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53794 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e8be6c63915e0389f1eef6b53c64300d13b2ce99 |
17-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk replacement of multiple values. This is slightly more efficient than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically could be optimized even further. However, an important property of this new function is that it handles the case where the source value set and destination value set overlap. This makes it feasible for isel to use SelectNodeTo in many very common cases, which is advantageous because SelectNodeTo avoids a temporary node and it doesn't require CSEMap updates for users of values that don't change position. Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to handle operand lists more efficiently, and to correctly handle a number of corner cases to which its new wider use exposes it. This commit also includes a change to the encoding of post-isel opcodes in SDNodes; now instead of being sandwiched between the target-independent pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel opcodes are now represented as negative values. This makes it possible to test if an opcode is pre-isel or post-isel without having to know the size of the current target's post-isel instruction set. These changes speed up llc overall by 3% and reduce memory usage by 10% on the InstructionCombining.cpp testcase with -fast and -regalloc=local. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
|
5330192ab59d65f285799ff5a9acd67d27417a56 |
12-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
Implement llvm.atomic.cmp.swap.i32 on PPC. Patch by Gary Benson! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53505 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
a54cf176613f9ae8301519a61b8935652c0fb8ae |
12-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Include a frame index in the "fixed stack" pseudo source value instead of using the frame index for the SVOffset, which was inconsistent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53486 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
dc2fbddd9d204e904b8e61d1da1428579e7c55af |
11-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Trim unnecessary #includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53471 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
6291d69c4cf6cfff1d23c4363dc627872b825da0 |
10-Jul-2008 |
Chris Lattner <sabre@nondot.org> |
Remove extraneous vertical whitespace before Eric gets the wrong idea ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53411 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
85e7ac0353d6be357e6cab49f40304793ee601a1 |
10-Jul-2008 |
Chris Lattner <sabre@nondot.org> |
Fix an altivec constant miscompilation that Duncan found through his work on legalizetypes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53410 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
03b5ee77620483408a36c09e67ef2db1c5164de9 |
09-Jul-2008 |
Dale Johannesen <dalej@apple.com> |
Remove extra call to DW.SetModuleInfo on Linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53365 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
757809a1709dc939ae875f08419de158df04913d |
09-Jul-2008 |
Dale Johannesen <dalej@apple.com> |
Emit debug into for data-only files for Linux PPC. I cannot test this target, let me know if it breaks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53362 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
94618eb8887e34ead9afb711186526e7b080535c |
09-Jul-2008 |
Dale Johannesen <dalej@apple.com> |
Emit debug info for data-only files. This version applies to ppc Darwin only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53353 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
526be70f94538a2cc131ab1b0fd9f7264e00d297 |
09-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
Back out 53254. It broke ppc debug info codegen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53280 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f71cb9b3ed1d7b3e438e9990ce1587ba275e70bf |
08-Jul-2008 |
Dale Johannesen <dalej@apple.com> |
Make debug info come out in data-only files. This is a question of the debugging setup code not being called at the right time, and it's called from target-dependent code for some reason. I have only attempted to fix Darwin, but I'm pretty sure it's broken elsewhere; I'll leave that to people who can test it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53254 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
8e5f2c6f65841542e2a7092553fe42a00048e4c7 |
08-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Pool-allocation for MachineInstrs, MachineBasicBlocks, and MachineMemOperands. The pools are owned by MachineFunctions. This drastically reduces the number of calls to malloc/free made during the "Emit" phase of scheduling, as well as later phases in CodeGen. Combined with other changes, this speeds up the "instruction selection" phase of CodeGen by 10% in some cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53212 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.cpp
PCInstrInfo.h
|
19d6d424aaa15788c590c2334081da744e6e9f64 |
08-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
Clean up PPC register specification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53209 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
2d97918ce9a41cbcb97ea5dfaaf740a0e833861a |
07-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Simplify this use of BuildMI. This is also in preparation for pool-allocating MachineInstrs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53198 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1002c0203450620594a85454c6a095ca94b87cb2 |
07-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Add explicit keywords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
126d90770bdb17e6925b2fe26de99aa079b7b9b3 |
04-Jul-2008 |
Duncan Sands <baldrick@free.fr> |
Rather than having a different custom legalization hook for each way in which a result type can be legalized (promotion, expansion, softening etc), just use one: ReplaceNodeResults, which returns a node with exactly the same result types as the node passed to it, but presumably with a bunch of custom code behind the scenes. No change if the new LegalizeTypes infrastructure is not turned on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53137 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ececf99c07febbcaeec73822519f0d36d3ee50c4 |
04-Jul-2008 |
Duncan Sands <baldrick@free.fr> |
Linux also does not require exception handling moves in order to get correct debug info. Since I can't imagine how any target could possibly be any different, I've just stripped out the option: now all the world's like Darwin! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53134 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
9f1c8317a4676945b4961ddb9827ef2412551620 |
03-Jul-2008 |
Evan Cheng <evan.cheng@apple.com> |
- Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc. - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
4bdcb61af33399d4e01fdf3c47ca1f1f5356e370 |
02-Jul-2008 |
Duncan Sands <baldrick@free.fr> |
Add a new getMergeValues method that does not need to be passed the list of value types, and use this where appropriate. Inappropriate places are where the value type list is already known and may be long, in which case the existing method is more efficient. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53035 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
aa8f8889a861aadc061aec71fb7ed7f628848a2d |
02-Jul-2008 |
Bill Wendling <isanbard@gmail.com> |
Darwin doesn't need exception handling information for the "move" info when debug information is being output, because it's leet! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52994 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
4406604047423576e36657c7ede266ca42e79642 |
01-Jul-2008 |
Dan Gohman <gohman@apple.com> |
Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating the need for a flavor operand, and add a new SDNode subclass, LabelSDNode, for use with them to eliminate the need for a label id operand. Change instruction selection to let these label nodes through unmodified instead of creating copies of them. Teach the MachineInstr emitter how to emit a MachineInstr directly from an ISD label node. This avoids the need for allocating SDNodes for the label id and flavor value, as well as SDNodes for each of the post-isel label, label id, and label flavor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
7f460203b0c5350e9b2c592f438e40f7a7de6e45 |
30-Jun-2008 |
Dan Gohman <gohman@apple.com> |
Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its purpose, and give it a custom SDNode subclass so that it doesn't need to have line number, column number, filename string, and directory string, all existing as individual SDNodes to be the operands. This was the only user of ISD::STRING, StringSDNode, etc., so remove those and some associated code. This makes stop-points considerably easier to read in -view-legalize-dags output, and reduces overhead (creating new nodes and copying std::strings into them) on code containing debugging information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52924 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
db8d56b825efeb576d67b9dbe39d736d93306222 |
30-Jun-2008 |
Evan Cheng <evan.cheng@apple.com> |
Split scheduling from instruction selection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52923 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f9516208e57364ab1e7d8748af1f59a2ea5fb572 |
30-Jun-2008 |
Duncan Sands <baldrick@free.fr> |
Revert the SelectionDAG optimization that makes it impossible to create a MERGE_VALUES node with only one result: sometimes it is useful to be able to create a node with only one result out of one of the results of a node with more than one result, for example because the new node will eventually be used to replace a one-result node using ReplaceAllUsesWith, cf X86TargetLowering::ExpandFP_TO_SINT. On the other hand, most users of MERGE_VALUES don't need this and for them the optimization was valuable. So add a new utility method getMergeValues for creating MERGE_VALUES nodes which by default performs the optimization. Change almost everywhere to use getMergeValues (and tidy some stuff up at the same time). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52893 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b2931f29f3bb345eefe7d63bde1f230d235bca2e |
27-Jun-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Provide correct encoding for PPC LWARX instructions. Patch by Gary Benson! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52828 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
bc52cada0933f353d30da7b49af9a641bdb2c57d |
25-Jun-2008 |
Chris Lattner <sabre@nondot.org> |
Switch the PPC backend and target-independent JIT to use the libsystem InvalidateInstructionCache method instead of calling through a hook on the JIT. This is a host feature, not a target feature. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52734 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
PCJITInfo.h
|
28873106309db515d58889a4c4fa3e0a92d1b60e |
25-Jun-2008 |
Mon P Wang <wangmp@apple.com> |
Added MemOperands to Atomic operations since Atomics touches memory. Added abstract class MemSDNode for any Node that have an associated MemOperand Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and atomic.lss => atomic.load.sub git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52706 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
09d3fdc254c0b922c38f7c2bcad27c02fa0904f3 |
22-Jun-2008 |
Dan Gohman <gohman@apple.com> |
Remove unnecessary #includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52613 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0011dc4738fbe624d44197ef9496517fd093eaa4 |
21-Jun-2008 |
Dan Gohman <gohman@apple.com> |
Use MachineBasicBlock::transferSuccessors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52594 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0b725f17e0fade6820813557fe4b6f8208b7510d |
17-Jun-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Add one more 'magic' define :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52420 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
7a17ff7b3f859024f5c8a6d247d8a2fd6e83f9b1 |
17-Jun-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Unbreak non-PPC builds git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52419 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
210539ebc466521e41e69b119649d59cc721b006 |
17-Jun-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Provide generic hooks for icache invalidation. Add PPC implementation. Patch by Gary Benson! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52418 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
PCJITInfo.h
|
16228c08b4cbad0620fe09b8afb3da70e3fbb040 |
16-Jun-2008 |
Chris Lattner <sabre@nondot.org> |
Add support for icache invalidation on non-darwin ppc systems. Patch by Gary Benson! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52332 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
58dcb0e0cd3fa973b5fd005aecab1df6aeea5cd6 |
16-Jun-2008 |
Evan Cheng <evan.cheng@apple.com> |
Add option to commuteInstruction() which forces it to create a new (commuted) instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52308 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
8e4eb09b1e3571965f49edcdfb56b1375b1b7551 |
08-Jun-2008 |
Duncan Sands <baldrick@free.fr> |
Remove comparison methods for MVT. The main cause of apint codegen failure is the DAG combiner doing the wrong thing because it was comparing MVT's using < rather than comparing the number of bits. Removing the < method makes this mistake impossible to commit. Instead, add helper methods for comparing bits and use them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52098 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a8a8f427d6aecfde48fa34367925423170bab41e |
08-Jun-2008 |
Bill Wendling <isanbard@gmail.com> |
Temporarily reverting r52056. It's causing PPC to fail to bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52085 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
929b39f0a03bb6ae7c7b4ba0fac3e3aa4216b822 |
06-Jun-2008 |
Evan Cheng <evan.cheng@apple.com> |
Typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52062 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6b4a65f4e7a668815593eb9dea2b994eaad70a86 |
06-Jun-2008 |
Evan Cheng <evan.cheng@apple.com> |
PPC preferred loop alignment is 16. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52056 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
83ec4b6711980242ef3c55a4fa36b2d7a39c1bfb |
06-Jun-2008 |
Duncan Sands <baldrick@free.fr> |
Wrap MVT::ValueType in a struct to get type safety and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52044 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
428ac54894f80ba4848d5f13576643f289412e6f |
03-Jun-2008 |
Dale Johannesen <dalej@apple.com> |
Add StringConstantPrefix to control what the assembler names of string constants look like. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51909 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
e7a83dfac62eb01a1dcc71b98363d3bf3a893a6c |
24-May-2008 |
Chris Lattner <sabre@nondot.org> |
Add FreeBSD/PPC support, patch by Marcel Moolenaar! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51538 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
247580b5695b948a0eb3ddaa236c9e206a4103fe |
24-May-2008 |
Dale Johannesen <dalej@apple.com> |
Put initialized const weak objects into correct sections on ppc32 darwin. g++.dg/abi/key2.C git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51527 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
80d7e265138b3876c82c077c48c8f2a5cd103a46 |
23-May-2008 |
Dale Johannesen <dalej@apple.com> |
Add a missed CommonLinkage check. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51503 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
c215b3ef5d9627f5fb6fe9034e46bc29ae592916 |
19-May-2008 |
Dale Johannesen <dalej@apple.com> |
Handle quoted names when constructing $stub's, $non_lazy_ptr's and $lazy_ptr's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51277 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
ea7dd407149332e5ab1ffc42c8344ecd1751008f |
16-May-2008 |
Dale Johannesen <dalej@apple.com> |
Record weak external linkage in a case where we were missing it. gcc.dg/darwin-weakimport-2.c. Handle common and weak differently for darwin ppc32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51201 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
aafce77b17d340aace52bcd49d1944109d82f14a |
14-May-2008 |
Dale Johannesen <dalej@apple.com> |
Add CommonLinkage; currently tentative definitions are represented as "weak", but there are subtle differences in some cases on Darwin, so we need both. The intent is that "common" will behave identically to "weak" unless somebody changes their target to do something else. No functional change as yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51118 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
c9f5f3f64f896d0a8c8fa35a1dd98bc57b8960f6 |
14-May-2008 |
Dan Gohman <gohman@apple.com> |
Change target-specific classes to use more precise static types. This eliminates the need for several awkward casts, including the last dynamic_cast under lib/Target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51091 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
PCTargetMachine.h
|
844731a7f1909f55935e3514c9e713a62d67662e |
13-May-2008 |
Dan Gohman <gohman@apple.com> |
Clean up the use of static and anonymous namespaces. This turned up several things that were neither in an anonymous namespace nor static but not intended to be global. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCTargetMachine.cpp
|
30e62c098b5841259f8026df1c5c45c7c1182a38 |
30-Apr-2008 |
Arnold Schwaighofer <arnold.schwaighofer@gmail.com> |
Tail call optimization improvements: Move platform independent code (lowering of possibly overwritten arguments, check for tail call optimization eligibility) from target X86ISelectionLowering.cpp to TargetLowering.h and SelectionDAGISel.cpp. Initial PowerPC tail call implementation: Support ppc32 implemented and tested (passes my tests and test-suite llvm-test). Support ppc64 implemented and half tested (passes my tests). On ppc tail call optimization is performed if caller and callee are fastcc call is a tail call (in tail call position, call followed by ret) no variable argument lists or byval arguments option -tailcallopt is enabled Supported: * non pic tail calls on linux/darwin * module-local tail calls on linux(PIC/GOT)/darwin(PIC) * inter-module tail calls on darwin(PIC) If constraints are not met a normal call will be emitted. A test checking the argument lowering behaviour on x86-64 was added. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50477 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.td
|
5e764233f398b6929b67701672a5e78fec20ce2e |
27-Apr-2008 |
Chris Lattner <sabre@nondot.org> |
A few inline asm cleanups: - Make targetlowering.h fit in 80 cols. - Make LowerAsmOperandForConstraint const. - Make lowerXConstraint -> LowerXConstraint - Make LowerXConstraint return a const char* instead of taking a string byref. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50312 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
7c400dcb03074059776e39432c12c2a560c94223 |
25-Apr-2008 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50267 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
8608f2eff2dab5345243c40d0bca9138f2dce6f1 |
19-Apr-2008 |
Evan Cheng <evan.cheng@apple.com> |
64-bit atomic operations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49949 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
54fc97dcdc0ab747f49bd09c5a877bfd2a00e364 |
19-Apr-2008 |
Evan Cheng <evan.cheng@apple.com> |
PPC32 atomic operations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49947 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
51cc3c13eac78da242f0518fc42580e48dd5304f |
16-Apr-2008 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function the stub will resolve. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49814 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
PCJITInfo.h
|
52e724ad7e679ee590f4bd763d55280586a8f1bc |
16-Apr-2008 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Infrastructure for getting the machine code size of a function and an instruction. X86, PowerPC and ARM are implemented git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49809 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCInstrInfo.cpp
PCInstrInfo.h
|
6ccbbd89906157187ac04b2b3237c4aee7acd095 |
15-Apr-2008 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Change Divided flag to Split, as suggested by Evan git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49715 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3541af73b6b8a083cf2d7784438d60e8bcce3883 |
14-Apr-2008 |
Dale Johannesen <dalej@apple.com> |
Reverse sense of unwind-tables option. This means stack tracebacks on Darwin x86-64 won't work by default; nevertheless, everybody but me thinks this is a good idea. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49663 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c0cb28fd3abee9a8b40856990e04f1af2f9bd7b8 |
13-Apr-2008 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Add a divided flag for the first piece of an argument divided into mulitple parts. Fixes PR1643 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49611 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
707e0184233f27e0e9f9aee0309f2daab8cfe7f8 |
12-Apr-2008 |
Dan Gohman <gohman@apple.com> |
Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal on any current target and aren't optimized in DAGCombiner. Instead of using intermediate nodes, expand the operations, choosing between simple loads/stores, target-specific code, and library calls, immediately. Previously, the code to emit optimized code for these operations was only used at initial SelectionDAG construction time; now it is used at all times. This fixes some cases where rep;movs was being used for small copies where simple loads/stores would be better. This also cleans up code that checks for alignments less than 4; let the targets make that decision instead of doing it in target-independent code. This allows x86 to use rep;movs in low-alignment cases. Also, this fixes a bug that resulted in the use of rep;stos for memsets of 0 with non-constant memory size when the alignment was at least 4. It's better to use the library in this case, which can be significantly faster when the size is large. This also preserves more SourceValue information when memory intrinsics are lowered into simple loads/stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4e1b79459fcf72216cdc42a59953e172c60e15ca |
08-Apr-2008 |
Dale Johannesen <dalej@apple.com> |
Implement new llc flag -disable-required-unwind-tables. Corresponds to -fno-unwind-tables (usually default in gcc). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49361 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
36b5c1338a03453ba1c110b120269ca972fb65a3 |
07-Apr-2008 |
Dan Gohman <gohman@apple.com> |
Rename MemOperand to MachineMemOperand. This was suggested by review feedback from Chris quite a while ago. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49348 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
dc1adac582fa120861f18ae7221bfe1421fea59f |
07-Apr-2008 |
Roman Levenstein <romix.llvm@googlemail.com> |
Re-commit of the r48822, where the infinite looping problem discovered by Dan Gohman is fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49330 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6397c64441ddce3822ab0e712f224a11bd75811c |
03-Apr-2008 |
Evan Cheng <evan.cheng@apple.com> |
Backing out 48222 temporarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49124 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e00406281d94ebb9c69b7803311936f07994da43 |
02-Apr-2008 |
Dale Johannesen <dalej@apple.com> |
Cosmetic changes per EH patch review feedback. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49096 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1532f3ddd77c362dd5f613af06b4de636e3c5b0e |
02-Apr-2008 |
Dale Johannesen <dalej@apple.com> |
Recommitting EH patch; this should answer most of the review feedback. -enable-eh is still accepted but doesn't do anything. EH intrinsics use Dwarf EH if the target supports that, and are handled by LowerInvoke otherwise. The separation of the EH table and frame move data is, I think, logically figured out, but either one still causes full EH info to be generated (not sure how to split the metadata correctly). MachineModuleInfo::needsFrameInfo is no longer used and is removed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49064 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
b6d5b1439047609c050576f3dc52b722e76bd30b |
01-Apr-2008 |
Dale Johannesen <dalej@apple.com> |
Revert 49006 for the moment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49046 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
1544e4713be68edcf042de5aed7265dff7169d9d |
01-Apr-2008 |
Dale Johannesen <dalej@apple.com> |
Emit exception handling info for functions which are not marked nounwind, or for all functions when -enable-eh is set, provided the target supports Dwarf EH. llvm-gcc generates nounwind in the right places; other FEs will need to do so also. Given such a FE, -enable-eh should no longer be needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49006 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
ca1267c02b025cc719190b05f9e1a5d174a9caf7 |
31-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48995 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
d27c991cebe48fdf82b5d9eec6c2a1a244f82622 |
30-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
Fix "Control reaches the end of non-void function" warnings, patch by David Chisnall. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48963 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e326332acd5fefb9854118603b4d07d4e44b64c5 |
26-Mar-2008 |
Roman Levenstein <romix.llvm@googlemail.com> |
Use a linked data structure for the uses lists of an SDNode, just like LLVM Value/Use does and MachineRegisterInfo/MachineOperand does. This allows constant time for all uses list maintenance operations. The idea was suggested by Chris. Reviewed by Evan and Dan. Patch is tested and approved by Dan. On normal use-cases compilation speed is not affected. On very big basic blocks there are compilation speedups in the range of 15-20% or even better. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48822 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e22e62b5c07616782cc3dca50f5f369965eb095c |
25-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Smaller function alignment when optimizing for size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48805 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
950a4c40b823cd4f09dc71be635229246dfd6cac |
25-Mar-2008 |
Dan Gohman <gohman@apple.com> |
Add explicit keywords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
cfbb2f074da2842e42956d3b4c21e91b37f36f06 |
25-Mar-2008 |
Dan Gohman <gohman@apple.com> |
A quick nm audit turned up several fixed tables and objects that were marked read-write. Use const so that they can be allocated in a read-only segment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48800 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3e98c30cf5dd450879c0b9d6404353b02e2429c3 |
25-Mar-2008 |
Bill Wendling <isanbard@gmail.com> |
Use the bit size of the operand instead of the hard-coded 32 to generate the mask. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48750 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
276dcbdc8db6614cfd5004dc7dc35e437ddf9c58 |
21-Mar-2008 |
Duncan Sands <baldrick@free.fr> |
Introduce a new node for holding call argument flags. This is needed by the new legalize types infrastructure which wants to expand the 64 bit constants previously used to hold the flags on 32 bit machines. There are two functional changes: (1) in LowerArguments, if a parameter has the zext attribute set then that is marked in the flags; before it was being ignored; (2) PPC had some bogus code for handling two word arguments when using the ELF 32 ABI, which was hard to convert because of the bogusness. As suggested by the original author (Nicolas Geoffray), I've disabled it for the moment. Tested with "make check" and the Ada ACATS testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48640 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
71a2cb25ebc818383dd0f80475bc166f834e8d99 |
20-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
detabify llvm, patch by Mike Stump! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48577 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
7925ed05d0245aca0b0b2ea8d8a0b35b77c5ebd4 |
19-Mar-2008 |
Dan Gohman <gohman@apple.com> |
Add support for multiple return values for the PPC target by converting call result lowering to use the CallingConvLowering infastructure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48552 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
257f75d0b88a7d3d5ba5b7b7908a97f6dd56e27d |
17-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Make Complex long long/double/long double work in ppc64 mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48459 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelLowering.cpp
|
d18330763965745fea05536939f5aadffcc6a5a6 |
17-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Unbreak JIT. Ignore TargetInstrInfo::IMPLICIT_DEF. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48447 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
fdd3ade005c7bd60f3dc74a49db82f91654e99ae |
17-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Next round of PPC32 ABI changes. Allow for gcc behavior where a callee thinks a param will be present in memory, even though the ABI doc says it doesn't have to be. Handle complex long long and complex double (4 and 8 return regs). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48439 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelLowering.cpp
|
da47e6e0d003c873da960361549e57ee4617c301 |
15-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48380 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
|
8f5422c24b318d2680eafc177f199a180d5054da |
14-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Implement the real calling convention for ppc32 Altivec: vectors go at the end of the memory area, after all non-vector parameters. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48364 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d75686a471ee6ed5260e29d22d54f15152bbc9b4 |
13-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Do not promote float params to double in varargs calls here. This was done earlier for params in the varargs part of the params; any float params that survive to here are in the non-varargs part, and must not be promoted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48310 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
404d99010d2d31398a16aa1ecfa9fb198b9e0afd |
12-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
One more bit of Altivec parameter passing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48269 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
75092de483561e3dcfa09cfc4420577272f7ac2d |
12-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Implement Altivec passing to varargs functions on ppc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48264 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bfae83139dcb4fffd50b939e1b1224b0126f04d4 |
11-Mar-2008 |
Dan Gohman <gohman@apple.com> |
Use PassManagerBase instead of FunctionPassManager for functions that merely add passes. This allows them to be used with either FunctionPassManager or PassManager, or even with a custom new kind of pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48256 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCTargetMachine.cpp
PCTargetMachine.h
|
034f60ed24c53c1e37f7695965f782faec2dff2b |
11-Mar-2008 |
Dan Gohman <gohman@apple.com> |
Generalize ExpandIntToFP to handle the case where the operand is legal and it's the result that requires expansion. This code is a little confusing because the TargetLoweringInfo tables for [US]INT_TO_FP use the operand type (the integer type) rather than the result type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48206 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
82e4289fc7fed755442c215e9d3175c1badb831e |
10-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Disable prolog code that aligns the stack when a local object of >16 byte alignment exists. It does not work and getting it to work is not trivial, as explained in the comment. This fixes all the remaining ppc32 failures in the struct-layout-1 part of the gcc testsuite. (gcc does not support this either, and the only way to get such an object is with __attribute__((aligned)) or generic vectors; it can't be done in a standard-conforming program, or with Altivec. So I think disabling it is OK.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48188 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
4a66e9a57e679b4f3243bf2061daf53c70102030 |
10-Mar-2008 |
Bill Wendling <isanbard@gmail.com> |
Change the "enable/disable" mechanism so that we can enable PPC register scavenging for 32-bit and 64-bit separately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48186 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
|
d2cde68855125b6815b1575f29cd96927614b0cd |
10-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Default ISD::PREFETCH to expand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48169 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
cb341de0e238f80dabf3da7b4f2aad58de6914bd |
10-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
fix 80 col violations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48166 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
9348c69dcfe1aa1e7f92752a18222dcfbcd96214 |
10-Mar-2008 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Stylistic modifications. No functionality changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48158 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
5b8f82e35b51bf007de07a7ca9347d804084ddf8 |
10-Mar-2008 |
Scott Michel <scottm@aero.org> |
Give TargetLowering::getSetCCResultType() a parameter so that ISD::SETCC's return ValueType can depend its operands' ValueType. This is a cosmetic change, no functionality impacted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48145 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
0404cd97e4f6ebfe4f8057d4e21119d77654dff2 |
10-Mar-2008 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Add description of individual bits in CR. This fix PR1765. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48143 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.td
|
b8cafe3427a168414400e5dfcbea78996792d2c3 |
10-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Increase ISD::ParamFlags to 64 bits. Increase the ByValSize field to 32 bits, thus enabling correct handling of ByVal structs bigger than 0x1ffff. Abstract interface a bit. Fixes gcc.c-torture/execute/pr23135.c and gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing on ppc32, quietly producing wrong code on x86-32.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48122 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
dc9971a2e322ddeff9eb97a6b03909094f1b8357 |
09-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
Darwin PPC64 indirect call target goes in X12, not R12. This fixes these two regression tests: test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert.ll test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert2.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48120 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7f96f3912e20b94627fde28edc0a292f660b9197 |
08-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
More ppc32 byval handling (bug fixes). Things are looking pretty good now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48043 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
27b7db549e4c5bff4579d209304de5628513edeb |
08-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48042 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a2fcff4d97c8fecd58cd977c45f1a883bc6ae1c3 |
08-Mar-2008 |
Dan Gohman <gohman@apple.com> |
Add support for calls with i128 return values on ppc64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48041 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5f5bf3a3fd06704e5752c91561a711fbaa856d58 |
07-Mar-2008 |
Bill Wendling <isanbard@gmail.com> |
PPC64 passes arguments of integral type in i64 registers, not i32. Reflect this by promoting smaller integral values (i32 at this point) to i64, then truncating to get the wanted size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48030 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
9ed06db5c800c347b3ceac70df420f66c62e11c1 |
07-Mar-2008 |
Dan Gohman <gohman@apple.com> |
Add support for lowering 128-bit shifts on ppc64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48029 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8419dd6aa6e8a26307222bdda473ac4bdccbb693 |
07-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Next bits of PPC byval handling. Basically functional but there are bugs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48028 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
af8ee84fe5a0d61db29f5489352f98d13842729c |
07-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
Add support for ppc64 shifts with 7-bit (oversized) shift amount (e.g. PPCshl). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48027 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
49bd37d369e1124fa0844f60bf80ffb9247d4519 |
07-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
Replace SDT_PPCShiftOp in favor of SDTIntBinOps. This allows it to work with 32 or 64-bit operands/results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48026 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
1f797a32fdc5e3841e9975756ff8c8e62cb41414 |
06-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Next bit of PPC ByVal handling; call-site code seems correct now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47978 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2b5fab67c1a2d3ec1184c065e0a6bdaaaec9253a |
05-Mar-2008 |
Bill Wendling <isanbard@gmail.com> |
Removed spurious EnablePPCRS check. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47918 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
5b3b695c2f1e11b6f5e0c89e1644211a92edab49 |
05-Mar-2008 |
Dale Johannesen <dalej@apple.com> |
Move PPC lowering functions into PPCTargetLowering class (cosmetic). First piece of byval implementation; this doesn't work yet. No functional change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47917 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
880d0f6018b6928bdcad291be60c801238619955 |
05-Mar-2008 |
Bill Wendling <isanbard@gmail.com> |
Use a command-line option to turn register scavenging on/off for PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47915 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
7194aaf738a1b89441635340403f1c5b06ae18ef |
03-Mar-2008 |
Bill Wendling <isanbard@gmail.com> |
This is the initial check-in for adding register scavenging to PPC. (Currently, PPC-64 doesn't work.) This also lowers the spilling of the CR registers so that it uses a register other than the default R0 register (the scavenger scrounges for one). A significant part of this patch fixes how kill information is handled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47863 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.td
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
150943c17867ad87cd372efc7a030d0c099d326e |
02-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47830 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
3be4893dcecaec7acc21ea445321e27a03ef99b2 |
02-Mar-2008 |
Chris Lattner <sabre@nondot.org> |
Evan implemented this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47827 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
8213f9cf94c740d078b444ecb125b9a581350837 |
29-Feb-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Use enumeration for preffered EH dwarf encoding reason git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47770 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
28d08fdb9f6572cafd5aae95c7caffa3cd136d8e |
28-Feb-2008 |
Dale Johannesen <dalej@apple.com> |
Interface of getByValTypeAlignment differed between generic & x86 versions; change generic to follow x86 and improve comments. Add PPC version (not right for non-Darwin.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47734 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
fb8075d03f5c87bd57dcc9c5f2304f6b13c55aad |
28-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47703 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
7b1b7f5c5a3fa4ece1d64a5e86a3d59622c282f6 |
28-Feb-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
EHPreferredDataFormat hook for PPC targets. Looks like Darwin uses the same encoding everywhere. Linux FIXME'ed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47701 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
ec59b95a19f59c075c74f01016a57218775b5d55 |
27-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Don't hard-code the mask size to be 32, which is incorrect on ppc64 and was causing aborts with the new APInt changes. This may also be fixing an obscure ppc64 bug. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47692 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6ef781f3ce0d0311004adba9d1e7dbd7950918dd |
27-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Final de-tabification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47663 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
b3564aa8367fc38efdab0a812868f6f93b9d883e |
27-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Convert the last remaining users of the non-APInt form of ComputeMaskedBits to use the APInt form, and remove the non-APInt form. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47654 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
e6d088acc90e422451e098555d383d4d65b6ce6b |
26-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Rename PrintableName to Name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47629 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
74ab84c31ef64538a1b56e1f282e49303412ad17 |
26-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool would have been a Godsend here! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.td
|
181eb737b28628adc4376b973610a02039385026 |
24-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Some platforms use the same name for 32-bit and 64-bit registers (like %r3 on PPC) in their ASM files. However, it's hard for humans to read during debugging. Adding a new field to the register data that lets you specify a different name to be printed than the one that goes into the ASM file -- %x3 instead of %r3, for instance. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47534 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
7c1c261272b43f2a9397c3052819b92c53918075 |
20-Feb-2008 |
Anton Korobeynikov <asl@math.spbu.ru> |
Remove bunch of gcc 4.3-related warnings from Target git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47369 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCTargetMachine.cpp
|
d497d9fab6e90499c703f3e672ec001dbfa074f9 |
16-Feb-2008 |
Andrew Lenharth <andrewl@lenharth.org> |
I cannot find a libgcc function for this builtin. Therefor expanding it to a noop (which is how it use to be treated). If someone who knows the x86 backend better than me could tell me how to get a lock prefix on an instruction, that would be nice to complete x86 support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47213 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ec321b4d64ee02a1b90021c09d9513618787c6e8 |
15-Feb-2008 |
Chris Lattner <sabre@nondot.org> |
Handle \n's in value names for more targets. The asm printers really really really need refactoring :( git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47171 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3b407444c9a45feb74b70b43138580d5f0299597 |
15-Feb-2008 |
Dale Johannesen <dalej@apple.com> |
Cosmetics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47168 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
ab1a0354ecff51d27098d6f11fbeabc65dec7123 |
15-Feb-2008 |
Dale Johannesen <dalej@apple.com> |
Remove warning about 64-bit code on processor that doesn't support it. Per Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47162 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
db01c8ba26f288636d3f574a96af3499ee6d2579 |
15-Feb-2008 |
Dale Johannesen <dalej@apple.com> |
Rewrite tblgen handling of subtarget features so it follows the order of the enum, not alphabetical. The motivation is to make -mattr=+ssse3,+sse41 select SSE41 as it ought to. Added "ignored" enum values of 0 to PPC and SPU to avoid compiler warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47143 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCSubtarget.cpp
PCSubtarget.h
|
e179584f9b740cf3a36bde70f8cab40de59b8081 |
14-Feb-2008 |
Nate Begeman <natebegeman@mac.com> |
Change how FP immediates are handled. 1) ConstantFP is now expand by default 2) ConstantFP is not turned into TargetConstantFP during Legalize if it is legal. This allows ConstantFP to be handled like Constant, allowing for targets that can encode FP immediates as MachineOperands. As a bonus, fix up Itanium FP constants, which now correctly match, and match more constants! Hooray. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47121 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
977a76fbb6ea1b87dfd7fbbe2ae2afb63e982ff3 |
13-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Simplify some logic in ComputeMaskedBits. And change ComputeMaskedBits to pass the mask APInt by value, not by reference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47096 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
afe6c2b001a924cd74bd0aacfed5984d9af004b0 |
13-Feb-2008 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Enable exception handling int JIT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47079 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
a1998d1cbab495aad05c97b36836788809903b79 |
13-Feb-2008 |
Chris Lattner <sabre@nondot.org> |
Fix the PPC JIT regressions by encoding zeroreg as 0 for BLR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47067 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
9f72d1a73029ed3bfb1f8ced755a1aeeb36fb4f1 |
13-Feb-2008 |
Chris Lattner <sabre@nondot.org> |
don't try to avoid inserting loads when lowering FORMAL_ARGUMENTS. DAGCombine is now quite good at zapifying them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47053 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b5041b30851b1173170a8d281b2e9571a2a04bdd |
13-Feb-2008 |
Nate Begeman <natebegeman@mac.com> |
readme updates git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47051 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
ba8d51c1d7bf4ada96ff27550ac3576b31323b3a |
13-Feb-2008 |
Nate Begeman <natebegeman@mac.com> |
Make register scavenging happy by not using a reg (CR0) that isn't defined git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47045 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a4d16a1f0dcdd1ab2862737105f900e2c577532d |
13-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
commuteInstr() can now commute non-ssa machine instrs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47043 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
fd29e0eb060ea8b4d490860329234d2ae5f5952e |
13-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t. Add an overload that supports the uint64_t interface for use by clients that haven't been updated yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47039 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
394d28048c2df33cdb48edba74720ff75f0e623c |
12-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
Revert r46916 PPCTargetAsmInfo.cpp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47020 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
a6ed0aa8ec1d374857cf94f56eead7f0b775ac28 |
11-Feb-2008 |
Nate Begeman <natebegeman@mac.com> |
additional missing feature git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46948 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
6f0d024a534af18d9e60b3ea757376cd8a3a980e |
10-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Rename MRegisterInfo to TargetRegisterInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCTargetMachine.h
|
16b0bd6c83821e6f56631c10717e5d0b6bab5cc0 |
10-Feb-2008 |
Nick Lewycky <nicholas@mxc.ca> |
Match GCC's behaviour for these sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46916 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
5fd79d0560570fed977788a86fa038b898564dfa |
08-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
It's not always safe to fold movsd into xorpd, etc. Check the alignment of the load address first to make sure it's 16 byte aligned. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46893 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
3069b8743769527ce7af6cfb6591a2f0fc2faee4 |
07-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Follow Chris' suggestion; change the PseudoSourceValue accessors to return pointers instead of references, since this is always what is needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46857 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
69de1932b350d7cdfc0ed1f4198d6f78c7822a02 |
06-Feb-2008 |
Dan Gohman <gohman@apple.com> |
Re-apply the memory operand changes, with a fix for the static initializer problem, a minor tweak to the way the DAGISelEmitter finds load/store nodes, and a renaming of the new PseudoSourceValue objects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5a804e3e21f8cfeb8b1a65aae0ef8d0e063a5256 |
05-Feb-2008 |
Nate Begeman <natebegeman@mac.com> |
Ident mnemonics appropriately git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46746 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
4e3f5a4e9c13f216856515e6f000881f2c850736 |
05-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
Dwarf requires variable entries to be in the source order. Right now, since we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46724 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
4eecdeb3faf5df864790175da5d58301b751ec11 |
02-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
Get rid of the annoying blank lines before labels. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46667 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
fcf5d4f456e5bb2547164c150797a023d22780a4 |
02-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
Unbreak ppc debug support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46665 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a844bdeab31ef04221e7ef59a8467893584cc14d |
02-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc. Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes. For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46659 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
1b08bbca5592351a940bcd164bdec724ee954326 |
01-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
Remove the nasty LABEL hack with a much less evil one. Now llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46635 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
334dc1f58d617dcff969a2e107febaae42bbc883 |
31-Jan-2008 |
Evan Cheng <evan.cheng@apple.com> |
Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46623 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bb81d97feb396a8bb21d074db1c57e9f66525f40 |
31-Jan-2008 |
Evan Cheng <evan.cheng@apple.com> |
Add an extra operand to LABEL nodes which distinguishes between debug, EH, or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46609 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
0a75538a68cda3bddbda3980ea0128d9f6e6339d |
31-Jan-2008 |
Evan Cheng <evan.cheng@apple.com> |
Makes the same change in ppc backend: avoid inserting prologue before debug labels. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46596 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1a0248690aaa9f7baaf1247e5f65a1c0c9e3783c |
31-Jan-2008 |
Dan Gohman <gohman@apple.com> |
Rename ISD::FLT_ROUNDS to ISD::FLT_ROUNDS_ to avoid conflicting with the real FLT_ROUNDS (defined in <float.h>). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46587 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c6c391daddbafa722d9ca87d18f204e9a6e617a3 |
31-Jan-2008 |
Dan Gohman <gohman@apple.com> |
Create a new class, MemOperand, for describing memory references in the backend. Introduce a new SDNode type, MemOperandSDNode, for holding a MemOperand in the SelectionDAG IR, and add a MemOperand list to MachineInstr, and code to manage them. Remove the offset field from SrcValueSDNode; uses of SrcValueSDNode that were using it are all all using MemOperandSDNode now. Also, begin updating some getLoad and getStore calls to use the PseudoSourceValue objects. Most of this was written by Florian Brander, some reorganization and updating to TOT by me. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46585 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ff9b373e8f5006c629af81e2619778b4c4f5249e |
30-Jan-2008 |
Evan Cheng <evan.cheng@apple.com> |
Even though InsertAtEndOfBasicBlock is an ugly hack it still deserves a proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert instruction at the end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46562 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
b625f2f8960de32bc973092aaee8ac62863006fe |
30-Jan-2008 |
Dan Gohman <gohman@apple.com> |
Factor the addressing mode and the load/store VT out of LoadSDNode and StoreSDNode into their common base class LSBaseSDNode. Member functions getLoadedVT and getStoredVT are replaced with the common getMemoryVT to simplify code that will handle both loads and stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46538 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
824a721560f29eedb1427f81182e81cacf7e3ad4 |
26-Jan-2008 |
Bill Wendling <isanbard@gmail.com> |
If there's no instructions being emitted on X86 for a function, emit a nop. Emit the nop directly for PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46398 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
381802f8e06668d0ec5fc760804c83e511dafc7c |
26-Jan-2008 |
Bill Wendling <isanbard@gmail.com> |
If there are no machine instructions emitted for a function, then insert a "nop" instruction so that we don't have the function's label associated with something that it's not supposed to be associated with. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46394 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
1910e2f3ecec461d1eab8c44b16c977539080a6e |
25-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
JITEmitter.cpp was trying to sync the icache for function stubs, but was actually passing a completely incorrect size to sys_icache_invalidate. Instead of having the JITEmitter do this (which doesn't have the correct size), just make the target sync its own stubs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46354 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
f9c98e650d2795b8edfae8e1560c221029df218b |
23-Jan-2008 |
Duncan Sands <baldrick@free.fr> |
The last pieces needed for loading arbitrary precision integers. This won't actually work (and most of the code is dead) unless the new legalization machinery is turned on. While there, I rationalized the handling of i1, and removed some bogus (and unused) sextload patterns. For i1, this could result in microscopically better code for some architectures (not X86). It might also result in worse code if annotating with AssertZExt nodes turns out to be more harmful than helpful. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46280 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
25edeb32e77fdabbb986787a91a46435dfbaf716 |
23-Jan-2008 |
Dale Johannesen <dalej@apple.com> |
Honor explicit section information on Darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46267 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
5c5eb80255293ece142b59e170256be0880b6bfb |
18-Jan-2008 |
Dale Johannesen <dalej@apple.com> |
Implement flt_rounds for PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46174 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ef97c676f97d33312eb5009522a9d51f2c25ccb1 |
18-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
get symbolic information for ppc ldbl nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46165 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a7a02fb828382afffd51596ee63822aa141a7147 |
18-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Fix a latent bug exposed by my truncstore patch. We compiled stfiwx-2.ll to: _test: fctiwz f0, f1 stfiwx f0, 0, r4 blr instead of: _test: fctiwz f0, f1 stfd f0, -8(r1) nop nop lwz r2, -4(r1) stb r2, 0(r4) blr The former is not correct (stores 4 bytes, not 1). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46161 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
d15d086956f0b9fabd95d729023468e068e930c9 |
18-Jan-2008 |
Dale Johannesen <dalej@apple.com> |
Revert the part of 45848 that treated weak globals as weak globals rather than commons. While not wrong, this change tickled a latent bug in Darwin's strip, so revert it for now as a workaround. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46144 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
ddf89566a93081cb230bb9406a72ab2d3eada4a7 |
17-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
This commit changes: 1. Legalize now always promotes truncstore of i1 to i8. 2. Remove patterns and gunk related to truncstore i1 from targets. 3. Rename the StoreXAction stuff to TruncStoreAction in TLI. 4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions. 5. Mark a wide variety of invalid truncstores as such in various targets, e.g. X86 currently doesn't support truncstore of any of its integer types. 6. Add legalize support for truncstores with invalid value input types. 7. Add a dag combine transform to turn store(truncate) into truncstore when safe. The later allows us to compile CodeGen/X86/storetrunc-fp.ll to: _foo: fldt 20(%esp) fldt 4(%esp) faddp %st(1) movl 36(%esp), %eax fstps (%eax) ret instead of: _foo: subl $4, %esp fldt 24(%esp) fldt 8(%esp) faddp %st(1) fstps (%esp) movl 40(%esp), %eax movss (%esp), %xmm0 movss %xmm0, (%eax) addl $4, %esp ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46140 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0bd4893a0726889b942405262e53d06cf3fe3be8 |
17-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
* Introduce a new SelectionDAG::getIntPtrConstant method and switch various codegen pieces and the X86 backend over to using it. * Add some comments to SelectionDAGNodes.h * Introduce a second argument to FP_ROUND, which indicates whether the FP_ROUND changes the value of its input. If not it is safe to xform things like fp_extend(fp_round(x)) -> x. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46125 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4af349445222fa2a66b6248217ecd18eb6930646 |
16-Jan-2008 |
Dale Johannesen <dalej@apple.com> |
Fix and enable EH for x86-64 Darwin. Adds ShortenEHDataFor64Bits as a not-very-accurate abstraction to cover all the changes in DwarfWriter. Some cosmetic changes to Darwin assembly code for gcc testsuite compatibility. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46029 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
e46307a54c4fb49fea879f67cb399339b2899240 |
15-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
If someone wants to implement ppc TRAP, they can go for it :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46019 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
48be23cd65313b055ca80acb843ed244b18cd980 |
15-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
rename SDTRet -> SDTNone. Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46017 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
5080f4d9919d39b367891dc51e739c571a66036c |
11-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
rename MachineInstr::setInstrDescriptor -> setDesc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45871 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c7406ae773a88b496b34d03896310631576c48a7 |
11-Jan-2008 |
Dale Johannesen <dalej@apple.com> |
Weak things initialized to 0 don't go in bss on Darwin. Cosmetic changes to spacing to match gcc (some dejagnu tests actually care). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45848 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
007f9847c44ddbe7fd04cba362b4ec0f0f40964b |
10-Jan-2008 |
Duncan Sands <baldrick@free.fr> |
Output sinl for a long double FSIN node, not sin. Likewise fix up a bunch of other libcalls. While there I remove NEG_F32 and NEG_F64 since they are not used anywhere. This fixes 9 Ada ACATS failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45833 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
dd41527a7dc6e2dacfad02ca8d4cbcb803b017da |
10-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
remove explicit sets of 'neverHasSideEffects' that can now be inferred from the instr patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45824 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
9b37aaf04c633c68c9ef09d3991d9acfbef9f754 |
10-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
get def use info more correct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45821 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
038129dd58acbb2cd6e80bee05649903897df967 |
10-Jan-2008 |
Dale Johannesen <dalej@apple.com> |
Emit unused EH frames for weak definitions on Darwin, because assembler/linker can't cope with weak absolutes. PR 1880. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45811 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
e51775dc5e3503092313fe77174127f4f4d17374 |
08-Jan-2008 |
Duncan Sands <baldrick@free.fr> |
Use size_t to store Pos, avoid truncating value on 64-bit builds. Analysis and original patch by Török Edwin. Code audit found another place with the same problem, also fixed here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45746 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
fe39edde27147d4645aff715d5a7630fa07fa885 |
08-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Finally implement correct ordered comparisons for PPC, even though the code generated is not wonderful. This turns a miscompilation into a code quality bug (noted in the ppc readme). This fixes PR642, which is over 2 years old (!). Nate, please review this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45742 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
EADME.txt
|
749c6f6b5ed301c84aac562e414486549d7b98eb |
07-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
rename TargetInstrDescriptor -> TargetInstrDesc. Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
PCRegisterInfo.cpp
|
c17d69fa1e084668d6bb27441dbb505e2024f579 |
07-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
use predicate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45691 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
7358c193fd2c7e6cc844f72e2203cbdb7692759f |
07-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
no need to explicitly clear these fields. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45683 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
349c4952009525b27383e2120a6b3c998f39bd09 |
07-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCRegisterInfo.cpp
|
cc8cd0cbf12c12916d4b38ef0de5be5501c8270e |
07-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
remove MachineOpCode typedef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45679 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
69244300b8a0112efb44b6273ecea4ca6264b8cf |
07-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45674 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
43dbe05279b753aabda571d9c83eaeb36987001a |
07-Jan-2008 |
Owen Anderson <resistor@mac.com> |
Move even more functionality from MRegisterInfo into TargetInstrInfo. Some day I'll get it all moved over... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45672 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
834f1ce0312e3d00d836f9560cb63182c2c4570f |
07-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45667 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
|
2e48a70b35635165703838fc8d3796b664207aa1 |
06-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
rename isStore -> mayStore to more accurately reflect what it captures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45656 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
c8478d8b12c2d7e4cea32d0c9940f5cac2baa4dd |
06-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Change the 'isStore' inferrer to look for 'SDNPMayStore' instead of "ISD::STORE". This allows us to mark target-specific dag nodes as storing (such as ppc byteswap stores). This allows us to remove more explicit isStore flags from the .td files. Finally, add a warning for when a .td file contains an explicit isStore and tblgen is able to infer it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45654 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
9c9fbf8e9c48f40d53cb434347d18395d9e0e02c |
06-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
remove some isStore flags that are now inferred automatically. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45652 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
|
165b60de0b4a17e7d270e63fd4223b6c1c318fdd |
04-Jan-2008 |
Evan Cheng <evan.cheng@apple.com> |
Correct order of parameters. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45562 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
02aabbf96b1f22144afe2bec8ad480a9b803f6b8 |
03-Jan-2008 |
Evan Cheng <evan.cheng@apple.com> |
Change MachineRelocation::DoesntNeedFnStub to NeedStub. This fields will be used for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45527 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
564da5d646dfeb56df931b42fefa7c5f2591057e |
02-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
leopard and above support alignment for common symbols. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45493 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCSubtarget.cpp
PCSubtarget.h
|
f6372aa1cc568df19da7c5023e83c75aa9404a07 |
01-Jan-2008 |
Owen Anderson <resistor@mac.com> |
Move some more instruction creation methods from RegisterInfo into InstrInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45484 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
264e6fec9f3962cb269031d6d84cee9f896e0286 |
01-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Fix a bug in my previous patch: refer to the impl not the pure virtual version. It's unclear why gcc would ever compile this... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45476 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
641055225092833197efe8e5bce01d50bcf1daae |
01-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Fix a problem where lib/Target/TargetInstrInfo.h would include and use a header file from libcodegen. This violates a layering order: codegen depends on target, not the other way around. The fix to this is to split TII into two classes, TII and TargetInstrInfoImpl, which defines stuff that depends on libcodegen. It is defined in libcodegen, where the base is not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45475 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
d10fd9791c20fd8368fa0ce94b626b769c6c8ba0 |
31-Dec-2007 |
Owen Anderson <resistor@mac.com> |
Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the Machine-level API cleanup instigated by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45470 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
|
84bc5427d6883f73cfeae3da640acd011d35c006 |
31-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Rename SSARegMap -> MachineRegisterInfo in keeping with the idea that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCRegisterInfo.cpp
|
8aa797aa51cd4ea1ec6f46f4891a6897944b75b2 |
31-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Add new shorter predicates for testing machine operands for various types: e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45464 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
f73823000e2d5d6e1cf65bdf5a107297e18d35fb |
30-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
More cleanups for MachineOperand: - Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45461 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
9a1ceaedc282f0cae31f2723f4d6c00c7b88fe90 |
30-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Use MachineOperand::getImm instead of MachineOperand::getImmedValue. Likewise setImmedValue -> setImm git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45453 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
4ee451de366474b9c228b4e5fa573795a715216d |
29-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Remove attribution from file headers, per discussion on llvmdev. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC.td
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCallingConv.td
PCCodeEmitter.cpp
PCFrameInfo.h
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrBuilder.h
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCJITInfo.cpp
PCJITInfo.h
PCMachOWriterInfo.cpp
PCMachOWriterInfo.h
PCMachineFunctionInfo.h
PCPerfectShuffle.h
PCPredicates.cpp
PCPredicates.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
PCRelocations.h
PCSchedule.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
PCSubtarget.cpp
PCSubtarget.h
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
PCTargetMachine.cpp
PCTargetMachine.h
|
fc643c5e88c596f217750dd91fcc66488dfed73d |
29-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
remove attribution from lib Makefiles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45415 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
5a6c91a3eceb701396c30dd126079903006c5e0b |
21-Dec-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Fix unintented change from last commit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45282 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
616585bbff926d806f154a0ae45f327c63abe54f |
21-Dec-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Enable EH for linux/ppc32 targets git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45281 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCTargetAsmInfo.cpp
|
696f768daf61044abff279b20326cf0138d02e1a |
19-Dec-2007 |
Dale Johannesen <dalej@apple.com> |
Enable EH on PPC Darwin. This basically works; there are a couple of issues that show up with the optimizer, but I don't think they're really EH problems. (llvm-gcc testsuite users note: By default the testsuite uses the unwinding code that's built as part of your local llvm-gcc, which does not work. You need to trick it into using the installed system unwinding code to get useful results.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45221 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
ee912540e7870cd388ab0d8ed1aaa2d0204da54e |
19-Dec-2007 |
Bill Wendling <isanbard@gmail.com> |
Mark the "isRemat" instruction as never having side effects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45190 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6e141fd04897e5eb4925bb6351297170ebd8a756 |
13-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always re-materializable and they should not be spilled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44960 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
d96428597b9a4bcf3c0702bbb497796b922c2e91 |
08-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Fix a significant code quality regression I introduced on PPC64 quite a while ago. We now produce: _foo: mflr r0 std r0, 16(r1) ld r2, 16(r1) std r2, 0(r3) ld r0, 16(r1) mtlr r0 blr instead of: _foo: mflr r0 std r0, 16(r1) lis r0, 0 ori r0, r0, 16 ldx r2, r1, r0 std r2, 0(r3) ld r0, 16(r1) mtlr r0 blr for: void foo(void **X) { *X = __builtin_return_address(0); } on ppc64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44701 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
3fc027df4fca0355717515abb4d6e3753e6dee2a |
08-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
implement __builtin_return_addr(0) on ppc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44700 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
EADME.txt
|
73944fb22270697e75408cba52cca276be371a1f |
08-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
refactor some code to avoid overloading the name 'usesLR' in different places to mean different things. Document what the one in PPCFunctionInfo means and when it is valid. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44699 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
5a759616b63a1e5dca76a2170ad0ba6410a11504 |
08-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Fix a compilation warning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44691 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
0f940c95d4506f8d04fa2aeda8a79cadb3105fe3 |
07-Dec-2007 |
Bill Wendling <isanbard@gmail.com> |
Initial commit of the machine code LICM pass. It successfully hoists this: _foo: li r2, 0 LBB1_1: ; bb li r5, 0 stw r5, 0(r3) addi r2, r2, 1 addi r3, r3, 4 cmplw cr0, r2, r4 bne cr0, LBB1_1 ; bb LBB1_2: ; return blr to: _foo: li r2, 0 li r5, 0 LBB1_1: ; bb stw r5, 0(r3) addi r2, r2, 1 addi r3, r3, 4 cmplw cr0, r2, r4 bne cr0, LBB1_1 ; bb LBB1_2: ; return blr ZOMG!! :-) Moar to come... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44687 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
8c24e74b02bea8681eac497075e6c27ef15aa2ea |
05-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Added canFoldMemoryOperand for PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44623 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
d64b5c82b97ad1b74eb9fd2f23257a7899b0c307 |
05-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether the stored register is killed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44600 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
aee4af68ae2016afc5b4ec0c430e539c5810a766 |
02-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Remove redundant foldMemoryOperand variants and other code clean up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44517 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
e62f97c094dba44e4c259d20135167fa91912eea |
01-Dec-2007 |
Evan Cheng <evan.cheng@apple.com> |
Allow some reloads to be folded in multi-use cases. Specifically testl r, r -> cmpl [mem], 0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44479 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.h
|
1f873003266fbdec7c2c48a965c60f4e2e35a158 |
28-Nov-2007 |
Chris Lattner <sabre@nondot.org> |
Implement ExpandOperationResult for ppc i64 fp->int, which fixes CodeGen/Generic/fp_to_int.ll among others. Its unclear why this just started failing... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44407 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
789db09cde5f0cb2a0a5fc175c1141c760a3e807 |
27-Nov-2007 |
Chris Lattner <sabre@nondot.org> |
Fix a crash on invalid code due to memcpy lowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44378 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1d4ce2ab962fee691239d58c8157c12b8037f9de |
21-Nov-2007 |
Dale Johannesen <dalej@apple.com> |
Fix .eh table linkage issues on Darwin. Some EH support for Darwin PPC, but it's not fully working yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44258 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
50cdabcfd52e88381ade61450d98a1c757195bef |
19-Nov-2007 |
Dan Gohman <gohman@apple.com> |
Remove meaningless qualifiers from return types, avoiding compiler warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44240 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
b1d40d9dd791bd72a5c76c6286f963e1cec13082 |
13-Nov-2007 |
Dale Johannesen <dalej@apple.com> |
Revert previous; these files aren't ready to go in yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44057 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
b97aec663b1591e71c9ddee6dbb327d1b827eda5 |
13-Nov-2007 |
Dale Johannesen <dalej@apple.com> |
Add parameter to getDwarfRegNum to permit targets to use different mappings for EH and debug info; no functional change yet. Fix warning in X86CodeEmitter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44056 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
PCTargetAsmInfo.cpp
|
c69107ca11282a905c252d1b62091951087f13dc |
13-Nov-2007 |
Bill Wendling <isanbard@gmail.com> |
Unifacalize the CALLSEQ{START,END} stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44045 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
0f8d9c04d9feef86cee35cf5fecfb348a6b3de50 |
13-Nov-2007 |
Bill Wendling <isanbard@gmail.com> |
Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If not, then there is the potential for the stack to be changed while the stack's being used by another instruction (like a call). This can only result in tears... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44037 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
3809fbe789cd8d1c5b71d9428401799564aed26c |
13-Nov-2007 |
Anton Korobeynikov <asl@math.spbu.ru> |
Completely forgot, that we have some debug information emission on PPC. This should fix some regressions on ppc nightly tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44029 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
20ab29068d8a8ec31f26f022634f1e0bc4b1da56 |
12-Nov-2007 |
Owen Anderson <resistor@mac.com> |
Add a flag for indirect branch instructions. Target maintainers: please check that the instructions for your target are correctly marked. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44012 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
f191c80cd79ee35e47b5a4feed98d687782dfe85 |
11-Nov-2007 |
Anton Korobeynikov <asl@math.spbu.ru> |
Use TableGen to emit information for dwarf register numbers. This makes DwarfRegNum to accept list of numbers instead. Added three different "flavours", but only slightly tested on x86-32/linux. Please check another subtargets if possible, git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43997 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
|
ca0ed744852a7d9625572fbb793f65e81225a3e8 |
05-Nov-2007 |
Duncan Sands <baldrick@free.fr> |
Eliminate the remaining uses of getTypeSize. This should only effect x86 when using long double. Now 12/16 bytes are output for long double globals (the exact amount depends on the alignment). This brings globals in line with the rest of LLVM: the space reserved for an object is now always the ABI size. One tricky point is that only 10 bytes should be output for long double if it is a field in a packed struct, which is the reason for the additional argument to EmitGlobalConstant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43688 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f4c164c2b5bbaa2be4f1d8fedcf9df621378340d |
04-Nov-2007 |
Nick Lewycky <nicholas@mxc.ca> |
Fix crash before main on ppc/linux with static constructors. PR1771 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43676 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
79217064c618afecd4979aec6d2e8fe784565931 |
24-Oct-2007 |
Dale Johannesen <dalej@apple.com> |
Disable a couple more things for ppcf128. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43267 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
152b7e18748f7e06a93260f22cc9dac8eb3abee2 |
23-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
Temporary solution: added a different set of BCTRL_Macho / BCTRL_ELF with right callee-saved defs set for ppc64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43248 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
3311876c3c3147688b08f64c441e5bfaaa3412b3 |
22-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
Use ptr type in the immediate field of a BxA instruction so we don't end up selecting 32-bit call instruction for ppc64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43228 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
26cb2862e982e5527ffb904568e204907ca9be17 |
19-Oct-2007 |
Chris Lattner <sabre@nondot.org> |
comment fixes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43168 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
fabd32deb025ebd47c5eb47259d2424fd789b05c |
19-Oct-2007 |
Dale Johannesen <dalej@apple.com> |
More ppcf128 issues (maybe the last)? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43160 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f0a0cddbcda344a90b7217b744c78dccec71851c |
19-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
- Added getOpcodeAfterMemoryUnfold(). It doesn't unfold an instruction, but only returns the opcode of the instruction post unfolding. - Fix some copy+paste bugs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43153 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
58184e6878fdab651bc7c9a59dab2687ca82ede2 |
18-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
Use SmallVectorImpl instead of SmallVector with hardcoded size in MRegister public interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43150 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
f602a2566845dc57444b9d40538c947b5ed23111 |
16-Oct-2007 |
Chris Lattner <sabre@nondot.org> |
Fix a bug handling frame references in ppc inline asm when the frame offset doesn't fit into 16 bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43032 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1de7c1dd6fdedc8ab2e450ba74e4b81d13e49af2 |
15-Oct-2007 |
Chris Lattner <sabre@nondot.org> |
Change LowerFP_TO_SINT to create the specific code it needs instead of unconditionally creating an i64 bitcast. With the future legalizer design, operation legalization can't introduce new nodes with illegal types. This fixes the rest of olden on ppc32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43005 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
347d39f1fd8ad825a7ec5b8a3dce816723a56d42 |
14-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
Revert 42908 for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42960 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
296c1761416df3eb706dbcf5319f1f2267e1b4f7 |
14-Oct-2007 |
Dale Johannesen <dalej@apple.com> |
Fix type mismatch error in PPC Altivec (only causes a problem when asserts are on). From vecLib. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42959 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8ddde0a151c5297ae5694a4b9201b2d3fe56b196 |
12-Oct-2007 |
Dan Gohman <gohman@apple.com> |
Change the names used for internal labels to use the current function symbol name instead of a codegen-assigned function number. Thanks Evan! :-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42908 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a3f269f7f6211958774f151833870935c91feaee |
12-Oct-2007 |
Dan Gohman <gohman@apple.com> |
Mark vector pow, ctpop, cttz, and ctlz as Expand on PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42904 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f96e4de403453e57aea75bcac1ed99af686d33c4 |
12-Oct-2007 |
Dan Gohman <gohman@apple.com> |
Set ISD::FPOW to Expand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42881 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6eaeff29b8a6990107735f7e5f5e49da38f56223 |
10-Oct-2007 |
Dale Johannesen <dalej@apple.com> |
Next PPC long double bits: ppcf128->i32 conversion. Surprisingly complicated. Adds getTargetNode for 2 outputs, no inputs (missing). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42822 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrFormats.td
PCInstrInfo.td
|
3ce990dc051622755afc22b55f95954c5a19e779 |
08-Oct-2007 |
Dan Gohman <gohman@apple.com> |
When we start enabling SMUL_LOHI/UMUL_LOHI or SDIVREM/UDIVREM in target-indepenent lowering, don't use them on PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42755 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
638ccd52b9fa2d1d03a1e85992c09e2bf6800fc6 |
06-Oct-2007 |
Dale Johannesen <dalej@apple.com> |
Next powerpc long double bits. Comparisons work, although not well, and shortening FP converts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42672 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
161e897b0fb35d156b2fe720fadabd975b0d6723 |
05-Oct-2007 |
Dale Johannesen <dalej@apple.com> |
First round of ppc long double. call/return and basic arithmetic works. Rename RTLIB long double functions to distinguish different flavors of long double; the lib functions have different names, alas. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42644 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelLowering.cpp
|
66f0f640820b61cf9db814b6d187bae9faf7279c |
05-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
- Added a few target hooks to generate load / store instructions from / to any address (not just from / to frameindexes). - Added target hooks to unfold load / store instructions / SDNodes into separate load, data processing, store instructions / SDNodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42621 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
cb406c25973b4e88a6c10ad839ef1beeb3664715 |
03-Oct-2007 |
Dan Gohman <gohman@apple.com> |
Use empty() member functions when that's what's being tested for instead of comparing begin() and end(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42585 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
82482944edd810c7a1803d6694d435adf341e611 |
28-Sep-2007 |
Dan Gohman <gohman@apple.com> |
TargetAsmInfo::getAddressSize() was incorrect for x86-64 and 64-bit targets other than PPC64. Instead of fixing it, just remove it and fix all the places that use it to use TargetData::getPointerSize() instead, as there aren't very many. Most of the references were in DwarfWriter.cpp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42419 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
9efce638d307b2c71bd7f0258d47501661434c27 |
26-Sep-2007 |
Evan Cheng <evan.cheng@apple.com> |
Allow copyRegToReg to emit cross register classes copies. Tested with "make check"! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42346 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
677ccc6e8b912e1a39259952b125954820062541 |
25-Sep-2007 |
Dan Gohman <gohman@apple.com> |
More explicit keywords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42316 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.h
|
76a4023096fc330db11d711197388d9f3ba91cc6 |
21-Sep-2007 |
Evan Cheng <evan.cheng@apple.com> |
Honor user-defined section specification of a global, ignores whether its initializer is null. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42182 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
0f0daea654791f48f17f7bd87eeb97c0868adee4 |
21-Sep-2007 |
Devang Patel <dpatel@apple.com> |
Do not override user specified section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42179 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
92dfe2001e96f6e2b6d327e8816f38033f88b295 |
14-Sep-2007 |
Dan Gohman <gohman@apple.com> |
Remove isReg, isImm, and isMBB, and change all their users to use isRegister, isImmediate, and isMachineBasicBlock, which are equivalent, and more popular. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
|
fdd9f006bceaa4f24a969d1411917b9558cd156d |
14-Sep-2007 |
Evan Cheng <evan.cheng@apple.com> |
Fix comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41947 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
fe4afb17d3370a1c3d4945d6558de544462b4ce6 |
12-Sep-2007 |
Bill Wendling <isanbard@gmail.com> |
Enable indirect encoding for the personality function git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41873 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
071a279e94e30d51aff3b46a4651d686982488a0 |
11-Sep-2007 |
Evan Cheng <evan.cheng@apple.com> |
Remove (somewhat confusing) Imp<> helper, use let Defs = [], Uses = [] instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41863 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
f7331b3dd72409e644833ecaf62a0f6db03c97ee |
11-Sep-2007 |
Duncan Sands <baldrick@free.fr> |
Fold the adjust_trampoline intrinsic into init_trampoline. There is now only one trampoline intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41841 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bf8ae84a21011a7263c2a4183fdfd8e5755765a1 |
10-Sep-2007 |
Chris Lattner <sabre@nondot.org> |
Add some notes about better flag handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41808 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
82d25148a7aab0b7e048ab9b774207b3766d1bbf |
08-Sep-2007 |
Bill Wendling <isanbard@gmail.com> |
Add missing index versions of instructions to the map. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41776 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
718cb665ca6ce2bc4d8e8479f46a45db91b49f86 |
07-Sep-2007 |
Owen Anderson <resistor@mac.com> |
Add lengthof and endof templates that hide a lot of sizeof computations. Patch by Sterling Stein! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41758 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.cpp
|
399ea50dc3321b4cc16e0a5ea7c41495c55a01ba |
06-Sep-2007 |
Bill Wendling <isanbard@gmail.com> |
LVXL and STVXL are also a load and store resp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41733 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
c3536b8ecbe49b60cdf9ab76ca79dcea765f2802 |
05-Sep-2007 |
Bill Wendling <isanbard@gmail.com> |
Add the 64-bit versions of the DS* Altivec instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41717 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
67c906dce729d64861af8ca708f5e19d6a058b35 |
04-Sep-2007 |
Evan Cheng <evan.cheng@apple.com> |
Fix for PR1613: added 64-bit rotate left PPC instructions and patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41711 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
eaf089430e7681fcddc3465c3b33b9645273ab02 |
31-Aug-2007 |
Dale Johannesen <dalej@apple.com> |
Enhance APFloat to retain bits of NaNs (fixes oggenc). Use APFloat interfaces for more references, mostly of ConstantFPSDNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41632 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
35b35c5c320a71e4611fe2101452da685f8eeda0 |
30-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Add a variant of foldMemoryOperand to fold any load / store, not just load / store from / to stack slots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41597 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.h
|
b8a80f03bf573a36b6f63b834aae2e91b82f96c6 |
30-Aug-2007 |
Bill Wendling <isanbard@gmail.com> |
Use i64 on a PPC64 machine git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41590 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
48884cd80b52be1528618f2e9b3425ac24e7b5ca |
25-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
rename isOperandValidForConstraint to LowerAsmOperandForConstraint, changing the interface to allow for future changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41384 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
90e167a908d8020133a9af901225e25d9c8d19be |
24-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
Disable EH generation until PPC works 100%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41360 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
aabd0359a3441fc300834b13b1cd265f22d7d011 |
23-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
new example git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41318 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
48bd15ed72bcf9464989516c078ed9d15030c95e |
09-Aug-2007 |
Dale Johannesen <dalej@apple.com> |
Fix arguments for some Altivec instructions. From SWB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40957 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
84109cd0158140f8590116fbf2240c678c951a5d |
08-Aug-2007 |
Dale Johannesen <dalej@apple.com> |
Fix spelling of mtvscr and mfvscr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40908 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
8c1e6a119a68b258365677a9ee5176af3525a26f |
03-Aug-2007 |
Dale Johannesen <dalej@apple.com> |
long double patch 2 of N. Handle it in TargetData. (I've tried to get the info right for all targets, but I'm not expert on all of them - check yours.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40792 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
61e729e2e9517ab2d8887bab86fb377900fa1081 |
02-Aug-2007 |
Dan Gohman <gohman@apple.com> |
More explicit keywords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40757 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
caf778ab3b57f978d430ff9f56cfa7d2dec5aabb |
02-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Some out operands were incorrectly specified as input operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40697 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
66ffe6be0c7b50100a00cb0cc87a5d4983818572 |
30-Jul-2007 |
Evan Cheng <evan.cheng@apple.com> |
Vector fneg must be expanded into fsub -0.0, X. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40586 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
36397f50343639ce9a25996f2d790c656791ab92 |
27-Jul-2007 |
Duncan Sands <baldrick@free.fr> |
Support for trampolines, except for X86 codegen which is still under discussion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40549 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b8275a3f6f6497889653cb2452d82a46f92b4926 |
25-Jul-2007 |
Dan Gohman <gohman@apple.com> |
Don't ignore the return value of AsmPrinter::doInitialization and AsmPrinter::doFinalization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40487 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e2b905232f8cc61a601bc4003de42d32f4b97dd2 |
25-Jul-2007 |
Nick Lewycky <nicholas@mxc.ca> |
Fix debug info and globals filled with zeros. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40483 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
ffbaccae029ac238972e3814967260f029b6058a |
21-Jul-2007 |
Evan Cheng <evan.cheng@apple.com> |
No more noResults. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40132 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
|
8bd6035750f1b290832a3b1c90766d9b45ed8d6b |
20-Jul-2007 |
Evan Cheng <evan.cheng@apple.com> |
Added -print-emitted-asm to print out JIT generated asm to cerr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40123 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
d5f181a665be91d58019f3dbffedc8ebe49e6b9d |
20-Jul-2007 |
Evan Cheng <evan.cheng@apple.com> |
Oops. These stores actually produce results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40074 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
64d80e3387f328d21cd9cc06464b5de7861e3f27 |
19-Jul-2007 |
Evan Cheng <evan.cheng@apple.com> |
Change instruction description to split OperandList into OutOperandList and InOperandList. This gives one piece of important information: # of results produced by an instruction. An example of the change: def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2), "add{l} {$src2, $dst|$dst, $src2}", [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>; => def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2), "add{l} {$src2, $dst|$dst, $src2}", [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>; git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40033 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrFormats.td
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.h
|
2365f51ed03afe6993bae962fdc2e5a956a64cd5 |
14-Jul-2007 |
Anton Korobeynikov <asl@math.spbu.ru> |
Long live the exception handling! This patch fills the last necessary bits to enable exceptions handling in LLVM. Currently only on x86-32/linux. In fact, this patch adds necessary intrinsics (and their lowering) which represent really weird target-specific gcc builtins used inside unwinder. After corresponding llvm-gcc patch will land (easy) exceptions should be more or less workable. However, exceptions handling support should not be thought as 'finished': I expect many small and not so small glitches everywhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39855 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
e7e7d0d7e39d0c7c659d26b97e8081fce0fcd749 |
13-Jul-2007 |
Dale Johannesen <dalej@apple.com> |
Skeleton of post-RA scheduler; doesn't do anything yet. Change name of -sched option and DEBUG_TYPE to pre-RA-sched; adjust testcases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39816 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
75ce010f7b6a47d9656e546b5db4a9cd77ba1dee |
11-Jul-2007 |
Lauro Ramos Venancio <lauro.venancio@gmail.com> |
Assert when TLS is not implemented. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39737 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
532dc2e1f2473b16b48566c1cbc9eefe94a4e58e |
09-Jul-2007 |
Dan Gohman <gohman@apple.com> |
Change getCopyToParts and getCopyFromParts to always use target-endian register ordering, for both physical and virtual registers. Update the PPC target lowering for calls to expect registers for the call result to already be in target order. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38471 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
87bdba6d6a1684373c94df0363a3b620de6dab6c |
09-Jul-2007 |
Chris Lattner <sabre@nondot.org> |
The various "getModuleMatchQuality" implementations should return zero if they see a target triple they don't understand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38463 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
06aae67b8315aa915f55abd5927453dbe8b11169 |
07-Jul-2007 |
Evan Cheng <evan.cheng@apple.com> |
Do away with ImmutablePredicateOperand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37961 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a99be51bf5cdac1438069d4b01766c47704961c8 |
05-Jul-2007 |
Gabor Greif <ggreif@gmail.com> |
Here is the bulk of the sanitizing. Almost all occurrences of "bytecode" in the sources have been eliminated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37913 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCSubtarget.cpp
|
7e36966de44a35f83e8dec22ed2f25b8c83736ed |
05-Jul-2007 |
Evan Cheng <evan.cheng@apple.com> |
PPC conditional branch predicate does not change after isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37893 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
e644ef7b098460ce831220c780cbe25eaef3fb28 |
29-Jun-2007 |
John Criswell <criswell@uiuc.edu> |
Convert .cvsignore files git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37801 91177308-0d34-0410-b5e6-96231b3b80d8
cvsignore
|
2bda17c92229e7116adf2edd3eea98c0a12f43cb |
29-Jun-2007 |
Evan Cheng <evan.cheng@apple.com> |
Prevent PPC::BCC first operand, the PRED number, from being isel'd into a LI instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37790 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ea859be53ca13a1547c4675549946b74dc3c6f41 |
22-Jun-2007 |
Dan Gohman <gohman@apple.com> |
Move ComputeMaskedBits, MaskedValueIsZero, and ComputeNumSignBits from TargetLowering to SelectionDAG so that they have more convenient access to the current DAG, in preparation for the ValueType routines being changed from standalone functions to members of SelectionDAG for the pre-legalize vector type changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37704 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
3ee774091ba6d25c7db4b0481b963454bd6d9903 |
19-Jun-2007 |
Chris Lattner <sabre@nondot.org> |
describe an argument, hide it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37650 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
52387be1e00291a88edc4c2b8a0b5c22478bcd83 |
19-Jun-2007 |
Chris Lattner <sabre@nondot.org> |
If a function is vararg, never pass inreg arguments in registers. Thanks to Anton for half of this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37641 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
51eaa86758338d5935c0eff0469c418b1256aba7 |
15-Jun-2007 |
Dan Gohman <gohman@apple.com> |
Rename MVT::getVectorBaseType to MVT::getVectorElementType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37579 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
13e8b51e3ec014c5d7ae83afdf3b8fd29c3a461d |
13-Jun-2007 |
Dale Johannesen <dalej@apple.com> |
Handle blocks with 2 unconditional branches in AnalyzeBranch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37571 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
bfd2ec4a8ef51ebe982363a7e8d7156fdb3827d8 |
08-Jun-2007 |
Evan Cheng <evan.cheng@apple.com> |
Add a utility routine to check for unpredicated terminator instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37528 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
2fb813d70b8928f355b35f782889c55c1aa891ef |
29-May-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Implementation of compilation callback in PPC ELF32 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37340 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
e6e435498c0e35d98644f868886d39c4665bb83a |
22-May-2007 |
Dale Johannesen <dalej@apple.com> |
name change requested by review of previous patch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37289 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
81da02b553b86868637f27b89c6e919c31ed5b51 |
22-May-2007 |
Dale Johannesen <dalej@apple.com> |
Make tail merging the default, except on powerPC. There was no prior art for a target-dependent default with a command-line override; this way should be generally usable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37285 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
126f17a17625876adb63f06d043fc1b1e4f0361c |
21-May-2007 |
Evan Cheng <evan.cheng@apple.com> |
BlockHasNoFallThrough() now returns true if block ends with a return instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37266 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
f5135be3fc20534ccaee52cbfa80a8408af5672b |
19-May-2007 |
Dan Gohman <gohman@apple.com> |
Apply this patch: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070514/049845.html git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37240 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b5cdaa257e167a08a8a54ea9249d847ccc415ce0 |
18-May-2007 |
Evan Cheng <evan.cheng@apple.com> |
RemoveBranch() and InsertBranch() now returns number of instructions deleted / inserted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37192 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
ccde4cb8ab6ba78296ffa0cb261757cd9cacb18a |
17-May-2007 |
Chris Lattner <sabre@nondot.org> |
add support for 128-bit add/sub on ppc64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37158 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
9f5d5783ecdb02ebf2000fcf50ee67628bc2e07d |
15-May-2007 |
Chris Lattner <sabre@nondot.org> |
fix some subtle inline asm selection issues git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37067 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f88b3a5698dc419f5f2c48e39e4058577599fa00 |
08-May-2007 |
Evan Cheng <evan.cheng@apple.com> |
PredicateOperand can be used as a normal operand for isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36947 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
43182ac0d6c2fa99b71cac66fa3da1fa063b2413 |
08-May-2007 |
Evan Cheng <evan.cheng@apple.com> |
R0 is a sub-register of X0, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36939 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
5f696035e5d96a64b58d654f1608de349bee0f5e |
03-May-2007 |
Chris Lattner <sabre@nondot.org> |
revert accidental commit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36668 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
|
4105a9fec0b7aa57de3455fb69de1861a5d74752 |
03-May-2007 |
Chris Lattner <sabre@nondot.org> |
add support for printing offset of global git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36667 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCallingConv.td
|
1997473cf72957d0e70322e2fe6fe2ab141c58a6 |
03-May-2007 |
Devang Patel <dpatel@apple.com> |
Drop 'const' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
3e15bf33e024b9df9e89351a165acfdb1dde51ed |
02-May-2007 |
Devang Patel <dpatel@apple.com> |
Use 'static const char' instead of 'static const int'. Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
794fd75c67a2cdc128d67342c6d88a504d186896 |
01-May-2007 |
Devang Patel <dpatel@apple.com> |
Do not use typeinfo to identify pass in pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
97de9138217d6f76f25100df272ec1a3c4d31aad |
01-May-2007 |
Evan Cheng <evan.cheng@apple.com> |
eliminateFrameIndex() change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36626 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
7bf1c272ab27297a7bbab329de3f17ddb26e02a3 |
01-May-2007 |
Nate Begeman <natebegeman@mac.com> |
llvm bug #1350, parts 1, 2, and 3. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36618 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
6c087e5585b227f3c1d8278304c7cfbc7cd4f6e8 |
26-Apr-2007 |
Evan Cheng <evan.cheng@apple.com> |
Match MachineFunction::UsedPhysRegs changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36452 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1e341729dd003ca33ecea4abf13134f20062c5f8 |
25-Apr-2007 |
Evan Cheng <evan.cheng@apple.com> |
Relex assertions to account for additional implicit def / use operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36430 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
6c2d2601614ba769c0371f01e22ebebd92643be5 |
25-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
Fix PR1351 and CodeGen/PowerPC/2007-04-24-InlineAsm-I-Modifier.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36410 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
7c7ba9d2d587303a486f29c68416bd8391499f77 |
10-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
Fix a bug in PPCTargetLowering::isLegalAddressingMode, scales other than 0/1/2 are always unsupported. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35835 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6733a1661a6ca9e904d132cfe92b2a828193e95d |
05-Apr-2007 |
Reid Spencer <rspencer@reidspencer.com> |
Squelch a warning about mismatch between sign of constant and sign of return type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35674 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
0111999a88077f237c49d03c5e7891ec874b33a9 |
03-Apr-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Starting implementation of the ELF32 ABI specification of varargs handling. LowerVASTART emits the right code if the subtarget is ELF32, the other intrinsics (VAARG, VACOPY and VAEND) are not yet implemented. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35625 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ec58d9f9ddfbfe16ea40822164f340b256c89191 |
03-Apr-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
The PPC64 ELF ABI is "intended to use the same structure layout and calling convention rules as the 64-bit PowerOpen ABI" (Reference http://www.linux-foundation.org/spec/ELF/ppc64/). Change all ELF tests to ELF32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35624 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCFrameInfo.h
PCISelLowering.cpp
PCInstr64Bit.td
PCRegisterInfo.cpp
PCSubtarget.h
|
cfcd8da70b33118ab3765ed54d63f497321932ce |
03-Apr-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Addition to the previous commit for getCalleeSavedRegClasses: "The ELF ABI specifies F1-F8 registers as argument registers for double, not F1-F10. This affects only ELF, not MachO." git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35623 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
ef3c030e0e08b7d9446445823f4972fcf18c1ce1 |
03-Apr-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
The ELF ABI specifies F1-F8 registers as argument registers for double, not F1-F10. This affects only ELF, not MachO. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35622 91177308-0d34-0410-b5e6-96231b3b80d8
PCCallingConv.td
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
|
aa43e9f73b4ccd700530803803e074eff9b3dca5 |
02-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
Fix a bug which caused us to never be able to use signed comparisons for equality comparisons of a constant. This allows us to codegen the 'sintzero' loop in PR1288 as: LBB1_1: ;cond_next li r4, 0 addi r2, r2, 1 stw r4, 0(r3) addi r3, r3, 4 cmpwi cr0, r2, -1 bne cr0, LBB1_1 ;cond_next instead of: LBB1_1: ;cond_next addi r2, r2, 1 li r4, 0 xoris r5, r2, 65535 stw r4, 0(r3) addi r3, r3, 4 cmplwi cr0, r5, 65535 bne cr0, LBB1_1 ;cond_next This implements CodeGen/PowerPC/compare-simm.ll, and also cuts 74 instructions out of kc++. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35590 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
fcb1e61a4375c4bdb015aafcec559fc8e577da99 |
31-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35530 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
c9addb74883fef318140272768422656a694341f |
31-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
implement the new addressing mode description hook. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35521 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
1baa1971a66d6a250d07b7bee249653bd91453a0 |
27-Mar-2007 |
Lauro Ramos Venancio <lauro.venancio@gmail.com> |
"The C standards do say that "char" may either be a "signed char" or "unsigned char" and it is up to the compilers implementation or the platform which is followed." http://www.arm.linux.org.uk/docs/faqs/signedchar.php git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35382 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
86c9c341e97a4f08e4984077af57bf106d980db0 |
25-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35334 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
013e051aac1c3d5d4468eb83b3bc8cfa58cef421 |
25-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35330 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
b6ead97b7e576721f47a3bc3739fea52f261e22f |
25-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/PowerPC/2007-03-24-cntlzd.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35329 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
4234f57fa02b1f04a9f52a7b3c2aa22d32ac521c |
25-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
switch TargetLowering::getConstraintType to take the entire constraint, not just the first letter. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35322 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
82d4264c1fe71480bcaa63235e385a01e38dbe8c |
21-Mar-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Protect R31's frame offset from being used by callee-saved registers, when R31 is the frame pointer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35233 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
bf2c8b3c96f5c885095a10b0fcb29438f92d73c2 |
20-Mar-2007 |
Evan Cheng <evan.cheng@apple.com> |
Added MRegisterInfo hook to re-materialize an instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35205 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
b2ec1cc6cb1c34d3e43559ab59619b29f010684b |
13-Mar-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Stack and register alignment of call arguments in the ELF ABI git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35083 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
861939152debbaa15a55a196a4321837c7bc379d |
13-Mar-2007 |
Evan Cheng <evan.cheng@apple.com> |
More flexible TargetLowering LSR hooks for testing whether an immediate is a legal target address immediate or scale. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35074 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
032953d74746fa89b62e49b63a38ba6d8827b81a |
08-Mar-2007 |
Evan Cheng <evan.cheng@apple.com> |
Putting more constants which do not contain relocations into .literal{4|8|16} git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35026 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
98ded765c2dc2f256e9f11502ca302f2b24f31e8 |
08-Mar-2007 |
Evan Cheng <evan.cheng@apple.com> |
For Darwin, put constant data into .const, .const_data, .literal{4|8|16} sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35017 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
28b3c45109153bc50d3d9e97dccb25ffd043fa50 |
06-Mar-2007 |
Evan Cheng <evan.cheng@apple.com> |
Minor interface change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34967 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
b9a7bea99c8aac6eb3509df93a25fe9cc3858bde |
06-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
Switch PPC return lower to use an autogenerated CC description. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34940 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PC.td
PCCallingConv.td
PCISelLowering.cpp
|
f54949dc494ced20b24b968284a25037fca06743 |
03-Mar-2007 |
Nick Lewycky <nicholas@mxc.ca> |
Emit low/high immediate loads properly for Linux/PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34871 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
43c6e7cd9b0d9a3b0006650ddfac256848f10d51 |
01-Mar-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Implemented the frameaddress intrinsic for PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34787 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
fec910c3b9ba5790e5a627e1801fce25fbdddbaa |
28-Feb-2007 |
Nate Begeman <natebegeman@mac.com> |
More Mach-O writer improvements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34740 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriterInfo.cpp
PCMachOWriterInfo.h
|
5e6df4647e15c50daea9a8a4e7f4f417a266335c |
28-Feb-2007 |
Evan Cheng <evan.cheng@apple.com> |
PEI now passes a RegScavenger ptr to eliminateFrameIndex. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34707 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
05c180b34763c2891a2bf467c48bcf2a96f7e660 |
27-Feb-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Fix parenthesis for BCTRL_{ELF|Macho} test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34668 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
63f8fb1993bf2b4286c5a6763e2eee414a751699 |
27-Feb-2007 |
Nicolas Geoffray <nicolas.geoffray@lip6.fr> |
Differentiate between the MachO and the ELF ABI the CALL instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34667 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
|
d313a9b1484c52e3f784de5064ce86bdbd9b26dc |
27-Feb-2007 |
Jim Laskey <jlaskey@mac.com> |
Duplicate use of LR, take 2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34666 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
3d3d6275134f3c6d35a97a028a8556fd2e62243a |
27-Feb-2007 |
Evan Cheng <evan.cheng@apple.com> |
Backing out Jim's LR spill changes. This was causing llvm-gcc bootstrapping to infinite loop: PPCMachineFunctionInfo.h updated: 1.2 -> 1.3 PPCRegisterInfo.cpp updated: 1.110 -> 1.111 PPCRegisterInfo.h updated: 1.28 -> 1.29 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34652 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
caddd44be776e0dc97baf40ca8afdd405cb705a1 |
26-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
always lower to RETFLAG, never leave it as just ret. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34639 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
4ddf7a4ca69c3f5872b568bcb523d491b29a2592 |
25-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
no really, this is the right patch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34605 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
640c0ac01d17ce907a601b9fea4c29c87c37edee |
25-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
always promote float varargs to double. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34604 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1fa3d9ef93578970b2e0506104b96c3ffaa42bcf |
25-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
one important bugfix: PPC32 didn't have both elf and macho support for external symbols and global addresses. Add the missing ones. one important workaround: PPCISD::CALL is matched by both PPCcall_ELF and PPCcall_Macho, disable the _ELF patterns for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34601 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
9f0bc659c8d2f1e401a9690e4900b0fd2a70bdfe |
25-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
implement support for the linux/ppc function call ABI. Patch by Nicolas Geoffray! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34574 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCFrameInfo.h
PCHazardRecognizers.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
|
eb95d41cd364f3526d1c39455a0131185495c51a |
25-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Add XLForm_1_ext template, patch by Nicolas Geoffray. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34573 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
456bc87e78af18331b9579069a059c723da517d9 |
25-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Improve JIT support for linux/ppc: Patch by Nicolas Geoffray! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34572 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
PCSubtarget.h
PCTargetMachine.cpp
|
2a27a7598b90359696e31cb665914206f369d1f0 |
23-Feb-2007 |
Jim Laskey <jlaskey@mac.com> |
Don't spill LR as a callee saved register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34533 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
0fa1b6d1b1ce5437c30585baddcba20e691d31e0 |
23-Feb-2007 |
Evan Cheng <evan.cheng@apple.com> |
By default, spills kills the register being stored. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34515 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c740d062903c568a32b6e614a4bcd949413b05ed |
23-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
remove obsolete file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34506 91177308-0d34-0410-b5e6-96231b3b80d8
ICENSE.TXT
|
2ad9f17fee5d6395cd8db81668853e6dbf94060b |
22-Feb-2007 |
Jim Laskey <jlaskey@mac.com> |
Simplify lowering and selection of exception ops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34488 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
62819f31440fe1b1415473a89b8683b5b690d5fa |
21-Feb-2007 |
Jim Laskey <jlaskey@mac.com> |
Support to provide exception and selector registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34482 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
bda9b0ec7bd6974cebf751ecd23c5434b34054e9 |
21-Feb-2007 |
Jim Laskey <jlaskey@mac.com> |
Add support for changes in DwarfWriter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34478 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a15be8ce3aaaebc675f99302e2c5e1c564268322 |
21-Feb-2007 |
Jim Laskey <jlaskey@mac.com> |
Add TAI field for exception table section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34477 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
b371f457b0ea4a652a9f526ba4375c80ae542252 |
19-Feb-2007 |
Evan Cheng <evan.cheng@apple.com> |
Re-apply my liveintervalanalysis changes. Now with PR1207 fixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34428 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
a284cbf667e11660840dc7bae3ee9eeaa3c7cbd2 |
19-Feb-2007 |
Reid Spencer <rspencer@reidspencer.com> |
For PR1207: Revert patches that caused the problem. Evan, please investigate and reapply when you've discovered the problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34399 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
eceada67286f0d8081c23aedd242f4deeffa85ad |
17-Feb-2007 |
Evan Cheng <evan.cheng@apple.com> |
Added getReservedRegs(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34376 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
dee5a5a52c45d04aa9f64a7b6e2adae37878a304 |
17-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Fix ixaddrs as well, allowing ppc64 to compile to: _test2: li r2, 0 lis r3, 1 std r2, 9024(r3) blr instead of: _test2: lis r2, 1 li r3, 0 ori r2, r2, 9024 std r3, 0(r2) blr This implements CodeGen/PowerPC/LargeAbsoluteAddr.ll:test2 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34373 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bc681d6af490a7e67bcc8c4a4b17d18cb38ca455 |
17-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Compile test/CodeGen/PowerPC/LargeAbsoluteAddr.ll to: _test: lis r2, 743 li r3, 0 stw r3, 32751(r2) blr instead of: _test: li r2, 0 stw r2, 32751(48693248) blr Implement support for ppc64 as well, allowing it to produce better code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34371 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3dd074afcb820bbb677967bdd116aee219e07920 |
16-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
fix incorrect encoding of vminsw. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34351 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
d2b7cec527a0efa552628378ebca7a8ca63bb45d |
14-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Generalize TargetData strings, to support more interesting forms of data. Patch by Scott Michel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34266 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
8abcfe11b5e3c7a6ec6b13b17f7542317368e38f |
09-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34101 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
8c541bcc56fd7327f3d8d74653ae6df25921250e |
09-Feb-2007 |
Nate Begeman <natebegeman@mac.com> |
Remove fixed item git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34081 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
2f5bcb5f38e051ffa41b6257d9c0a0e94067dee4 |
08-Feb-2007 |
Bill Wendling <isanbard@gmail.com> |
Fixed comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34040 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriterInfo.cpp
|
eb1ac3385096dd6f45a1548f3492f21648f55b4c |
08-Feb-2007 |
Bill Wendling <isanbard@gmail.com> |
Moved the MachOWriter and ELFWriter out of the Target/* files. Placed the definition of it into the CodeGen library. This is so that a backend doesn't necessarily add in these writers if it doesn't use them (like in the lli program). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34034 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCMachOWriterInfo.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
449c57a0f9b550e4a43d7c1c1ef37ebff20650b4 |
08-Feb-2007 |
Bill Wendling <isanbard@gmail.com> |
Dead files. Functionality has been taken over by the Add*Writer functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34029 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
736610c8741687cb666b5964f45b3ed92d9ef081 |
03-Feb-2007 |
Bill Wendling <isanbard@gmail.com> |
Moved the GetTargetRelocation method from PPCMachOWriter to here. It uses non-Mach-O-specific information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33819 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriterInfo.cpp
PCMachOWriterInfo.h
|
e318391d4d3673fbe41e5ef00ce489d85167260b |
03-Feb-2007 |
Bill Wendling <isanbard@gmail.com> |
Moved the GetTargetRelocation method to the PPCMachOWriterInfo object. The PPCMachOWriter is now trivial. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33818 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
b82313fdc21e8190768addf0f16710b94f0e1441 |
01-Feb-2007 |
Jim Laskey <jlaskey@mac.com> |
Support for non-landing pad exception handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33755 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCTargetAsmInfo.cpp
|
9aa2895360bd3951fc4f204d8699b84fd9ea6ba5 |
01-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/PowerPC/2007-01-31-InlineAsmAddrMode.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33732 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
95b9d6e5d8f35ccefccea0680ed733e752ff7d65 |
31-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
A relatively simple PPC optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33709 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
5cbf985dcbc89fba3208e7baf8b6f488b06d3ec9 |
30-Jan-2007 |
Reid Spencer <rspencer@reidspencer.com> |
For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid confusion with external linkage types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33663 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCSubtarget.cpp
|
b267ca17d1351b28d597e7807b5ed398e92d65e4 |
30-Jan-2007 |
Evan Cheng <evan.cheng@apple.com> |
Darwin -static should codegen static ctors / dtors to .constructor / .destructor sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33657 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
e078d1a14a2633d5fe5b5b9d9dec90669f5c7082 |
30-Jan-2007 |
Jim Laskey <jlaskey@mac.com> |
Only gather frame info if debug or eh. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33639 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
bcc5f36765e8111c13873a0c0dc874c92385d808 |
29-Jan-2007 |
Nate Begeman <natebegeman@mac.com> |
Finish off bug 680, allowing targets to custom lower frame and return address nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33636 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1f259e9d7aa346861785c4a2a7e3220fec113706 |
29-Jan-2007 |
Nate Begeman <natebegeman@mac.com> |
We'd still like to register allocate r2 on darwin before the callee-save regs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33635 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
908049b7b6d089dde6f75f6ac47034150c948e7e |
29-Jan-2007 |
Nate Begeman <natebegeman@mac.com> |
Update some of the llvm in the readme git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33630 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
072200c36dd96b94e772029fd72edf9fa120c467 |
29-Jan-2007 |
Jim Laskey <jlaskey@mac.com> |
Landing pad-less eh for PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33622 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCTargetAsmInfo.cpp
|
b10308e440c80dd6ffb4b478f741ff7e5f30cb48 |
28-Jan-2007 |
Anton Korobeynikov <asl@math.spbu.ru> |
Propagate changes from my local tree. This patch includes: 1. New parameter attribute called 'inreg'. It has meaning "place this parameter in registers, if possible". This is some generalization of gcc's regparm(n) attribute. It's currently used only in X86-32 backend. 2. Completely rewritten CC handling/lowering code inside X86 backend. Merged stdcall + c CCs and fastcall + fast CC. 3. Dropped CSRET CC. We cannot add struct return variant for each target-specific CC (e.g. stdcall + csretcc and so on). 4. Instead of CSRET CC introduced 'sret' parameter attribute. Setting in on first attribute has meaning 'This is hidden pointer to structure return. Handle it gently'. 5. Fixed small bug in llvm-extract + add new feature to FunctionExtraction pass, which relinks all internal-linkaged callees from deleted function to external linkage. This will allow further linking everything together. NOTEs: 1. Documentation will be updated soon. 2. llvm-upgrade should be improved to translate csret => sret. Before this, there will be some unexpected test fails. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33597 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3c983c3dc19bb83807f978c04737b4572be90a93 |
26-Jan-2007 |
Nate Begeman <natebegeman@mac.com> |
Fix a spelling error git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33556 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
|
6635f35cae9d5a5d363d3ba425d4b1f323fc689d |
26-Jan-2007 |
Nate Begeman <natebegeman@mac.com> |
Handle multiple functions, properly mangle symbols, and fix support for scattered relocations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33555 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
44c3b9fdd416c79f4b67cde1aecfced5921efd81 |
26-Jan-2007 |
Jim Laskey <jlaskey@mac.com> |
Change the MachineDebugInfo to MachineModuleInfo to better reflect usage for debugging and exception handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33550 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.cpp
|
1ee29257428960fede862fcfdbe80d5d007927e9 |
26-Jan-2007 |
Jim Laskey <jlaskey@mac.com> |
Make LABEL a builtin opcode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33537 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelLowering.cpp
PCInstrInfo.h
PCInstrInfo.td
PCRegisterInfo.cpp
|
fab0439c62984b3dc851eb99c31c4f6edda092a1 |
25-Jan-2007 |
Evan Cheng <evan.cheng@apple.com> |
Fix comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33508 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
99403b6964aead64c1039a8f4007437ef96dfd88 |
25-Jan-2007 |
Evan Cheng <evan.cheng@apple.com> |
- Tell PEI that PPC will handle stack frame rounding itself. - Do not round up to max. alignment of stack object if it is > stack alignment. It will have to be handled with dynamic aligning code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33505 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
78192b620450ce7897b68c48cd5d3f1a6defbb7b |
25-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
Fix test/CFrontend/2007-01-24-InlineAsmCModifier.c on PPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33494 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
5e73d5bd2e98afda12fa69a7ea83050c69be0d34 |
24-Jan-2007 |
Jim Laskey <jlaskey@mac.com> |
Repair debug frames as a prelude to eh_frames. Switched to using MachineMoves by value so that clean up is less confusing (these vectors tend to be small.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33488 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
2b7218218faa02d9ece90f2ae6e009d7c55534df |
24-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Make ivars private and use getters. Have the MachOWriter return "Mach-O Writer" for the pass name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33483 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriterInfo.h
|
0ea18ff8e78fd10ba210c70ca928b47c7de0e6b0 |
24-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Add a field for and construction of the PPCMachOWriterInfo object. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33480 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
3d6d609aaed02b6d9a8e2ede029710c82c728fe2 |
24-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Move the getJTRelocation method out of here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33479 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
841056a2ad6fce7786378a27aced46e37122259f |
24-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
New "TargetMachOWriterInfo" class. It holds target-specific information that the MachOWriter needs in order to do its writing stuff 'n things. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33475 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriterInfo.cpp
PCMachOWriterInfo.h
|
dc77540d9506dc151d79b94bae88bd841880ef37 |
23-Jan-2007 |
Evan Cheng <evan.cheng@apple.com> |
hasFP() is now a virtual method of MRegisterInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33455 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
74fc22d484f053908c12861bae82a6460b00326c |
23-Jan-2007 |
Evan Cheng <evan.cheng@apple.com> |
Double and long preferred alignment set to 8 bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33447 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
bd92d81d22c90433e968077aa0a4157d631d6365 |
19-Jan-2007 |
Nick Lewycky <nicholas@mxc.ca> |
Needed to build on PPC Linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33352 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
afd7a08a76a13bfc379702e6c07fc76c1fdbf7c5 |
18-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
move contents of PR587 to here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33333 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
c904a5b925ce9981ad7501b14ee39cbc8795e23c |
18-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Have the OutputBuffer take the is64Bit and isLittleEndian booleans. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33316 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
b266ccd0f41b3ac9d9ad733e73204d9177c12e9f |
18-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
Modify emission of jump tables on darwin to emit an extra "l" label that delimits the boundaries of jump tables. This lets the linker's dead code stripping optimization do a better job. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33315 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
203d3e4386ff2b8e66378bf7cfb12ec25869b866 |
17-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Changed to use the OutputBuffer instead of the methods in MachO and ELF writers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33311 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
e911615c4769d793588087b5321d303ecb9661c7 |
17-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Revert patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33298 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
PCTargetObjInfo.cpp
PCTargetObjInfo.h
|
22fb30231b87e7b090ab1b135cb478c0c3feefe4 |
17-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Create the specified TargetObjInfo and use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33291 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
34f03fff2d117068b4d627922484d2d79ed9c025 |
17-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
New "TargetObjInfo" class. This holds information that the object writers will use to write things to the file. It's abstract so each target should implement its own version for each writer type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33286 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetObjInfo.cpp
PCTargetObjInfo.h
|
cb9009993b20ab41fab56518d666ba69533db4b3 |
16-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Instead of yet another enum indicating the "assembly language flavor", just use the one that's in the subtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33255 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
PCTargetAsmInfo.cpp
|
eb9a42c90bf7e21ad8544315a65f86b668cc0277 |
16-Jan-2007 |
Bill Wendling <isanbard@gmail.com> |
Fix for PR1095: LLVM would miscompile ASM dialects when compiling for PPC. Added dialects for the X86 and PPC backends. It defaults to "0", the first variant of a compound inline asm expression. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33246 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
70d4107a45ab39e1bc3e7a67a86b59655cba34ec |
14-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
add support for hidden visibility to darwin/ppc and linux/ppc targets git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33200 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
15c91887e47f7301255d838c4706509fe8677faa |
06-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
Disable the macho writer until it is 100% functional. Enabling it when broken invites bug reports. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32961 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
d08d23315d20c568fe35b8732d4a49d298b228c2 |
06-Jan-2007 |
Evan Cheng <evan.cheng@apple.com> |
setSetCCIsExpensive is gone. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32941 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c2b861da18c54a4252fecba866341e1513fa18cc |
02-Jan-2007 |
Evan Cheng <evan.cheng@apple.com> |
Fix naming inconsistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32823 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
bf1118285c0f784b120a69b4a4207e15ef065ead |
21-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Changes from Nick Lewycky with a simplified PPCTargetAsmInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32735 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.td
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
PCTargetMachine.cpp
|
2aa14aad985aac64076437cdf91ec5b54f07f011 |
20-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Oops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32724 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
40ee69f3ca4433dc14072b2b29f7b47fc75a5dca |
20-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Original patch was overly complicated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32723 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b608a4dd4c9f8693054362ab8156b6039ee07a88 |
20-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Changes to target powerpc for non-Darwin assemblers. 1. Patches from Nick Lewycky. 2. Code to filter register names and print them as numeric values on non-Darwin systems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32721 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
95b2c7da5e83670881270c1cd231a240be0556d9 |
19-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
eliminate static ctors for Statistic objects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32703 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
|
15404d060ba8b604c03b9223a0f2e2abcd0fdded |
18-Dec-2006 |
Rafael Espindola <rafael.espindola@gmail.com> |
move ExtWeakSymbols to AsmPrinter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32648 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3381f0a09da038e857b2df7b7a4aba1df34a2a4e |
16-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Apply B. Scott Michel's patch for PR1054, thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32630 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
ba74cdf7f6044de319e118c28c84e076b421376f |
15-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Patterns no longer needed due to fix in the DAG combiner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32612 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
352235515ff58d8a250797c62aebb4767b3b229f |
15-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Not all test cases are created equal. This fix is needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32605 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
182a5acdeb58db5467c08c34f1db42af47b0c44c |
15-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Not needed. Misinterpreted error message from other bug (Missing load/store relocations.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32604 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
34da72645a82e11bc7008bc567d63426ec4c5949 |
15-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Missing load/store relocations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32601 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
c4a81dc9357987bd0f4a4dc1593e8f38d6567fbd |
15-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Provide 64-bit support for i64 sextload<i8>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32600 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
ca367b4e259efdd9366d358addbb983cce7c4360 |
15-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Provide support for FP_TO_UINT. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32599 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c35010d3a44397dd04ed3bff5287f9c718dacd4a |
12-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Honor cpu directive, take two. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32492 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCAsmPrinter.cpp
PCSubtarget.h
|
9a7dfa3fd465aa7cf275003dbb11234e34bb2d8c |
12-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Rollback changes to take a different tack. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32488 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
55a7ec33d7cafa703a1b6e6410d7c26d5b7ded0b |
12-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Honor the command line specification for machine type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32483 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
78f97f3118c0d7fbebf4084e24689c596d5e4fb7 |
12-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Reduce number of instructions to load 64-bit constants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32481 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstr64Bit.td
|
57fc62c8d2bf056b0d2a0e3d1b82b3b787b899f8 |
12-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Another step forward in PPC64 JIT support: we now no-longer need stubs emitted for external globals in PPC64-JIT-PIC mode (which is good because we didn't handle them before!). This also fixes a bug handling the picbase delta, which we would get wrong in some cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32451 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCISelLowering.cpp
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
|
442b9a69811b68bc169b3eb9305fca7adfb325eb |
11-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
getInstrItineraryData shouldn't copy the itineraries git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32448 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
2060a822fee8a500017e3afc1d91cf3644553d44 |
11-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Missing opcode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32439 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
18e2f4433e3bc8b95e1bd0c9e5de7b384eb7db3b |
11-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Layout proper frame for ppc64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32436 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
bfaaaa6e0f105cc57933afa9a380763fe87a5ff3 |
11-Dec-2006 |
Nate Begeman <natebegeman@mac.com> |
Properly mangles symbol table names Supports constant pools Supports relocations to jump tables Supports relocations within the data segment (global = address of global) Allocates memory in a non-hacky for all non-code objects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32430 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
d27a258d2d7691db3731135a448b7654d260cc07 |
11-Dec-2006 |
Anton Korobeynikov <asl@math.spbu.ru> |
Cleaned setjmp/longjmp lowering interfaces. Now we're producing right code (both asm & cbe) for Mingw32 target. Removed autoconf checks for underscored versions of setjmp/longjmp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32415 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0eadd73bd78b00379e9f78d1a372bcd28efe855c |
10-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Reverting until finding the cause of secondary bugs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32413 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
630def54f4de86f3909bfd10ff9bd94c87525ea7 |
10-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
__PPC64CompilationCallback code was allowing registers to be clobbered by stub. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32412 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
e150b8eb873fc1bdde17d8ecfd3c38168a5cdcee |
08-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
this is an initial patch to switch the ppc64 jit over to working in PIC mode, which allows the code to be above the 2G marker. We still need to JIT emit dyld stubs to support external, weak, common, etc globals, but that will happen tomorrow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32348 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
PCTargetMachine.cpp
|
eb63b0a9d5089dd3119ba9c3cad9cf9ad79df0f7 |
08-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
fix incorrect encoding of rldicr, used by ppc64 function stubs, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32341 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
f5da13367f88f06e3b585dc2263ab6e9ca6c4bf8 |
07-Dec-2006 |
Bill Wendling <isanbard@gmail.com> |
What should be the last unnecessary <iostream>s in the library. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32333 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCHazardRecognizers.cpp
PCISelDAGToDAG.cpp
PCInstrInfo.cpp
PCJITInfo.cpp
PCRegisterInfo.cpp
PCSubtarget.cpp
|
c88fa749eb85371f54917446b69eb89527fd12b7 |
07-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
fix CodeGen/PowerPC/2006-12-07-LargeAlloca.ll on ppc64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32331 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
85c671b90870705ba7e10baf99aa306c843f1325 |
07-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Fix i64 uint_to_fp on ppc64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32297 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
94c96cc5197f527a8cb9f953be3a2e8f2f5aa9e3 |
06-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
implement sextinreg i8->i64 and i16->i64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32293 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
c5d24596d6a87632cbc08219bc8cd48285030854 |
06-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
fix another sradi encoding bug. This fixes Olden/health with the ppc64 jit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32291 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
c5e241b40aa9ea1426a8f7df637cea7b20603030 |
06-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
fix the jit encoding of sradi, simplify the MDForm1 description. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32285 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
fae2c19de91ae9a31046aaed27d1e5afa8d3e158 |
06-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
add relocation support for ppc64 branches. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32284 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
ac0b6ae358944ae8b2b5a11dc08f52c3ed89f2da |
06-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Detemplatize the Statistic class. The only type it is instantiated with is 'unsigned'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
|
51fe9d9aa432cbde6497cad4ea5c8f0276c67b82 |
06-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Make it easier for gdb to find the return address. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32277 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
efc7e52183a384917ff4deac06e829433602150a |
04-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
Restoration of the stack pointer after a deallocation of a alloca was not updating the SP link. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32202 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8752ce61e1ba3973e0082085c1c3c9b8069ea2b7 |
01-Dec-2006 |
Evan Cheng <evan.cheng@apple.com> |
Add weak reference directive. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32091 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
9382e29c1ebc6524618b173ed04bc25295d02c6e |
01-Dec-2006 |
Evan Cheng <evan.cheng@apple.com> |
Copy and paste error. An initialized global cannot be a weak reference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32075 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
fbb74e6941ebf6c108a4e385902e5e2cd35b739d |
01-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
1. In ppc64 mode we need only use one GPR. 2. Float values need to be promoted to double when they are vararg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32074 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
45e507ca9bb09f02e24496cc0885b4ea7debdba9 |
01-Dec-2006 |
Jim Laskey <jlaskey@mac.com> |
ExternalWeak case in wrong location. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32073 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
81cf60fceb411b5cc8a161d4332c5c9d0784f326 |
01-Dec-2006 |
Evan Cheng <evan.cheng@apple.com> |
A initialized global variable cannot be extern weak. However, if a global value's initializer is itself a external weak symbol, emit the weak reference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32069 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
1c45a6687399d57d8da234d61f936ee37a108a45 |
01-Dec-2006 |
Evan Cheng <evan.cheng@apple.com> |
Darwin PPC external weak linkage support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32068 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
70fa493613142f2ad99003de91b46e701f9bd605 |
01-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the CodeGen/PowerPC/vec_constants.ll regression. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32057 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
12a447898a3c68c1a9489f71b82650b46244d00a |
30-Nov-2006 |
Evan Cheng <evan.cheng@apple.com> |
MachineInstr::setOpcode -> MachineInstr::setInstrDescriptor git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32034 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
15eb329dae1dea7a5a38cf0c1074aaa3e0f78ab6 |
29-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Fix bug codegen'ing FP constant vectors with integer splats. Make sure the created intrinsics have the right integer types. This fixes PowerPC/2006-11-29-AltivecFPSplat.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32024 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
619965d32e2cb961cc315aaece2e32f53f236784 |
29-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
Offset for load of 32-bit arg in 64-bit world was incorrect. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32019 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7fc4a94bdd5fb2933fecf27ca0cf377e1dc70cb0 |
28-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
Remove debug code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31970 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2ada08536e30dbcbea21addc814f3bf8a394a4ee |
28-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
Prime text sections to improve branch locality in large object files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31969 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e9bd7b2e03252391dce5cacd4fcf68df4d4eef7a |
28-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
32-bit int space was not accounted for properly in lowerCall. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31966 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c0f64ffab93d11fb27a3b8a0707b77400918a20e |
28-Nov-2006 |
Evan Cheng <evan.cheng@apple.com> |
Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead of opcode and number of operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31947 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
24652d16f84e4fd605aaffdd5112a606be6c8074 |
25-Nov-2006 |
Reid Spencer <rspencer@reidspencer.com> |
Add newline at end of file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31902 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachineFunctionInfo.h
|
e9c9f98f719cc597444181cd6634fac247f8f68c |
20-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
in ppc64-mode, don't allocate the 32-bit version of r13 either. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31884 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
bdc571b7d578091059aa7bc5c3a190ceb70f9542 |
20-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
r13 is the thread pointer on darwin/ppc64, don't allocate it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31882 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.td
|
b1eb987ccd86e58d81dde75424d37369785910d7 |
18-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
on ppc64, float arguments take 8-byte stack slots not 4-byte stack slots. Also, valist should create a pointer RC reg class value, not a GPRC value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31840 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ff790894bdffb263c9448ed9402b92927c0b59dd |
18-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
make sure to safe LR8 in the right stack slot for PPC64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31839 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
PCTargetMachine.cpp
|
566c1b1a0442ccbf9f52b176dbca9764d94e5f93 |
18-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Pretty print 'rldicr r2, r2, 2, 61' as 'sldi r2, r2, 2'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31838 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
54e853b8a6435591f5733f3d0d3f196ae755079b |
18-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Rewrite the branch selector to be correct in the face of large functions. The algorithm it used before wasn't 100% correct, we now use an iterative expansion model. This fixes assembler errors when compiling 403.gcc with tail merging enabled. Change the way the branch selector works overall: Now, the isel generates PPC::BCC instructions (as it used to) directly, and these BCC instructions are emitted to the output or jitted directly if branches don't need expansion. Only if branches need expansion are instructions rewritten and created. This should make branch select faster, and eliminates the Bxx instructions from the .td file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31837 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCInstrFormats.td
PCInstrInfo.td
EADME.txt
|
d5275157b540f53fe3795489229c021390e90b3f |
18-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
add encoding for BCC, after finally wrestling strange ppc/tblgen endianness issues to the ground. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31836 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
18258c640466274c26e89016e361ec411ff78520 |
17-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
convert PPC::BCC to use the 'pred' operand instead of separate predicate value and CR reg #. This requires swapping the order of these everywhere that touches BCC and requires us to write custom matching logic for PPCcondbranch :( git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31835 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCInstrInfo.td
|
289c2d5f4566d8d7722e3934f4763d3df92886f3 |
17-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
rename PPC::COND_BRANCH to PPC::BCC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31834 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCInstrInfo.td
|
df4ed6350b2a51f71c0980e86c9078f4046ea706 |
17-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
start using PPC predicates more consistently. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31833 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
PCPredicates.cpp
PCPredicates.h
|
d6fa8c166ace05779ebefe511c615223b12fe7db |
17-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
Assert unhandled case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31828 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
2ff5cdb16cea04f562402c2a33732840857a66e2 |
17-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
1. Ignore the -disable-fp-elim when the routine is a leaf. 2. Offsets on 64-bit stores are still in bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31824 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c1c2f4b52bbb71c8ff3afc924ac49a7cae0f87f0 |
17-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
Typo. Fix the nightly tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31823 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
280b714cd064224c6cfe1724f22cca4d6b8eed37 |
17-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
implement a todo: change a map into a vector git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31805 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
8781466176e261f25268becc61f82e2f969f0cdb |
17-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
fix typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31799 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
e28a12a3b8d42543bb291d5aacf0b65a95dd3653 |
17-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
implicit_def_vrrc doesn't generate code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31797 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
2f616bff7ef1e2e08d6d23c2a8b42ec2bfebb173 |
16-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
This is a general clean up of the PowerPC ABI. Address several problems and bugs including making sure that the TOS links back to the previous frame, that the maximum call frame size is not included twice when using frame pointers, no longer growing the frame on calls, double storing of SP and a cleaner/faster dynamic alloca. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31792 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
PCISelLowering.cpp
PCISelLowering.h
PCInstr64Bit.td
PCInstrInfo.td
PCMachineFunctionInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRegisterInfo.td
|
1b0a2d8370b28de0d3998b0303bc3dad983989d9 |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
fix a regression that I introduced. stdu should scale the offset by 4 before printing it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31791 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstr64Bit.td
|
cb53595d70c33c2f11b9dd95653649372a5fe489 |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
add a statistic git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31785 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
0403862158a5a908b868b0b64b7725b39919a506 |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
fix broken encoding git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31778 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
80df01d2cf68b680b1c90eb0d3b0f2defcdf202b |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
add ppc64 r+i stores with update. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31776 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstr64Bit.td
|
74531e49ef97cc2bef8fc9c35963368fc63153cf |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
add patterns for ppc32 preinc stores. ppc64 next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31775 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
ef20fefa65f5ac422e65e644c6380ea480b7f507 |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
switch these back to the 'bad old way' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31774 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
5e797a5b1c05147bd68c989e8c9b9de37ee06243 |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Fix ppc64 epilog bug. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31771 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
8e28b5c4265ea636e5b737d9352096498be28d3b |
16-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Stop using isTwoAddress, switching to operand constraints instead. Tell the codegen emitter that specific operands are not to be encoded, fixing JIT regressions w.r.t. pre-inc loads and stores (e.g. lwzu, which we generate even when general preinc loads are not enabled). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31770 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.td
|
6ce7dc2a97260eea5fba414332796464912b9359 |
15-Nov-2006 |
Evan Cheng <evan.cheng@apple.com> |
Properly transfer kill / dead info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31765 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
0851b4f3eda110cc21c8d4b59f0d55bc84d9d088 |
15-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
fix ldu/stu jit encoding. Swith 64-bit preinc load instrs to use memri addrmodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31757 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
5e14b821cdab1fa42baeb2ed1f663597d8345824 |
15-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the PPC regressions last night git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31752 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCRegisterInfo.cpp
|
f8e07f448a241789ff987179d67fd7c87d844ee8 |
15-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Switch loads over to use memri as the operand instead of a reg/imm operand pair for cleanliness. Add instructions for PPC32 preinc-stores with commented out patterns. More improvement is needed to enable the patterns, but we're getting close. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31749 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstrInfo.td
|
26e552b04c79e5a5cbe139441d9c37770fa507ca |
14-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
group load and store instructions together. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31736 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6a5339ba656805a9cd3bf7d884f99bb87ec84e98 |
14-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Rework PPC64 calls. Now we have a LR8/CTR8 register which the PPC64 calls clobber. This allows LR8 to be save/restored correctly as a 64-bit quantity, instead of handling it as a 32-bit quantity. This unbreaks ppc64 codegen when the code is actually located above the 4G boundary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31734 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCInstr64Bit.td
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.td
|
d10434215da983b58389d2a0880dfcd2cd3b7f35 |
14-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
remove a ton of custom selection logic no longer needed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31733 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ac011bce9e8a69f99f92d46133adbf883a91cb6f |
14-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
lower "X = seteq Y, Z" to '(shr (ctlz (xor Y, Z)), 5)' instead of '(shr (ctlz (sub Y, Z)), 5)'. The use of xor better exposes the operation to bit-twiddling logic in the dag combiner. For example, this: typedef struct { unsigned prefix : 4; unsigned code : 4; unsigned unsigned_p : 4; } tree_common; int foo(tree_common *a, tree_common *b) { return a->code == b->code; } Now compiles to: _foo: lwz r2, 0(r4) lwz r3, 0(r3) xor r2, r3, r2 rlwinm r2, r2, 28, 28, 31 cntlzw r2, r2 srwi r3, r2, 5 blr instead of: _foo: lbz r2, 3(r4) lbz r3, 3(r3) srwi r2, r2, 4 srwi r3, r3, 4 subf r2, r2, r3 cntlzw r2, r2 srwi r3, r2, 5 blr saving a cycle. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31725 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2fe4bf453b433cfe7113e282a59bf0f1e7fb0195 |
14-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
minor tweaks, reject vector preinc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31717 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7ce45783531cfa81bfd7be561ea7e4738e8c6ca8 |
14-Nov-2006 |
Evan Cheng <evan.cheng@apple.com> |
Matches MachineInstr changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31712 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
c9dcf289557017742fb507f985b3bf9f44982031 |
13-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
teach the g5 hazard recognizer about update loads. This fixes Ptrdist/anagram among others. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31708 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
dfc55885e257f0c73eccadf257814dc2221f10fe |
11-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
Make sure stack link is set in 64-bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31690 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
a94a203f346e65d40c4c3fe478c5d8d7a2ff5df6 |
11-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
implement proper PPC64 prolog/epilog codegen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31684 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCRegisterInfo.cpp
|
4bfd1e9b43f589c7a2e2d45baa226496bb46d865 |
11-Nov-2006 |
Jim Laskey <jlaskey@mac.com> |
Running with frame pointers prevented debugging, external probes and potentially some system calls/exception handling from working. TOS must always link to previous frame. This is a short term workaround until alloca scheme is reworked. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31677 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
5b3bbc7cd7bff4275b94003d4bf1fa296c6a10d0 |
11-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
allow the offset of a preinc'd load to be the low-part of a global. This produces this clever code: _millisecs: lis r2, ha16(_Time.1182) lwzu r3, lo16(_Time.1182)(r2) lwz r2, 4(r2) addic r4, r2, 1 addze r3, r3 blr instead of this: _millisecs: lis r2, ha16(_Time.1182) la r3, lo16(_Time.1182)(r2) lwz r2, lo16(_Time.1182)(r2) lwz r3, 4(r3) addic r4, r3, 1 addze r3, r2 blr for: long %millisecs() { %tmp = load long* %Time.1182 ; <long> [#uses=1] %tmp1 = add long %tmp, 1 ; <long> [#uses=1] ret long %tmp1 } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31673 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d181c0120c6c82a6b5370e4d3040b803093e169b |
11-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Mark operands as symbol lo instead of imm32 so that they print lo(x) around globals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31672 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
f6edf4dcf0907427f5e07012b0fe51e43fb09c45 |
11-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
ppc64 doesn't have lwau, don't attempt to form it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31656 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
94e509caeab08edb27849ea9be5dc80e74d95f38 |
11-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
implement preinc support for r+i loads on ppc64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31654 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrFormats.td
|
6a944e2592461acfa17e5b25458e2f5e863159e4 |
10-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
dform 8/9 are identical to dform 1 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31637 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
4eab71497d10622bd209c53f8e56152877ac5638 |
10-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
add an initial cut at preinc loads for ppc32. This is broken for ppc64 (because the 64-bit reg target versions aren't implemented yet), doesn't support r+r addr modes, and doesn't handle stores, but it works otherwise. :) This is disabled unless -enable-ppc-preinc is passed to llc for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31621 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
26ddb506ec08789d33298efb3a5c142dea22e320 |
10-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
add note about ugly codegen with preinc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31617 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
cd633192272c9c433af6f40621b2bf5a38a68f30 |
09-Nov-2006 |
Evan Cheng <evan.cheng@apple.com> |
PPC supports i32 / i64 pre-inc load / store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31599 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
144d8f09e139f691cafadbc17873943ba4c465f3 |
09-Nov-2006 |
Evan Cheng <evan.cheng@apple.com> |
Rename ISD::MemOpAddrMode to ISD::MemIndexedMode git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31595 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
0d53826f3653a789cf1491c3c40a1f4a993992b6 |
08-Nov-2006 |
Evan Cheng <evan.cheng@apple.com> |
Match tblegen changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31571 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
fc5b1ab94959879a91c34aee8859e652a50270d0 |
08-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Refactor all the addressing mode selection stuff into the isel lowering class, where it can be used for preinc formation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31536 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
302bf9c973d8793cc13a066765e97644a530a234 |
08-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
correct the (currently unused) pattern for lwzu. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31535 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6e11295b2354fb8828b15964038a1d60fb3df88a |
07-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
add a note from viterbi git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31506 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
0921365b886186be7636b55c357ee82f9064b89d |
07-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
fix encoding of BLR git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31485 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
6fc40079f374cfeeb63808fd96ea670ae036f809 |
04-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
encode BLR predicate info for the JIT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31450 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCInstrFormats.td
PCInstrInfo.td
|
af53a87052f41664ff5962731d0b64e3b51a5501 |
04-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Go through all kinds of trouble to mark 'blr' as having a predicate operand that takes a register and condition code. Print these pieces of BLR the right way, even though it is currently set to 'always'. Next up: get the JIT encoding right, then enhance branch folding to produce predicated blr for simple examples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31449 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCInstrInfo.td
|
0638b260dcf691752cbff29d5183e89bf01132d1 |
04-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Describe PPC predicates, which are a pair of CR# and condition. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31438 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7049540de55741611545829ad47572432a187771 |
04-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
remove dead vars git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31433 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
4d5c0014b6e1e820e50e306b9306ceb0a133ee0c |
03-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
fix a bug reid noticed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31385 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
|
3ed469ccd7b028a030b550d84b7336d146f5d8fa |
02-Nov-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR786: Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCMachOWriter.cpp
PCRegisterInfo.cpp
|
331d1bc5dfe1be9090e29f9af9579888a63a9a79 |
02-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
Implement the getRegForInlineAsmConstraint method for PPC. With recent sdisel changes, this eliminates a ton of copies around common inline asms. For example: int test2(int Y, int X) { asm("foo %0, %1" : "=r"(X): "r"(X)); return X; } now compiles to: _test2: foo r3, r4 blr instead of: _test2: mr r2, r4 foo r2, r2 mr r3, r2 blr GCC produces: _test2: foo r4, r4 mr r3,r4 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31367 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
dba1aeedd8179114a45be655b985455218d20806 |
31-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Change the prototype for TargetLowering::isOperandValidForConstraint git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31318 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ab4022f196059745c0ca0780b71a80fa67e896be |
31-Oct-2006 |
Anton Korobeynikov <asl@math.spbu.ru> |
1. Clean up code due to changes in SwitchTo*Section(2) 2. Added partial debug support for mingw\cygwin targets (the same as Linux\ELF). Please note, that currently mingw\cygwin uses 'stabs' format for storing debug info by default, thus many (runtime) libraries has this information included. These formats shouldn't be mixed in one binary ('stabs' & 'DWARF'), otherwise binutils tools will be confused. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31311 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
1d75400e2ed5704c4c156782a94ee139d638bb1b |
31-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
fix miscompilation of llvm.isunordered, where we branched on the opposite condition. This fixes miscompilation of Olden/bh and many others. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31301 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c35497fc2a8b984dbacede5b75b7be74c6756948 |
30-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
All targets expand BR_JT for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31294 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ef13982aa7f3e57e82cd48370e79033dff0da295 |
28-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
implement the BlockHasNoFallThrough hook git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31264 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
31b6ddad31689b996c94dcde5f32fb2585df4af6 |
28-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
Doh. Must check if GV is constant first before putting it in .cstring. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31253 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
985384c41de6c061a76a4723ecc101a505575606 |
28-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
don't dist internal readme's git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31246 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
7a498cbc606e8070a3ca1448c6e14a270d4772fe |
28-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
this doesn't occur any more in mason git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31236 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
4ccf63d8cf2a38fe74556b46dc8e013cc9d6a488 |
28-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
the code in question is now: cmpw cr0, r7, r3 ble cr0, LBB1_5 ;bb25 LBB1_8: ;bb17 cmpw cr0, r8, r5 bgt cr0, LBB1_2 ;bb which is just as good as crnand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31235 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
80aa9a122fa8fab00b2431314cf57680f6807ad7 |
26-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
Place cstrings in .cstring section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31207 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
|
f9c197e022521a83f8876890b4241fc23e63572c |
24-Oct-2006 |
Devang Patel <dpatel@apple.com> |
Move getPreferredAlignmentLog from AsmPrinter to TargetData git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31171 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e90c53756efa19d1068f416ad8932eff8241e894 |
24-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Add intrinsics for the rest of the DCB* instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31148 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7c4fe259f8bfeae542cfef25c1f1e9b1ff25a39b |
21-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Implement support for branch reversal, fix a bug in branch analysis. This provides stuff like: cmpw cr0, r15, r29 mr r14, r15 - bge cr0, LBB3_111 ;bb656 - b LBB3_90 ;bb501 + blt cr0, LBB3_90 ;bb501 LBB3_111: ;bb656 lwz r18, 68(r1) which is particularly good for dispatch group formation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31101 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
879d09cf130f3760a08865913c04d9ff328fad5f |
21-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Simplify code, no functionality change git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31097 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
54108068b71a7dbc48f4ebf1b2d7d87ca541070a |
21-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
implement support for inserting a cond branch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31096 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
10da9575740d9515c70a171a7c40405302d62f4a |
18-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
set the ppc64 stack pointer right, dynamic alloca now works for ppc64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31028 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
56a752e00ff6fb078fd0466d9be438f7b8a1dd79 |
18-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Expand alloca for ppc64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31027 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ae1dc403274d3a64bcee31f15e2d25e4b7178811 |
18-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
expose DWARF_LABEL opcode# so the branch folder can update debug info properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31024 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
2dc7723474c54efcbcac6265dad0a7271902f1a5 |
17-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
add support for inserting an uncond branch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31003 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
5059dda6bd88f60beb925b9c64a458c93af78d0e |
17-Oct-2006 |
Jim Laskey <jlaskey@mac.com> |
Use S_debug for dwarf info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30994 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
c50e2bcdf7bff1f9681ab80e52691f274950fab5 |
13-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
implement branch inspection/modification methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30946 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
8b2794aeff151be8cdbd44786c1d0f94f8f2e427 |
13-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30945 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
6a250ecc99c76dcb07e6431c5cb99e495895ad82 |
13-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
add note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30937 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
594f4c69e6b67f9af648adfe3d05c2b72b313795 |
13-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
set isBarrier correctly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30936 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
eea52d3297c4c59e62b10477a3ebd1895430b508 |
13-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Correctly handle instruction separators. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30935 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
1e5e97462b09f2dc6b6105d403c090a6dda59232 |
12-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
mark adjcallstack up/down as clobbering and using the SP git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30908 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
af9db75943c11eebd642c1645d3c3f4003fe37e3 |
11-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
Add properties to ComplexPattern. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30891 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
466685d41a9ea4905b9486fea38e83802e46f196 |
09-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30844 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
786225adf09e606c795ef68a1f789c12f37869f2 |
06-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
Make use of getStore(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30759 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a66ba5f70ba15370fd68a84ccaf220d60f7d1b95 |
05-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Don't bother setting JumpTableTextSection, it is about to disappear git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30745 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
1da31ee472b9615d7329c656e2cc17c419ed7c95 |
05-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Pass the MachineFunction into EmitJumpTableInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30742 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
9b7ce7da820ada2cdada185de9c9aa94298e485e |
05-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Move getSectionForFunction to AsmPrinter, change it to return a string. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30735 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
b56dcc453e1bd3fc75e4393b3b1bd1b07d86903e |
05-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
implement DarwinTargetAsmInfo::getSectionForFunction, use it when outputting function bodies git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30733 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
fea13d33e50a9d6777237e76bb59b3be5422bdbc |
05-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
emit jump table before debug info git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30731 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
37dfa02788711b72618497ce5acf39596e3a0211 |
05-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Always emit the jump table after the function so it's part of the same 'atom' as the function body. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30730 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
c548428c5d7328592f4db6f6cd815af18b3152a3 |
04-Oct-2006 |
Evan Cheng <evan.cheng@apple.com> |
Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add an extra operand to LOADX to specify the exact value extension type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30714 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7be164c0eaa6c1ab2e69262036e54870176c10a4 |
29-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
wrap long lines git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30662 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
7c395ad06f0eaaffa638da58899b51daba2041a4 |
28-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Shift amounts are always 32-bits, even in 64-bit mode. This fixes CodeGen/PowerPC/2006-09-28-shift_64.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30652 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
546896661416be9321f22136c73a1656b3fe407b |
27-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Use abstract private/comment directives, to increase portability to ppc/linux git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30621 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a53115b4c254885fa19bbedf96d8d491204b86e8 |
26-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Compile: int x __attribute__((used)); to: .data .comm _x,4 ; 'x' .no_dead_strip _x on both x86 and ppc darwin targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30605 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
f42f133938545d4f5c249bcfef63db772ce8e942 |
22-Sep-2006 |
Nate Begeman <natebegeman@mac.com> |
Fold AND and ROTL more often git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30577 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
EADME.txt
|
4da1c82f724adba2832f79b3b49fc96c1467076d |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
The DarwinAsmPrinter need not check for isDarwin. createPPCAsmPrinterPass should create the right asmprinter subclass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30542 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCTargetMachine.cpp
|
dadceedbdb9ef642c49283b632dcfefe48ee4cf4 |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Wrap some darwin'isms with isDarwin checks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30541 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f142713a30796e9fc625b795cb5df2fe24b40b51 |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
item done git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30518 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
ac924c8248c66ed643a342e8ac902ebe6148c4b8 |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
This is already done git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30512 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
711762497c27357adc1edf8d4237c2770fa303bb |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Improve PPC64 equality comparisons like PPC32 comparisons. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30510 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
3836dbd3bde1100c1df847a582784cf83d18daf6 |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Two improvements: 1. Codegen this comparison: if (X == 0x8000) as: cmplwi cr0, r3, 32768 bne cr0, LBB1_2 ;cond_next instead of: lis r2, 0 ori r2, r2, 32768 cmpw cr0, r3, r2 bne cr0, LBB1_2 ;cond_next 2. Codegen this comparison: if (X == 0x12345678) as: xoris r2, r3, 4660 cmplwi cr0, r2, 22136 bne cr0, LBB1_2 ;cond_next instead of: lis r2, 4660 ori r2, r2, 22136 cmpw cr0, r3, r2 bne cr0, LBB1_2 ;cond_next git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30509 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
EADME.txt
|
cc96ac3a7d1513e48c452f11d39ff00ecc8820fe |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Add a note that we should match rlwnm better git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30508 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
3fe6c1d38901929d65d6d8a61bd9b1594af0ffdd |
20-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Legalize is no longer limited to cleverness with just constant shift amounts. Allow it to be clever when possible and fall back to the gross code when needed. This allows us to compile: long long foo1(long long X, int C) { return X << (C|32); } long long foo2(long long X, int C) { return X << (C&~32); } to: _foo1: rlwinm r2, r5, 0, 27, 31 slw r3, r4, r2 li r4, 0 blr .globl _foo2 .align 4 _foo2: rlwinm r2, r5, 0, 27, 25 subfic r5, r2, 32 slw r3, r3, r2 srw r5, r4, r5 or r3, r3, r5 slw r4, r4, r2 blr instead of: _foo1: ori r2, r5, 32 subfic r5, r2, 32 addi r6, r2, -32 srw r5, r4, r5 slw r3, r3, r2 slw r6, r4, r6 or r3, r3, r5 slw r4, r4, r2 or r3, r3, r6 blr .globl _foo2 .align 4 _foo2: rlwinm r2, r5, 0, 27, 25 subfic r5, r2, 32 addi r6, r2, -32 srw r5, r4, r5 slw r3, r3, r2 slw r6, r4, r6 or r3, r3, r5 slw r4, r4, r2 or r3, r3, r6 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30507 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
cf9d0acfef1503439c231f2717b3d4b3afce67e1 |
19-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Fold the PPCISD shifts when presented with 0 inputs. This occurs for code like: long long test(long long X, int Y) { return 1ULL << Y; } long long test2(long long X, int Y) { return -1LL << Y; } which we used to compile to: _test: li r2, 1 subfic r3, r5, 32 li r4, 0 addi r6, r5, -32 srw r3, r2, r3 slw r4, r4, r5 slw r6, r2, r6 or r3, r4, r3 slw r4, r2, r5 or r3, r3, r6 blr _test2: li r2, -1 subfic r3, r5, 32 addi r6, r5, -32 srw r3, r2, r3 slw r4, r2, r5 slw r2, r2, r6 or r3, r4, r3 or r3, r3, r2 blr Now we produce: _test: li r2, 1 addi r3, r5, -32 subfic r4, r5, 32 slw r3, r2, r3 srw r4, r2, r4 or r3, r4, r3 slw r4, r2, r5 blr _test2: li r2, -1 subfic r3, r5, 32 addi r6, r5, -32 srw r3, r2, r3 slw r4, r2, r5 slw r2, r2, r6 or r3, r4, r3 or r3, r3, r2 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30479 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f0613e1e7cc8aae41350fb0b983ce5b43115b93a |
14-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30377 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
c356a572e34131bf767f35e3fecefae36fab744a |
12-Sep-2006 |
Evan Cheng <evan.cheng@apple.com> |
Reflects MachineConstantPoolEntry changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30279 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
019f851ab26511c089e41b61901f743e75f90714 |
11-Sep-2006 |
Nate Begeman <natebegeman@mac.com> |
Behold, more work on relocations. Things are looking pretty good now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30240 91177308-0d34-0410-b5e6-96231b3b80d8
PCMachOWriter.cpp
PCRelocations.h
|
94be248dbb2d2a44e8f4d47f161b93704d33d279 |
09-Sep-2006 |
Nate Begeman <natebegeman@mac.com> |
First pass at supporting relocations. Relocations are written correctly to the file now, however the relocated address is currently wrong. Fixing that will require some deep pondering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30207 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
PCMachOWriter.cpp
PCRelocations.h
|
f45c25f7207e46592c577c549c2e215840c3e647 |
08-Sep-2006 |
Jim Laskey <jlaskey@mac.com> |
Missing tab git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30188 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
|
6fe6084ebfa583fbbfbb971fca1d90de79ddb33f |
08-Sep-2006 |
Nate Begeman <natebegeman@mac.com> |
We actually do support object file writing, so don't return true (error) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30173 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
fde1b3bb2f15b74c713d98a79fcddaff1ac00dd1 |
08-Sep-2006 |
Jim Laskey <jlaskey@mac.com> |
1. Remove condition on delete. 2. Protect and outline createTargetAsmInfo. 3. Misc. kruft. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30169 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
a0f3d17daac73c9c71aad497b298cbe82848f726 |
08-Sep-2006 |
Jim Laskey <jlaskey@mac.com> |
Make target asm info a property of the target machine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30162 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetMachine.h
|
8e8de8f7765a08ab3aa4f48b302cf19ccb9740e2 |
08-Sep-2006 |
Jim Laskey <jlaskey@mac.com> |
Break out target asm info into separate files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30161 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetAsmInfo.cpp
PCTargetAsmInfo.h
|
563321a2582851c653d0863e8e0bba3d483734f9 |
06-Sep-2006 |
Jim Laskey <jlaskey@mac.com> |
Separate target specific asm properties from the asm printers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30126 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCTargetMachine.cpp
|
09e460662a8d7328da1b938d5581a6ef3740b51d |
05-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Completely eliminate def&use operands. Now a register operand is EITHER a def operand or a use operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30109 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1911fd4f85aebcd4d7b8f27313c5a363eebf49cb |
04-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Completely rearchitect the interface between targets and the pass manager. This pass: 1. Splits TargetMachine into TargetMachine (generic targets, can be implemented any way, like the CBE) and LLVMTargetMachine (subclass of TM that is used by things using libcodegen and other support). 2. Instead of having each target fully populate the passmgr for file or JIT output, move all this to common code, and give targets hooks they can implement. 3. Commonalize the target population stuff between file emission and JIT emission. 4. All (native code) codegen stuff now happens in a FunctionPassManager, which paves the way for "fast -O0" stuff in the CFE later, and now LLC could lazily stream .bc files from disk to use less memory. 5. There are now many fewer #includes and the targets don't depend on the scalar xforms or libanalysis anymore (but codegen does). 6. Changing common code generator pass ordering stuff no longer requires touching all targets. 7. The JIT now has the option of "-fast" codegen or normal optimized codegen, which is now orthogonal to the fact that JIT'ing is being done. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30081 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCJITInfo.h
PCMachOWriter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
c4fa386471cb1ff9d1f2acc24e2d0682e5a17b1b |
03-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Simplify target construction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30070 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
ce50a165c784d71abf1b2f981be18f867787d972 |
29-Aug-2006 |
Jim Laskey <jlaskey@mac.com> |
Handle callee saved registers in dwarf frame info (lead up to exception handling.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29954 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
06abd22b1ad203103c1a07a030ebc5c1c4cfbb14 |
29-Aug-2006 |
Nate Begeman <natebegeman@mac.com> |
Make ppc64 jit kinda work right. About 2/3 of Olden passes with this, there are clearly some encoding bugs lurking in there somewhere. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29949 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
PCJITInfo.h
PCTargetMachine.cpp
|
3a9ec2463ddeba0820f284e2952bd6919cd5e080 |
28-Aug-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR387: Close out this long standing bug by removing the remaining overloaded virtual functions in LLVM. The -Woverloaded-virtual option is now turned on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29934 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
a4f0b3a084d120cfc5b5bb06f64b222f5cb72740 |
27-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29911 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCMachOWriter.cpp
|
0b828e08f94459ac0046b864871d92fed4aaef7c |
27-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
Do not use getTargetNode() and SelectNodeTo() which takes more than 3 SDOperand arguments. Use the variants which take an array and number instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29907 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
95514bae7309ffacfc0a79b267159dcfde2b7720 |
26-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
SelectNodeTo now returns a SDNode*. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29901 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
9ade218533429146731213eacb7e12060e65ff58 |
26-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
Select() no longer require Result operand by reference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29898 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6da2f3268d12a9e64f2635dbb94b63e1c4142f59 |
26-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
Match tblgen changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29895 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
1822ffbab7b2d9051ff57c0d8d7b9c1c2c086e2b |
26-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
Add a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29889 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
b9ca92661cf145bfb3bd9705e5629fc5f411a42f |
25-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
Encode pc-relative conditional branch offset as pc+(num of bytes / 4). The asm printer will print it as offset*4. e.g. bne cr0, $+8. The PPC code emitter was expecting the offset to be number of instructions, not number of bytes. This fixes a whole bunch of JIT failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29885 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
|
4c2c9031acd1314440cdd0952182fa39b4efe90d |
25-Aug-2006 |
Jim Laskey <jlaskey@mac.com> |
Fix some comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29880 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
eb883af3903286ac20f5bbf549c555c9ef961e14 |
23-Aug-2006 |
Nate Begeman <natebegeman@mac.com> |
Initial checkin of the Mach-O emitter. There's plenty of fixmes, but it does emit linkable .o files in very simple cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29850 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCCodeEmitter.cpp
PCMachOWriter.cpp
PCTargetMachine.cpp
|
5ea64fd9eb0027ad20a66ea29211eef79d8842a0 |
18-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Constify some methods. Patch provided by Anton Vayvod, thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29756 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
ccbe2ec890ca41b8fd8c4e8ef0f7bcb42c2f69ec |
16-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Fix PowerPC/2006-08-15-SelectionCrash.ll and simplify selection code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29715 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
52a51e38dc312aa262b0d771419afe1785f3cb22 |
12-Aug-2006 |
Nate Begeman <natebegeman@mac.com> |
Emit .set directives for jump table entries when possible, which reduces the number of relocations in object files, shrinkifying them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29650 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f6e190fae02174d465ae1f9000192269a5978c73 |
12-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a bug in a recent refactoring that broke a bunch of stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29649 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e219945348207453a2d5e21021ba3211f8f94e25 |
11-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Eliminate use of getNode that takes a vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29614 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
79e490aa23d29c20471163b28faf916af610b921 |
11-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Convert vectors to fixed sized arrays and smallvectors. Eliminate use of getNode that takes a vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29609 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
325f0a129e57ff5d1842edd0b4b7473a4d6b47f6 |
11-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Fix miscompilation of float vector returns. Compile code to this: _func: vsldoi v2, v3, v2, 12 vsldoi v2, v2, v2, 4 blr instead of: _func: vsldoi v2, v3, v2, 12 vsldoi v2, v2, v2, 4 *** vor f1, v2, v2 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29607 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
64a752f7c7cf160f2887d0a16d5922359832c9c2 |
11-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
Match tablegen changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29604 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
bb7b844bec6c53ac29ac4c50d7b3963e7f193efb |
11-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
CALLSEQ_* produces chain even if that's not needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29603 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
bd564bfc63163e31f320c3da9749db70992dc35e |
08-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Start eliminating temporary vectors used to create DAG nodes. Instead, pass in the start of an array and a count of operands where applicable. In many cases, the number of operands is known, so this static array can be allocated on the stack, avoiding the heap. In many other cases, a SmallVector can be used, which has the same benefit in the common cases. I updated a lot of code calling getNode that takes a vector, but ran out of time. The rest of the code should be updated, and these methods should be removed. We should also do the same thing to eliminate the methods that take a vector of MVT::ValueTypes. It would be extra nice to convert the dagiselemitter to avoid creating vectors for operands when calling getTargetNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29566 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2ef88a09b71f458ad415b35a1fb431c3d15d7eb1 |
08-Aug-2006 |
Evan Cheng <evan.cheng@apple.com> |
Match tablegen isel changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29549 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
0d72a20630ebde26c302518077a28c9faffbd747 |
28-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Fix some ppc64 issues with vector code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29384 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2641cad180e94c0d26630d4ed455352f19be3d3e |
28-Jul-2006 |
Evan Cheng <evan.cheng@apple.com> |
Remove InFlightSet hack. No longer needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29373 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f141cc46faf6f0525f0baa10b6a6c976301874a5 |
27-Jul-2006 |
Evan Cheng <evan.cheng@apple.com> |
Resolve BB references with relocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29351 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
PCJITInfo.h
PCRelocations.h
|
7e6e44139429d1b8003426b29f14126b89591262 |
27-Jul-2006 |
Evan Cheng <evan.cheng@apple.com> |
synchronizeICache removeed from TargetJITInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29348 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
PCJITInfo.h
|
33e9ad96c8506313cc263893e9915d0a3457fc82 |
27-Jul-2006 |
Evan Cheng <evan.cheng@apple.com> |
Remove NodeDepth git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29338 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2f1ae88445c696a9b9d61e14747ba721190cdc99 |
27-Jul-2006 |
Nate Begeman <natebegeman@mac.com> |
Support jump tables when in PIC relocation model git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29318 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
35d86fef1f1fc5845366c7c36803a6a3334d8a2e |
26-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Rename RelocModel::PIC to PIC_, to avoid conflicts with -DPIC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29307 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelLowering.cpp
PCTargetMachine.cpp
|
55fc28076fa48723bd170e51638b3b5974ca0fa1 |
25-Jul-2006 |
Evan Cheng <evan.cheng@apple.com> |
- Refactor the code that resolve basic block references to a TargetJITInfo method. - Added synchronizeICache() to TargetJITInfo. It is called after each block of code is emitted to flush the icache. This ensures correct execution on targets that have separate dcache and icache. - Added PPC / Mac OS X specific code to do icache flushing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29276 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
PCJITInfo.h
|
2a785500e03e22dd91824327fbf4b1f6d29dbf53 |
19-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
bswapped load/store instructions are only availble in indexed addressing form. As such, use xoaddr (indexed only), not xaddr for address selection. This fixes CodeGen/PowerPC/2006-07-19-stwbrx-crash.ll, a crash compiling lencod. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29208 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
303c695529f58ec12f7c31a6406c560cd23cc4f2 |
18-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Make the implicit def instructions look like other instrs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29174 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrAltivec.td
PCInstrInfo.td
|
ba4733d901b1c2b994f66707657342b8c81c92bc |
15-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Remove what little AIX support we have. It has never been tested and isn't complete. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29156 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
|
518f9c7ad0566a69886a4db1b76e995df22bca0f |
14-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Add missing PPC64 extload/truncstores git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29140 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCInstr64Bit.td
|
1eeedaea59c7d6d9f231989c81013c2c0ea10d2a |
14-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29139 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
a606b70cf5167e37b92a2b41a0fc0e280ac6aaa3 |
13-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Another fix in the rotate encodings, needed when the first two operands are not the same. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29136 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
45c04fc676027c2db5e20939c487dea54b3db151 |
13-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Print negative immediates as negative values instead of large constants when using the immshifted addressing mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29130 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b2c0650ad363b7e7621cb0e1dffe89316e74166e |
13-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Fix encoding of rotates, such as rldicl git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29128 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
3bc8a765a98015e6d55510b6ea6e387cbfd793cd |
12-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Implement PPC64 relocations types git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29125 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
PCRelocations.h
|
3d6721a4a1cf9e9a27d05b268f86b7a9ce663d6f |
12-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
An overaggressive #ifdef allows a function to fall off the bottom of the function instead of returning a value. This sometimes allowed the ppc32 jit to be used in 64-bit mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29123 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
be6a039ad4c6314176b0834c341a25504fded32e |
11-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
The PPC64 JIT needs register numbers to encode instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29114 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
e37fe9b3a1cadceb42ac27fa0718f5a10ea2f0e6 |
11-Jul-2006 |
Jim Laskey <jlaskey@mac.com> |
Ensure that dump calls that are associated with asserts are removed from non-debug build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29105 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
804e06704261f233111913a047ef7f7dec1b8725 |
11-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
In 64-bit mode, 64-bit GPRs are callee saved, not 32-bit ones. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29096 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
d9989384592a3bd9dd374470a723ca8303071a2d |
10-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Implement Regression/CodeGen/PowerPC/bswap-load-store.ll by folding bswaps into i16/i32 load/stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29089 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
EADME.txt
|
90ac1c07759460e4b07f9ffe0e44fec219eddfdf |
06-Jul-2006 |
Chris Lattner <sabre@nondot.org> |
Undisable ppc64 jit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29011 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
9525528a7dc5462b6374d38c81ba5c07b11741fe |
29-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Use hidden visibility to make symbols in an anonymous namespace get dropped. This shrinks libllvmgcc.dylib another 67K git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28975 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
|
2a41a98fb70923e2d6780220eb225ac0e8b4ff36 |
29-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
shrink libllvmgcc.dylib another 25K git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28971 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
|
cccef1c6fffa292c227a289d447f6b848ab56c62 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Don't match 64-bit bitfield inserts into rlwimi's. todo add rldimi. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28944 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstr64Bit.td
|
6b76b96c69334f3b6a2a895ff810ed047b4b75e5 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Fix ppc64 jump tables git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28941 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
9f029a61e91b83c89b221bfce75d16a5442340c7 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Print stubs for external globals right. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28936 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f89437d049b4a3dff2b04e2635b45068db0a6b34 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Implement 64-bit select, bswap, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28935 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e4172be9209a81a41cbea97b9307e368e7e3ea4c |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add a pattern for i64 sra. Print 8-byte units with a space between the .quad and the data git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28934 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstr64Bit.td
PCInstrFormats.td
|
7ffa9abdadd7e51726240b6a8352abda8edde869 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Fix rewriting frame offsets with ixaddr instructions, which implicitly shift the offset two bits to the left. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28933 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
5f9faeaa78a79e03df6bb32e9b3c779e554fe8a2 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
PPC doesn't have bit converts to/from i64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28932 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2e6b77d8035459c17d7f0b7055e579a0d9090bdd |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add 64-bit MTCTR so that indirect calls work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28931 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
1fd81107f3b0d8c5cea1c4f66f7bddbc61e76a19 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Fix an incorrect store pattern. This fixes em3d. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28930 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
563ecfbf8207ce941ddc0ee60c65378c6b9c572f |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Implement 64-bit undef, sub, shl/shr, srem/urem git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28929 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
7b0c58cd257d2197bc178818bc081c72aae57e46 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Use i32 for shift amounts instead of i64. This gets bisort working. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28927 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
00659b17817b3b5af4d9e9b93fed2a91fe27b019 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add zextload from i32 -> i64, with this, perimeter works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28926 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
7e097e463314baa3c964a977408aa51ecabe7796 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Print darwin stub stuff correctly in 64-bit mode. With this, treeadd works in ppc64 mode! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28923 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
529c233498c59a544b26b277f8fe30e6a80cc6f8 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Fix variable shadowing issue git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28922 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c08f902bb7bfcc8a97a4c7c9eb9187882dc2d6d7 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Implement a bunch of 64-bit cleanliness work. With this, treeadd builds (but doesn't work right). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28921 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
041e9d345f57249e5d9fad21514778c0ba5633b6 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Rearrange compares, add ADDI8, add sext from 32-to-64 bit register git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28920 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
c91a4757b60094ade6fc82afde7f94bbe1988a7d |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Improve PPC64 calling convention support git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28919 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
924c576e9f7a94153e710e562016fec68fa6d33b |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Remove two more definitions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28918 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7b4e478768326b4f67379c1f8a83e4837ad46450 |
27-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
remove two unused instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28917 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
89d67faf30ed1a8b5364f53c9a0f5e07a9a0719c |
23-Jun-2006 |
Jim Laskey <jlaskey@mac.com> |
Add and sort "sections" in debug lines. This always stepping through code in sections other than ".text", including weak sections like ctors and dtors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28909 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
ef957105833fad1baadabbeb48632eb0d51f9262 |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Correct returns of 64-bit values, though they seemed to work before... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28892 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7f7b346e3d596ccd3d8b5ff1ba39b40a9b90900e |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Make these predicates correct in 64-bit mode too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28890 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
b410dc99774d52b4491750dab10b91cca1d661d8 |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Rename OR4 -> OR. Move some PPC64-specific stuff to the 64-bit file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28889 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstr64Bit.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
|
96dc5e5f6d2bdad7b24f191998e324888afacf83 |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
remove unused flag git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28888 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
f2c5bca165fa654ad46f2b232773b2116b734b63 |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
add some logical ops git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28887 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
4b25b404860c2e4a2845adfb9d78e46c303ac328 |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
remove some unused patterns git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28886 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
3ae5eef0278db0cff59f714ab4b2124ec31b942e |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add some more immediate patterns. This allows us to compile: void test6() { Y = 0xABCD0123BCDE4567; } into: _test6: lis r2, -21555 lis r3, ha16(_Y) ori r2, r2, 291 rldicr r2, r2, 32, 31 oris r2, r2, 48350 ori r2, r2, 17767 std r2, lo16(_Y)(r3) blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28885 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
eded521a17fa2b39f6b1f9af5943036312bb3149 |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Instead of li/xoris use li/oris. Note that this doesn't work if bit 15 is set, so disable the pattern in that case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28884 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
0ea70b219a8408a25eaa522cbfc7e09f6dbc9d87 |
21-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add some 64-bit logical ops. Split imm16Shifted into a sext/zext form for 64-bit support. Add some patterns for immediate formation. For example, we now compile this: static unsigned long long Y; void test3() { Y = 0xF0F00F00; } into: _test3: li r2, 3840 lis r3, ha16(_Y) xoris r2, r2, 61680 std r2, lo16(_Y)(r3) blr GCC produces: _test3: li r0,0 lis r2,ha16(_Y) ori r0,r0,61680 sldi r0,r0,16 ori r0,r0,3840 std r0,lo16(_Y)(r2) blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28883 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
dd58343857eea0ecc90b2601d7908e054cd4f667 |
20-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
64-bit bugfix: 0xFFFF0000 cannot be formed with a single lis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28880 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
f27bb6de10b8a1b4b2e52b137ffda68c6ba0b9f4 |
20-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add some patterns for globals, so we can now compile this: static unsigned long long X, Y; void test1() { X = Y; } into: _test1: lis r2, ha16(_Y) lis r3, ha16(_X) ld r2, lo16(_Y)(r2) std r2, lo16(_X)(r3) blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28879 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
4e85e64007e8561558e7d3e05a59cbfcc48d5bcc |
20-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Remove some now-unneeded casts from instruction patterns. With the casts removed, tblgen produces identical output to with them in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28867 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrInfo.td
|
047854f2b7a3f070f1bf4e5c24be2fc597bc544e |
20-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add some patterns for ppc64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28866 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
b1d26f66658cff3ceb7d44a72fbc8c8e975532f9 |
17-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Implement the getPointerRegClass method, which is required for the ptr_rc magic to work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28847 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCTargetMachine.cpp
|
a24b7618f8a64976a5846c97261b2b5fb92da23e |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Upgrade some load/store instructions to use the proper addressing mode stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28841 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
|
66d7ebb7773c0521019eb578d9898c35519d9d5e |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
In 64-bit mode, addr mode operands use G8RC instead of GPRC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28840 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
059ca0f5b712e5460dcbccfa802b7adb3bccbac9 |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
fix some assumptions that pointers can only be 32-bits. With this, we can now compile: static unsigned long X; void test1() { X = 0; } into: _test1: lis r2, ha16(_X) li r3, 0 stw r3, lo16(_X)(r2) blr Totally amazing :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28839 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstr64Bit.td
PCInstrInfo.td
|
956f43c3109f207bb91ef5f5a3cb12303ed28f8c |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Split 64-bit instructions out into a separate .td file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28838 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstr64Bit.td
PCInstrInfo.td
|
8fa05dac3962202eeb6de434aeb9f720e384345b |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Force 64-bit register availability in 64-bit mode. For real. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28837 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
af89fa609bce1004c9ea9737d9fdb32f4224ef1c |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Remove the -darwin and -aix llc options, inferring darwinism and aixism from the target triple & subtarget info. woo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28835 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCRegisterInfo.td
PCSubtarget.cpp
PCTargetMachine.cpp
|
1790d44d0dbe3412e012be5e43b89e67064bdb86 |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Don't pass target name into TargetData anymore, it is never used or needed. Remove explicit casts to std::string now that there is no overload resolution issues in the TargetData ctors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28830 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
7c1fb5f08c7c1e9550b7eb2d8d32c93648a6d08e |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Document the subtarget features better, make sure that 64-bit mode, 64-bit support, and 64-bit register use are all consistent with each other. Add a new "IsPPC" feature, to distinguish ppc32 vs ppc64 targets, use this to configure TargetData differently. This not makes ppc64 blow up on lots of stuff :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28825 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
a7a5854f1c3710f4bedf069be4771b81e449f2a3 |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Rename some subtarget features. A CPU now can *have* 64-bit instructions, can in 32-bit mode we can choose to optionally *use* 64-bit registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28824 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCISelLowering.cpp
PCSubtarget.cpp
PCSubtarget.h
|
94de9a8951339536af1cc0ca947bc1005eb8f5f3 |
16-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
First baby step towards ppc64 support. This adds a new -march=ppc64 backend that is currently just like ppc32 :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28813 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
|
f8a01a966120a041fe96300271573a8bf5a3e668 |
15-Jun-2006 |
Jim Laskey <jlaskey@mac.com> |
1. Support standard dwarf format (was bootstrapping in Apple format.) 2. Add vector support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28807 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a7dc4a59cbb19cfb5dbc0f9ca500f26dddfbb7f6 |
15-Jun-2006 |
Evan Cheng <evan.cheng@apple.com> |
Type of extract_element index operand should be iPTR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28797 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
014f98c7e5cbf41104ab9a86e32b8ce869982934 |
14-Jun-2006 |
Jim Laskey <jlaskey@mac.com> |
Place dwarf headers at earliest possible point. Well behaved when skipping functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28781 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e67304fb7880bd55d194d68b827c0eb2366c0a91 |
13-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Gaar! Don't use r11 for CR save/restore, use R0. R11 can be register allocated, thus live across the save/reload. This fixes llc-beta /MultiSource/Applications/spiff/spiff llc-beta /MultiSource/Benchmarks/sim/sim: llc-beta /MultiSource/Benchmarks/Ptrdist/bc/bc llc-beta /MultiSource/Benchmarks/McCat/12-IOtest/iotest: llc-beta /MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow llc-beta /MultiSource/Benchmarks/Fhourstones-3.1/fhourstones3.1 llc-beta /MultiSource/Benchmarks/mediabench/adpcm/rawdaudio/rawdaudio llc-beta /MultiSource/Benchmarks/mediabench/adpcm/rawcaudio/rawcaudio llc-beta /MultiSource/Benchmarks/mediabench/g721/g721encode/encode llc-beta /MultiSource/Benchmarks/mediabench/jpeg/jpeg-6a/cjpeg and probably others, with -regalloc=local. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28761 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
b47e0897a090d31d952957ba873db6c1e487b50e |
12-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Fix spilling and reloading of CR regs to reload the right values. This fixes Olden/power (and probably others) with -regalloc=local. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28760 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
cf0063171995c97ee52dfdf5d6bbbe090d2f5f03 |
10-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Work around a nasty tblgen bug where it doesn't add operands for varargs nodes correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28745 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
4a45abf66ee33ce3b8404ace90c4bfefda7105f8 |
10-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a problem exposed by the local allocator. CALL instructions are not marked as using incoming argument registers, so the local allocator would clobber them between their set and use. To fix this, we give the call instructions a variable number of uses in the CALL MachineInstr itself, so live variables understands the live ranges of these register arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28744 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
001db453f5df586af9625d68e715950106e4f961 |
06-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Add PowerPC intrinsics to support dcbz[l] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28696 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
08a9a985dc7881cad0321ae95147f0a4b04647a8 |
01-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Silence -pedantic warning git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28633 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
7b053509063f21aa0bf6ffc82b274e8cf6b0e182 |
30-May-2006 |
Chris Lattner <sabre@nondot.org> |
Always reserve space for 8 spilled GPRs. GCC apparently assumes that this space will be available, even if the callee isn't varargs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28571 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6848be1a27e08a89dcd4dd69f746471a608012cd |
27-May-2006 |
Evan Cheng <evan.cheng@apple.com> |
Change RET node to include signness information of the return values. i.e. RET chain, value1, sign1, value2, sign2, ... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28510 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8e2a04e21dc8299bdaba4321a6e690712dab9617 |
25-May-2006 |
Chris Lattner <sabre@nondot.org> |
Fix build failure of povray git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28473 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
5d634ce466173f6fde49470fad125eb09532caeb |
25-May-2006 |
Chris Lattner <sabre@nondot.org> |
Fix Benchmarks/MallocBench/cfrac git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28471 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
4360bdcf1fc92a0bd29cc1a8ec1d2338def29cfc |
25-May-2006 |
Evan Cheng <evan.cheng@apple.com> |
CALL node change (arg / sign pairs instead of just arguments). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28462 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6a3d5a62f09d4093468525a07a0143cae0e9df41 |
25-May-2006 |
Evan Cheng <evan.cheng@apple.com> |
Assert if InflightSet is not cleared after instruction selecting a BB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28459 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
afe358e7d46da9d29ba02fbbf81bdfb4ac4a4520 |
24-May-2006 |
Evan Cheng <evan.cheng@apple.com> |
Clear HandleMap and ReplaceMap after instruction selection. Or it may cause non-deterministic behavior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28454 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d74ea2bbd8bb630331f35ead42d385249bd42af8 |
24-May-2006 |
Chris Lattner <sabre@nondot.org> |
Patches to make the LLVM sources more -pedantic clean. Patch provided by Anton Korobeynikov! This is a step towards closing PR786. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28447 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.h
PCJITInfo.cpp
PCRelocations.h
|
2ef5e89dc964ffb6a84d1e1a2a29c429dc4aa715 |
24-May-2006 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/Generic/vector.ll:test_div with altivec. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28445 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
573401237578297310a6be764805b8dfad702938 |
24-May-2006 |
Chris Lattner <sabre@nondot.org> |
Handle SETO* like we handle SET*, restoring behavior after Evan's setcc change. This fixes PowerPC/fnegsel.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28443 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bcd8a8264e35e147e23c219f0435c9277e24ec66 |
21-May-2006 |
Owen Anderson <resistor@mac.com> |
Make TargetData strings less redundant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28423 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
d988b32abad0634df07c18629e899f256935fde7 |
20-May-2006 |
Owen Anderson <resistor@mac.com> |
Make all of the TargetMachine subclasses use the new string TargetData methods. This is part of the on-going work on PR 761. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28414 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
0f3ac8d8d4ce23eb2ae6f9d850f389250874eea5 |
18-May-2006 |
Evan Cheng <evan.cheng@apple.com> |
getCalleeSaveRegs and getCalleeSaveRegClasses are no long TableGen'd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28378 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCRegisterInfo.cpp
PCRegisterInfo.h
|
c01d497255f0d344163178c5f827e8b73f6f04d6 |
17-May-2006 |
Evan Cheng <evan.cheng@apple.com> |
Remove PointerType from class Target git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28368 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
9d62fa4d162745f8812736473e41764bb0435b42 |
17-May-2006 |
Chris Lattner <sabre@nondot.org> |
Add a note about a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28355 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
c703a8fbf8653ac8302ae368391a4954c307ca2c |
17-May-2006 |
Chris Lattner <sabre@nondot.org> |
Make PPC call lowering more aggressive, making the isel matching code simple enough to be autogenerated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28354 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
9a2a497284e2233345c4bb9cdc1044d8395fddde |
17-May-2006 |
Chris Lattner <sabre@nondot.org> |
Switch PPC over to a call-selection model where the lowering code creates the copyto/fromregs instead of making the PPCISD::CALL selection code create them. This vastly simplifies the selection code, and moves the ABI handling parts into one place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28346 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
c8b682ca196c90bfae1ea4a411a97cccc2f4bd62 |
17-May-2006 |
Chris Lattner <sabre@nondot.org> |
3 changes, 2 of which are cleanup one of which changes codegen: 1. Rearrange code a bit so that the special case doesn't require indenting lots of code. 2. Add comments describing PPC calling convention. 3. Only round up to 56-bytes of stack space for an outgoing call if the callee is varargs. This saves a bit of stack space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28342 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c04ba7a97d5ad599d92a1817de2d7c5fbb145810 |
17-May-2006 |
Chris Lattner <sabre@nondot.org> |
implement passing/returning vector regs to calls, at least non-varargs calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28341 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
abde460d4f4e2fb6a4493b2a938055e48abaf239 |
17-May-2006 |
Chris Lattner <sabre@nondot.org> |
Instead of implementing LowerCallTo directly, let the default impl produce an ISD::CALL node, then custom lower that. This means that we only have to handle LEGAL call operands/results, not every possible type. This allows us to simplify the call code, shrinking it by about 1/3. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28339 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
af4ec0c56d2162a369fcdeba740ddda21be359b9 |
16-May-2006 |
Chris Lattner <sabre@nondot.org> |
Simplify the argument counting logic by only incrementing the index. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28335 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b375b5e629d12db6ec2b2b816af9784c0709656e |
16-May-2006 |
Chris Lattner <sabre@nondot.org> |
Simplify the dead argument handling code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28334 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
be4849aabe957019bd73dd465859c7c081c9fddd |
16-May-2006 |
Chris Lattner <sabre@nondot.org> |
Vector args passed in registers don't reserve stack space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28333 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8ab5fe574a388598b7ca945b4cd12e2485268027 |
16-May-2006 |
Chris Lattner <sabre@nondot.org> |
Switch the PPC backend over to using FORMAL_ARGUMENTS for formal argument handling. This makes the lower argument code significantly simpler (we only need to handle legal argument types). Incidentally, this also implements support for vector argument registers, so long as they are not on the stack. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28331 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
00402c7ec3aaf4d6a22c1eb97b9e1c1bb3136f46 |
16-May-2006 |
Chris Lattner <sabre@nondot.org> |
Fit in 80 cols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28311 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f1d2337be1adf74888d1709977fdeda393c8d532 |
15-May-2006 |
Chris Lattner <sabre@nondot.org> |
Remove some dead code, identified by coverity. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28303 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b65e7256ed711aa473973744403efc86e1cb2c6d |
12-May-2006 |
Chris Lattner <sabre@nondot.org> |
Remove dead var, fix bad override. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28264 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCTargetMachine.h
|
b57b516f6d009ca3683f598a6026e23c7d1386e9 |
12-May-2006 |
Chris Lattner <sabre@nondot.org> |
remove dead variable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28248 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
0949ed5412c0902113aaefe106fed5b383fcc696 |
12-May-2006 |
Chris Lattner <sabre@nondot.org> |
Fix PowerPC/2006-05-12-rlwimi-crash.ll Nate, please verify that if InsertMask is 0, rlwimi shouldn't be used. This fixes the crash and causes no PPC testsuite regressions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28243 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
07000c6f01d8f57170f2d4c77a86d934bdc5c696 |
12-May-2006 |
Owen Anderson <resistor@mac.com> |
Refactor a bunch of includes so that TargetMachine.h doesn't have to include TargetData.h. This should make recompiles a bit faster with my current TargetData tinkering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28238 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.h
|
3e6a35076ed072525d3eda1945033863b613aef8 |
10-May-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the PowerPC JIT-only failure on UnitTests/Vector/sumarray-dbl, which is really a bad codegen bug that LLC happens to get lucky with. I must chat with Nate for the proper fix. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28213 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
219f1b535dd65cf49d783f846bd8da80e3700c2e |
09-May-2006 |
Chris Lattner <sabre@nondot.org> |
Indent .data/.text in the .s file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28204 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
4632d7a57008564c4b0f8246e85bd813a200d2c6 |
09-May-2006 |
Chris Lattner <sabre@nondot.org> |
Split SwitchSection into SwitchTo{Text|Data}Section methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28184 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
7514620052208c7669ebaada1eebd5d00ce29a60 |
08-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Yet more readme updating git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28172 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
fcf64a91d65ece1168c2108271c4b2c7e4271e5e |
08-May-2006 |
Nate Begeman <natebegeman@mac.com> |
New note about something bad happening in target independent optimizers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28170 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
d8624ed07f1fc903580da17173b1f29e7eb98377 |
08-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Proving once again that I am not as smart as the compiler git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28169 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
4667f2cbad246beccfca5411a26add24d1007035 |
08-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Fold more shifts into inserts, and update the README git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28168 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
EADME.txt
|
93376b083e11f6dfcc678fe68abbc801eaa0a348 |
08-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Update some stuff now that the new rlwimi code has gone in git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28162 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
EADME.txt
|
77f361f5b3ac6ed080d6b0f401b62cd6e08614e5 |
07-May-2006 |
Nate Begeman <natebegeman@mac.com> |
New rlwimi implementation, which is superior to the old one. There are still a couple missed optimizations, but we now generate all the possible rlwimis for multiple inserts into the same bitfield. More regression tests to come. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28156 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
35c3913328b254871731f1f5cc092c303a2cd378 |
05-May-2006 |
Chris Lattner <sabre@nondot.org> |
Print a grouping around inline asm blocks so that we can tell when we are using them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28134 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
55c63257f31e2fa0b4a606f15d809cf615bc960c |
05-May-2006 |
Chris Lattner <sabre@nondot.org> |
New note, Nate, please check to see if I'm full of it :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28118 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
2d90ac7ca6117d3b160dde8a4f322c1079a6ffce |
04-May-2006 |
Chris Lattner <sabre@nondot.org> |
Rename MO_VirtualRegister -> MO_Register. Clean up immediate handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28104 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e53f4a055f74bded20d6129b4724ddd17fd199f6 |
04-May-2006 |
Chris Lattner <sabre@nondot.org> |
Move some methods out of MachineInstr into MachineOperand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28102 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
63b3d7113d93fda622c4954c6b1d046ce029044e |
04-May-2006 |
Chris Lattner <sabre@nondot.org> |
There shalt be only one "immediate" operand type! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28099 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCInstrBuilder.h
PCRegisterInfo.cpp
|
e45aa737ba902a5caf2f259b3116bfc7d29b2990 |
04-May-2006 |
Chris Lattner <sabre@nondot.org> |
Revert Nate's CR patch from last night, which caused many regressions (e.g. fhourstones). Loading and storing off R0 isn't what we wanted. Also, taking some CR's out of CRRC seems to cause failures as well. Further investigation is required. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28097 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.td
|
ea50fabfd4e5fad25a25b312f64a9b2a53363586 |
04-May-2006 |
Chris Lattner <sabre@nondot.org> |
Remove a bunch more SparcV9 specific stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28093 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
10f3597c4e0c13ecf0272b7ca0be741a91ade48c |
04-May-2006 |
Chris Lattner <sabre@nondot.org> |
Remove some more unused stuff from MachineInstr that was leftover from V9. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28091 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
5a032de387831b9de3a707292eade95934938da9 |
03-May-2006 |
Chris Lattner <sabre@nondot.org> |
Change from using MachineRelocation ctors to using static methods in MachineRelocation to create Relocations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28088 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
b4432f3d4754e16c918428d34a9d8ec18ab79204 |
03-May-2006 |
Chris Lattner <sabre@nondot.org> |
Suck block address tracking out of targets into the JIT Emitter. This simplifies the MachineCodeEmitter interface just a little bit and makes BasicBlocks work like constant pools and jump tables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28082 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
a69571c7991813c93cba64e88eced6899ce93d81 |
03-May-2006 |
Owen Anderson <resistor@mac.com> |
Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference. This fixes PR 759. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28074 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
af1563fb62ed76f4818ac172ab1c6cf15fa35a82 |
03-May-2006 |
Chris Lattner <sabre@nondot.org> |
Change the BasicBlockAddrs map to be a vector, indexed by MBB number. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28069 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
f75f9be3fb89eb6661a0ed8bfee8a6328ee5a4d1 |
03-May-2006 |
Chris Lattner <sabre@nondot.org> |
Several related changes: 1. Change several methods in the MachineCodeEmitter class to be pure virtual. 2. Suck emitConstantPool/initJumpTableInfo into startFunction, removing them from the MachineCodeEmitter interface, and reducing the amount of target- specific code. 3. Change the JITEmitter so that it allocates constantpools and jump tables *right* next to the functions that they belong to, instead of in a separate pool of memory. This makes all memory for a function be contiguous, and means the JITEmitter only tracks one block of memory now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28065 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
d3f0aefc33965d3d0ca6f92af4ebaea354b063c4 |
02-May-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a purely hypothetical problem (for now): emitWord emits in the host byte format. This doesn't work when using the code emitter in a cross target environment. Since the code emitter is only really used by the JIT, this isn't a current problem, but if we ever start emitting .o files, it would be. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28060 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
|
43b429b05989075b60693d57395c99b0ad789f8d |
02-May-2006 |
Chris Lattner <sabre@nondot.org> |
Refactor the machine code emitter interface to pull the pointers for the current code emission location into the base class, instead of being in the derived classes. This change means that low-level methods like emitByte/emitWord now are no longer virtual (yaay for speed), and we now have a framework to support growable code segments. This implements feature request #1 of PR469. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28059 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
426cd7c25fc3f5d064f9e88af0ecad26c836135a |
02-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Since we don't handle callee-save CRs right yet, don't allocate them. Also don't step on R11 in the middle of a function when saving and restoring CRs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28058 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.td
|
6e0f3868965612fbd391ec9d4c5eeec6ffebb351 |
02-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Hooray, everyone now uses the same printBasicBlockLabel implementation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28056 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
cdf38c4edb892c356cfaa3c09c57728bc8d6bfd0 |
02-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Extend printBasicBlockLabel a bit so that it can be used to print all basic block labels, consolidating the code to do so in one place for each target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28050 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
5425267e84946676f1e7424ee056f71b23497ee7 |
02-May-2006 |
Nate Begeman <natebegeman@mac.com> |
Update the PPC compilation callback code to not need weird abi-violating prologs and epilogs, keep all the asm in one place, and remove use of compiler builtin functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28049 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
25b8b8cb2cd8653712b0a567edf8573a067f8ff1 |
28-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/Generic/2006-04-28-Sign-extend-bool.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28017 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e481e8bc8f08ec79e7b61d200fd826b81ff7cf35 |
28-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27999 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
b3f70d7d556913126e4066d61328b701ce59c55a |
25-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
No functionality changes, but cleaner code with correct comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27966 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
37efe6764568a3829fee26aba532283131d1a104 |
22-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
JumpTable support! What this represents is working asm and jit support for x86 and ppc for 100% dense switch statements when relocations are non-PIC. This support will be extended and enhanced in the coming days to support PIC, and less dense forms of jump tables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27947 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
ea4a9c575fa0a8c8c1dce5223a637a166e5c1f8c |
22-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Teach the JIT how to relocate LI, this fixes the JIT on Prolangs-C/TimberWolfMC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27943 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
d9993b0b2d05d0c65f3a319be8dc36fb4add29e8 |
22-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix the comment git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27938 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
6fcbd6961d9f14d75e2b314b06ca823d43a70353 |
22-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
Change the PPC JIT to use a Static relocation model git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27937 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
PCTargetMachine.cpp
|
ba2194ae84b04b37120b189e2e23eac3daa3b0a0 |
20-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the CodeGen/PowerPC/buildvec_canonicalize.ll regression last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27908 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
0231007269c675ac12178cf675639ff95ee106f8 |
20-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Make sure that the new instructions selected have the right type. This fixes CodeGen/PowerPC/2006-04-19-vmaddfp-crash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27868 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
8cc5ffb27fa0c9c2e520b117d2ad1203b44c3b6d |
19-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27832 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
bf9b3716eda91629d1597e290034d9ce050d0b13 |
19-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27828 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
80f362a48f27958c1ce9145638884283d9e9bbe2 |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
These are correctly encoded by the JIT. I checked :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27810 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
87140126e88d4fe4f9aedac06dd4e9beec3b5301 |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27809 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
0090120c2b8ac3fea5427f6fae6f36fc3dc50dca |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a crash on: void foo2(vector float *A, vector float *B) { vector float C = (vector float)vec_cmpeq(*A, *B); if (!vec_any_eq(*A, *B)) *B = (vector float){0,0,0,0}; *A = C; } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27808 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f70f8d91a79a3474345ad51c1899276eac7825c1 |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
pretty print node name git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27806 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
90564f26d17701e11effa2f4e0fb9a18d8a91274 |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Implement an important entry from README_ALTIVEC: If an altivec predicate compare is used immediately by a branch, don't use a (serializing) MFCR instruction to read the CR6 register, which requires a compare to get it back to CR's. Instead, just branch on CR6 directly. :) For example, for: void foo2(vector float *A, vector float *B) { if (!vec_any_eq(*A, *B)) *B = (vector float){0,0,0,0}; } We now generate: _foo2: mfspr r2, 256 oris r5, r2, 12288 mtspr 256, r5 lvx v2, 0, r4 lvx v3, 0, r3 vcmpeqfp. v2, v3, v2 bne cr6, LBB1_2 ; UnifiedReturnBlock LBB1_1: ; cond_true vxor v2, v2, v2 stvx v2, 0, r4 mtspr 256, r2 blr LBB1_2: ; UnifiedReturnBlock mtspr 256, r2 blr instead of: _foo2: mfspr r2, 256 oris r5, r2, 12288 mtspr 256, r5 lvx v2, 0, r4 lvx v3, 0, r3 vcmpeqfp. v2, v3, v2 mfcr r3, 2 rlwinm r3, r3, 27, 31, 31 cmpwi cr0, r3, 0 beq cr0, LBB1_2 ; UnifiedReturnBlock LBB1_1: ; cond_true vxor v2, v2, v2 stvx v2, 0, r4 mtspr 256, r2 blr LBB1_2: ; UnifiedReturnBlock mtspr 256, r2 blr This implements CodeGen/PowerPC/vec_br_cmp.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27804 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
EADME_ALTIVEC.txt
|
3be29059abc5652fd7db2f64704e1359d325964d |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
move some stuff around, clean things up git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27802 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
cea2aa77eb815d41ad59ecdd110ec42bc5b567c8 |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Use vmladduhm to do v8i16 multiplies which is faster and simpler than doing even/odd halves. Thanks to Nate telling me what's what. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27793 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
19a815238e55458e95f99b4dad31ed053c9f635c |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Implement v16i8 multiply with this code: vmuloub v5, v3, v2 vmuleub v2, v3, v2 vperm v2, v2, v5, v4 This implements CodeGen/PowerPC/vec_mul.ll. With this, v16i8 multiplies are 6.79x faster than before. Overall, UnitTests/Vector/multiplies.c is now 2.45x faster with LLVM than with GCC. Remove the 'integer multiplies' todo from the README file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27792 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
EADME_ALTIVEC.txt
|
72dd9bdcc57a71d7e9a6f3e68ca1a35ad437a980 |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Lower v8i16 multiply into this code: li r5, lo16(LCPI1_0) lis r6, ha16(LCPI1_0) lvx v4, r6, r5 vmulouh v5, v3, v2 vmuleuh v2, v3, v2 vperm v2, v2, v5, v4 where v4 is: LCPI1_0: ; <16 x ubyte> .byte 2 .byte 3 .byte 18 .byte 19 .byte 6 .byte 7 .byte 22 .byte 23 .byte 10 .byte 11 .byte 26 .byte 27 .byte 14 .byte 15 .byte 30 .byte 31 This is 5.07x faster on the G5 (measured) than lowering to scalar code + loads/stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27789 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e7c768ea24027938b52abd6ee94755b6d17f3da3 |
18-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Custom lower v4i32 multiplies into a cute sequence, instead of having legalize scalarize the sequence into 4 mullw's and a bunch of load/store traffic. This speeds up v4i32 multiplies 4.1x (measured) on a G5. This implements PowerPC/vec_mul.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27788 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
22fcbb132008fcc6004dd4047b5a6ae06dbb7548 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
remove done item git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27778 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
f9568d8700d5389799796262cde313bb5c7d588a |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Don't diddle VRSAVE if no registers need to be added/removed from it. This allows us to codegen functions as: _test_rol: vspltisw v2, -12 vrlw v2, v2, v2 blr instead of: _test_rol: mfvrsave r2, 256 mr r3, r2 mtvrsave r3 vspltisw v2, -12 vrlw v2, v2, v2 mtvrsave r2 blr Testcase here: CodeGen/PowerPC/vec_vrsave.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27777 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
402504b1ba250839102ba384be0210d248b6e3e8 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Vectors that are known live-in and live-out are clearly already marked in the vrsave register for the caller. This allows us to codegen a function as: _test_rol: mfspr r2, 256 mr r3, r2 mtspr 256, r3 vspltisw v2, -12 vrlw v2, v2, v2 mtspr 256, r2 blr instead of: _test_rol: mfspr r2, 256 oris r3, r2, 40960 mtspr 256, r3 vspltisw v0, -12 vrlw v2, v0, v0 mtspr 256, r2 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27772 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
939274fcfd65047d516d5afff0dc5ac1817c5550 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Prefer to allocate V2-V5 before V0,V1. This lets us generate code like this: vspltisw v2, -12 vrlw v2, v2, v2 instead of: vspltisw v0, -12 vrlw v2, v0, v0 when a function is returning a value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27771 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
369503f8412bba4a0138074c97107c09cc4513e0 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Move some knowledge about registers out of the code emitter into the register info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27770 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
f7d2372b7407c7f8966df39a2b5a067c72bd6b9b |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Use a small table instead of macros to do this conversion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27769 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
dbce85dedf5d37794cf5237a78f609dda6b6608d |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Make sure to check splats of every constant we can, handle splat(31) by being a bit more clever, add support for odd splats from -31 to -17. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27764 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bdd558cd94a816df83526ab5e5d309f3fc0e210a |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Teach the ppc backend to use rol and vsldoi to generate splatted constants. This implements vec_constants.ll:test_vsldoi and test_rol git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27760 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
966083fd1ad5adf801b767bba008ebaf0b9e06fa |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27758 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
6876e66e5dbab2847f10ca89a75964fabda4489c |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Make some code more general, adding support for constant formation of several new patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27754 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c408382ecade09f66343b084fa0ab437781de593 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Learn how to make odd splatted constants in range [17,29]. This implements PowerPC/vec_constants.ll:test_29. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27752 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4a998b9ca8372038ac92ea6057290c2cad73f988 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Pull some code out into a helper function. Effeciently codegen even splats in the range [-32,30]. This allows us to codegen <30,30,30,30> as: vspltisw v0, 15 vadduwm v2, v0, v0 instead of as a cp load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27750 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5913810b8286191053853b7495f324e091ab208f |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Implement a TODO: for any shuffle that can be viewed as a v4[if]32 shuffle, if it can be implemented in 3 or fewer discrete altivec instructions, codegen it as such. This implements Regression/CodeGen/PowerPC/vec_perf_shuffle.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27748 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
EADME_ALTIVEC.txt
|
cffeb86169e3211766ea01ecb855f0ca2041fd73 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Regenerate with adjusted costs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27746 91177308-0d34-0410-b5e6-96231b3b80d8
PCPerfectShuffle.h
|
586d6a808dc80abe1b00e5fe943b1042cb4422e9 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Regenerate with correct offset git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27744 91177308-0d34-0410-b5e6-96231b3b80d8
PCPerfectShuffle.h
|
c74e7100007ed830af146afe7194b08764a38ee7 |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Increase the opcodes by one each to disambiguate COPY from VMRGHW. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27742 91177308-0d34-0410-b5e6-96231b3b80d8
PCPerfectShuffle.h
|
6703461f04988a82cbd62cbe08c393965ae3c2df |
17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Check in a table, generated by llvm-PerfectShuffle, of optimal shuffles of various 4-element vectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27739 91177308-0d34-0410-b5e6-96231b3b80d8
PCPerfectShuffle.h
|
f3f69decca93d2465957e5ebf1f64b20e2845967 |
16-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Implement a TODO: have the legalizer canonicalize a bunch of operations to one type (v4i32) so that we don't have to write patterns for each type, and so that more CSE opportunities are exposed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27731 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrAltivec.td
EADME_ALTIVEC.txt
|
b17f1679e3ce2b40fc2141fc50ef3def4bbd00bc |
16-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Make the BUILD_VECTOR lowering code much more aggressive w.r.t constant vectors. Remove some done items from the todo list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27729 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
EADME_ALTIVEC.txt
|
730b45694bd910efe0c5c38897854222f74c92bb |
16-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a crash when faced with a shuffle vector that has an undef in its mask. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27726 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6e94af75de7f21b667046063dde49181c233b973 |
16-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add patterns for matching vnots with bit converted inputs. Most of these will go away when I start using evan's binop type canonicalizer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27725 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
b097aa9353121cf6713408402022b8843a0f6acc |
15-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Allow undef in a shuffle mask git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27714 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1a635d617aae63a759bc9d8abc6ee4315b9277ea |
14-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Move the rest of the PPCTargetLowering::LowerOperation cases out into separate functions, for simplicity and code clarity. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27693 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f1b4708950cb0dc2a0cafb572d5a56d99b8140c0 |
14-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Pull the VECTOR_SHUFFLE and BUILD_VECTOR lowering code out into separate functions, which makes the code much cleaner :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27692 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a39d798e0af289956848b8583b2f80d4801656ec |
13-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Force non-darwin targets to use a static relo model. This fixes PR734, tested by CodeGen/Generic/vector.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27657 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ed9379051708a6ef858bcfa4e300f126eb69c178 |
13-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note, move an altivec todo to the altivec list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27654 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
EADME_ALTIVEC.txt
|
3758552428737f2467cc58ae81a064789637b4aa |
13-Apr-2006 |
Reid Spencer <rspencer@reidspencer.com> |
Add the README files to the distribution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27651 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
ac225ca0514b75e29347933d75e86d03ab8a28e1 |
12-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add a new way to match vector constants, which make it easier to bang bits of different types. Codegen spltw(0x7FFFFFFF) and spltw(0x80000000) without a constant pool load, implementing PowerPC/vec_constants.ll:test1. This compiles: typedef float vf __attribute__ ((vector_size (16))); typedef int vi __attribute__ ((vector_size (16))); void test(vi *P1, vi *P2, vf *P3) { *P1 &= (vi){0x80000000,0x80000000,0x80000000,0x80000000}; *P2 &= (vi){0x7FFFFFFF,0x7FFFFFFF,0x7FFFFFFF,0x7FFFFFFF}; *P3 = vec_abs((vector float)*P3); } to: _test: mfspr r2, 256 oris r6, r2, 49152 mtspr 256, r6 vspltisw v0, -1 vslw v0, v0, v0 lvx v1, 0, r3 vand v1, v1, v0 stvx v1, 0, r3 lvx v1, 0, r4 vandc v1, v1, v0 stvx v1, 0, r4 lvx v1, 0, r5 vandc v0, v1, v0 stvx v0, 0, r5 mtspr 256, r2 blr instead of (with two constant pool entries): _test: mfspr r2, 256 oris r6, r2, 49152 mtspr 256, r6 li r6, lo16(LCPI1_0) lis r7, ha16(LCPI1_0) li r8, lo16(LCPI1_1) lis r9, ha16(LCPI1_1) lvx v0, r7, r6 lvx v1, 0, r3 vand v0, v1, v0 stvx v0, 0, r3 lvx v0, r9, r8 lvx v1, 0, r4 vand v1, v1, v0 stvx v1, 0, r4 lvx v1, 0, r5 vand v0, v1, v0 stvx v0, 0, r5 mtspr 256, r2 blr GCC produces (with 2 cp entries): _test: mfspr r0,256 stw r0,-4(r1) oris r0,r0,0xc00c mtspr 256,r0 lis r2,ha16(LC0) lis r9,ha16(LC1) la r2,lo16(LC0)(r2) lvx v0,0,r3 lvx v1,0,r5 la r9,lo16(LC1)(r9) lwz r12,-4(r1) lvx v12,0,r2 lvx v13,0,r9 vand v0,v0,v12 stvx v0,0,r3 vspltisw v0,-1 vslw v12,v0,v0 vandc v1,v1,v12 stvx v1,0,r5 lvx v0,0,r4 vand v0,v0,v13 stvx v0,0,r4 mtspr 256,r12 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27624 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
EADME_ALTIVEC.txt
|
e87192a854ff0f2f1904dd9ea282eb36059bb5af |
12-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Rename get_VSPLI_elt -> get_VSPLTI_elt Canonicalize BUILD_VECTOR's that match VSPLTI's into a single type for each form, eliminating a bunch of Pat patterns in the .td file and allowing us to CSE stuff more aggressively. This implements PowerPC/buildvec_canonicalize.ll:VSPLTI git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27614 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
2b1c3258d68271098172e52d4e1f8424d855025f |
12-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Ensure that zero vectors are always v4i32, which forces them to CSE with each other. This implements CodeGen/PowerPC/vxor-canonicalize.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27609 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrAltivec.td
|
218629813a47d3e398f37b5be284e179a0ec855f |
11-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix SingleSource/UnitTests/Vector/sumarray-dbl git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27594 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
030514cd96e9b8bb08fd9585d890bd7a5f0dbb77 |
11-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix PR727, correctly handling large stack aligments on ppc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27593 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
95c7570f3231660071be9becb185678df268c936 |
11-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
we have a shuffle instr, add an example. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27592 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
52fa2449c9c1c8f8373faccb8968588211101e68 |
11-Apr-2006 |
Jim Laskey <jlaskey@mac.com> |
Suppress debug label when not debug. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27588 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
bee9836c0f21be0bd5034f60caa9594c3949910d |
11-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Vector function results go into V2 according to GCC. The darwin ABI doc doesn't say where they go :-/ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27579 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
06c24350a92dff027cf1b4ddb91704cb82d976ae |
11-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Move some return-handling code from lowerarguments to the ISD::RET handling stuff. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27577 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a1d95e16df0949fcd33b1ee938a4791dac6f6cad |
09-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
properly mark vector selects as expanded to select_cc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27544 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
710ff32983ca919fa0da14e077450b6a7654274f |
09-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add VRRC select support git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27543 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
957e1674e797c8880114fb27a3aa1c32f9967329 |
08-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
Disable switch lowering for targets based on the selection dag isel, letting the code generator handle them directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27539 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
79d9a881651689a3814e2d471ba4ab0ff37a4ca8 |
08-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Implement PowerPC/CodeGen/vec_splat.ll:spltish to use vsplish instead of a constant pool load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27538 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
140a58f9dfda30dbb80edd3da1b5632c178f7efc |
08-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Change the interface to the predicate that determines if vsplti* can be used. No functionality changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27536 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
6b92b8e50d7e5b48407865c3aaf9966c01416c69 |
07-Apr-2006 |
Jim Laskey <jlaskey@mac.com> |
Make sure that debug labels are defined within the same section and after the entry point of a function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27494 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
4188699f80c233a20b6ddc61570a8a8c1804cb85 |
07-Apr-2006 |
Jim Laskey <jlaskey@mac.com> |
Foundation for call frame information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27491 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
1c8010301676dd72274573455014386d45e57e47 |
07-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add an item git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27470 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
90217999bdb00fdb1e6d7ee98f75fca8930b2ba5 |
07-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Make sure to return the result in the right type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27469 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f24380e78ecc8a2db1b2116867d878b1e7c6f6ed |
07-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Match vpku[hw]um(x,x). Convert vsldoi(x,x) to work the same way other (x,x) cases work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27467 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
caad163496a3ad207a75009f4ad16bae1b1527ae |
07-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add support for matching vmrg(x,x) patterns git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27463 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
116cc48e30b9c307bf3eec29c890b4ba25cd18db |
06-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Pattern match vmrg* instructions, which are now lowered by the CFE into shuffles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27457 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
EADME_ALTIVEC.txt
|
58d665c1828d8a97260a0eefa6924dd59b43209c |
06-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
remove two done items git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27453 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
d0608e191ff9c00af68985f246410c219d1bec57 |
06-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Support pattern matching vsldoi(x,y) and vsldoi(x,x), which allows the f.e. to lower it and LLVM to have one fewer intrinsic. This implements CodeGen/PowerPC/vec_shuffle.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27450 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
EADME_ALTIVEC.txt
|
ddb739e5ea6ccf6fa4f4e2a23e3da550868efaa1 |
06-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Compile the vpkuhum/vpkuwum intrinsics into vpkuhum/vpkuwum instead of into vperm with a perm mask lvx'd from the constant pool. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27448 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
d8242b49b24a46f685599834b6ca33dfbeba9382 |
06-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add all of the data stream intrinsics and instructions. woo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27442 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrFormats.td
EADME_ALTIVEC.txt
|
99bdc654e565193e17245979a3df8c60eabf0c6d |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27440 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
9b42bdd7bced1d31d309dca2932d0a063ea6c863 |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/PowerPC/2006-04-05-splat-ish.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27439 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
278158b4877c64b741fd37b2eb9ca1bdbc2eb3d7 |
05-Apr-2006 |
Evan Cheng <evan.cheng@apple.com> |
Fallthrough to expand if a VECTOR_SHUFFLE cannot be custom lowered. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27433 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3827f712dac3362419ee722ca4c8c0ecea72e257 |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add vsl git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27425 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
0d2cf6b1d1af80c69d6a70e9eebd6a2fcb0a791b |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add vmladduhm git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27423 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
EADME_ALTIVEC.txt
|
4d9100ddc9d38bf64e5fa37355fd188742cc0973 |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add m[tf]vscr instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27421 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrFormats.td
|
8b4684247aa23cb3b022de9a45b009e66aa9b51d |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27419 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
72e241cff78869a0bc309f8522c313071b2baec6 |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add missing byte merges. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27418 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
a046d4ac116964996b348e1aa2efc262924b412c |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add FP -> Int Conversions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27417 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
3f0b7ff39fcf50fc2b57718cd2264137f11614b6 |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add average intrinsics git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27416 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
298b68422956ec6f640f508bf089110674418ca6 |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27414 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
098e699f21a532d37b1ad44bb1bc24a87b3f9962 |
05-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix some broken logic that would cause us to codegen {2147483647,2147483647,2147483647,2147483647} as 'vspltisb v0, -1'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27413 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7ff7e674580adad7a5bccdbd74cf9c9f05e46d0f |
04-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Ask legalize to promote all vector shuffles to be v16i8 instead of having to handle all 4 PPC vector types. This simplifies the matching code and allows us to eliminate a bunch of patterns. This also adds cases we were missing, such as CodeGen/PowerPC/vec_splat.ll:splat_h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27400 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
684ad7702f5196c2b1efd93aec4eb7283c3c24c6 |
04-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Plug in the byte and short splats git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27387 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
b68314480d693f2d431c9d1748f4c8c084f3e5f5 |
04-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Revert accidentally committed hunks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27386 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
01cae0799dd4a43c02edc3b5e08e9010ac4ae459 |
04-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Make sure to mark unsupported SCALAR_TO_VECTOR operations as expand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27385 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4f91a4c497fb1032550b7f163004efc5fce1d7f1 |
04-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Force use of a frame-pointer if there is anything on the stack that is aligned more than the OS keeps the stack aligned. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27381 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c461a51234b1b631b9be3992ecf82abf7eca30f4 |
03-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Add the full set of min/max instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27372 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
220d2b89d69b7f78b6baac357b857475d53f6407 |
02-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27360 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
bbe77de450ef36b4f83cc3b57705a9758adbd925 |
02-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Inform the dag combiner that the predicate compares only return a low bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27359 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
02b72556d738b9086129518eef4991b5b6012666 |
02-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Remove done item git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27351 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
c55bfd0265214f18ddd6bf4515bcf2c5a3973f00 |
02-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27348 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
541f91b17c33712e2c92f02916082832e6d73c46 |
02-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Custom lower all BUILD_VECTOR's so that we can compile vec_splat_u8(8) into "vspltisb v0, 8" instead of a constant pool load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27335 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c3837d49178c2d3f8e80347f93f4859d46175cc0 |
02-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Implement vnot using VNOR instead of using 'vspltisb v0, -1' and vxor git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27331 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
348ba3f9bfe82fe602e52063566318dd77aa1d4d |
01-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Shrinkify some more intrinsic definitions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27322 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
6cea814f2c2268f19b28ea1443cd5f55f932bb1e |
01-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Pull operand asm string into base class, shrinkifying intrinsic definitions. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27320 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
b5c4d17a6c03af1ec8e3fd4fd9d5b07b9c2694a4 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix 80 column violations :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27315 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
7376a5e1292cf848880ebced00131c54a2194ac9 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
fix a pasto git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27308 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
a9cb44164256daaf7e4937eeb04706a316e5c1ea |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add vperm support for all datatypes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27307 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
e3fea5a1c12c668ae659a9f68c2d9c711607d8fd |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Rearrange code a bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27306 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
32a988a095ac93f54ca058bbeb7561f694c66b07 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add, sub and shuffle are legal for all vector types git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27305 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
9f7e1271336954d5319189c64f96bf187bb55cd9 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27302 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
33497cc99210b45eede30b35909929eebe06d734 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
note to self: *save* file, then check it in git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27291 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
4468c224586ba0f75e17ed7520a39a30e8caf636 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Implement an item from the readme, folding vcmp/vcmp. instructions with identical instructions into a single instruction. For example, for: void test(vector float *x, vector float *y, int *P) { int v = vec_any_out(*x, *y); *x = (vector float)vec_cmpb(*x, *y); *P = v; } we now generate: _test: mfspr r2, 256 oris r6, r2, 49152 mtspr 256, r6 lvx v0, 0, r4 lvx v1, 0, r3 vcmpbfp. v0, v1, v0 mfcr r4, 2 stvx v0, 0, r3 rlwinm r3, r4, 27, 31, 31 xori r3, r3, 1 stw r3, 0(r5) mtspr 256, r2 blr instead of: _test: mfspr r2, 256 oris r6, r2, 57344 mtspr 256, r6 lvx v0, 0, r4 lvx v1, 0, r3 vcmpbfp. v2, v1, v0 mfcr r4, 2 *** vcmpbfp v0, v1, v0 rlwinm r4, r4, 27, 31, 31 stvx v0, 0, r3 xori r3, r4, 1 stw r3, 0(r5) mtspr 256, r2 blr Testcase here: CodeGen/PowerPC/vcmp-fold.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27290 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
EADME_ALTIVEC.txt
|
9492151e32ca70e08789a69f9c22415cb9d7a5ae |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
compactify some more instruction definitions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27288 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
5f7b01963fa44b45b89a57c5c0d1995288a69a30 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Compactify comparisons. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27287 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
a17b1557ad705c56c41624e6841e19093ed31f21 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Lower vector compares to VCMP nodes, just like we lower vector comparison predicates to VCMPo nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27285 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
PCInstrInfo.td
|
8f5d316ff2b29a31671aebefb4596505f3a999de |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
These are done git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27284 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
36f4b0da9d71b06fce6277be2d9594fafdcb26e0 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Mark INSERT_VECTOR_ELT as expand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27276 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8768bf6ee33a9186272b6eede9e13c3dc5cb7168 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add the rest of the vmul instructions and the vmulsum* instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27268 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
3c4f4e9f1b17ea3f116cfb711b6c5404c071a129 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Use a new tblgen feature to significantly shrinkify instruction definitions that directly correspond to intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27266 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
30a6abaef089654497d262e685c14e85d04241d0 |
31-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add a bunch of new instructions for intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27265 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
f3a627262c55d86052f2efbd8a5cd94b8a0c4492 |
29-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27243 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
d732a2915bcfe52b5bcbd364ca45c426f3b214af |
28-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27227 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
a99791886d5d4af2b900cd8cc1c9ed1677b6f0f4 |
28-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Expose base register for DwarfWriter. Refactor code accordingly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27225 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
816cee2216a7b77eec6395500123d49c2fbf22e5 |
28-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix a couple typos git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27216 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
98e70cc124a1b522611dfc61e085bc755b5616c1 |
28-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Add a few more altivec intrinsics git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27215 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrAltivec.td
EADME_ALTIVEC.txt
|
ecc219b8d4546af0ad56e984d0a4120ec2ab61b3 |
28-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
implement a bunch more intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27209 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
EADME_ALTIVEC.txt
|
7f20b13518b3e45b1c594d3faac3b649571d48d8 |
28-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Use normal lvx for scalar_to_vector instead of lve*x. They do the exact same thing and we have a dag node for the former. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27205 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
PCInstrInfo.td
|
48b61a729df6576c8833a83893d4086bddff69a5 |
28-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum value. Split them into separate enums. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27201 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrAltivec.td
|
414e682bac7c7fb618aef6bb0caf8ae501f7a2ed |
27-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Translate llvm target registers to dwarf register numbers properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27180 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
3ee9ffb0e543328bea4052fba0f47ebc16314f79 |
27-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add a bunch of notes from my journey thus far. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27170 91177308-0d34-0410-b5e6-96231b3b80d8
EADME_ALTIVEC.txt
|
b86bd2cee25c15862247b4641700d448fbd0fa24 |
27-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Split out altivec notes into their own README git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27168 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
EADME_ALTIVEC.txt
|
fb143ce459bafde02a7c6d625cc8974966fa5dff |
27-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the JIT encoding of VSEL git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27160 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrFormats.td
|
eeaf72af39afce402236f71702d878ce65491b6a |
27-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the JIT encoding of VSPLTI* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27159 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrFormats.td
|
f15485a8d0dff5f720b7ad27346129ac5c3ec503 |
27-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
SelectionDAGISel can now natively handle Switch instructions, in the same manner that the LowerSwitch LLVM to LLVM pass does: emitting a binary search tree of basic blocks. The new approach has several advantages: it is faster, it generates significantly smaller code in many cases, and it paves the way for implementing dense switch tables as a jump table by handling switches directly in the instruction selector. This functionality is currently only enabled on x86, but should be safe for every target. In anticipation of making it the default, the cfg is now properly updated in the x86, ppc, and sparc select lowering code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27156 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bd6be6f52d74b15081480c382eb3e3deaaabd574 |
27-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add vsel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27153 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
6d92caddc4aa5fc946b294259e00cc35536e61e8 |
26-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Codegen vector predicate compares. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27151 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
PCInstrInfo.td
|
5b6a01b59c570a32baeab52f7080e6bf1739926a |
26-Mar-2006 |
Evan Cheng <evan.cheng@apple.com> |
Remove PPC:isZeroVector, use ISD::isBuildVectorAllZeros instead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27149 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrAltivec.td
|
b8a45c27986806220c6b112e5b6ee7baa1ab2efe |
26-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add all of the altivec comparison instructions. Add patterns for the non-predicate altivec compare intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27143 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrFormats.td
|
5d72907e00d13e6d451f459f507fbe37f17e6df7 |
26-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add and 8/16-bit adds, add all integer subtracts, add saturating subtract intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27142 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
e7d959c069add37bd8928f088d86ebd1444a29eb |
26-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
implement the vsldoi intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27139 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrFormats.td
|
af9136bc0c7ce213271495801033e332b8d38bda |
26-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
fix the pattern for vandc, it's NOT vnand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27136 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
6509ae859a7fd7ac1b7c1590a9f102072637c260 |
26-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add patterns for VANDC/VNOR, implementing CodeGen/PowerPC/eqv-andc-orc-nor.ll:VNOR/VANDC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27135 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
2430a5f0c7f7416bac6086e382eac73af75cf173 |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add some logical operations git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27127 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
984f38bf4fbf7c8ccf6d207966393e79201f25ef |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
implement a bunch of intrinsics git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27118 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
|
b22a04d881ccf9b67628ec1ea4b32eda60134ef3 |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Move all Altivec stuff out into a new PPCInstrAltivec.td file. Add a bunch of patterns for different datatypes, e.g. bit_convert, undef and zero vector support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27117 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrAltivec.td
PCInstrInfo.td
|
8d052bc711f1f451e79a2923829d2590d2951601 |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add some basic patterns for other datatypes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27116 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
150ffa7842e3ce96bb3d86ee47c0ec7e34df4906 |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add all supported formats to the vector register file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27115 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
5a2025465b773e4c7f43f196ca8067ef6221f75f |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add support for __builtin_altivec_vnmsubfp /vmaddfp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27112 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
420736dc85c01702bb7bc40495f8a4be5e5f8a6c |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
#include Intrinsics.h into all dag isels git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27109 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
EADME.txt
|
9c61dcf1aaf275a1733b6785c54d34eda5426ae1 |
25-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Codegen things like: <int -1, int -1, int -1, int -1> and <int 65537, int 65537, int 65537, int 65537> Using things like: vspltisb v0, -1 and: vspltish v0, 1 instead of using constant pool loads. This implements CodeGen/PowerPC/vec_splat.ll:splat_imm_i{32|16}. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27106 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
47622e37215429c20d8278ff57496d840811cc13 |
24-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Add dwarf register numbering to register data. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27081 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
057f09bc0b6ff4e0995995010b123ad6e9fefd39 |
24-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add another note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27077 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
8edd11f33d1cadfddcd97a74ebdc8c7603266593 |
24-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a bad JIT encoding of VPERM. Why is VPERM D,A,B,C but vfmadd is D,A,C,B ?? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27069 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
54e869e18cd3d7c6ea6e2bce668c961b6f46f0ea |
24-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Like the comment says, prefer to use the implicit add done by [r+r] addressing modes than emitting an explicit add and using a base of r0. This implements Regression/CodeGen/PowerPC/mem-rr-addr-mode.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27068 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7fbcef7102732769e2dab1d37f68166b2868c963 |
24-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Disable the i32->float G5 optimization. It is unsafe, as documented in the comment. This fixes 177.mesa, and McCat/09-vor with the td scheduler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27060 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
64b3a08bc696b2ef8733d72ce81e49be175cbbff |
24-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add support for using vxor to build zero vectors. This implements Regression/CodeGen/PowerPC/vec_zero.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27059 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
9d5da1d96cc90cc04a57c1cb1aa6f47e6bb99ef7 |
24-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Gabor points out that we can't spell. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27049 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
716aefcd910ae849ffb42d4149ac6aecc818c515 |
23-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27000 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
dc6af72781507383ba244cace39293fc244bb753 |
23-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add PPC vector bit-convert support git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26995 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
f1d78e83356a412e525c30ac90dabf090a8cfc99 |
23-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Add support to locate local variables in frames (early version.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26994 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
99db0442f03f75aa36b560a7f4327bfa992ac15c |
23-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Change interface to DwarfWriter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26991 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
bc641b9d8b5ecafe0137c1a49f4777608981d81b |
23-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Eliminate IntrinsicLowering from TargetMachine. Make the CBE and V9 backends create their own, since they're the only ones that use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26974 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
9d86a9dff23fa56b7de60fa79baf9351cf921f99 |
22-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
This has been implemented. Tweak it into another note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26944 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
ecfe55e65b6a72fddd543c42f2e2df4c96c647ba |
22-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
When possible, custom lower 32-bit SINT_TO_FP to this: _foo2: extsw r2, r3 std r2, -8(r1) lfd f0, -8(r1) fcfid f0, f0 frsp f1, f0 blr instead of this: _foo2: lis r2, ha16(LCPI2_0) lis r4, 17200 xoris r3, r3, 32768 stw r3, -4(r1) stw r4, -8(r1) lfs f0, lo16(LCPI2_0)(r2) lfd f1, -8(r1) fsub f0, f1, f0 frsp f1, f0 blr This speeds up Misc/pi from 2.44s->2.09s with LLC and from 3.01->2.18s with llcbeta (16.7% and 38.1% respectively). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26943 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
PCRegisterInfo.cpp
|
e5ba580ab05b18eaa9fd4d36e31466e41f693ad9 |
22-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add support for "ri" addressing modes where the immediate is a 14-bit field which is shifted left two bits before use. Instructions like STD use this addressing mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26942 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
|
eb8b09f69f0949f7ab7426d9c44ec45acd9dbdaa |
22-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the JIT encoding of the VAForm_1 instructions, including vmaddfp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26935 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
9b3bd467d02e73a02afed6d50aaaa149a6a69701 |
21-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
These targets don't support EXTRACT_VECTOR_ELT, though, in time, X86 will. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26930 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
f3ce43210a5f6e89cff40674919890329a46ef13 |
21-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Don't emit pseudo instructions! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26926 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
c0a8b6df2adc690998cd6e523e6bd37dd4c16bd3 |
21-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Update readme git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26924 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
13feb58aa1042ed01962ade548459b8f01ba1a48 |
21-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Print absolute memory references like this: lwz r2, 8(0) instead of this: lwz r2, 8(r0) This fixes the llc/llc-beta failures on PPC last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26922 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
8151914321a67b16d7183248593171e670a28e4c |
21-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
With Evan's latest tblgen patch, this code is obsolete, thanks Evan! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26917 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
8593f9891da4782719e49ef1fb2554072ed1e52d |
21-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
When codegen'ing vector MUL using VFMADD, *add* the 0, don't *mul* the 0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26913 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
ef040dd4a326c5dd23e6f055fc05b6f18e3a786e |
21-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
minor note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26912 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
d97964457e972cc0c0ae0e293f975112c3d65c46 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Handle constant addresses more efficiently, folding the low bits into the disp field of the load/store if possible. This compiles CodeGen/PowerPC/load-constant-addr.ll to: _test: lis r2, 2838 lfs f1, 26848(r2) blr instead of: _test: lis r2, 2838 ori r2, r2, 26848 lfs f1, 0(r2) blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26908 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
23baa1b3106993bc9e8a5807d8b1f9e486bdf845 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
remove dead variable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26907 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bd83afd3cdaa89b8a378e92518a5aec7dc7f46c5 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a couple of bugs in permute/splat generate, thanks to Nate for actually figuring these out! :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26904 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
e376e00247aa957ebc8e83191853599ea4065eed |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
reenable this hack, the tblgen version isn't quite ready git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26902 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
32f57d9e261da7b4ad6de4cc75dc8b20d19bd6b2 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the pattern for VADDUWM, add i32 splat git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26901 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
e63d746ef6e75d5461c9e29bcaf04b2755455c7f |
20-Mar-2006 |
Evan Cheng <evan.cheng@apple.com> |
Use tblgen'd VECTOR_SHUFFLE selection code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26900 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
dd4d2d0e4086905d85bc3011c2de78822d873d83 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add support for generating vspltw, instead of a vperm instruction with a constant pool load. This generates significantly nicer code for splats. When tblgen gets bugfixed, we can remove the custom selection code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26898 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
88a99ef7cc69febf4e9feb89a087fd40d74c47a4 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Implement PPC::isSplatShuffleMask and PPC::getVSPLTImmediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26897 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ef819f8fbb68793cc21396fcc1563ec481dacb2f |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
fix duplicate definition errors git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26896 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
3c0f9cc90cdcb70caf0dc517b9f9206d731aeb70 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Check in some intermediate code that adds a skeleton for matching vsplt* instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26894 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
PCInstrInfo.td
|
08e25de4d3c6a8e9b75be0a22f148c1b94cd8167 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
fix typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26889 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
556aae0df03e13ae80361a4d4ec9ec6018b9b321 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add vsplat instructions, fix sched description for vperm git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26888 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
f1d0b2bedaa065972a5ba17259055c1176cd1497 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Custom lower arbitrary VECTOR_SHUFFLE's to VPERM. TODO: leave specific ones as VECTOR_SHUFFLE's and turn them into specialized operations like vsplt* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26887 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
2bc6dc27e952dd0225b3eb2f68d9195f8b415cec |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Claim to have v16i8 for perm masks git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26886 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
abdff1ee6dbede6a95ce80c8040f2b21200ea2c1 |
20-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add the vperm instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26883 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
28097d086f72cd2cd6e267a8dfa179633ef1494e |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add a note about the MUL -> FMADD vector bug. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26874 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
b2177b9405e43a66bd5e76dfeed1b40aaedd9271 |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Custom lower SCALAR_TO_VECTOR into lve*x. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26868 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
ab515b09bfba19c671aa2f8635d595552876189d |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
PPC doesn't have SCALAR_TO_VECTOR git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26865 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
528180ed7ba092f5767163f567fd80f0887d9e4c |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add support for vector undef git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26863 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a17409dfd689f9f9c089e51d0671954f176af34c |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
minor fixes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26857 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
28b1a0b5323eb6953f40c28b4a2b02c6602d49ac |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
notes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26856 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
0a7bff01d0117f1c73f96fed842f6b31a4f71b4f |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
we don't use lmw/stmw. When we want them they are easy enough to add git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26853 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a064d28843b425905ed981e693b7730a183ee31b |
19-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
rename these nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26848 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
79691bc1f3434f08f2014ecaa31c7213b71b0b34 |
17-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix subfic to match subc by default instead of sub so that it is correctly cost-modeled as producing a flag. This fixes the test I just added for neg git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26835 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
81e8097377529dc3b666f33bb525c49cfbac3f51 |
17-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Remove BRTWOWAY* Make the PPC backend not dependent on BRTWOWAY_CC and make the branch selector smarter about the code it generates, fixing a case in the readme. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26814 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
EADME.txt
|
e261c474cac3fe1ca5bb8528c150095ffb81bbca |
17-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
remove dead variable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26813 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
1ad9b3a3cc27c1cf960bd3f72ca8c6b39954b451 |
16-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Notes on how to kill the eeevil brtwoway, and make ppc branch selector more target independant, generate better code, and be less conservative. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26809 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
be80fc8d0951d6976881bb449d0354b30ae688ad |
16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Strangely, calls clobber call-clobbered vector regs. Whodathoughtit? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26808 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
ed51169cd8c63ad336cb196b5a433c2e56c5fa20 |
16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26807 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
9c09c9ec9dab61450800b42cbf746164aa076b88 |
16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
teach the ppc backend how to spill/reload vector regs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26806 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCRegisterInfo.cpp
|
419ed530068a70155bbb90efc58d3608186bc119 |
16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add callee saved vector regs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26805 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
714554d70717c73e0542ca93df36fa78765f87af |
16-Mar-2006 |
Evan Cheng <evan.cheng@apple.com> |
Added a way for TargetLowering to specify what values can be used as the scale component of the target addressing mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26802 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
8aa777d5ea8e73e2edf79fd35fd6b5c4e9949ca7 |
16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
in functions that use a lot of callee saved regs, this can be more than 5 instructions away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26801 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
335fd3c7c2057b4e5fedb3161df44d7bc1759791 |
16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add support for copying registers. still needed: spilling and reloading them git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26800 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
|
2df992883b2efbcb5aae55c6dc2b50861224e6f9 |
16-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Another case we could do better on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26795 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
4bb189507281af0da8aff91743b5198acbf2398b |
16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Save/restore VRSAVE once per function, not once per block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26793 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
133decdcebcd591d2ccc20cbf362a07322a1ffa2 |
15-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
Update scheduling info for vrsave instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26776 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a08610c8a534501bc4301c5037e883f180b19a99 |
14-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix an off by one error that caused PPC LLC failures last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26758 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
9c543b2299b706c4ebc3fed6e5227e5930087ff8 |
14-Mar-2006 |
Evan Cheng <evan.cheng@apple.com> |
PPC LSR pass should use target lowering hooks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26743 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
c4c6257c1a154279bf10e9498d46d6c1793dbaa7 |
14-Mar-2006 |
Evan Cheng <evan.cheng@apple.com> |
Added getTargetLowering() to TargetMachine. Refactored targets to support this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26742 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCJITInfo.h
PCTargetMachine.cpp
PCTargetMachine.h
|
1877ec9b02511e111998596b9ba9c3a2275d6a92 |
13-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
For functions that use vector registers, save VRSAVE, mark used registers, and update it on entry to each function, then restore it on exit. This compiles: void func(vfloat *a, vfloat *b, vfloat *c) { *a = *b * *c + *c; } to this: _func: mfspr r2, 256 oris r6, r2, 49152 mtspr 256, r6 lvx v0, 0, r5 lvx v1, 0, r4 vmaddfp v0, v1, v0, v0 stvx v0, 0, r3 mtspr 256, r2 blr GCC produces this (which has additional stack accesses): _func: mfspr r0,256 stw r0,-4(r1) oris r0,r0,0xc000 mtspr 256,r0 lvx v0,0,r5 lvx v1,0,r4 lwz r12,-4(r1) vmaddfp v0,v0,v1,v0 stvx v0,0,r3 mtspr 256,r12 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26733 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.td
|
64ce964673ca5c71f46933d8699aa557fbc5f15a |
13-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a couple of bugs that broke the alpha tester build git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26722 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
3faad495bc5c23de4852e7a3a13c25203cabfc3e |
13-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Handle cracked instructions in dispatch group formation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26721 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
|
fd97734f3636f54a86890918096d3d692df0b939 |
13-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Mark instructions that are cracked by the PPC970 decoder as such. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26720 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCInstrFormats.td
PCInstrInfo.h
PCInstrInfo.td
|
88d211f82304e53694ece666d4a2507b170e4582 |
12-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Several big changes: 1. Use flags on the instructions in the .td file to indicate the PPC970 unit type instead of a table in the .cpp file. Much cleaner. 2. Change the hazard recognizer to build d-groups according to the actual algorithm used, not my flawed understanding of it. 3. Model "must be in the first slot" and "must be the only instr in a group" accurately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26719 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
PCInstrFormats.td
PCInstrInfo.h
PCInstrInfo.td
|
9c2c38674a204452eeb50f1f0e3e7d26005a8cde |
11-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
blr is a branch too git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26710 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
e928a7277296ce4fb06010d42c580929562c31f8 |
10-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
teach the JIT to encode vector registers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26697 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
b0d21ef20c29f4ea46d21b488f17feaa6a8760e1 |
08-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Change the interface for getting a target HazardRecognizer to be more clean. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26608 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
|
49f398b96a026034c2e92ffeca692d0f57fa771a |
08-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26605 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
7809811e4ed3c2462efa327cef0464b9844baea2 |
07-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Use "llvm.metadata" section for debug globals. Filter out these globals in the asm printer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26599 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b84225b080a6ad72c4eecececc0a4fdffc9455a8 |
07-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add another missing store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26595 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
ab5801cb28168b22444a95dd4c3783f4eba25801 |
07-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a couple more load/store instrs, add a newline to the end of file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26594 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
|
3acbe5d4f0d6163cb761368692c830c1a4f27e31 |
07-Mar-2006 |
Nate Begeman <natebegeman@mac.com> |
This kinda sorta implements "things that have to lead a dispatch group". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26591 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
|
2046371e70e90d4435fcdf1b2ebeb64a2e5b2626 |
07-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add some new instructions to the classifier. With this, we correctly insert a nop into Freebench/neural, which speeds it up from 136->129s (~5.4%). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26590 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
7ce64852e8fc260f8a7434217c1b57b85a70a1c8 |
07-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add some comments that describe what we model git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26588 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
|
c6644188208d4aee9a9d6c428710ec1f69837944 |
07-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Implement a very very simple hazard recognizer for LSU rejects and ctr set/read flushes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26587 91177308-0d34-0410-b5e6-96231b3b80d8
PCHazardRecognizers.cpp
PCHazardRecognizers.h
PCISelDAGToDAG.cpp
|
5a63c47fb5fd610a98a3425f06a683833c30693b |
07-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26585 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
bbf1c72d51a77bf54c9c684b90a78e59f0b70b2f |
06-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
implement TII::insertNoop git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26562 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
|
9601a86a644fa036168ff173d3539550b2e9206e |
05-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Copysign needs to be expanded everywhere. Note that Alpha and IA64 should implement copysign as a native op if they have it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26541 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0f6ab6ff97decd0150a7cdeda600216cd050d18a |
01-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Implement CodeGen/PowerPC/or-addressing-mode.ll, which is also PR668. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26450 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
00d18f0879fb02d90aaf27e53a8a6bab2513ab5d |
01-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26448 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
5126984b1da4bda0e93961da07e883699f1f2d57 |
01-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Compile this: void foo(float a, int *b) { *b = a; } to this: _foo: fctiwz f0, f1 stfiwx f0, 0, r4 blr instead of this: _foo: fctiwz f0, f1 stfd f0, -8(r1) lwz r2, -4(r1) stw r2, 0(r4) blr This implements CodeGen/PowerPC/stfiwx.ll, and also incidentally does the right thing for GCC bugzilla 26505. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26447 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
PCSubtarget.cpp
EADME.txt
|
8c13d0a5734a2f9d2b1c3870732cafffb20e3a55 |
01-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Use a target-specific dag-combine to implement CodeGen/PowerPC/fp-int-fp.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26445 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
EADME.txt
|
d30bf01e9064a668eaa896a3e9c79d8f0290b6a7 |
01-Mar-2006 |
Evan Cheng <evan.cheng@apple.com> |
Vector op lowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26438 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
bf751e2d6f3779b78c9a00fb9887e1b25faa880c |
28-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Add a subtarget feature for the stfiwx instruction. I know the G5 has it, but I don't know what other PPC impls do. If someone could update the proc table, I would appreciate it :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26421 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCSubtarget.h
|
f4c8575c271c70edffd48a5c23276f18a0b5900d |
28-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
remove implemented item git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26418 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
6e53ceb0d4b2dd1f886284242493ab43500e32a8 |
27-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
readme updates git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26405 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
2c003e26e583e6acafca142ef93efa95a84866a1 |
24-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Add memory printing support for PPC. Input memory operands now work with inline asms! :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26365 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e5d8861126959d01cf847b6ef280dd9ef38d33cf |
24-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Implement selection of inline asm memory operands git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26348 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d0839f3071f687de505dba26a16c125b10f982ef |
23-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
PPC JIT relocation model should be DynamicNoPIC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26338 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
e3f01570c172570fb2c0bacc6b8860ee6809362d |
23-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Implement the PPC inline asm "L" modifier. This allows us to compile: long long test(long long X) { __asm__("foo %0 %L0 %1 %L1" : "=r"(X): "r"(X)); return X; } to: foo r2 r3 r2 r3 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26333 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
4c1aa866578f7a358407a22fe55b454f52a24325 |
22-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
- Added option -relocation-model to set relocation model. Valid values include static, pic, dynamic-no-pic, and default. PPC and x86 default is dynamic-no-pic for Darwin, pic for others. - Removed options -enable-pic and -ppc-static. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26315 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelLowering.cpp
PCSubtarget.cpp
PCTargetMachine.cpp
|
0420f2aaf9551a10e2060d076de2fcdd7b316370 |
22-Feb-2006 |
Jim Laskey <jlaskey@mac.com> |
Coordinate activities with llvm-gcc4 and dwarf. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26314 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
1efa40f6a4b561cf8f80fe018684236010645cd0 |
22-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
split register class handling from explicit physreg handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26308 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4217ca8dc175f7268a4335c8406dedd901e8e631 |
22-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Updates to match change of getRegForInlineAsmConstraint prototype git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26305 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
d2ee218b499fcd364aae7da031819b738f009cd1 |
18-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
Moved PICEnabled to include/llvm/Target/TargetOptions.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26272 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelLowering.cpp
|
551bf3f80058a026b6a128dffd5530019e1df1b9 |
17-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
kill ADD_PARTS & SUB_PARTS and replace them with fancy new ADDC, ADDE, SUBC and SUBE nodes that actually expose what's going on and allow for significant simplifications in the targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26255 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
298ebf2bd80ca415e58bbcbd9866ee58f167b620 |
16-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
If the false case is the current basic block, then this is a self loop. We do not want to emit "Loop: ... brcond Out; br Loop", as it adds an extra instruction in the loop. Instead, invert the condition and emit "Loop: ... br!cond Loop; br Out. Generalize the fix by moving it from PPCDAGToDAGISel to SelectionDAGLowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26231 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
0d7db6f79a61803fff87d12d9c75c0f54d863d10 |
14-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
If we have zero initialized data with external linkage, use .zerofill to emit it (instead of .space), saving a bit of space in the .o file. For example: int foo[100]; int bar[100] = {}; when compiled with C++ or -fno-common results in shrinkage from 1160 to 360 bytes of space. The X86 backend can also do this on darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26185 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
33d5082779c0957f80253c01e10cbddfbf2825c8 |
14-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Make sure that weak functions are aligned properly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26181 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
45b3976db7f20abe99035962596698008a60033f |
13-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Switch to using getCALLSEQ_START instead of using our own creation calls git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26142 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
789fd42320857a13ecca110b3e83a450063f5c73 |
12-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
Add missing patterns for andi. and andis., fixing test/Regression/CodeGen/ PowerPC/and-imm.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26136 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7e9b26fc73425ae215fbc9c8010cb53059a93b3a |
09-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
Match getTargetNode() changes (now return SDNode* instead of SDOperand). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26085 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
34167215a8da717b21e44f1b834dc34d15279bf1 |
09-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
Change Select() from SDOperand Select(SDOperand N); to void Select(SDOperand &Result, SDOperand N); git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26067 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
418caa135640833fda641997dae657062dccf0f4 |
09-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Darwin doesn't support #APP/#NO_APP git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26066 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
6f4a072e1f41fb2d0392ab818266efe8120c5a03 |
08-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Rename BSel -> PPCBSel for the benefit of doxygen users. Move the methods out of line. Remove unused Debug.h stuff. Teach getNumBytesForInstruction to know the size of an inline asm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26064 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
4d73a5a204b2e9f409347102fc0701e5b68699cb |
08-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Emit the 'mr' pseudoop for easier reading. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26053 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
8d3f490991a190e26ec9aaa5c9d3c21f809666a5 |
08-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Move emails from nate into public places git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26051 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
ad3bc8d8add8204195aeb5106036eb7992541bdb |
07-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Implement getConstraintType for PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26042 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
763317de1bda41581b12915b31ba06c2e16450fe |
07-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Add the simple PPC integer constraints git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26027 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
815ef5b3dd7536e62038c091f6bf17f7badbfe5a |
06-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Change prototype git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26022 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
984cb3773f78ed290e33e05d25a6620deec6ca04 |
06-Feb-2006 |
Jim Laskey <jlaskey@mac.com> |
We seem to have settled to __DWARF for section name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26015 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
7564e0b46d68abbd43a9910882568f4f9875af50 |
05-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
Complex pattern isel code shouldn't select nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26010 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ba2f0a9ee53512ce840aca34281e126802a125d1 |
05-Feb-2006 |
Evan Cheng <evan.cheng@apple.com> |
Use SelectRoot() as entry of any tblgen based isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25997 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
213845367cb394237cbf10ccfba5a219bbec4781 |
05-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25984 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
7d8d5a522fb6d9d83f5d89f30fe1badf68832efd |
05-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Use the asmprinter to find out what the preferred alignment of a global is. This patch speeds up 172.mgrid from 31.81s to 11.39s on darwin/ppc. Many many thanks to Nate for tracking down the root cause of the issue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25979 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a6973c348bb92e672cad5b599cc4bff09c9e4b10 |
04-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
Remove some stuff that now works git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25963 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
1541bc3a233b6a8b7e7ad0be877a3b3b45d18e11 |
03-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25944 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
33c1dab0bdb2f1a1a75405aa82b9dd9d01d76cd1 |
03-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
remove some target-indep and implemented notes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25930 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
a63fee898b36ac21ad5189929f4e630713fe3231 |
03-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
Flesh out a couple of the items in the README git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25928 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
d463f7f698f98333cfa4358db203fb8106bf1e2f |
03-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25921 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
39b248b79e7842dce6c71e50c557ebaf325d55e1 |
03-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
update a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25918 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
3b478b31e297208ef2c9f74750a8a603eb3726fb |
02-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
add 64b gpr store to the possible list of isStoreToStackSlot opcodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25916 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
6524287c53cf727a8ef33517403fcb1bbd7adff9 |
02-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
implement isStoreToStackSlot for PPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25914 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
|
408396014742a05cad1c91949d2226169e3f9d80 |
02-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Move isLoadFrom/StoreToStackSlot from MRegisterInfo to TargetInstrInfo,a far more logical place. Other methods should also be moved if anyoneis interested. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25913 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
|
275b8846d519ac91777e6cad00b8650b252d2ed6 |
02-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
new example git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25903 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
93c740bbbb47280cee38872eb58bfad70f93be66 |
02-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
Update the README git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25902 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
588732748ba804e1e258df8856e20b3b73348ac3 |
01-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
add a method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25884 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
5a7efc9d4f3b1fd09873a7377bcca7f513d2ad80 |
01-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25876 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
750ac1bdfa6f09bddfd9efce1d6360dde8fa74c0 |
01-Feb-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix some of the stuff in the PPC README file, and clean up legalization of the SELECT_CC, BR_CC, and BRTWOWAY_CC nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25875 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
EADME.txt
|
0ddc18047d7e16d1d325415fc015dc687dc0655f |
01-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
another testcase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25862 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
b8973bd8f50d7321635e1e07b81a880a0828d185 |
31-Jan-2006 |
Evan Cheng <evan.cheng@apple.com> |
Allow the specification of explicit alignments for constant pool entries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25855 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ddc787dfdc75fb2d78eb3e5793ca0f417ad74fd3 |
31-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
add info about the inline asm register constraints for PPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25853 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
4477590ef64796e4716f7322d8b2d1cffbaadfa1 |
31-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
Codegen bool %test(int %X) { %Y = seteq int %X, 13 ret bool %Y } as _test: addi r2, r3, -13 cntlzw r2, r2 srwi r3, r2, 5 blr rather than _test: cmpwi cr7, r3, 13 mfcr r2 rlwinm r3, r2, 31, 31, 31 blr This has very little effect on most code, but speeds up analyzer 23% and mason 11% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25848 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
83e64baaef3d62e4cf5b17d9900582b6849f2de9 |
31-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
example nate pointed out git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25841 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
56b6964473cb0e69a8739e6c7e20239c2f19e8f7 |
31-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
add the 'lucas' optimization git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25830 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
37dd6f1b79bd888cb88ced7e5ce5a8ebc7aa44e2 |
29-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Functions that are lazily streamed in from the .bc file are *not* external. This fixes llvm-test/SingleSource/UnitTests/2006-01-29-SimpleIndirectCall.c and PR704 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25793 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCISelLowering.cpp
|
d9b55dd21ae4168d131b344d53eb19ac4468b23c |
29-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Now that OpActions is big enough, we can specify actions for vector types git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25784 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3fd327fe7fdcc9cfdf0ecc2e069120672c37c0c9 |
29-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
disable this for now git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25778 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ec4a0c7c6bd689572d8f432950867e6ee9d777f4 |
29-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Request expansion of ConstantVec nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25773 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a54aa94197d5af9a72c0de422a58e938da80b2a4 |
29-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Targets all now request ConstantFP to be legalized into TargetConstantFP. 'fpimm' in .td files is now TargetConstantFP. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25771 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e00ebf0acaa47a9aa8bfeba025f281432c4e9957 |
28-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a bug in my elimination of ISD::CALL this morning. PPC now has to provide the expansion for i64 calls itself git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25735 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
969097968c2f845caa6085abfc357ad53eb18956 |
28-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
add a note about how we should implement this FIXME from the legalizer: // FIXME: revisit this when we have some kind of mechanism by which targets // can decided legality of vector constants, of which there may be very // many. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25733 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
EADME.txt
|
eb20ed6c86837870e749cf9d6272ae596dbef303 |
28-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
Add a couple more things to the readme. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25724 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
281b55ebeccd3f0d723888c1bb9ec6e476f708f1 |
28-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Use PPCISD::CALL instead of ISD::CALL git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25717 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
bba534dc6676fa6a91dfb4492b30faf67bd22abe |
27-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Make llvm.frame/returnaddr not crash on ppc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25710 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
ee625573b5b39b91441fc6ea23f3ba415abdc71f |
27-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
Remove TLI.LowerReturnTo, and just let targets custom lower ISD::RET for the same functionality. This addresses another piece of bug 680. Next, on to fixing Alpha VAARG, which I broke last time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25696 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
19c95507443ebd4f1cee80917d540c8bd27f8fe1 |
27-Jan-2006 |
Evan Cheng <evan.cheng@apple.com> |
Subtarget feature can now set any variable to any value git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25678 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
cedc6f4b30c1fd5f7ad1df0b65b870e6f107e8ff |
27-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
PHI and INLINEASM are now built-in instructions provided by Target.td git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25674 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
b3e789ac2548a4382d0db03b573fd8a127617f8f |
26-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Set up MachineDebugInfo to scan for debug information form "llvm.db"g globals. Global Variable information is now pulled from "llvm.dbg.globals" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25655 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
0577a22c678bd5e31047e6b8038c6917202271ee |
25-Jan-2006 |
Evan Cheng <evan.cheng@apple.com> |
Set SchedulingForLatency to be the default scheduling preference for all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25607 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
acc398c195a697795bff3245943d104eb19192b9 |
25-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
First part of bug 680: Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same way as everything else. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25606 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
7558b0e80c058c148ef9f45220bbbe6bc8a146dd |
25-Jan-2006 |
Evan Cheng <evan.cheng@apple.com> |
Default scheduling preference is SchedulingForLatency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25603 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
52060a0e7190d7713042f18b1b949d1ae953638f |
24-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Crude Dwarf global variable debugging. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25569 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
2c2c6c61f100bc7c3df873b11203fcea1b5e18fe |
23-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Add explicit #includes of <iostream> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25515 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
|
86a5484079abc8a20f24066aaf3f5efcccebb673 |
22-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Add explicit #includes of <iostream> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25509 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
bc1c2154534e8469ac5258ea145e3ce2ccd7ee07 |
21-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
trivial formatting improvement: don't insert extra blank lines between .comm vars. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25492 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3cda14ff3e70a5124db396645b108be51ebb31af |
19-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25439 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
bc38dbfd9b88c021378c647f6c169f4f76a775da |
18-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Don't assert on 'select_cc SETUO' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25423 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c16257f05391b8aeccef62d6b543f1cb5a8185fe |
18-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
fix out of date comment git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25422 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
e44b2d16ee088c44ebbe6f21a2af8b5321b68e48 |
18-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix Regression/CodeGen/PowerPC/2006-01-18-InvalidBranchOpcodeAssert.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25421 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.h
|
e719a7c40b58a382144212828bfecd4e64210b92 |
18-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Added minimum Dwarf aranges. Cleaned up some section headers. Line number support now works in gdb. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25417 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
19ef4efa70b29aa2ef2d68a60e9bdfa7a4b47d89 |
17-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Add frame work for additional dwarf sections. Comments will improve as code is added. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25410 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
063e765345fd49df0f53b807e57ada7c2ded7e16 |
17-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Adding basic support for Dwarf line number debug information. I promise to keep future commits smaller. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25396 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
98fbc2fd1b4976923a81accff6ec19afdd7c42ab |
16-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
add notes from my *other* email acct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25362 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
1db4b4f5c4229d69ca7a3125d59cb20676795858 |
16-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
transfer some notes from my email to somewhere useful. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25361 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
b22c08b8082cdf0026a8d429f37e8c16a1ca8caf |
15-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Use the default impl of DYNAMIC_STACKALLOC, allowing us to delete some code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25334 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
d88fc03602947b5baa35c8b09fe8bcfa2b4a03c1 |
14-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
bswap implementation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25312 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6283760cd13fa3f41c7f6462456661ea54ded980 |
14-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
Remove some redundant stuff out of the readme. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25308 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
cadd7420f9e705735b794e61cd24aab16ce2fa18 |
13-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
implement stacksave/stackrestore on PPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25277 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
b99329e8a0ec3b5a0004dd649e3546939f5c31e7 |
13-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
expand unsupported stacksave/stackrestore nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25272 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a613d267ea9e7f64336d9c3605b5361d901bf452 |
12-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
ahem :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25239 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
e699ef56186ec4aec379a98c646f263bdaa61624 |
12-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
these cases are autogenerated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25238 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
17e82d2858f0c003b7fcfaf7c025ca3d0aaa7a88 |
12-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
remove dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25237 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
05f1fe8d448013531f86a24b5173fe57330291ef |
12-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Goodbye PPC pattern isel. You have served us well, but it is now time for you to ride off into the sunset. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25236 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelPattern.cpp
PCTargetMachine.cpp
|
ba625726a1fc3b18b6a5386978d33f1943f5df84 |
12-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix an off-by-one error that Nate's eagle eyes caught git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25231 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c6d48d36a349f593aab2194c141a1e24da1aec3e |
12-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Use the auto-insert BuildMI constructor to avoid an explicit insert. No functionality change, just code cleanup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25230 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
64da172b1435d132ce867dcd5c652577664b55a3 |
12-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
If a function has a non-zero sized frame, use an add to adjust the stack pointer in the epilog, not a load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25229 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
35ef913ec21de0f4f1b39c811b4335438717a9b8 |
11-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
Add bswap, rotl, and rotr nodes Add dag combiner code to recognize rotl, rotr Add ppc code to match rotl Targets should add rotl/rotr patterns if they have them git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25222 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCInstrInfo.td
|
a243db8c41bd8ace6e002c9e1fdcdc7256ebf677 |
11-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix calls that need to store values in stack slots, to not copy the stack pointer. This allows us to emit stuff like this: li r10, 0 stw r10, 56(r1) or r3, r10, r10 or r4, r10, r10 or r5, r10, r10 or r6, r10, r10 or r7, r10, r10 or r8, r10, r10 or r9, r10, r10 bl L_bar$stub instead of this: or r2, r1, r1 ;; Extraneous copy. li r10, 0 stw r10, 56(r2) or r3, r10, r10 or r4, r10, r10 or r5, r10, r10 or r6, r10, r10 or r7, r10, r10 or r8, r10, r10 or r9, r10, r10 bl L_bar$stub wowness. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25221 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
413b979fe4b3482f347fc7b613d7dcda81e34874 |
11-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Dead FP arguments still use an incoming FP reg. This fixes Regression/CodeGen/PowerPC/2006-01-11-darwin-fp-argument.ll, which was distilled from a miscompilation in 252.eon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25217 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
49dddb273dd5aa0e30d70fdab1549c5f766beaf7 |
10-Jan-2006 |
Nate Begeman <natebegeman@mac.com> |
Remove a comment that no longer applies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25167 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
da6d20f0c15205923cb2c3ef4bf9b5d77de88881 |
10-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Give PPCISD:: nodes legible names in dumps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25166 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
|
e5cf122869fcace7dbdc40b5a351f76f338cd35b |
10-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
add ret void support back git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25164 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6da8d99f70826552b3a4e7bd5d1376881574b4b1 |
09-Jan-2006 |
Evan Cheng <evan.cheng@apple.com> |
New DAG node properties SNDPInFlag, SNDPOutFlag, and SNDPOptInFlag to replace hasInFlag, hasOutFlag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25155 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
PCRegisterInfo.cpp
|
5fe0e28650dd49f290fce2b80c0052fbc12d2385 |
07-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix the PPC JIT failures last night, which were due to mishandling of linkonce globals git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25141 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
a35ef6350defdc09eb912c52603cffa6afbd78e2 |
06-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
linkonce symbols have an extra indirection, just like weak ones do. This fixes Prolangs-C++/family and Prolangs-C++/primes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25119 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c9a5ef524a9f461717bbf647b2d3da061aed720d |
05-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a compile crash building MultiSource/Applications/d with the new front-end. The PPC backend was generating random shift counts in this case, due to an uninitialized variable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25114 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
e0bce71c42a021d897b51425dab16841a0ebc5bd |
05-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Had expand logic backward. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25105 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
abf6d1784b2d4bbcb7d20ab64881f77d755059f6 |
05-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Added initial support for DEBUG_LABEL allowing debug specific labels to be inserted in the code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25104 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
b2efb853f00d45b1c8d57f92acd0028fbdeffda6 |
04-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Applied some recommend changes from sabre. The dominate one beginning "let the pass manager do it's thing." Fixes crash when compiling -g files and suppresses dwarf statements if no debug info is present. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25100 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
5bf6f25b4a888afaf3e37acd18c43186d45cac2e |
04-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Add unique id to debug location for debug label use (work in progress.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25096 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a7cea6f599418a579ab5ce66413fba7efa8bf581 |
04-Jan-2006 |
Jim Laskey <jlaskey@mac.com> |
Tie dwarf generation to darwin assembler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25093 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetMachine.cpp
|
b73628b5abee86ef76e1ed8c7f9eaed85bea61a8 |
30-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for generating v4i32 altivec code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25046 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
1166bf3f4ca4d2bf9509ec2f243eb9c41360364b |
30-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove a fixme git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25045 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2b4ea795a23ff9d900b9e1f26c92975ef78db1b6 |
26-Dec-2005 |
Evan Cheng <evan.cheng@apple.com> |
Added field noResults to Instruction. Currently tblgen cannot tell which operands in the operand list are results so it assumes the first one is a result. This is bad. Ideally we would fix this by separating results from inputs, e.g. (res R32:$dst), (ops R32:$src1, R32:$src2). But that's a more distruptive change. Adding 'let noResults = 1' is the workaround to tell tblgen that the instruction does not produces a result. It works for now since tblgen does not support instructions which produce multiple results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25017 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
50fb3c498601a84e0d82d7bab3e28c820dd64598 |
24-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix one of the things in the todo file, and get a bit closer to folding constant offsets from statics into the address arithmetic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24999 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
EADME.txt
|
171049d10f71fdeffdfd9592243d7af40db86c71 |
23-Dec-2005 |
Evan Cheng <evan.cheng@apple.com> |
* Removed the use of FLAG. Now use hasFlagIn and hasFlagOut instead. * Added a pseudo instruction (for each target) that represent "return void". This is a workaround for lack of optional flag operand (return void is not lowered so it does not have a flag operand.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24997 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
PCRegisterInfo.cpp
|
53e884587bd4b56c14dc39600eb655e77ae7b905 |
23-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
make sure bit_converts are expanded git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24978 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
1b95e0ba92a08dd90c9f06fe175d7a62b055b5f3 |
23-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Simplify some code by using BIT_CONVERT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24974 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
0fcd40f501d99ce50b23f67e578a37f0943dec36 |
22-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
remove dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24965 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
cec26fc3bf1f9d177a4befabd278410f0cb7d2b8 |
22-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
fix handling of weak linkage git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24964 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
39706e68a5a645d85d0f24c2e43d67cb6024829d |
22-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
move some random notes out of my email into someplace useful git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24956 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
5bc4da48933a097924c4b80c9fa1cdb133978a54 |
22-Dec-2005 |
Evan Cheng <evan.cheng@apple.com> |
Bye bye HACKTROCITY. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24935 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
6a3bfd97f287ba46f532b304e90dded147825797 |
20-Dec-2005 |
Evan Cheng <evan.cheng@apple.com> |
Flip the meaning of FPContractions to reflect Requires<[]> change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24884 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
9e4dd9dfc97f3930f58ca6e47bebbd8eb5cdd8a1 |
20-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Pattern-match return. Includes gross hack! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24874 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrFormats.td
PCInstrInfo.td
PCRegisterInfo.td
|
88276b887c426cf5d998b705a14663bfa38f8efd |
20-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix a couple of the FIXMEs, thanks to suggestion from Chris. This allows us to load and store vectors directly at a pointer (offset of zero) by using r0 as the base register. This also requires some asm printer work to satisfy the darwin assembler. For void %foo(<4 x float> * %a) { entry: %tmp1 = load <4 x float> * %a; %tmp2 = add <4 x float> %tmp1, %tmp1 store <4 x float> %tmp2, <4 x float> *%a ret void } We now produce: _foo: lvx v0, 0, r3 vaddfp v0, v0, v0 stvx v0, 0, r3 blr Instead of: _foo: li r2, 0 lvx v0, r2, r3 vaddfp v0, v0, v0 stvx v0, r2, r3 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24872 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
|
7fd1edd32e9a6782dbcd00818bbdaf82f14284a1 |
20-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Convert load/store over to being pattern matched git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24871 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
cf198eca97af9a939decdc4866398bcc7b370ac6 |
18-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
This is handled by the autogen'd code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24834 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f5395cee6a24699a016b2e379cf4804b09ce5030 |
16-Dec-2005 |
Jim Laskey <jlaskey@mac.com> |
Added source file/line correspondence for dwarf (PowerPC only at this point.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24748 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstrInfo.td
|
d9e0ba49a4cf288eee9b58857b92a89f5a141c4b |
16-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Weak and linkonce global vars should still have a .globl emitted for them git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24747 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f492f9901aa9e6c5d1005f0c244be233d296d046 |
16-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Add a second vector type to the VRRC register class, and fix some patterns so that tablegen can infer all types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24746 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
PCRegisterInfo.td
|
a637c32e381316da47285961111e1793c542cc15 |
16-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Update the darwin handling of linkonce & weak functions and GV stubs. This should work in all permutations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24728 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b5f8e62d712c94aa5324d8816f6ca2c47c5ce86b |
14-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove a now unused statistic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24720 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
a07da92624219599e6569460b3b56b49d60a4b46 |
14-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Use the new predicate support that Evan Cheng added to remove some code from the DAGToDAG cpp file. This adds pattern support for vector and scalar fma, which passes test/Regression/CodeGen/PowerPC/fma.ll, and does the right thing in the presence of -disable-excess-fp-precision. Allows us to match: void %foo(<4 x float> * %a) { entry: %tmp1 = load <4 x float> * %a; %tmp2 = mul <4 x float> %tmp1, %tmp1 %tmp3 = add <4 x float> %tmp2, %tmp1 store <4 x float> %tmp3, <4 x float> *%a ret void } As: _foo: li r2, 0 lvx v0, r2, r3 vmaddfp v0, v0, v0, v0 stvx v0, r2, r3 blr Or, with llc -disable-excess-fp-precision, _foo: li r2, 0 lvx v0, r2, r3 vxor v1, v1, v1 vmaddfp v1, v0, v0, v1 vaddfp v0, v1, v0 stvx v0, r2, r3 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24719 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
8c75ef9228cfa5dc98adbfe011e87ca2fc65cd0c |
14-Dec-2005 |
Evan Cheng <evan.cheng@apple.com> |
Added predicate !NoExcessFPPrecision to FMADD, FMADDS, FMSUB, and FMSUBS. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24716 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
3fb6877cb4d49883726850e0bc6ca6550000abdf |
14-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for fmul node of type v4f32. void %foo(<4 x float> * %a) { entry: %tmp1 = load <4 x float> * %a; %tmp2 = mul <4 x float> %tmp1, %tmp1 store <4 x float> %tmp2, <4 x float> *%a ret void } Is selected to: _foo: li r2, 0 lvx v0, r2, r3 vxor v1, v1, v1 vmaddfp v0, v0, v0, v1 stvx v0, r2, r3 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24701 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
993aeb2ed93f99faf1438f1b67cd922989306828 |
13-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Prepare support for AltiVec multiply, divide, and sqrt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24700 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.h
PCInstrInfo.td
|
d1239b7c69e3c8f36d21c30d5df923cfeb96583e |
13-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Use the shared asmprinter code for printing special llvm globals git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24695 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
deea416570f31a82081f1bbbc65f0c06d44462bf |
13-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
reindent a loop, unswitch a loop. No functionality changes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24692 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
d717b19933f1e99617205c5f0c0340e6c9cccbfc |
11-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Remove type casts that are no longer needed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24661 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstrInfo.td
|
e54645a6fb9887b3eccf2eade24531165f84b0ed |
11-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Fix the JIT failures from last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24659 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
28a6b02626c29b1fe9bb16c14c193549fab4cab8 |
10-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for TargetConstantPool nodes to the dag isel emitter, and use them in the PPC backend, to simplify some logic out of Select and SelectAddr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24657 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCInstrInfo.td
|
0976122abcea58fc9be081a431bd8390cb00c367 |
10-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support patterns to many load and store instructions which will hopefully use patterns in the near future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24651 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
646f7afb797630020f02c6f552c6c5c8d7e73ad6 |
09-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Teach the PPC backend about the ctor and dtor list when not using __main and linking the entire program into one bc file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24645 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
62c08dd4a1a1e8755ec6cc7cd458fa532c8b5c85 |
08-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Add another important case we miss git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24639 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
85961d5ec126bbc0c111d52dd7361d5159265ca5 |
06-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Silence another annoying GCC warning git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24627 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
4172b10ca1adfc1026428e5f522aaab98bd939ad |
06-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Use new PPC-specific nodes to represent shifts which require the 6-bit amount handling that PPC provides. These are generated by the lowering code and prevents the dag combiner from assuming (rightfully) that the shifts don't only look at 5 bits. This fixes a miscompilation of crafty with the new front-end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24615 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
bd05982b487e1e672a6c6316fff6b3260a78b9c7 |
05-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Add some explicit type casts so that tblgen knows the type of the shift amount, which is not necessarily the same as the type being shifted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24594 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
bead6612a5591003b84df52d8656a1fee54db82c |
04-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
The basic fneg cases are already autogen'd git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24592 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
937a79dbe3d71320e2bda8050541080f04412f14 |
04-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Autogen matching code for ADJCALLSTACK[UP|DOWN], thanks to Evan's tblgen improvements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24591 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
60a4ab2d5c5e0e2647590882d77fe5d21d0c4990 |
04-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Finish moving uncond br over to .td file, remove from .cpp file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24590 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
1e48478557587d3931d5e8277fe79719d78ab245 |
04-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Define BR in the .td file now that Evan made tblgen smarter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24589 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
05f56a529c0c9ac37b41c7472ceb7d2e95feff1e |
01-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Make sure these get added into the codegenmap when appropriate git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24566 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6510b22cec7de4f0acc9965ec24c3668a6a8a87e |
01-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Support multiple ValueTypes per RegisterClass, needed for upcoming vector work. This change has no effect on generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24563 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
5dfc55c304b051a33f4ee30a2e1b4bca85ddb75e |
01-Dec-2005 |
Nate Begeman <natebegeman@mac.com> |
Cosmetic change, better reflects actual values git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24562 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
db1cb2b3a15301c000c2bc5a99d5807510b2a456 |
01-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a regression caused by a patch earlier today git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24561 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c121e33e35b2e7292e6d99d8db91f73b84269e36 |
01-Dec-2005 |
Evan Cheng <evan.cheng@apple.com> |
Use a getCopyToReg() variant to generate a flaggy CopyToReg node. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24558 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
71d3d50b4a2182ce34d383c00a6f0e6231685cbf |
30-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
SelectNodeTo now returns N. Use it instead of return N directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24549 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
80720a921987e36c83236d375919172afd20d79c |
30-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Fix Regression/CodeGen/PowerPC/2005-11-30-vastart-crash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24547 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
391c5d231a1d251ea9dc3d8745547c957db94ca4 |
30-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
No longer track value types for asm printer operands, and remove them as an argument to every operand printing function. Requires some slight tweaks to x86, the only user. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24541 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f43a3ca26d7bf431be5cdfb5963350a158e840af |
30-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
First chunk of actually generating vector code for packed types. These changes allow us to generate the following code: _foo: li r2, 0 lvx v0, r2, r3 vaddfp v0, v0, v0 stvx v0, r2, r3 blr for this llvm: void %foo(<4 x float>* %a) { entry: %tmp1 = load <4 x float>* %a %tmp2 = add <4 x float> %tmp1, %tmp1 store <4 x float> %tmp2, <4 x float>* %a ret void } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24534 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7ac8e6b6a85525e81a39d2a48c40b3b652583902 |
29-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Represent the encoding of the SPR instructions as they actually are, so that we can use the correct SPR numbers in the InstrInfo.td file. This is necessary to support VRsave. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24521 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
425a96971f0b0298222a51b5692aacaa9229dce3 |
29-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Hook up one type, v4f32, to the VR RegisterClass for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24517 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
9b14f66320d18ea194122a0786c7ea9446e1740c |
29-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Add the remainder of the AltiVec 4 x float instructions. Further enhancements will be necessary to teach the code generator that since there is no fmul, it will have to do vmaddfp, adding +0.0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24516 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
f73bae1b73211c77238f64029ee2bec7ce90bba2 |
29-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
No targets support line number info yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24513 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6a648614e88586e85a36ceb5c1d3b84e4f55b458 |
29-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Add the majority of the vector machien value types we expect to support, and make a few changes to the legalization machinery to support more than 16 types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24511 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
5ee16ea41792e38ce9240c0bd7b165cefb752612 |
29-Nov-2005 |
Evan Cheng <evan.cheng@apple.com> |
Fixed a comment bug: createPPCPatternInstructionSelector -> createPPCISelPattern git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24510 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
fd5df2b2030ab13e0ada031fc10f52d27c8595b4 |
29-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
don't say this is i128, because it isn't yet. Hopefully nate will change this to be something sane, but in the mean time it is unused, so safe to make something bogus. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24504 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
01595c52b32b8e40b87dd9d36753f8e972ab6f74 |
26-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Small tweaks noticed while on the plane. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24492 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
PCRegisterInfo.td
|
e4f17a5f9b6b5c94dccfd14babcf58d9d5dab4e8 |
23-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Some first bits of AltiVec stuff: Instruction Formats, Encodings, and Registers. Apologies to Jim if the scheduling info so far isn't accurate. There's a few more things like VRsave support that need to be finished up in my local tree before I can commit code that Does The Right Thing for turning 4 x float into the various altivec packed float instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24489 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
PCRegisterInfo.td
|
c569e6108adf701bc51635b35cb18bd35a843d18 |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Use generic constant pool emission code in the AsmPrinter class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24465 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
0745536c0006f291c3fb98bdd71aa19130a561fd |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Use the FunctionNumber provided by the AsmPrinter class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24462 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
6d5a4f6a8ed7347bbe4880ac3f3bb87d62836e01 |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Use CommentString where possible, fix a bug where aix mode wouldn't assemble due to basic blocks being misnamed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24459 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
ef658741519db6e7091329c3fe57a771f67c237a |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
unify the darwin and aix constant pool printers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24458 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
8b8b9515d6b18f9fdd0303a6ce603f5b5997ef50 |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Adjust to capitalized AsmPrinter method names git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24456 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
7f9ccde91eb1532af2571f0f001e4d919fd61410 |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
use PrivateGlobalPrefix for basic blocks git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24453 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f6163a00793b4bae585d7b77a10faf3f51eb431b |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
This is now implemented in common codegen code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24446 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f55366e3c269505b2ecb0173a2ece59acf1b5df8 |
21-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
set PrivateGlobalPrefix on darwin, use it when printing out CP references git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24441 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
9542f9714e4b4b1c5cf7b0faef40c67af1f1e0bb |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
only use dyld stubs if not in ppc-static mode. This completes support for non-static codegen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24403 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
9ba13e4aeff453cdc8ed26fb927ec65dd44625b4 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
refactor call operand handling to eliminate special cases from printOp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24401 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3e7f86a037181bf8804600c1000da2dc8a2f2f70 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
disentangle call operands from branch operands a bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24400 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstrInfo.td
|
1d05cb47a94bb5639b690519c6027447791e06f7 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
add an option to generate completely non-pic code, corresponding to what gcc -static produces on PPC. This is used for building kexts and other things. With this, materializing the address of a global looks like: lis r2, ha16(L_H$non_lazy_ptr) la r3, lo16(L_H$non_lazy_ptr)(r2) we're still emitting stubs for functions, which is wrong. That is next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24399 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelLowering.cpp
PCSubtarget.cpp
|
1df747867cc1e7d37447bc3072e55e380c6720e8 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a bug that resistor on IRC hit where we tried to create token factor nodes of load results, not of their chain results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24398 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
3eef4e377cad01d5fbef2d67a12fe96171e0d860 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Enable global address legalization, fixing a todo and allowing the removal of some code. This exposes the implicit load from the stubs to the DAG, allowing them to be optimized by the dag combiner. It also moves darwin specific stuff out of the isel into the legalizer, and allows more to be moved to the .td file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24397 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
EADME.txt
|
4f0f86de5f183b09d07b17d1f940bd3e298abfcd |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Teach the selector to fold lo(g) into load instruction immediate fields git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24396 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
490ad0809767499519602d4aaf6ba5548bbef215 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Generate LA and ADDIS when possible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24395 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
1566613ca4aecaf0143b41c97ae3b3be80660c56 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Use the right accessor to create this node git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24394 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
860e8862c1fbd3b261da4a64a8c0096f9f373681 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Add an initial hack at legalizing GlobalAddress into the appropriate nodes on Darwin to remove smarts from the isel. This is currently disabled by default (uncomment setOperationAction(ISD::GlobalAddress to enable it). tblgen needs to become smarter about tglobaladdr nodes and bigger patterns needed to be added to the .td file. However, we can currently emit stuff like this: :) li r2, lo16(L_x$non_lazy_ptr) lis r3, ha16(L_x$non_lazy_ptr) lwzx r2, r3, r2 The obvious improvements will follow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24390 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
bae5b3c1c6e1009898f66211a6fd466c1e809ccc |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
LI could theoretically be used for the lo-part of a global address, just like lis can be used for the high part. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24388 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
2823b3e70ee7a5ed7482c45c503659a16a879a61 |
17-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
When lowering direct calls, lower them to use a targetglobaladress directly instead of a globaladdress. This has no effect on the generated code at all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24386 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
422b0cee7a32636303398d8788f98a59bf15381c |
16-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Patch to clean up function call pseudos and support the BLA instruction, which branches to an absolute address. This is required to support objc direct dispatch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24370 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelPattern.cpp
PCInstrInfo.td
|
2c3d3d2a59e8c241de43a7c50272ab6443794a19 |
15-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Make sure to use SwitchSection to switch sections so that we don't accidentally emit functions into the .const section. Whoops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24363 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
ced704ba608ce0675bdba1677b612288b6e0956f |
14-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Handle globals with explicit alignment requests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24355 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
ac7fd7fcc67948475c89f033b90d94b666722dd7 |
14-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Teach the PPC asmwriter to honor globals with explicit section requests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24353 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
5684598f3fbebc7629e7fb2c2b5e120a99597c46 |
10-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Make BB and CPI labels use the function number, not the function name as a uniquing id. This makes things happy when the function name is quoted, preventing labels like LBB"foo"_2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24295 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
85eac0d9411c0a2005b2f4111528f276f672fee3 |
10-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Darwin supports quoted labels. This implements: test/Regression/CodeGen/PowerPC/darwin-labels.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24287 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3459bfbc395914ec895aef13123f3b180242577f |
10-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Make the aix asm printer interface properly with the parent class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24274 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
df2e425f2a3b64eb17be927539cd39cb1f1c5f77 |
08-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Add a new option to indicate we want the code generator to emit code quickly, not spending tons of time microoptimizing it. This is useful for an -O0 style of build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24235 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
ae232e7a1055033436370c0b3aecf054fa44d5e7 |
06-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Add the necessary support to the ISel to allow targets to codegen the new alignment information appropriately. Includes code for PowerPC to support fixed-size allocas with alignment larger than the stack. Support for arbitrarily aligned dynamic allocas coming soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24224 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
ae4664a9f2da955c9d2a3f38b28f0a4395851ace |
05-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
add a case Nate sent me git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24195 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
6cee630070b1a7183ed56a8404e812629f5ca538 |
01-Nov-2005 |
Jim Laskey <jlaskey@mac.com> |
Allow itineraries to be passed through the Target Machine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24139 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
|
5b0ac99c9690d7534ade82848c207e202883831b |
01-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Add a flag to enable a darwin linker optimization git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24130 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
bb69e39b5b8ddf7243e2b77cebe2f9f23ba819b2 |
31-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Make constant pool entries use private labels. This is important when you're not compiling a whole program at a time :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24129 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b685af3e60150f5bf513db161d982fcb8654c7b1 |
30-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
This is implemented git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24107 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
167f1e265161bfebb0370e7e1e0559e50bdd9234 |
29-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
New case to handle someday git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24075 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
7d7b96746c1264bd617783860a4a5ab289208fb0 |
29-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Don't emit "32" for unordered comparison git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24073 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ed048c067dc7bf342b2947b4de39e915dcbd2bf0 |
28-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
add a hack to get code with ordered comparisons working. This hack is tracked as PR642 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24068 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6df2507121507c24d7155605c343e467e0106c07 |
28-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
add support for branch on ordered/unordered. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24067 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
f02a916d82e35998c52b1eba6601049f8eee4fac |
28-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Do not globalize internal symbols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24064 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
01959105583ee04bd9c131db7174b6108177caf3 |
28-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
a bad case for bitfield insert git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24051 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
2cbc207c76f10716b61c466f56b5b9fccbb80f4e |
26-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Typo made worse x 2 - take 2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24018 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
85fd97dc8810ac16197594304f9f985a13466d19 |
26-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Fix an assert compiling MallocBench/gs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24017 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ff2fcee846addcb64b6fad0efa339949d26b7390 |
26-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Typo x 2 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24016 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
581a8f79bc1ac3cbe5d621f0b4a0252ab2890bc1 |
26-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Give full control of subtarget features over to table generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24013 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
f0c2be4d2b6f5b04746efae88e8bc642a864361e |
26-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Add attribute name and type to SubtargetFeatures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24012 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
5cd61ce1bea4a1886624825607bfed150ec6b4eb |
26-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Add a note about some bitfield stuff we could be doing better. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23994 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
ae749a9bb5aa4e350041e275ea26f4cc52197392 |
26-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Correctly Expand or Promote FP_TO_UINT based on the capabilities of the machine. This allows us to generate great code for i32 FP_TO_UINT now on targets with 64 bit extensions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23993 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
6e61ca6fa709edc76594602da9c78c22ba2106ea |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
autogen undef git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23991 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
3075a4e94d820402159d81896a7e5fe89a459650 |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Allow pseudos to have patterns, no functionality change git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23988 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
9c73f095bb984fc9ae295904a8bcbcec19313a48 |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Autogen fsel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23987 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
eb255f2b83cd87902309df1ce590f02178aabc65 |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Expose the fextend on the DAG instead of doing it in the matcher git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23986 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e6115b370ad518fa5dfbd33b216f147ab3703db7 |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Autogen a few new ppc-specific nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23985 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
8ecedbe2c391dd399b8b0205484f9053256f90d2 |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
The dag isel generator generates this now git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23984 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
99ea9da87242fed79fd617d79c6efb630a2db37d |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Be a bit more paranoid about calling SelectNodeTo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23982 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
3393e80a06bbbfd9988deafae20c614ebbd5b8e6 |
25-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a couple of minor bugs. The first fixes povray, the second fixes things if the dag combiner isn't run git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23981 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
34bd5d5d876212611d8b66a18f4c8604b342c6eb |
25-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Preparation of supporting scheduling info. Need to find info based on selected CPU. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23974 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
2224dcc88c3f01c707cc7dfdb085975340bc0127 |
24-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Simplify this, matching changes in the tblgen emitter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23909 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
aa38be17c89fbc059c51f083a9161e4e440a6dd5 |
24-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
mark this as beta git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23906 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
c8d28890f6c8b769ad8160fa8a701de31f70cfad |
24-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
rearrange things a bit so that instructions can use subtarget features in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23902 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
2e1f823aed93249afba72e46ce8a2997bd2b97cf |
23-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
improve -help output git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23892 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
5476b9bfced0413cc576bf49f539193c702b9574 |
22-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Add g3 back to the mix and reorder to irritate them anal folk. Actually, it's to group appropriately and provide cues to maintainers that the lists don't need to be ordered. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23880 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
4245f1d79068e589f8db5972917b2e393b60cc7d |
22-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
64-bit reg support should not be enabled by default, as support isn't complete. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23878 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
|
dabb8291e840053a3d1a2a550d157e9c5c3c38c9 |
21-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Instead of aborting if not a case we can handle specially, break out and let the generic code handle it. This fixes CodeGen/Generic/2005-10-21-longlonggtu.ll on ppc. also, reindent this code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23874 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
f5fc2cbd6bcf80cc34c8114007f31d8ffd1d138d |
21-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Plugin new subtarget backend into the build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23870 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PC.td
PCSubtarget.cpp
|
ae1641c39fe9886e4b22a5d79b5a25b4041b62bd |
21-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Match rotate. This does actually match the rotates in an rc5 cipher, but I haven't seen it fire on our testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23863 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
405e3ecb563f21e7b4ee30f0de57821f3eb91219 |
21-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Invert the TargetLowering flag that controls divide by consant expansion. Add a new flag to TargetLowering indicating if the target has really cheap signed division by powers of two, make ppc use it. This will probably go away in the future. Implement some more ISD::SDIV folds in the dag combiner Remove now dead code in the x86 backend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23853 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
|
12a923408cae354c942e5b5dc8b36b2e063fad99 |
20-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Add some more patterns for i64 on ppc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23842 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6957523b9ddc6e85aede47a107502043fd1a3b2d |
20-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Move the target constant divide optimization up into the dag combiner, so that the nodes can be folded with other nodes, and we can not duplicate code in every backend. Alpha will probably want this too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23835 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelPattern.cpp
|
538421411a4a0a070bbd789e88657689ca504dbe |
19-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Added InstrSchedClass to each of the PowerPC Instructions. Note that when adding new instructions that you should refer to the table at the bottom of PPCSchedule.td. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23830 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCInstrFormats.td
PCInstrInfo.td
PCSchedule.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
2d5aff761d32b7f4fddc982e9444d20af48f080b |
19-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Write patterns for the various shl and srl patterns that don't involve doing something clever. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23824 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrFormats.td
PCInstrInfo.td
|
0de8796e68d49d57f4135aa40a1c72b03aa8ecca |
19-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Push processor descriptions to the top of target and add command line info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23820 91177308-0d34-0410-b5e6-96231b3b80d8
PCSchedule.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
f6cd147471fb9a89661e2093731d6d40d4f41c7c |
19-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
now that tblgen is smarter, use integers directly. This should help Andrew too git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23818 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
14c09b81ead8fe8b754fca2d0a8237cb810b37d6 |
19-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
teach ppc backend these are copies git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23813 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
8be1fa5dc5c66d74581a4ec4fb9920e4535ec600 |
19-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Convert these cases to patterns git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23811 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
8d948323942cf031e9d1c55bda2bff9d4db4cf42 |
19-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Woo, it kinda works. We now generate this atrociously bad, but correct, code for long long foo(long long a, long long b) { return a + b; } _foo: or r2, r3, r3 or r3, r4, r4 or r4, r5, r5 or r5, r6, r6 rldicr r2, r2, 32, 31 rldicl r3, r3, 0, 32 rldicr r4, r4, 32, 31 rldicl r5, r5, 0, 32 or r2, r3, r2 or r3, r5, r4 add r4, r3, r2 rldicl r2, r4, 32, 32 or r4, r4, r4 or r3, r2, r2 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23809 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
|
e5468305a0f46161ff4bb0c5a9e0a6988e33711a |
19-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
apply some tblgen majik to simplify the X register definitions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23805 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
da32c9eed6743c29d219a5c3cb13788853f18016 |
19-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Make a new reg class for 64 bit regs that aliases the 32 bit regs. This will have to tide us over until we get real subreg support, but it prevents the PrologEpilogInserter from spilling 8 byte GPRs on a G4 processor. Add some initial support for TRUNCATE and ANY_EXTEND, but they don't currently work due to issues with ScheduleDAG. Something wll have to be figured out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23803 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCInstrInfo.td
PCRegisterInfo.td
|
4a95945fa5aa431110f50092f4a45d24772a553b |
19-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Add the ability to lower return instructions to TargetLowering. This allows us to lower legal return types to something else, to meet ABI requirements (such as that i64 be returned in two i32 regs on Darwin/ppc). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23802 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
|
21f587ca243c2265e9b8aa81481f9085cd0e7b68 |
18-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Simple edits; remove unimplimented cases and clarify long haul SLU cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23788 91177308-0d34-0410-b5e6-96231b3b80d8
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
841d12d9ac489ec33d933af96d77dd4fc2a4cee2 |
18-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Fix the JIT encoding of LWA, LD, STD, and STDU. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23787 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
|
076866c50f6b6c45271285eb268b585b00bed9dc |
18-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Checking in first round of scheduling tablegen files. Not tied in as yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23786 91177308-0d34-0410-b5e6-96231b3b80d8
PCSchedule.td
PCScheduleG3.td
PCScheduleG4.td
PCScheduleG4Plus.td
PCScheduleG5.td
|
3d8df55fed4b241715cdf5ebae07c45faf48646e |
18-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
add a case git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23785 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
9d2b817fcbad2ee615be323c38f1ed66d81964dc |
18-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Do the right thing and enable 64 bit regs under the control of a subtarget option. Currently the only way to enable this is to specify the 64bitregs mattr flag. It is never enabled by default on any config yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23779 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCSubtarget.cpp
PCSubtarget.h
|
1d9d7427c4a4e3c7bdcfd1f725447f355e509c20 |
18-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
First bits of 64 bit PowerPC stuff, currently disabled. A lot of this is purely mechanical. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23778 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelPattern.cpp
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
PCRegisterInfo.td
PCTargetMachine.cpp
|
21e463b2bf864671a87ebe386cb100ef9349a540 |
16-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
More PPC32 -> PPC changes, as well as merging some classes that were redundant after the change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23759 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCFrameInfo.h
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCISelPattern.cpp
PCInstrBuilder.h
PCInstrInfo.cpp
PCInstrInfo.h
PCJITInfo.cpp
PCJITInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRelocations.h
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
EADME.txt
|
4cb5a1b8967828447e525fb9f593953f5f928bdc |
16-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Remove some dead code: the ORI/ORIS cases are autogen'd. This makes SelectIntImmediateExpr dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23753 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
de123822e5cc9a7d09b12166439cfd35a6c9ed62 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
prune #includes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23752 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCTargetMachine.h
|
75c9f6737080af3e0c4a772f9c314f1a6fa2c91d |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
These instructions are now autogenerated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23751 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
e0b2e6372f0bd3824ba761ddf38fc0da6ab080cc |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Add a pattern for FSQRTS git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23750 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
651dea74f6a362d30bc61fd0b549da7707af5bf8 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
remove dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23749 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d242419e17cb6d97c7e3714aa8d768fa4235ef42 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
remove broken SRA/rlwimi case git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23746 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
16e71f2f70811c69c56052dd146324fe20e31db5 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Rename PPC32*.h to PPC*.h This completes the grand PPC file renaming git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23745 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelPattern.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCJITInfo.cpp
PCRegisterInfo.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
b9459b731a0b6345d1e14083fcfa6508646ba81d |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Merge PPCJITInfo.h and PPC32JITInfo.h. Note that the PowerPCJITInfo and PPC32JITInfo classes should be merged. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23744 91177308-0d34-0410-b5e6-96231b3b80d8
PC32JITInfo.h
PCJITInfo.cpp
PCJITInfo.h
PCTargetMachine.cpp
PCTargetMachine.h
|
2668959b8879097db368aec7d76c455260abc75b |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Rename PowerPC*.h to PPC*.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23743 91177308-0d34-0410-b5e6-96231b3b80d8
PC32JITInfo.h
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCFrameInfo.h
PCISelDAGToDAG.cpp
PCISelLowering.h
PCISelPattern.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCSubtarget.cpp
PCTargetMachine.cpp
PCTargetMachine.h
|
26bd0d48a164c419462133270e3ec1c2401a34d7 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Rename PowerPCInstrBuilder.h -> PPC* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23742 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCISelPattern.cpp
PCRegisterInfo.cpp
|
ec4b73cb09723a65024c207b5ac3305c3b64b949 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Nuke the PowerPCTargetMachine.h header. Note that the PowerPCTargetMachine still should be merged into the PPC32TargetMachine class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23741 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCTargetMachine.cpp
PCTargetMachine.h
owerPCTargetMachine.h
|
f379997adccb0fd187c1517181e894aa4d35933a |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Rename PowerPC*.td -> PPC*.td git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23740 91177308-0d34-0410-b5e6-96231b3b80d8
PC.td
PCInstrInfo.td
|
f1ed100bc467db710fba63716fd5080622981fa4 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
These are dead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23739 91177308-0d34-0410-b5e6-96231b3b80d8
PC32.td
owerPC.td
|
4c7b43b43fdf943c7298718e15ab5d6dfe345be7 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Eliminate PowerPC.td and PPC32.td, consolidating them into PPC.td git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23738 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PC.h
PC.td
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCInstrInfo.cpp
PCRegisterInfo.cpp
PCRegisterInfo.h
|
e87bc1f3a841d47b037ba05a5e8350a5f17a7c1e |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Like the comment says... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23737 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
617742b1b8b7fbb07b4ab5db7c292bff78d709f6 |
15-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Nuke PowerPCInstrFormats.h, its contents are dead. Remove the definitions from the .td file that correspond to it git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23736 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCISelPattern.cpp
PCInstrFormats.td
PCInstrInfo.h
owerPCInstrInfo.h
|
e0de44adba002479966943ab431f05f9384fafdd |
14-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove an unnecsesary file. PPC32 and PPC64 share architected registers. We will decide with subtarget support whether we ever use an i64 register class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23734 91177308-0d34-0410-b5e6-96231b3b80d8
PC32.td
PC32RegisterInfo.td
PCRegisterInfo.td
owerPC.td
|
3f31d4304cab178da207cbb795d72274ff7ecdd9 |
14-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
These are now autogenerated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23731 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7cb6491a0deff3f6b14faf20cf9bff8256219965 |
14-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Add patterns for FP round/extend git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23727 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7b1fe15de0f7a8d2fa89f98172de0350107c48c2 |
10-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
These definitions have been moved to common code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23681 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
65a419a1045972729f91f82a378b7f4b7f6a2be5 |
09-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Disable formation of rlwinm instructions from SRA bases. This fixes the 177.mesa failure from last night, and fixes the CodeGen/PowerPC/2005-10-08-ArithmeticRotate.ll regression test I added. If this code cannot be fixed, it should be removed for good, but I'll leave it to Nate to decide its fate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23670 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7d47a61496fc4c1f14aca192ec8055fcd633b86b |
08-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove another unused file. Preparing for the great "enable i64 on ppc32" merge, and using subtarget info for ptr size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23668 91177308-0d34-0410-b5e6-96231b3b80d8
PC64.td
|
02f77d1e8357c0abe3fc51b421cb6c0be006f3a0 |
08-Oct-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove a file that is no longer used git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23666 91177308-0d34-0410-b5e6-96231b3b80d8
PC64RegisterInfo.td
|
cf01a70550a25af39f979eb36a9e95aadcb12e00 |
08-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
When preselecting, favor things that have low depth to select first. This is faster and uses less stack space. This reduces our stack requirement enough to compile sixtrack, and though it's a hack, should be enough until we switch to iterative isel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23664 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
eb5d47d99db0d9e4fc11f136fbacbd507c71a4c2 |
07-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a CQ regression from my patch to split F32/F64 into seperate register classes on PPC. We were emitting fmr instructions to do fp extensions, which weren't getting coallesced. This fixes Regression/CodeGen/PowerPC/fpcopy.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23654 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
6a16f6a14f344eb49a218b3fe159858e95d73e94 |
06-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Pull out Call, reducing stack frame size from 6032 bytes to 5184 bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23650 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
222adac30a642b5ea4a916eb3e97d8d95eb32bea |
06-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Pull out setcc, this reduces stack frame size from 7520 to 6032 bytes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23649 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2b63e4c5e2281ebc5575be3339d311d34f850b3b |
06-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Pull two more methods out, reducing stack frame size from 8224 -> 7520 bytes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23648 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
bd937b98f48cac17bd3d5102b2182943b97f8c28 |
06-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Add a recursive-iterative hybrid stage to attempt to reduce stack space, this helps but not enough. Start pulling cases out of PPC32DAGToDAGISel::Select. With GCC 4, this function required 8512 bytes of stack space for each invocation (GCC 3 required less than 700 bytes). Pulling this first function out gets us down to 8224. More to come :( git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23647 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
8ca02914e53b953e880f3d9eec303c2b2fcd9150 |
03-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Speed up the asm printer a lot by not printing formatted LLVM asm output for globals git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23608 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
dff06f4348878838eb9edc7414dec7c485aec3c3 |
02-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
add patterns for float binops and fma ops git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23592 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
43f07a4bbcac695c51def1d0bcd9c9ddb9e6a94d |
02-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
another solution to the fsel issue. Instead of having 4 variants, just force the comparison to be 64-bits. This is fine because extensions from float to double are free. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23589 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelPattern.cpp
PCInstrInfo.td
|
867940d1b738504a3186276542e94f088821c7f3 |
02-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
fsel can take a different FP type for the comparison and for the result. As such split the FSEL family into 4 things instead of just two. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23588 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelPattern.cpp
PCInstrInfo.td
|
7c0d664c2118d1c5da50b137856d4a6b1c962ec3 |
02-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
fix an f32/f64 type mismatch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23587 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
ca0a4778a8e3036df7e51ed375cc867e6bf024bd |
02-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Minor tweak to the branch selector. When emitting a two-way branch, and if we're in a single-mbb loop, make sure to emit the backwards branch as the conditional branch instead of the uncond branch. For example, emit this: LBBl29_z__44: stw r9, 0(r15) stw r9, 4(r15) stw r9, 8(r15) stw r9, 12(r15) addi r15, r15, 16 addi r8, r8, 1 cmpw cr0, r8, r28 ble cr0, LBBl29_z__44 b LBBl29_z__48 *** NOT PART OF LOOP Instead of: LBBl29_z__44: stw r9, 0(r15) stw r9, 4(r15) stw r9, 8(r15) stw r9, 12(r15) addi r15, r15, 16 addi r8, r8, 1 cmpw cr0, r8, r28 bgt cr0, LBBl29_z__48 *** PART OF LOOP! b LBBl29_z__44 The former sequence has one fewer dispatch group for the loop body. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23582 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
b91956e7f80141c198d3348f06164b6990913233 |
02-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
like the comment says, enable this git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23581 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
2c1760f636df659df8fcbc91055c0afd970f16c8 |
01-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
fix typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23578 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
919c032fa4511468aadc6f50d6ed9c50890710b3 |
01-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
Modify the ppc backend to use two register classes for FP: F8RC and F4RC. These are used to represent float and double values, and the two regclasses contain the same physical registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23577 91177308-0d34-0410-b5e6-96231b3b80d8
PC32RegisterInfo.td
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelPattern.cpp
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
|
242f2557cc242b2d132e5a3e6c3a98961a7e4349 |
01-Oct-2005 |
Jim Laskey <jlaskey@mac.com> |
Should be using flag and not chain. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23572 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2b5e66fc6e3a72ea1e832a51d0d4aab5eb519065 |
30-Sep-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove some now-dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23571 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
5802be13e0eb0f6730b75fee2ea0b3cf6cb148a4 |
30-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
constant fold these calls git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23558 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
b48d2cf5eb4a2576314490e43bef0ac0d87732b2 |
30-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
pass extra args git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23539 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
0ffb1a56ff8439604556afd09ee0774655d7197c |
30-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
these methods get extra args git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23538 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.h
|
ff201eebea35c7e7d37897276e3df0153197b2fd |
30-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Use the 32-bit version for now git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23534 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.td
|
67ab118a6d97160762c3f4fbb1b28a6ae2a1a968 |
30-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Add a bunch of patterns for F64 FP ops, add some more integer ops git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23533 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
237733e9335f4d2bb16a818ab184929e12fae407 |
30-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Remove code for patterns that are autogenerated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23532 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c7a37a52cd05c27aa0ddf743bfaf02cee4a2580e |
30-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
tblgen autogens this pattern now git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23530 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
68fd4866ded709e53672cfc303e8303e212e3fba |
29-Sep-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
copy and paste error git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23528 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.h
|
221e53caeac3be62f92dc3d76340557f8c2875f1 |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
now that tblgen is smarter, this pattern is not needed. Also, tblgen now inverts commuted versions of ANDC/ORC with the current .td file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23527 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
52897f827e6604b9ec0d351b81b3b9df9fb4274f |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
consistency with other cases, no functionality change git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23524 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
f13befb456076d591267b8e126537f839a8ecd9a |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Make the JIT default to the DAG isel instead of the pattern isel, like LLC. The Pattern isel has some strange memory corruption issues going on. :( This should have been converted over anyway, but it got forgotten somehow when switching to the dag isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23523 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
d3d2cf52bbb776941bf8cb03d8732ff3f407cdea |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Never rely on ReplaceAllUsesWith when selecting, use CodeGenMap instead. ReplaceAllUsesWith does not replace scalars SDOperand floating around on the stack, permitting things to be selected multiple times. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23515 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
79d0e9f3d1c9c88ee301a0551b60f6aa8cadb48f |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Codegen ADD X, IMM -> addis/addi if needed. This implements PowerPC/fold-li.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23514 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
d8ead9e25021d5c07b222f8550b621b4f31c874f |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Autogen MUL, move FP cases together git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23512 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
88add100b3db715df4275c8ab408e6b51f28ff8f |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
disentangle FP from INT versions of div/mul git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23511 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
4a7de219b4bd776e5ae89f3cf5f6638afac4e5d3 |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Use the autogenerated matcher for ADD/SUB git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23510 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
e025574370f6375d0fa1ccb9ead5d6124226239b |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
add a patter for SUBFIC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23509 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
0648ccf1e99b2748144f736e1ab89c935fd6f6f7 |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Mark int binops as int-only, add FP binops. Mark FADD/FMUL as commutative but not associative. Add [SU]REM. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23508 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
615c2d0920862ae7d4d766ee3da660ecf2197308 |
29-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Add FP versions of the binary operators, keeping the int and fp worlds seperate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23506 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelPattern.cpp
|
a5cac6f6eb939b033c020cc59499756d2b95b349 |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Mark associative nodes as associative git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23503 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
645992f595193a651f291c661502ed3df0841ca0 |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Nate pointed out that mulh[us] are commutative as well. Thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23500 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6bcf1b7eed0fabed92298cedce0fcacdc55fdfd7 |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
expose commutativity information git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23498 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
393e138f603d50a37425d625126491e314f3a9d0 |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
All (xor *) cases are autogenerated now git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23497 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
cfc828a3d050b0e07fd01b643586a3d61e230b13 |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
add support for missed eqv tests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23496 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
1bd8b7b06e8031f1140570eb3bb240075b334687 |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Implement PowerPC/eqv-andc-orc-nor.ll:EQV3 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23494 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
91da8623bef655542f4402fd8b48987a0594adfc |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
learn to codegen not as NOR instead of xoris/xori git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23490 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
d135fa4fd6f70944a7944d8de2a4e625a240351b |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
These nodes are all autogenerated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23489 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d145a61f8f581cfe7dc7abb023a3b1ab534606c7 |
28-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Darwin, like many BSD systems, has a setjmp/longjmp which saves the signal mask on setjmp calls and restores it on longjmp calls (both of which require syscalls). This makes the calls REALLY slow. Use _setjmp/_longjmp instead. This speeds up hexxagon from 120.31s to 15.68s: from 5.53x slower than GCC to 28% faster than GCC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23482 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
333bd835bd0d01f0e49b2f3d590be685a4959e16 |
27-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Make sure to clear the CodeGenMap after each basic block is selected to avoid cross MBB pollution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23470 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
5e8d2dc19790b2262a27a67a1900ce187d661172 |
27-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Move the post-lsr simplify cfg pass after lowereh, so it can clean up after eh lowering as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23459 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
30e21a46f00e638b2fdafb394058e1e6355f4e70 |
27-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
minor pattern shuffling git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23458 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
ea874f3306c26ed425c05b2de202a176e2f32ed2 |
24-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Teach the dag isel generator how to construct arbitrary immediates. The generated isel now tries li then lis, then lis+ori. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23418 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6a78c2157ad1ca9608ebdb33a8cc9f86f4a74f2c |
17-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Implement hook for ppc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23374 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
4ac85b3e94b5eca5c8e6decea570f207daee419f |
15-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
disable this for now git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23366 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
43ef1318c61222ab9fd571255d9163c9249bd323 |
14-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
give all operands names git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23356 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
4345a4a452c3ba3d99d374026e77b21382df44fe |
14-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Fix some issues exposed by more testing. XORIS had the wrong operands specified. The various *imm operands defined by PPC are really all i32, even though the actual immediate is restricted to a smaller value in it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23352 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
c36d065dce953259bbc6d5e55a2d4dd40042b47f |
14-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Fix some bugs noticed by new checking code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23350 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
303b555164e82139e0f88c183f1fc176fbb2d16c |
14-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
we don't need this proto any longer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23342 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
af165385112037cb942e94ea562a67990b7d6220 |
14-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
move the #include for the generated code into the isel class body so we can use/define class methods git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23339 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7b738342f0b27b9f7fdcf93f08ebb99fa510ae09 |
13-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Change the arg lowering code to use copyfromreg from vregs associated with incoming arguments instead of the pregs themselves. This fixes the scheduler from causing problems by moving a copyfromreg for an argument to after a select_cc node (now it can, and bad things won't happen). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23334 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
31262ce53d8ce1558fb03b41d0a1afab840e5130 |
13-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Remove some dead vectors git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23329 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
e6ec9f20c9df6387b68874e4c49035d3c9c5527f |
10-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
PowerPC cannot truncstore i1 natively git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23304 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelPattern.cpp
|
c9fe7508a5e072479d4ab5711c60aa5142c64f10 |
09-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
I forgot that we always spill fp values as 64-bits. Implement spill folding for FP as well. This triggers a couple dozen times on 177.mesa (for example). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23299 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
f38df04c3a0c2aa766fa50b254d2d0fc743f8152 |
09-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a problem that Nate noticed, where spill code was not getting coallesced with copies, leading to code like this: lwz r4, 380(r1) or r10, r4, r4 ;; Last use of r4 By teaching the PPC backend how to fold spills into copies, we now get this code: lwz r10, 380(r1) wow. :) This reduces a testcase nate sent me from 1505 instructions to 1484. Note that this could handle FP values but doesn't currently, for reasons mentioned in the patch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23298 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
1463019e84cea6857914cea30c0180ec7289f09f |
09-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
code cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23297 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
043870dd85ea41e8972c304b122070a417c8a4bc |
09-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Teach the code generator that rlwimi is commutable if the rotate amount is zero. This lets the register allocator elide some copies in some cases. This implements CodeGen/PowerPC/rlwimi-commute.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23292 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
PCInstrInfo.h
PCInstrInfo.td
|
2eb2517fbe55dd14f0a24a229e72ec5a5fa67b4f |
09-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Introduce two new concepts: 1. Add support for defining Pattern's, which can match expressions when there is no instruction that directly implements something. Instructions usually implicitly define patterns. 2. Add support for defining SDNodeXForm's, which are node transformations. This seperates the concept of a node xform out from the existing predicate support. Using this new stuff, we add a few instruction patterns, one for testing, and two for OR/XOR by an arbitrary immediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23286 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
b85c64c4d882d24fe727f28126f83fce993ed8c8 |
09-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
whitespace/comment changes, no functionality diffs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23283 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
47f01f1b442356f3580b2b230daf30267b4a732e |
08-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Add a bunch of stuff needed for node type inference. Move 'BLR' down with the rest of the instructions, add comment markers to seperate portions of the file into logical parts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23277 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
bfde080ce0ef03f6a95de38089b306d3c7a50f51 |
08-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
add patterns for x?oris? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23268 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
3e63ead49b2166c7bc9e7b6bcc54e8ce3b4abe9d |
08-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
add patterns to the addi/addis/mulli etc instructions. Define predicates for matching signed 16-bit and shifted 16-bit ppc immediates git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23267 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
d1cdc7028cbf5c58c3b3791d89c3bffa15944f65 |
08-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Add patterns for some new instructions, allowing the use of the ineg fragment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23266 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
19c0907ba1c11c81dc231cf7b4143fdaf03466e4 |
08-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Remove some cases handled by the generated portion of the isel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23262 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c98d8236490666ad3f5c9224226bda12269fed77 |
07-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
On non-apple systems, when using -march=ppc32, do not print: '' is not a recognized processor for this target (ignoring processor) Default to "generic" instead of "" for the default CPU. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23257 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
c09eeec0ebc378644bafd04916e5efafa7d98152 |
07-Sep-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement i64<->fp using the fctidz/fcfid instructions on PowerPC when we are allowed to generate 64-bit-only PowerPC instructions for 32 bit hosts, such as the PowerPC 970. This speeds up 189.lucas from 81.99 to 32.64 seconds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23250 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCISelPattern.cpp
|
92cce90c66f9b231275db210f1df97efe21c2dd5 |
06-Sep-2005 |
Nate Begeman <natebegeman@mac.com> |
Add note about future optimization noted in the ppc compiler writer's guide git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23245 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
d401dff7966ca3ac644cddcda4f1e6d30074923e |
06-Sep-2005 |
Nate Begeman <natebegeman@mac.com> |
Add accessor for 64bit flag, so that we can tell when it is safe to generate the fun in-register fp<->long instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23244 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
|
e147ceb2fa377edb14c7977f16c92e2815ff25aa |
03-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
explicitly specify an operands list for patterns with inputs (e.g. neg) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23240 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6cd40d5888f905a3820d5d6c71e57cc0e02abb4a |
03-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
include the dag isel fragment git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23239 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
bb38b6f8c0bf843d630504165b1bfed006dd676b |
03-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
ask for a dag isel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23238 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
25dae727f3b0c3511c17d7b7a8d476b1eed04f20 |
03-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Change the isel to not break out of the big giant switch. Instead, the switch should never be exited, so its bottom is now unreachable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23234 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7cd09cf94269ad728b59b201957b25790e6b9b78 |
03-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
rearrange logical ops to group them together more consistently. Define the PatFrag class which can be used to define subpatterns to match things with. Define 'not', and use it to define the patterns for andc, nand, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23233 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6159fb20c2b18686fa7d3e002e387b4c33809fe1 |
03-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Add AND/OR/XOR git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23232 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
218a15d02c6b5276e26050bbb6bc13db085ad83d |
02-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Add some initial patterns to simple binary instructions, though they currently don't do anything. This elides patterns for binary operators that ping on the carry flag, since we don't model it yet. This patch also removes PPC::SUB, because it is dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23230 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
73e37c35be074588f7709a626acfbba5b2a33afa |
02-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
turn on dag isel by default git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23226 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
839615a510c582ddcdb09a8e2934f30775daa032 |
02-Sep-2005 |
Jim Laskey <jlaskey@mac.com> |
Add help support for -mcpu and -mattr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23222 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
1e9de3ed2db440fac99e5cc85b7d98b0a23a2727 |
02-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Decouple fsqrt from gpul optimizations, implementing fsqrt.ll. Remove the -enable-gpopt option which is subsumed by feature flags. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23218 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCSubtarget.cpp
PCSubtarget.h
|
f505949580e1a4af3d49cb5dcff9fd78f31a00fb |
02-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Restore this patch now that the latent bug has been fixed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23209 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5b3224fe7ecafd486b75ebfa113a95783112ec3d |
02-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Revert the previous patch which causes a mysterious regression in toast. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23207 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2a00daac5895879afdf14adf936cd93deaadbb99 |
02-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Implement small-arguments.ll:test3 by teaching the DAG optimizer that the results of calls to functions returning small values are properly sign/zero extended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23198 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
2b8ad8e55ac04472af769fa36d80893330f90f3d |
02-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Align functions to 16-byte boundaries, to eliminate noise in performance measurements. This improves the performance of 'treeadd' by about 20% with the dag isel, restoring it to the pattern-isel level (which happens to get the alignment right). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23194 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a82f7b2be074e7471e35854a395b1b140c5a7fba |
01-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Local labels on darwin apparently start with just 'L', not .L like other platforms. This reduces executable size and makes shark realize the actual bounds of functions instead of showing each MBB as a function :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23193 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
b1e1180ca0b32f37aa74d7ad703eeaf91e66c8fa |
01-Sep-2005 |
Jim Laskey <jlaskey@mac.com> |
1. Use SubtargetFeatures in llc/lli. 2. Propagate feature "string" to all targets. 3. Implement use of SubtargetFeatures in PowerPCTargetSubtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23192 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
PCTargetMachine.h
owerPCTargetMachine.h
|
75592e4137c3ae7800e1fb8736db28a65bb3c94d |
01-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Implement dynamic allocas correctly. In particular, because we were copying directly out of R1 (without using a CopyFromReg, which uses a chain), multiple allocas were getting CSE'd together, producing bogus code. For this: int %foo(bool %X, int %A, int %B) { br bool %X, label %T, label %F F: %G = alloca int %H = alloca int store int %A, int* %G store int %B, int* %H %R = load int* %G ret int %R T: ret int 0 } We were generating: _foo: stwu r1, -16(r1) stw r31, 4(r1) or r31, r1, r1 stw r1, 12(r31) cmpwi cr0, r3, 0 bne cr0, .LBB_foo_2 ; T .LBB_foo_1: ; F li r2, 16 subf r2, r2, r1 ;; One alloca or r1, r2, r2 or r3, r1, r1 or r1, r2, r2 or r2, r1, r1 stw r4, 0(r3) stw r5, 0(r2) lwz r3, 0(r3) lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr .LBB_foo_2: ; T li r3, 0 lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr Now we generate: _foo: stwu r1, -16(r1) stw r31, 4(r1) or r31, r1, r1 stw r1, 12(r31) cmpwi cr0, r3, 0 bne cr0, .LBB_foo_2 ; T .LBB_foo_1: ; F or r2, r1, r1 li r3, 16 subf r2, r3, r2 ;; Alloca 1 or r1, r2, r2 or r2, r1, r1 or r6, r1, r1 subf r3, r3, r6 ;; Alloca 2 or r1, r3, r3 or r3, r1, r1 stw r4, 0(r2) stw r5, 0(r3) lwz r3, 0(r2) lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr .LBB_foo_2: ; T li r3, 0 lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr This fixes Povray and SPASS with the dag isel, the last two failing cases. Tommorow we will hopefully turn it on by default! :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23190 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
393ecd6d2dbc844ae9e34fea34f15d914ec7c43c |
01-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a bug where we were useing HA to get the high part, which seems like it could cause a miscompile. Fixing this didn't fix the two programs that fail though. :( This also changes the implementation to follow the pattern selector more closely, causing us to select 0 to li instead of lis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23189 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
50ff55c2c7909818165e51bbdc103a05b143dcb1 |
01-Sep-2005 |
Chris Lattner <sabre@nondot.org> |
Do not select the operands being passed into SelectCC. IT does this itself and selecting early prevents folding immediates into the cmpw* instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23188 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f76053269ecc6c7bd3d0b1e90ebdd0cef1bb2bdc |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Move FCTIWZ handling out of the instruction selectors and into legalization, getting them out of the business of making stack slots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23180 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCISelPattern.cpp
|
8346bb6c29cb6268c99117f6c86d6696b373d03e |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Remove dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23179 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelPattern.cpp
|
bc11c3482c2d38af514031c38c417f106b8f3c91 |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Move SHL,SHR i64 -> legalizer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23178 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
c22af9e5dfad453b93e0ce528af1809bc527bd6a |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Remove code that is now dead from the pattern isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23177 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
eb9b62e35e16f90ab1f641e9ba8d077bd591ff0b |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
lower sra_parts on the dag, implementing it for the dag isel, and exposing the ops to dag optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23176 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
99296ffd36662f0a64a2b4922e2b133b46222113 |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add assert zext/sext to the dag isel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23171 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
5dd7fea3f2fdcca7f2ab092d0042b9b0151449fd |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Handle AssertSext/AssertZext nodes, fixing the regressions last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23170 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
49296f1f48251945635fcebf562331b5ca5eb9c5 |
31-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Enable generation of AssertSext and AssertZext in the PPC backend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23168 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
7a49fdcd1136c26d9c60b19c087ca9d578cc9834 |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix 'ret long' to return the high and lo parts in the right registers. This fixes crafty and probably others. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23167 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
eb80fe8ff684121c8130db716fe4a7cb5ca3ac0d |
31-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
now that physregs can exist in the same dag with multiple types, remove some ugly hacks git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23162 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2ea0c66ae56b3254698c960f7b89b4eaed6bd83f |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix type mismatches when passing f32 values to calls git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23159 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
1368721d532d0d291a03bb3fff7f94805e5919b6 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix some indentation (first hunks). Remove code (last hunk) that miscompiled immediate and's, such as and uint %tmp.30, 4294958079 into andi. r8, r8, 56319 andis. r8, r8, 65535 instead of: li r9, -9217 and r8, r8, r9 The first always generates zero. This fixes espresso. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23155 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
b551ba7661d5f8263979a5905fd3d1b9e5387e45 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a problem Nate found where we swapped the operands of SHL/SHR_PARTS. This fixes fourinarow git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23153 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
14b86c72a28a064373ac1670ed8ee62dab41e2f4 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
codegen ADD_PARTS correctly: put the results in the right registers! This fixes fhourstones git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23152 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2501d5e29c13f41fc15c0be5fece011db27c8ab3 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add operands in the right order, fixing McCat/18-imp with the dag isel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23150 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
31ce12f4f57db4375392e9129772773bed1bd4cc |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Make sure the selector emits register register copies with flag operands linking them to calls when appropriate, this prevents the scheduler from pulling these copies away from the call. This fixes Ptrdist/yacr2 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23143 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
15055733f85da5dc9a29e64cc1a2eeda38898f68 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
The first operand to AND does not always have more than two operands. This fixes MediaBench/toast with the dag selector git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23141 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6de08f4377302cb73ca6a378410889be423af20f |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a bug in my patch for legalizing to fsel. It cannot handle seteq/setne, which I failed to include when I moved the code over. This fixes MallocBench/gs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23140 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8f838720ad578349e7929b32fa9117aa317bb3a5 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
emit FMR instructions to convert f64<->f32 instructions, so things like STOREs, know the right type to store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23139 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
915fb302b103cc53b14693a8dad7e2a83d3037d3 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix some really strange indentation that xcode likes to use. no xcode, this is not right: if (!foo) break; X; git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23138 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8bbcc20a9dccd258d5977d1d99520367b9ca9e7e |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
fix a crash in cfrac git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23137 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
9c2dece8e2daed25eb2db0f034e004a8342462e6 |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Implement DYNAMIC_STACKALLOC, wrap some long lines git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23136 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7107c10501e62d2e3ed34b349585e616b8f6da3e |
30-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a dumb bug of mine where we were mishandling the PPC ABI (undef handling). This fixes voronoi and bh in Olden, allowing all of olden to pass! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23133 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
efa6abcb957b9002a7e6708eb6f7885a93957ea7 |
29-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a bug the last patch exposed in treeadd among others git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23127 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2fef809b5b6a38d38aadc3399b5f7a78b537d092 |
29-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
A hack to fix a problem folding immedaites. This fixes Olden/power. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23126 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2a06a5ef363382479e74cae2d39f139e11f40225 |
29-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix order of operands for copytoreg node when emitting calls. This fixes Olden/msFix order of operands for copytoreg node when emitting calls. This fixes Olden/mstt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23125 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
b9efd14568531fc5d6150a4471c1bfb6cb98928f |
29-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add operands in the correct order git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23123 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c8a89a1fcb900b8204c166fc4e9f5c3a1a3937de |
29-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a bug in FP_EXTEND, implement FP_TO_SINT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23121 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
528f58e813ec4929a7997afbf121eb54e8bacf4c |
29-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
fix an assertion failure in treeadd git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23120 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
e3f1c9773420bf6e51b39906609329d21cc9269c |
27-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
The condition register being branched on may not be cr0, as such, print it. This fixes: UnitTests/2005-07-17-INT-To-FP.c git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23112 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
f48e83ded0a27788a4790e73c2c4ad6bed8a7c71 |
27-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Propagate cr# from COND_BRANCH to the actual branch instruction as appropriate git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23111 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
28b9cc2d1323f3814b902c3dd55899b091803762 |
27-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
allow code using mtcrf to assemble git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23107 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a0df5d8da5d4ba1e75fd3c3449ae535b283b8621 |
27-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove operand type 'crbit', since it is no longer used git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23106 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCInstrInfo.td
|
82972705df381178eea94121dacb6576f6bc9e30 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
teach getClass what a condition reg is git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23105 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
5087daac23d841a5acb3b6d5a3e7857129ce558c |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Minor cleanups: * avoid calling getClass() multiple times (it is relatively expensive) * Allow -disable-fp-elim to turn of frame pointer elimination. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23104 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
8a2d3ca7dff8f37ee0f1fc0042f47c194045183d |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
implement SELECT_CC fully for the DAG->DAG isel! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23101 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCInstrInfo.td
|
0bbea954331b8f08afa5b094dfb0841829c70eaa |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Make fsel emission work with both the pattern and dag-dag selectors, by giving it a non-instruction opcode. The dag->dag selector used to not select the operands of the fsel, because it thought that whole tree was already selected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23091 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelLowering.cpp
PCISelLowering.h
PCISelPattern.cpp
|
13794f5d01317d76ec698b43bdf1c35eea57eae5 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
implement the fold for: bool %test(int %X, int %Y) { %C = setne int %X, 0 ret bool %C } to: _test: addic r2, r3, -1 subfe r3, r2, r3 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23089 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
52987f4f6531ffcfcc61b1319f5219f3704d426b |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Changes to adjust to new ReplaceAllUsesWith syntax. Change FP_EXTEND to just return its input, instead of emitting an explicit copy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23088 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
60675f7562bd6007b23f4a8e9e92cbd82e10b0f7 |
26-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove some code made dead by the fsel patch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23085 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
28b9be300cab414da42f9da016a2e89b797b9ddc |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
now that fsel is formed during legalization, this code is dead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23084 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelPattern.cpp
|
0b1e4e508b1fb76408a2c6a434b0f4df3cad3578 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
implement the other half of the select_cc -> fsel lowering, which handles when the RHS of the comparison is 0.0. Turn this on by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23083 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
5839bf2b3bd22689d9dd0e9de66c2dce71d130ae |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Change ConstantPoolSDNode to actually hold the Constant itself instead of putting it into the constant pool. This allows the isel machinery to create constants that it will end up deciding are not needed, without them ending up in the resultant function constant pool. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23081 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelPattern.cpp
|
95e0682a4276fb9f5978039dc4bae675bdf66ee3 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix some warnings in an optimized build git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23080 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelPattern.cpp
|
2bb06cdf27905cf95bd39e4120f1ad57c68ac73e |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a huge annoyance: SelectNodeTo took types before the opcode unlike every other SD API. Fix it to take the opcode before the types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23079 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6718f11febbc4ded0a8f3964306442ad44c0fb98 |
26-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix JIT encoding of conditional branches git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23076 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
e4bc9ea0a560d8a0ba42f5a2da617e1f1f834710 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add initial support for converting select_cc -> fsel in the legalizer instead of in the backend. This currently handles fsel cases with registers, but doesn't have the 0.0 and -0.0 optimization enabled yet. Once this is finished, special hack for fp immediates can go away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23075 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCISelPattern.cpp
|
bb22df31d9cf329deca2cf770885869bd7c26c94 |
26-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
SUBFIC produces two results, not one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23073 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6660cd65cf79f4be328f072526580471bde5fe22 |
26-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement SHL_PARTS and SRL_PARTS git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23072 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
b20c318df02c19a5ba4ba89c76f2bf3daae64ad2 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Emit the lo/hi parts in the right order :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23068 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
a9317ed361847c96989664b84ae8502a783a9956 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
implement support for 64-bit add/sub, fix a broken assertion for 64-bit return. Allow the udiv breaker-upper to work with any non-zero constant operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23066 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
801d5f56bb2c20031a0abf330642c6f77d027d38 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
simplify the add/sub_parts code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23065 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
047b952e298352fe6feffedf02e359601133f465 |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Finish implementing SDIV/UDIV by copying over the majik constant code from ISelPattern git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23062 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c70b4afce20ad37252d83442a83d84928918264d |
26-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Simplify some code. It's not clear why the UDIV expanded sequence doesn't work for large uint constants, but we'll keep the current behavior git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23061 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
957fcfbd8935b2973376167861a53e4a9220aefc |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Implement setcc correctly for G5 and non-G5 systems git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23060 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
64906a06b3d1cafec41c6b562f0f8130724decf6 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
implement setcc on the G5. We're still missing the non-g5 specific bits, but they will come later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23059 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
c8e27db5c58abc2c2aa1b60d6a58aef251766ee7 |
25-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove option to make SetCC illegal on PowerPC after long discussion with Chris. This will be accomplished through correctly modeling CR's and subregs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23056 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
8784a23075f8544f78f8b46cfd10457c1109d433 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Add support for sdiv by 2^k and -2^k. Producing code like: _test: srawi r2, r3, 2 addze r3, r2 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23052 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ee84f11577bf788be496b9464fd03c926a8ec2f4 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
fit in 80 cols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23051 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
34e17052a77e1a52cae58b2f6d203c663af97ece |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Implement support for taking the address of constant pool indices, which is used by the int -> FP code among other things. This gets 2005-05-12-Int64ToFP past that failure, to dying on lack of support for add_parts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23042 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2fe76e58eb734a09ec08ea006a32700572ffc0ca |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Add support for FP constants, fixing UnitTests/2004-02-02-NegativeZero git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23038 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
e28e40a2733c5d9a568d1569e2d1d8461716b22d |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fully implement frame index, so that we can pass the address of alloca's around to functions and stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23036 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
89532c7db03543402dd5376172b87233575beb44 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
implement unconditional branches, fixing UnitTests/2003-05-02-DependentPHI.c git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23034 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
fdf8366ecc67b2f3ac21c3b9155c1bc2e9d3dad4 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
LFS/STFS load and store FP values, not integer ones. This change allows us to codegen this: float foo() { return 1.245; } into this: _foo: lis r2, ha16(.CPI_foo_0) lfs f1, lo16(.CPI_foo_0)(r2) blr instead of this: _foo: lis r2, ha16(.CPI_foo_0) lfs r2, lo16(.CPI_foo_0)(r2) <-- ouch or f1, r2, r2 <-- ouch blr with the dag isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23033 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
ed7956bfe4bbe9445cbf0a74299f714ffe4fd7a4 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a broken assertion git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23032 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
2b54400f085391a247dd2c3fffc9f36f7b2dc867 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Split IMPLICIT_DEF into IMPLICIT_DEF_GPR and IMPLICIT_DEF_FP, so that the instructions take a consistent reg class. Implement ISD::UNDEF in the dag->dag selector to generate this, fixing UnitTests/2003-07-06-IntOverflow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23028 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelDAGToDAG.cpp
PCISelPattern.cpp
PCInstrInfo.td
|
fb0c964364ba9f2c54ea28e0b7f404e18f7327b4 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
implement support for calls git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23026 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
86fac6b00ab79ee5353f28aee4e7fff2713098c9 |
25-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Remove some dead cases. Emit the indcall sequence as: mtctr inreg mr R12, inreg btctr If inreg and R12 aren't coallesced, this reduces the odds of having the mtctr and btctr in the same dispatch group. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23023 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a3c4454c5fb70ab94c7de4faf2600ed729fffda0 |
24-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add an idea git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23020 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
6ef4949a0bea3f22e7572119d3692b1a5866ffe8 |
24-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Whoops, fix a thinko. All cases except SETNE are now handled by the target independent code in SelectionDAG.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23002 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c6b0717a6caa32fc9029fd1337af4bf0d07b54e8 |
24-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove unused statistic Prefer 'neg X' to 'subfic 0, X' since neg does not set XER[CA] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23001 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
4b46fc094d219da7f9fa02acfa0bf228519f952d |
24-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Add the "ppc specific" setcc-equivalent select_cc cases Prefer 'neg X' to 'subfic 0, X' since it does not set XER[CA] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23000 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a2590c5b3eaa24002e3f83f146f0e5b6c95a89c8 |
24-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Add callseq_begin/end support Call stil not supported yet git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22998 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
424dcbdb3bb2eae7972b097f56ab97439643d1bf |
23-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22982 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
8ca5693c517054c89a557391267fe305baa3407e |
23-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Ack, typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22981 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
a50d53e5ef9f2ef9866937511075f873e31d7c1d |
23-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Add an option to make SetCC illegal as a beta option git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22979 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
354df0ae6dfaf904cfba1c70c576ee55a62bec75 |
23-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove some instructions we no longer generate git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22976 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
1f24df632481c09eb45672c16a95eb0987000388 |
23-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Remove some regs that are not used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22975 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
PCRegisterInfo.td
|
9dc4d3cbac284b8301832fb1b575364490c745f3 |
23-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Nate noticed that 30% of the malloc/frees in llc come from calls to LowercaseString in the asmprinter. This changes the .td files to use lower case register names, avoiding the need to do this call. This speeds up the asmprinter from 1.52s to 1.06s on kc++ in a release build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22974 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCRegisterInfo.td
|
f7f22555053a8992b2f97db77a62458ff8a69d7f |
22-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Implement stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22963 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ddf3e7dfd791f7cdbcd1bb5feb168067b5b9c16d |
22-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix compilation of: float %test2(float* %P) { %Q = load float* %P %R = add float %Q, %Q ret float %R } By returning the right result. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22961 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
b30ee6a41a00d7fcd45960b3869fc6bcb3f7bdf4 |
22-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Make sure expressions only have one use before emitting them into a place that is conditionally executed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22960 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
9944b76cfe74981d2c41c8237d25267ba0c467c7 |
22-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Implement most of load support. There is still a bug though. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22959 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
1db1adbdee847906b4541ae582dc5be001fe2214 |
21-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Don't print out the MBB label for the entry mbb git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22953 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
f913d3f91c8e72000a41dd58e0118a1763fe6d7e |
21-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Simplify the logic for BRTWOWAY_CC handling. The isel code already simplifies BRTWOWAY into BR if one of the results is a fall-through. Unless I'm missing something, there is no reason to duplicate this in the target-specific code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22952 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
2fbb4579d6d6bbde8387283b78307c2ea477a312 |
21-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Implement selection for branches. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22951 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
4dd4a2d278ac65c871924bb5235805a6a07e3d69 |
21-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
If the false value for a select_cc is really simple (has no inputs), evaluate it in the block. This codegens: int %test(bool %c) { %retval = select bool %c, int 17, int 1 ret int %retval } as: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; li r2, 1 .LBB_test_2: ; or r3, r2, r2 blr instead of: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 li r4, 1 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; or r2, r4, r4 .LBB_test_2: ; or r3, r2, r2 blr ... which is one fewer instruction. The savings are more significant for global address and constantfp nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22946 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
4416f1a0a5b17906b9e162209fd506656a2e07d8 |
20-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add support for global address, including PIC support. This REALLY should be lowered by the legalizer! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22941 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
7e65997c43cc91a5e6eaa0f460b844ef1b5d2fb1 |
19-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a typeo, no wonder all tokenfactor edges were the same! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22935 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
ecbce617ca5ca4c8f881c56297b9aac931d91744 |
19-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Split RegisterClass 'Methods' into MethodProtos and MethodBodies git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22929 91177308-0d34-0410-b5e6-96231b3b80d8
PC32RegisterInfo.td
PC64RegisterInfo.td
|
fabc8ffacb0bceeaad7bbde79b49f8ad7b5666e3 |
19-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Put reg classes into namespaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22926 91177308-0d34-0410-b5e6-96231b3b80d8
PC32RegisterInfo.td
PC64RegisterInfo.td
|
0b1e641b8217e10b04e767bd0b70933c70cc17d3 |
19-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Now that the simple isels are dead, so is this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22913 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
PCRegisterInfo.h
|
27d53ba6dd58543b1a3f5f92be522e0d6d75daf8 |
19-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix a bug where we were passing the wrong number of arguments to an instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22901 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
02b88a4586704f34bc65afca3348453eae69d1d3 |
19-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
ISD::OR, and it's accompanying SelectBitfieldInsert git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22889 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
73bfa7152481620d60bf63d5397dfe35bbc9c098 |
19-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove the X86 and PowerPC Simple instruction selectors; their time has passed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22886 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32ISelSimple.cpp
PCTargetMachine.cpp
|
c15ed447f494c77a76c24661893e22192ebb2103 |
19-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Add shifts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22884 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
45fcb8f410dd00ea9df9234fdff151593713ca79 |
19-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix operand numbers by marking variable arity nodes as such and by fixing the operand lists of a few other nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22883 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
3f852b45fcfb0dde647eff77f9186378c3f0448a |
19-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
MFLR doesn't take an operand, the LR register is implicit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22882 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCISelPattern.cpp
PCRegisterInfo.cpp
|
0bc04231c0aa42fbb50cc4fd531340d35b60450d |
18-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Move this to the emitter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22877 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
5b5f0b7fd5ff6975920e65d4b1b019e456d6e850 |
18-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
More optimal solution for loading constants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22870 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
d607c12e8e8533028a66c9f533007c6c32a64cef |
18-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
After selecting the instructions for a basic block, emit the instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22869 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
f5fac3b4a6c41a2ea344a24c5f9ecc51cfca0723 |
18-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
remove some unused stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22866 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
58dfb08319b1415637b36c16ce52d6424c254574 |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix int foo() { return 65535; } by using the top 16 bits of the constant as the argument to LIS rather than the result of HA16(constant). The DAG->DAG ISel was already doing the right thing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22865 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a69404781344c4aee05935ee921bbf2844911bc0 |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Improve ISD::Constant codegen. Now for int foo() { return -1; } we generate: _foo: li r3, -1 blr instead of _foo: lis r2, -1 ori r3, r2, 65535 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22864 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
PCISelPattern.cpp
|
0c09a411e0c763d69aaefa2321c2ae8daabc80e4 |
18-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
replace switch stmt with an assert, generate li 0 instead of lis 0 for 0, to make the code follow people's expectations better. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22861 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
3285aadce9fb037d684d704e07610b09fb940ad7 |
18-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Handle loading of 0x????0000 constants with a single instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22858 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
cffc32b6e2e1edc2ddd62a00159f7008ee765d3e |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for ISD::AND, and its various optimized forms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22857 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
131a8805205c383f67b3b6a11777401e27b90371 |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Maintain consistency in negating things git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22855 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
0f3257a3302b60c128a667db6736e81335316c1e |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement XOR, remove a broken sign_extend_inreg case git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22854 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
305a1c75cfcc1b2e97c2bccebd42a70d99e7d127 |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Add a bunch more simple nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22851 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
6a7d61179c77c23dc22cd64e5e922bc40ed234e9 |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Add a couple more nodes that are easy to handle git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22850 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
b5a0668d43582297e19d03df34e0a0c09a1f6c45 |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Be fruitful and multiply! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22849 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
b454cfd45362215a11edef8e2131aefe0aa7c456 |
18-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Better version of isIntImmediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22848 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
26653500bbbc21cd1c2d12ecc433fa439536b657 |
18-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Teach the DAG->DAG ISel about FNEG, and how it can be used to invert several of the PowerPC opcodes that come in both negated and non-negated forms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22845 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
8482dd894d7d64134f999d8e62bc9adf5cb239a9 |
17-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add a beta option for turning on dag->dag isel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22837 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
a5a91b10262f5bbcf1ec8abd1e66ee6585d3f00e |
17-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
initial hack at a dag->dag instruction selector. This is obviously woefully incomplete, but it is a start. It handles basic argument/retval stuff, immediates, add and sub. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22836 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelDAGToDAG.cpp
|
d1c4626e147b8c9ee6dfe8bbec05f3a2dc27af9d |
17-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add prototype, remove dead proto git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22835 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
|
6d9aed4f8febdf24d60fde175747ca6df289dfd9 |
17-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a few small typos I noticed when converting this over to the DAG->DAG selector. Also, there is no difference between addSImm and addImm, so just use addImm, folding some branches. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22819 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a033b4d8eb560e88914b376c17f2513730c6e3b4 |
17-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Removed UINT_TO_FP and SINT_TO_FP from ISel outright. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22818 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
361ca5c927eae645069e73cebc9840c5ee8d5a5f |
17-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Remove ISel code generation for UINT_TO_FP and SINT_TO_FP. Now asserts if marked as legal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22816 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
ad23c9d4f256469881e4e6ca9e6fd4605e12ec36 |
17-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Make UINT_TO_FP and SINT_TO_FP use generic expansion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22815 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
|
456f1e890cb059fedb9f5d3f315c80e4f98f429b |
17-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement a couple improvements: Remove dead code in ISD::Constant handling Add support for add long, imm16 We now codegen 'long long foo(long long a) { return ++a; }' as: addic r4, r4, 1 addze r3, r3 blr instead of: li r2, 1 li r5, 0 addc r2, r4, r2 adde r3, r3, r5 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22811 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a8cd01524f08d5e7aef84b6aed8745b3f618a2a3 |
16-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
updates for changes in nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22808 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelPattern.cpp
|
7cbd525ba85ebe440d15fa359ec940e404d14906 |
16-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement BR_CC and BRTWOWAY_CC. This allows the removal of a rather nasty fixme from the PowerPC backend. Emit slightly better code for legalizing select_cc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22805 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelPattern.cpp
|
7c5a3d390a463fb50a6eee7ae3174817925e6d28 |
16-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Pull the LLVM -> DAG lowering code out of the pattern selector so that it can be shared with the DAG->DAG selector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22799 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelLowering.cpp
PCISelLowering.h
PCISelPattern.cpp
|
b0096bd19d6d519c8cc60c69c2658af6f1a2dbfd |
16-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Turn loop strength reduction on by default. Only run createLowerConstantExpressionsPass for the simple isel. The DAG isel has no need for it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22794 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
ea0617a0235d0413a52d08e406a675e84eabe341 |
15-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Broke 80 column rule. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22792 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
30679e691db00a613e90ef01416aab2d4b371c0c |
15-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Changed code gen for int to f32 to use rounding. This makes FP results consistent with gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22791 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
2d56e72f09337a1cab3ba199a9467c159296f3fa |
14-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix last night's PPC32 regressions by 1. Not selecting the false value of a select_cc in the false arm, which isn't legal for nested selects. 2. Actually returning the node we created and Legalized in the FP_TO_UINT Expander. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22789 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
5a01481585387a9af267c7cc824b0aaedf665838 |
14-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Make FP_TO_UINT Illegal. This allows us to generate significantly better codegen for FP_TO_UINT by using the legalizer's SELECT variant. Implement a codegen improvement for SELECT_CC, selecting the false node in the MBB that feeds the phi node. This allows us to codegen: void foo(int *a, int b, int c) { int d = (a < b) ? 5 : 9; *a = d; } as: _foo: li r2, 5 cmpw cr0, r4, r3 bgt .LBB_foo_2 ; entry .LBB_foo_1: ; entry li r2, 9 .LBB_foo_2: ; entry stw r2, 0(r3) blr insted of: _foo: li r2, 5 li r5, 9 cmpw cr0, r4, r3 bgt .LBB_foo_2 ; entry .LBB_foo_1: ; entry or r2, r5, r5 .LBB_foo_2: ; entry stw r2, 0(r3) blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22784 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
EADME.txt
|
8f331325a22746d89fc30ea59672012c8c58cf49 |
13-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove support for 64b PPC, it's been broken for a long time. It'll be back once a DAG->DAG ISel exists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22778 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PC64CodeEmitter.cpp
PC64ISelPattern.cpp
PC64InstrInfo.cpp
PC64InstrInfo.h
PC64JITInfo.h
PC64RegisterInfo.cpp
PC64RegisterInfo.h
PC64TargetMachine.h
PCTargetMachine.cpp
|
cf083e312cced297961b65e353904bbe59f7604a |
13-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
Fix for 2005-08-12-rlwimi-crash.ll. Make allowance for masks being shifted to zero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22773 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
847c3a976bb225a1ce9efdd5d11b8ef292c01d9a |
13-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
1. This changes handles the cases of (~x)&y and x&(~y) yielding ANDC, and (~x)|y and x|(~y) yielding ORC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22771 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
191cf943e68a8b3a14e5f19cf0279b8216da8dd7 |
11-Aug-2005 |
Jim Laskey <jlaskey@mac.com> |
1. Added the function isOpcWithIntImmediate to simplify testing of operand with specified opcode and an integer constant right operand. 2. Modified ISD::SHL, ISD::SRL, ISD::SRA to use rlwinm when applied after a mask. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22761 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
2b48bc6f9556d8dc3af50e6acde06f7a69a5280a |
11-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Tidied up the use of dyn_cast<ConstantSDNode> by using isIntImmediate more. Patch by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22760 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
54abfc5ee426e214b6f0a101dd9c71f9ee850531 |
11-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Use a more efficient method of creating integer and float virtual registers (avoids an extra level of indirection in MakeReg). defined MakeIntReg using RegMap->createVirtualRegister(PPC32::GPRCRegisterClass) defined MakeFPReg using RegMap->createVirtualRegister(PPC32::FPRCRegisterClass) s/MakeReg(MVT::i32)/MakeIntReg/ s/MakeReg(MVT::f64)/MakeFPReg/ Patch by Jim Laskey! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22759 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c24d484b7813524b9d87373992cd3ba8831dae51 |
10-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Make SELECT illegal on PPC32, switch to using SELECT_CC, which more closely reflects what the hardware is capable of. This significantly simplifies the CC handling logic throughout the ISel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22756 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
b4138c475e30a5ec91e9a51ffd7c1dc7a11f3eed |
10-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Changes for PPC32ISelPattern.cpp 1. Clean up how SelectIntImmediateExpr handles use counts. 2. "Subtract from" was not clearing hi 16 bits. Patch by Jim Laskey git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22754 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
df706e3f0c3a7936b3bdb6e36bf20642f467ebae |
10-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Changed the XOR case to use the isOprNot predicate. Patch by Jim Laskey! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22750 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
0d7d99fd44bb1eaa0c034d26d50d025a160bdb04 |
10-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
1. Refactored handling of integer immediate values for add, or, xor and sub. New routine: ISel::SelectIntImmediateExpr 2. Now checking use counts of large constants. If use count is > 2 then drop thru so that the constant gets loaded into a register. Source: int %test1(int %a) { entry: %tmp.1 = add int %a, 123456789 ; <int> [#uses=1] %tmp.2 = or int %tmp.1, 123456789 ; <int> [#uses=1] %tmp.3 = xor int %tmp.2, 123456789 ; <int> [#uses=1] %tmp.4 = sub int %tmp.3, -123456789 ; <int> [#uses=1] ret int %tmp.4 } Did Emit: .machine ppc970 .text .align 2 .globl _test1 _test1: .LBB_test1_0: ; entry addi r2, r3, -13035 addis r2, r2, 1884 ori r2, r2, 52501 oris r2, r2, 1883 xori r2, r2, 52501 xoris r2, r2, 1883 addi r2, r2, 52501 addis r3, r2, 1883 blr Now Emits: .machine ppc970 .text .align 2 .globl _test1 _test1: .LBB_test1_0: ; entry lis r2, 1883 ori r2, r2, 52501 add r3, r3, r2 or r3, r3, r2 xor r3, r3, r2 add r3, r3, r2 blr Patch by Jim Laskey! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22749 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
979a21e766eaea8881ee8b3b26c24b0771a8dfcf |
10-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a bug compiling: select (i32 < i32), f32, f32 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22747 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c7e18a10d412b24fd1054851a8ad277a3a747471 |
10-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add a optimization note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22732 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
88ac32ca266e1e3cdace905b8e364e4f4a9a900d |
09-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Update the targets to the new SETCC/CondCodeSDNode interfaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22729 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
59b21c25d470c58e0575d5b2f31dd703fa7681ae |
09-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Minor cleanup patch, no functionality changes. Written by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22727 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
2f46055cc22ff5a0118425d7823b93d3992acbd0 |
09-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/Generic/div-neg-power-2.ll, a regression from last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22726 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
d3ded2d8a7a579fa31f0c350ed9a06e7433e03ef |
09-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Factor out some common code, and be smarter about when to emit load hi/lo code sequences. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22719 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
0045776d33d6d9d1033235025e67cda4b83b6987 |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Remove getImmediateForOpcode, which is now dead. Patch by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22716 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
fd78454477c7aef827eb4881abbb937f160d2d76 |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Add new immediate handling support for mul/div. Patch by Jim Laskey! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22715 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
5b90917400414d09f30ae43b387b1be3fc5ccc3d |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Add support for OR/XOR/SUB immediates that are handled with the new immediate way. This allows ORI/ORIS pairs, for example. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22714 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
2f57c4da2164de3dfeebb3c25d81c49e6574a12a |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Modify the ISD::AND opcode case to use new immediate constant predicates. Includes wider support for rotate and mask cases. Patch by Jim Laskey. I've requested that Jim add new regression tests the newly handled cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22712 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
39c6896d22a89444292494107c89e10c79c0de13 |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Modify the ISD::ADD opcode case to use new immediate constant predicates. Includes support for 32-bit constants using addi/addis. Patch by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22711 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
8fd1980ce6427bee4b4778e8adf199060451b933 |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Modify existing support functions to use new immediate constant predicates. Patch by Jim Laskey git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22710 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
cf1cf1886e4ffdcedb069093da30e99bb04ee578 |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Add support predicates for future immediate constant changes. Patch by Jim Laskey git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22709 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
02efa6c140fe3f1076f9ceb29db9716329ca3ba6 |
08-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Move IsRunOfOnes to a more logical place and rename to a proper predicate form (lowercase isXXX). Patch by Jim Laskey. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22708 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
394cd13ba3249d6aa8f8a21603e377b923fe4675 |
08-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix JIT encoding of ppc mfocrf instruction; the operands were reversed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22707 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
3c304a3ba18a040d3c3dbd15ab69da5543cdbd54 |
06-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Consolidate the GPOpt stuff to all use the Subtarget, instead of still depending on the command line option. Now the command line option just sets the subtarget as appropriate. G5 opts will now default to on on G5-enabled nightly testers among other machines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22688 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCAsmPrinter.cpp
PCISelPattern.cpp
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
|
ba253651402f5d12172b3feed8909e28d01b7e1d |
05-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Enable gp optimizations by default when available, even when a target triple is available, since the target triple doesn't specify whether to use gpopts or not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22685 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
|
6281ae4bf0d99650c42bda934a44f316db9c6707 |
05-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22681 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
4e624ecd0713d8444e7ec6054877b01e86ebd104 |
05-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
don't crash when running the PPC backend on non-ppc hosts without specifying a subtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22677 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
99558806f8c4c6867a335fe896350302b126a2b5 |
04-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Hack to naturally align doubles in the constant pool. Remove this once we know what The Right Thing To Do is. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22660 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3d72d148871918cfdd930919cb11767a8c2bb7e6 |
04-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Use the new subtarget support to automatically choose the correct ABI and asm printer for PowerPC if one is not specified. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22659 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32RegisterInfo.td
PC64RegisterInfo.cpp
PC64RegisterInfo.td
PCRegisterInfo.cpp
PCTargetMachine.cpp
|
8c00f8cdc7ae0cdd18d91b3a31a70da0f78aa04f |
04-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Add Subtarget support to PowerPC. Next up, using it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22644 91177308-0d34-0410-b5e6-96231b3b80d8
PCSubtarget.cpp
PCSubtarget.h
PCTargetMachine.cpp
owerPCTargetMachine.h
|
0a3f677f0912e2fc9f45ce44cca1a0f4cacfc4c6 |
03-Aug-2005 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix grammar: apostrophe-s ('s) is possessive, not plural; also iff vs. if. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22619 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a34cbcc50a39a53e212a754592479ceab56c84c0 |
03-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
minor capitalization thing, patch by Jim Laskey git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22617 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c0d590b6f23e772ede680f998ee3486ce8344c66 |
02-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
This hunk accidentally got dropped. Patch by Jim Laskey git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22595 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
0561b3ff9fd08f9cda48551f2f91590ca5f60656 |
02-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
Update to use the new MathExtras.h support for log2 computation. Patch contributed by Jim Laskey! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22594 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC64ISelPattern.cpp
PCAsmPrinter.cpp
PCISelPattern.cpp
|
3f270130b575ca29d8039d6dc07b50fed4bc041e |
02-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
add a pass name to make debugging dumps nicer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22588 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
d29b6aa608d69f19b57ebd2ae630b040b1c4951d |
30-Jul-2005 |
Jeff Cohen <jeffc@jolt-lang.org> |
Keep tabs and trailing spaces out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22565 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
422f3d58a8a9d346e0bb34f77c30184b0dfc2838 |
30-Jul-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
turn off GOT on archs that didn't use it (not that it appeard to harm them much with it on) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22553 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.h
|
988b1dd608ed596879e29ad27d4aafdbf3a8f1ac |
28-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Eliminate an extra copy from R1 that Nate noticed on function calls that have to write arguments to the stack git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22536 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
4015ea871113165cbf2d0d9b7513fd90e5ddaf46 |
28-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Specify the correct number of operands git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22535 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
2a05c8e260bb4a3cb54c825371317e4e6164075d |
28-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Fold constant adds into loads and stores to frame indices. For the following code: double %ext(int %A.0__, long %A.1__) { %A_addr = alloca %typedef.DComplex ; <%typedef.DComplex*> [#uses=2] %tmp.1 = cast %typedef.DComplex* %A_addr to int* ; <int*> [#uses=1] store int %A.0__, int* %tmp.1 %tmp.2 = getelementptr %typedef.DComplex* %A_addr, int 0, uint 1 ; <double*> [#uses=2] %tmp.3 = cast double* %tmp.2 to long* ; <long*> [#uses=1] store long %A.1__, long* %tmp.3 %tmp.5 = load double* %tmp.2 ; <double> [#uses=1] ret double %tmp.5 } We now generate: _ext: .LBB_ext_0: ; stw r3, -12(r1) stw r4, -8(r1) stw r5, -4(r1) lfd f1, -8(r1) blr Instead of: _ext: .LBB_ext_0: ; stw r3, -12(r1) addi r2, r1, -12 stw r4, 4(r2) stw r5, 8(r2) lfd f1, 4(r2) blr This also fires hundreds of times on MultiSource. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22533 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
3dee17581c38ce598376e83666c54a6b5d96ef05 |
28-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix some comments git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22530 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCRegisterInfo.cpp
|
00b16889ab461b7ecef1c91ade101186b7f1fce2 |
27-Jul-2005 |
Jeff Cohen <jeffc@jolt-lang.org> |
Eliminate all remaining tabs and trailing spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22523 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCISelPattern.cpp
PCTargetMachine.cpp
|
54eed36da595f09c46a46b2b0b15757ea486b4c1 |
27-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement the optimization for the Red Zone on Darwin. This removes the unnecessary SP manipulation in leaf routines that don't need it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22522 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
EADME.txt
|
9eb59ec548b861d6ede05b4e6dc22aabf645e665 |
27-Jul-2005 |
Jeff Cohen <jeffc@jolt-lang.org> |
Eliminate tabs and trailing spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22520 91177308-0d34-0410-b5e6-96231b3b80d8
PCRelocations.h
|
b65975a6ed58ee6696818e785bee49fcbe0b2a0c |
26-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
add a note about the red zone git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22518 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
2e00d7d0ae32a87ec978fc99849e718f1914279a |
26-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Wrap some long lines, fix emission of weak global variables git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22517 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
4ad870ddcc41f53da4fd63d62285769a5e41a8c7 |
26-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Update the PPC readme git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22516 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
7b4f0a81ffc97095fac4b1b9536e86136e6b23a7 |
25-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix an optimization put in for accessing static globals. This obviates the need to build PIC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22512 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
aa68f7fa0920bd7eaf61e1f9a838f8aeb4f61b2a |
23-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
PowerPC no-pic code is not quite ready for prime-time git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22507 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
908bc862d58bdb66d22a6a58bddb4e108a64e469 |
22-Jul-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
update interface git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22498 91177308-0d34-0410-b5e6-96231b3b80d8
PC32JITInfo.h
PCJITInfo.cpp
|
2497e6391f8df05926fe17b5cf08dad61c4797d2 |
21-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Support building non-PIC Remove the LoadHiAddr pseudo-instruction. Optimization of stores to and loads from statics. Force JIT to use new non-PIC codepaths. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22494 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32ISelSimple.cpp
PC64ISelPattern.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelPattern.cpp
PCInstrInfo.td
PCTargetMachine.cpp
|
2130c0893041718f6d5c2bf3df4ba0ddce9adb08 |
21-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
revert to using 4-byte alignment for doubles, as specified by the ABI git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22493 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
18ed029a7b75b2a39d39cd4c7f2ec68284c10102 |
21-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Support assembling fsqrt on darwin. This will be implemented better when PowerPC gets subtarget support up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22489 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
adeb43ddf4eac9e75b7c8e79fa832f72922a2926 |
21-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Generate mfocrf when targeting g5. Generate fsqrt/fsqrts when targetin g5. 8-byte align doubles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22486 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCISelPattern.cpp
PCInstrInfo.td
PCTargetMachine.cpp
|
a3fd400fa87f2d7f23b2c54195bf283cbec1758a |
19-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Integrate SelectFPExpr into SelectExpr. This gets PPC32 closer to being automatically generated from a target description. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22470 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelPattern.cpp
PCTargetMachine.cpp
|
63b3f9acae5ccfc7f806c461a2e9509318eac5b8 |
12-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove some code that moved to the generic asm printer a long time ago. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22407 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
bce81ae51ececbd03ffdb17d56c4a1206edfc52e |
10-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode. This is the last MVTSDNode. This allows us to eliminate a bunch of special case code for handling MVTSDNodes. Also, remove some uses of dyn_cast that should really be cast (which is cheaper in a release build). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22368 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
9fadb4c1c0a6d223aa468f9f72f8c2562dc66839 |
10-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Change TRUNCSTORE to use a VTSDNode operand instead of being an MVTSTDNode git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22366 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
72b286b0a0f8987bc247ae052ac86008c553e9ae |
08-Jul-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for assembling .s files on mac os x for intel Add support for running bugpoint on mac os x for intel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22351 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
e0fe225e8912b6308e3e1db442ba7b96d9f09ff3 |
05-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Make several cleanups to Andrews varargs change: 1. Pass Value*'s into lowering methods so that the proper pointers can be added to load/stores from the valist 2. Intrinsics that return void should only return a token chain, not a token chain/retval pair. 3. Rename LowerVAArgNext -> LowerVAArg, because VANext is long gone. 4. Now that we have Value*'s available in the lowering methods, pass them into any load/stores from the valist that are emitted git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22339 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
f84a2ace5e0a034691ca3d75ffd5b3e793a50512 |
05-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Fix PowerPC varargs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22335 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c1671e2d7ddd81f0ac59652cc889ba2a40278ebf |
02-Jul-2005 |
Chris Lattner <sabre@nondot.org> |
Varargs is apparently currently broken on PPC. This hacks it so that it is at least overloading the right virtual methods. The implementations are currently wrong though. This fixes Ptrdist/bc, but not other programs (e.g. siod). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22326 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
0431c96cec9576611f06c513d6adcab0f950c18c |
25-Jun-2005 |
Chris Lattner <sabre@nondot.org> |
Refactor the addPassesToEmitAssembly interface into a addPassesToEmitFile interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22282 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
owerPCTargetMachine.h
|
213e557cef3e653e2d3a00b07b137c143128430a |
22-Jun-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
If we support structs as va_list, we must pass pointers to them to va_copy See last commit for LangRef, this implements it on all targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22273 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
|
558bc88a00930fce283b240b7c9555f649a18f1b |
18-Jun-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
core changes for varargs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22254 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC64ISelPattern.cpp
|
4b828e6384e1e6c9936130dd9fe805c2140b05fc |
18-Jun-2005 |
Reid Spencer <rspencer@reidspencer.com> |
Clean up some uninitialized variables and missing return statements that GCC 4.0.0 compiler (sometimes incorrectly) warns about under release build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22249 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
b157f858a233b30a7aaf56c5f1559ea2d7f13dd5 |
17-Jun-2005 |
Chris Lattner <sabre@nondot.org> |
silence incredibly braindead GCC 4 warning git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22246 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
439009c81e9e4799da64d3c40f4442f01c8f0d32 |
15-Jun-2005 |
Nate Begeman <natebegeman@mac.com> |
Commit fix for generating conditional branch pseudo instructions that avoids dereferencing the end() iterator when selecting the fallthrough block. This requires an ilist change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22212 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a43b176f5141b263113841ba62bde2ad7fbab66d |
14-Jun-2005 |
Nate Begeman <natebegeman@mac.com> |
Commit a small improvement that is already in the x86 and ia64 backends to not generate unnecessary register copies. This improves compile time by 2-5% depending on the test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22210 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
ac609ddf823d6d955f74ec6f82ca3b388ed9d610 |
13-Jun-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix a memory smasher caught by Mac OS X's debug malloc library. We were incorrectly using an iterator after it was invalid. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22207 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
eae435de837ea659fba924c1531ced120a6dde76 |
08-Jun-2005 |
Reid Spencer <rspencer@reidspencer.com> |
For PR572: Undefine the PPC symbol which is defined by Linux/PPC (erroneously) so it doesn't pollute the user namespace and clash with our namespace declarations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22202 91177308-0d34-0410-b5e6-96231b3b80d8
PCRelocations.h
|
b2c4bf3ff696577e8f00930cabe90d80f275fa80 |
08-Jun-2005 |
Nate Begeman <natebegeman@mac.com> |
Handle some more real world cases of rlwimi. These don't come up that regularly in "normal" code, but for things like software graphics, they make a big difference. For the following code: unsigned short Trans16Bit(unsigned srcA,unsigned srcB,unsigned alpha) { unsigned tmpA,tmpB,mixed; tmpA = ((srcA & 0x03E0) << 15) | (srcA & 0x7C1F); tmpB = ((srcB & 0x03E0) << 15) | (srcB & 0x7C1F); mixed = (tmpA * alpha) + (tmpB * (32 - alpha)); return ((mixed >> 5) & 0x7C1F) | ((mixed >> 20) & 0x03E0); } We now generate: _Trans16Bit: .LBB_Trans16Bit_0: ; entry andi. r2, r4, 31775 rlwimi r2, r4, 15, 7, 11 subfic r4, r5, 32 mullw r2, r2, r4 andi. r4, r3, 31775 rlwimi r4, r3, 15, 7, 11 mullw r3, r4, r5 add r2, r2, r3 srwi r3, r2, 5 andi. r3, r3, 31775 rlwimi r3, r2, 12, 22, 26 blr Instead of: _Trans16Bit: .LBB_Trans16Bit_0: ; entry slwi r2, r4, 15 rlwinm r2, r2, 0, 7, 11 andi. r4, r4, 31775 or r2, r2, r4 subfic r4, r5, 32 mullw r2, r2, r4 slwi r4, r3, 15 rlwinm r4, r4, 0, 7, 11 andi. r3, r3, 31775 or r3, r4, r3 mullw r3, r3, r5 add r2, r2, r3 srwi r3, r2, 5 andi. r3, r3, 31775 srwi r2, r2, 20 rlwimi r3, r2, 0, 22, 26 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22201 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
fc87928ebb4d50850e9b2b36f0c24c4fb17877ba |
15-May-2005 |
Chris Lattner <sabre@nondot.org> |
PPC "branch and link" instructions are branches in the PPC sense, but not in the LLVM code generator sense (they are calls). Don't mark them as such, which fixes the regressions on the ppc tester last night git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22065 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
022ed327bd455348dbe0fbe0915219cb8b4cb6e1 |
15-May-2005 |
Chris Lattner <sabre@nondot.org> |
Fix andrews changes to fit in 80 columns git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22064 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
b5d8e6ece62b16be441d1a13609878eefa7908b9 |
13-May-2005 |
Chris Lattner <sabre@nondot.org> |
treat TAILCALL nodes identically to CALL nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21977 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
adf6a965a321372c640845407195594835921eb4 |
13-May-2005 |
Chris Lattner <sabre@nondot.org> |
Add an isTailCall flag to LowerCallTo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21958 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
32f3cf612ef54c3d81467dbbc9808217c7a02cf2 |
13-May-2005 |
Chris Lattner <sabre@nondot.org> |
Realize that we don't support fmod directly, fixing CodeGen/Generic/print-arith-fp.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21939 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
16cd04d26c53c6f81313cafb85f6c0e7a07cdff6 |
13-May-2005 |
Chris Lattner <sabre@nondot.org> |
rename the ADJCALLSTACKDOWN/ADJCALLSTACKUP nodes to be CALLSEQ_START/BEGIN. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21915 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
c57f682113c46af22cc593dc15b70aad7aa51eab |
12-May-2005 |
Chris Lattner <sabre@nondot.org> |
Pass in Calling Convention to use into LowerCallTo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21899 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
9bce0f92c3f1be7ad738ed018c7dd4f4c4bd979a |
12-May-2005 |
Chris Lattner <sabre@nondot.org> |
These targets don't like setcc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21884 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
d7c4a4a6c048d4174b8795598f50fd76c30731ed |
12-May-2005 |
Nate Begeman <natebegeman@mac.com> |
Necessary changes to codegen cttz efficiently on PowerPC 1. Teach LegalizeDAG how to better legalize CTTZ if the target doesn't have CTPOP, but does have CTLZ 2. Teach PPC32 how to do sub x, const -> add x, -const for valid consts 3. Teach PPC32 how to do and (xor a, -1) b -> andc b, a 4. Teach PPC32 that ISD::CTLZ -> PPC::CNTLZW git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21880 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
cafb67b25027d7d237ba9c562d1aeac460c0580c |
09-May-2005 |
Chris Lattner <sabre@nondot.org> |
fold and (shl X, C1), C2 -> rlwinm when possible. Many other cases are possible, include and (srl) and the inverses (shl and) etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21820 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
b5884d311672a0d84c6b2627254001b27af45e2d |
04-May-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
fix typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21693 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
691ef2ba066dda14ae4ac0ad645054fbc967785a |
03-May-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
Implement count leading zeros (ctlz), count trailing zeros (cttz), and count population (ctpop). Generic lowering is implemented, however only promotion is implemented for SelectionDAG at the moment. More coming soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21676 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
08cae7f519363000928004239fdd56a4ead0a4ca |
30-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Doesn't support these nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21634 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
|
17234b7d78944151b844e07a427df5b218add76b |
30-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
This target doesn't support the FSIN/FCOS/FSQRT nodes yet git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21633 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
2d86ea21dd76647cb054fd5d27df9e49efc672b6 |
27-Apr-2005 |
Andrew Lenharth <andrewl@lenharth.org> |
Implement Value* tracking for loads and stores in the selection DAG. This enables one to use alias analysis in the backends. (TRUNK)Stores and (EXT|ZEXT|SEXT)Loads have an extra SDOperand which is a SrcValueSDNode which contains the Value*. Note that if the operation is introduced by the backend, it will still have the operand, but the value* will be null. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21599 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
7847fcac174bdda94373447676526af1bb1bc630 |
22-Apr-2005 |
Misha Brukman <brukman+llvm@gmail.com> |
Convert tabs to spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21452 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC64ISelPattern.cpp
PC64RegisterInfo.cpp
PCISelPattern.cpp
PCRegisterInfo.cpp
|
b5f662fa0314f7e7e690aae8ebff7136cc3a5ab0 |
22-Apr-2005 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove trailing whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21425 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32ISelSimple.cpp
PC32JITInfo.h
PC64CodeEmitter.cpp
PC64ISelPattern.cpp
PC64InstrInfo.cpp
PC64InstrInfo.h
PC64JITInfo.h
PC64RegisterInfo.cpp
PC64RegisterInfo.h
PC64TargetMachine.h
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCFrameInfo.h
PCISelPattern.cpp
PCInstrBuilder.h
PCInstrInfo.cpp
PCInstrInfo.h
PCJITInfo.cpp
PCJITInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCRelocations.h
PCTargetMachine.cpp
PCTargetMachine.h
owerPCInstrInfo.h
owerPCTargetMachine.h
|
837a521c48b5bb481b61ba971092044cdbf0387f |
21-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Match another form of eqv git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21413 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
f577c6122f8b51c4e4889f1e1c647ae210c501b8 |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Add completely untested support for mtcrf/mfcrf encoding git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21353 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
14522e31d98fd44bbc2b0584aa8f2cbbd9104f43 |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
switch over the rest of the formats that use RC to use isDOT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21352 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
883059fb583c9bd2d88d31d20e5615a1cf1e979a |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Convert the XForm instrs and XSForm instruction over to use isDOT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21351 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
97a2d42999e43e440e48f65ba9560ef97be36d23 |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Now that the ppc64 and vmx operands of I are always 0, forward substitute them away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21350 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
a611ab72cab77ea9ca94495ee64615709afa595f |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
convert over bform and iform instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21349 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
57226fbc7b84e78ee2563734c628563811743bc8 |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Convert over DForm and DSForm instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21348 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
e19d0b11308a6026a58954c283d4de9d568fb33a |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Convert XLForm and XForm instructions over to use PPC64 when appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21347 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
5035cef732e964427d2cdcd1d3048b26eeb77ef5 |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Convert XO XS and XFX forms to use isPPC64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21346 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
0bdc6f1fd49badb3266ded6ccc311954b794075b |
19-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Turn PPC64 and VMX into classes that can be added to instructions instead of bits that must be passed up the inheritance hierarchy. Convert MForm and AForm instructions over git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21345 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
1cbf3abbb8c716721b502da6d5ff75a9755b525a |
18-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Next round of PPC CR optimizations. For the following code: int %bar(float %a, float %b, float %c, float %d) { entry: %tmp.1 = setlt float %a, %d %tmp.2 = setlt float %b, %d %or = or bool %tmp.1, %tmp.2 %tmp.3 = setgt float %c, %d %tmp.4 = or bool %or, %tmp.3 %tmp.5 = and bool %tmp.4, true %retval = cast bool %tmp.5 to int ret int %retval } We now emit: _bar: .LBB_bar_0: ; entry fcmpu cr0, f1, f4 fcmpu cr1, f2, f4 cror 0, 0, 4 fcmpu cr1, f3, f4 cror 28, 0, 5 mfcr r2 rlwinm r3, r2, 29, 31, 31 blr Instead of: _bar: .LBB_bar_0: ; entry fcmpu cr7, f1, f4 mfcr r2 rlwinm r2, r2, 29, 31, 31 fcmpu cr7, f2, f4 mfcr r3 rlwinm r3, r3, 29, 31, 31 or r2, r2, r3 fcmpu cr7, f3, f4 mfcr r3 rlwinm r3, r3, 30, 31, 31 or r3, r2, r3 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21321 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
16ac709c632dd4d6dff8fdfe0b79a47c783b362a |
18-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Change codegen for setcc to read the bit directly out of the condition register. Added support in the .td file for the g5-specific variant of cr -> gpr moves that executes faster, but we currently don't generate it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21314 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCInstrFormats.td
PCInstrInfo.td
|
477d1de9b2c77455192b6e67dd9496851f4ed8d0 |
18-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Handle ExternalSymbol operands in the PPC JIT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21312 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
f8b02949e3d13e9b7cd38e029fcbf3e799366aa7 |
16-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Make pattern isel default for ppc Add new ppc beta option related to using condition registers Make pattern isel control flag (-enable-pattern-isel) global and tristate 0 == off 1 == on 2 == target default git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21309 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelPattern.cpp
PCTargetMachine.cpp
|
7bfba7d5e3efd90134584447e534ad65998a809b |
14-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement multi-way branches through logical ops on condition registers. This can generate considerably shorter code, reducing the size of crafty by almost 1%. Also fix the printing of mcrf. The code is currently disabled until it gets a bit more testing, but should work as-is. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21298 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCInstrInfo.td
|
ef7288c824e082d560edb783156a74ee310bfe28 |
14-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Add the necessary support to codegen condition register logical ops with register allocated condition registers. Make sure that the printed output is gas compatible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21295 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCAsmPrinter.cpp
PCInstrFormats.td
PCInstrInfo.td
|
1b7f7fbf95b373fa54e67f9d5b603da8a7f77a31 |
14-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Start allocating condition registers. Almost all explicit uses of CR0 are now gone. Next step is to get rid of the remaining ones and then start allocating bools to CRs where appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21294 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
3664ceffdd91d8e146e5c7e61b2a8c08262661c6 |
14-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement the fold shift X, zext(Y) -> shift X, Y at the target level, where it is safe to do so. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21293 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
eea805e74ce49f98e03c87a20cf2e6a6ff1b7c52 |
13-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Disbale the broken fold of shift + sz[ext] for now Move the transform for select (a < 0) ? b : 0 into the dag from ppc isel Enable the dag to fold and (setcc, 1) -> setcc for targets where setcc always produces zero or one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21291 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
519f40ba4e88df9a6c6742dda68f6208db99917f |
13-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
remove one more occurance of this that snuck in git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21271 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c951d87fe99ab464b933af7170de6f2e51953907 |
13-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Elimate handling of ZERO_EXTEND_INREG. This causes the PPC backend to emit andi instructions instead of rlwinm instructions for zero extend, but they seem like they would take the same time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21268 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
b882752bd04602249d391699dc7183de007f8964 |
13-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fold shift by size larger than type size to undef Make llvm undef values generate ISD::UNDEF nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21261 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
9765c25eb775e223612cd996d78a5a141360dabf |
12-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement setcc op, -1 sequences Remove dead setcc op, 0 sequences Coming later: generalization of op, imm git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21260 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
7af0248af47fbd86ec65d308adda22ec367accc4 |
12-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Initial support for allocation condition registers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21246 91177308-0d34-0410-b5e6-96231b3b80d8
PC32RegisterInfo.td
PCInstrFormats.td
PCInstrInfo.cpp
PCInstrInfo.td
PCRegisterInfo.cpp
|
9f833d30856c75d7d27498f20f1f453bea818375 |
12-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement bitfield clears Implement divide by negative power of two git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21240 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCInstrInfo.td
|
ef9531efedd2233269f670227fb0e6aae7480d53 |
11-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Update PPC readme. Remove things that are done or aren't ppc specific git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21232 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
5eef9f3bc9fa6effeb8fd481668304d7ee289d88 |
11-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
ORo sets CR0 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21227 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6b4ea2cfa29be829a4003ac061f17c7942d617e2 |
11-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Revert the previous patch, which I didn't mean to check in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21226 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
26d4fdb968f14874e397c553a82834c75bce844e |
11-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a minor bug (ORo didn't mark that it set CR0). Refactor how . instructions are handled. In particular, instead of passing the RC flag all the way up the inheritance hierarchy, just make a new tblgen class 'DOT' which can be added to an instruction definition. For example, instead of this: -def AND : XForm_6<31, 28, 0, 0, 0, (ops GPRC:$rA, GPRC:$rS, GPRC:$rB), -let Defs = [CR0] in -def ANDo : XForm_6<31, 28, 1, 0, 0, (ops GPRC:$rA, GPRC:$rS, GPRC:$rB), - "and. $rA, $rS, $rB">; We now have this: +def AND : XForm_6<31, 28, 0, 0, (ops GPRC:$rA, GPRC:$rS, GPRC:$rB), "and $rA, $rS, $rB">; git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21225 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
c7bd4827cd24ff63a604bbfb5f68f99da7498dce |
11-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Add recording variants of ISD::AND and ISD::OR. This kills almost 1000 (1.5%) instructions in 186.crafty git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21222 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCInstrInfo.td
|
709c806a1e1f4905466af2bf282d6bc7adb93f43 |
10-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix another fixme: factor out the constant fp generation code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21207 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c5b1cd22b57d36229560a8919d3e59b4dae34e2a |
10-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix 64 bit argument loading that straddles the args in regs / args on stack boundary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21206 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
340f2907839cc5ecb34c5045cb24ef31588f2a39 |
10-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove unnecessary Implicit Defs. Since r0 is not in allocation, we do not have to inform the register allocator it might be stepped on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21202 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
27499e3f1beaf21b5afa95c0008649a6cfcadf7a |
10-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Make sure that BRCOND branches can be converted into long branches too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21198 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelPattern.cpp
|
a0e3e9474f429e6bd0dc902c1fe3236d43ff1276 |
10-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Don't hand ISD::CALL nodes off to SelectExprFP. This fixes siod. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21197 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
51d2ed976f30913e173536e244d9f0e7259e4b1e |
10-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
rename getPPCOpcodeForSetCCNumber -> getPPCOpcodeForSetCCOpode to be more correct. Remove the EmitComparison retvalue, as it is always the first arg. Fix a place where we incorrectly passed in the setcc opcode instead of the setcc number, causing us to miscompile crafty. Crafty now works! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21195 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
706471e2912ee55f45804cf8318e07d360ecda6d |
10-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
fix ISD::BRCONDTWOWAY codegen to not deference the end() iterator git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21193 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
9184bfbbf47558da3e23d1b3483b7bac684925c1 |
10-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/Generic/2005-05-09-GlobalInPHI.ll, which was reduced from 254.gap. This caused the "use before a def" assertion on some programs. With this patch, 254.gap now passes with the PPC backend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21191 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
91277ea45c7a6f052dd588edee51644f23194619 |
09-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
do not set the root to null if an argument is dead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21188 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
cd08e4cb7e35ef1fbde7954786a5220116ca7d04 |
09-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Add rlwnm instruction for variable rotate Generate rotate left/right immediate Generate code for brcondtwoway Use new livein/liveout functionality git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21187 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCInstrInfo.td
|
27ee3a332d0b0e01109b907a73e932d1886a8db9 |
09-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a crash on 173.applu by asking for a constant bigger than 32-bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21185 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
f429a3e0f60ad9e372a3291629bfb27d35f1b33e |
09-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Switch this instruction selector over to using liveins and liveouts, eliminating implicit defs on entry to the function. yaay :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21184 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
af4ab1b103b1e67d5893f3a53751ee8568d7d486 |
09-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Optimize FSEL a bit for fneg arguments. This fixes the recently added test case so that we emit _test_fneg_sel: .LBB_test_fneg_sel_0: ; fsel f1, f1, f3, f2 blr instead of: _test_fneg_sel: .LBB_test_fneg_sel_0: ; fneg f0, f1 fneg f0, f0 fsel f1, f0, f3, f2 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21177 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
644db4ec5fbf7978da1c49799da7f916b210416e |
09-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
This target does not yet support ISD::BRCONDTWOWAY git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21163 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
e88aa5b4d16b05d530cd4ff2b79c05c4b519ef59 |
09-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
64b: Expand S/UREM 32b: No longer pattern match fneg(fsub(fmul)) as fnmsub Pattern match fsub a, mul(b, c) as fnmsub Pattern match fadd a, mul(b, c) as fmadd Those changes speed up hydro2d by 2.5%, distray by 6%, and scimark by 8% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21161 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
|
a9532d5dde34b9f29f944c9d08fa8c99387b2c1b |
09-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix 64b shifts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21159 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
|
f3f2d6d378b209eead702579d46f8a6dfa2f281f |
08-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Match Mac OS X 64 bit calling conventions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21157 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
|
7e7fadd2ea20f8b78bf9d6d7ff9ac4488df67152 |
07-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Optimized code sequences for setcc reg, 0 Optimized code sequence for (a < 0) ? b : 0 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21150 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
cbd06fc3d7511d8dcb64386ffa446f1b20b30ae6 |
07-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
PowerPC zero extends setcc results git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21147 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
7ddecb4186eb5fb3114d3fe12ac8678deb64c2e4 |
07-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Pattern match bitfield insert, which helps shift long by immediate, among other things. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21127 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
020ef42c19bd1e2e7dff202d98e2f71091e76178 |
07-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix some shift bugs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21126 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
27b4c23b8085563158d1b6a4e8892fad999b579c |
06-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fixed version of optimized integer divide is now fixed. Calculate the quotient, not the remainder. Also, make sure to remove the old div operand from the ExprMap and let SelectExpr insert the new one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21111 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
8f52980f032da74b72425fd23d4639c232a85e28 |
06-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Turn off the div -> mul optimization until it works correctly 100% of the time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21105 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
815d6dac1ecc6ad661cebb308f9c06583fcd3cf0 |
06-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for MULHS and MULHU nodes Have LegalizeDAG handle SREM and UREM for us Codegen SDIV and UDIV by constant as a multiply by magic constant instead of integer divide, which is very slow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21104 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
PCISelPattern.cpp
PCInstrInfo.td
|
ad5f65c74bb2b06fdb5544d2dcdf586b26c44ca0 |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Behold, rlwinm with certain immediate arguments is printed as the much more readable slwi or srwi (shift left/right word immediate). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21099 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
a3829d55806e5aa5e4dafd54e2e156444e7e8b1e |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix cut & paste errors (32->64), and codegen float->int more optimally. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21098 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelPattern.cpp
|
d3e6b94020ac6ed827fb1dfe1f4abe9ff39e4ec7 |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove 64 bit simple ISel, it never worked correctly Add initial (buggy) implementation of 64 bit pattern ISel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21096 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC64ISelPattern.cpp
PC64ISelSimple.cpp
PCTargetMachine.cpp
|
c8c5c8f0fad4d1bd54ccd372255c9802287625f2 |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Back out the previous change to SelectBranchCC, since there are cases it could miscompile. A correct solution will be found in the near future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21095 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
439b444cad649fb24d59fb02685e525afee82f71 |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Rename canUseAsImmediateForOpcode to getImmediateForOpcode to better indicate that it is not a boolean function. Properly emit the pseudo instruction for conditional branch, so that we can fix up conditional branches whose displacements are too large. Reserve the right amount of opcode space for said pseudo instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21094 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCISelPattern.cpp
|
80196b1331537455056044adfa70c4589dc08df3 |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement SDIV by power of 2 as srawi/addze rather than load imm, divw git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21091 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
93075ec0a5dafbdde1b2596b32dbc3db182b148a |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Pattern match fp mul-add, mul-sub, neg-mul-add, and neg-mul-sub git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21090 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
178bb34ee57f7aab604644f6f4cc37f26fe96cad |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for multiply-add, multiply-sub, and their negated versions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21089 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
d860aa62ac686b7a3b7c8978fee5c4ed3304fd01 |
05-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Make sure that arg regs used by the call instruction are marked as such, so that regalloc doesn't cleverly reuse early arg regs loading later arg regs. This fixes almost all outstanding failures in the pattern isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21086 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
04ec80173beda1e4309678b7ff32a5d984fa51cb |
04-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove unnecessary register copy now that regalloc is fixed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21085 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
c3e2db407eee81631ccfbc4bec95f0b631f48fff |
04-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
i1 loads should also be from the low byte of the argument word. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21077 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
e584668f04723777e5c17292ddf7c1098c94fc71 |
04-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix i64 return, fix CopyFromReg git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21076 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
6644d4c9335f0e31ffdf317e9db59a18f1870564 |
04-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Full varargs support. All of UnitTests now passes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21070 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
4ec0cbdf156e13fad4d8e0a27869d345b6cdea24 |
04-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Pass the correct value for the chain to the store git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21066 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
fa55470e39780f038fb69a44b2159647f0711278 |
04-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix SHL_PARTS Start implementation of integer varargs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21065 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
aa73a9f16fcd1aa74c53bc66b1f28579e0edbb57 |
03-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Keeping up with the Joneses. Implement not, nor, nand, and eqv git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21060 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
27eeb00a1a64f46d64732222a31c38d04f507073 |
02-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Set shift amount to Extend Implement ISD::FABS and ISD::FNEG nodes Implement SHL_PARTS, SRL_PARTS, and SRA_PARTS Generate PowerPC 'fneg', 'fabs', and 'fnabs' instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21018 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCInstrInfo.td
|
43fdea070cd54094b5c3b69ce5a25c04d93c91af |
02-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
This target doesn't support fabs/fneg yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21010 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
27523a1c9295403a8a44b2204f51e23bc7224427 |
02-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix i64 returns Generate PowerPC 'subfic' instruction when appropriate git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20995 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
fc1b1dad88a256ab5ab16dd548ad82df8efa2ca9 |
02-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Add ISD::UNDEF node Teach the SelectionDAG code how to expand and promote it Have PPC32 LowerCallTo generate ISD::UNDEF for int arg regs used up by fp arguments, but not shadowing their value. This allows us to do the right thing with both fixed and vararg floating point arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20988 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
6cb2e1b124887e5ef3ff77c6ba4ca9b8de051bb5 |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix Olden/bh, CR0 was being set in the wrong order LowerCallTo and ISD::CALL are going to need to be modified, regs are being set in the wrong order. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20981 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
31318e4b6c1cc3a3ae0426780b2d360915fae3c4 |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Also apply Chris's fix to FP select and SETCC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20979 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
3071019026ee62899f2535d313b35c59d37ae218 |
01-Apr-2005 |
Chris Lattner <sabre@nondot.org> |
Move the selection of the arms of the select operation up to the conditional part to make sure we get the side effects and to avoid confusing the CFG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20977 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a7e11a4bb5a432ba94421655f7ebc63d2acebd1a |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix stores to global addresses Fix calls with no arguments git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20975 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
04730361b52a9639ac7578d110feb9237b0c8ae0 |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Support indexed loads and stores. This drops Shootout/matrix time from 18.8 to 14.8 seconds. The Pattern ISel is now often faster than the Simple ISel, esp. on memory intensive code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20973 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
6b55997df5c334d3b8e18af72fd89c7f9efbe9a7 |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement FP_TO_SINT and FP_TO_UINT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20972 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
6d369ccae002bd0f1e506545b7f4590b081d778d |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support for adding 0.0 and -0.0 to the constant pool, since we lie and say that we support them, for the purposes of generating fsel instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20970 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
dffcfccc13f0cc39b774c47b93ac8a64e93f0d8d |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
Factor out common code, support FP comparison in folded SetCC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20969 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
3e89716ad7011d76bb0b650342f727cc9c9bf428 |
01-Apr-2005 |
Nate Begeman <natebegeman@mac.com> |
fsel generation for f32 and f64 select generate compare immediate for integer compare with constant fold setcc into branch fold setcc into select Code generation quality for Shootout is now on par with the Simple ISel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20968 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
96fc681d7e7bf7b40fa61c1d33065a8025acdeb9 |
31-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Pass the correct values to the chain argument for node construction during LowerCallTo. Handle ISD::ADD in SelectAddr, allowing us to have nonzero immediates for loads and stores, amazing! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20946 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
74d734574e02c35074bca9cadc6694fafe9fef5c |
31-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Rewrite LowerCallTo and Select(ISD::CALL) to properly handle float varargs Tell the SelectionDAG ISel to expand SEXTLOAD of i1 and i8, rather than complicate the code in ISD::SEXTLOAD to do it by hand Combine the FP and Int ISD::LOAD codegen Generate better code for constant pool loads As a result, all of Shootout, and likely many other programs are now working. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20945 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
fdcf3418e0618b435fdb07decec87e35feefc95f |
30-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix calls whose arguments fit entirely in registers to not break the Chain. Implement SINT_TO_FP and UINT_TO_FP Remove some dead code from the simple ISel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20944 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCISelPattern.cpp
|
58f718cd97b0b2e267d60c520a00431f29408417 |
30-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix frame index code to generate legal PowerPC instructions. About half of Shootout now works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20940 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
01d05266f9efcbd011f3ef1d19d4b78bc395b0c1 |
30-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix external symbol printing in the AsmPrinter. Tell the ISel that we don't support things like memcpy directly. This allows a handful of the Shootout programs to work, yay! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20939 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCISelPattern.cpp
|
23afcfb063ae7ee8b96d72771d80aefd5b9ddc4d |
30-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix BranchCC (it's still dumb), and implement FP select (also dumb) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20935 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
74747861b937045b2940a11774d62ebf9019d7f9 |
30-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement integer select and i1 sign extend git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20934 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
33162520343f499e3000da8bad50dec415f3a115 |
29-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement SetCC, fix ZERO_EXTEND_INREG git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20933 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
PCInstrInfo.td
|
848132d671c12df1dd04ec54f3e27b551f6e2803 |
29-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
fix a warning in the optimized build git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20920 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
f3d08f31b37fd9c6610c5894e93c698f00a440e9 |
29-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement div, rem, and frameindex git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20907 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
f70b576cccfb2e32f5f0fa66e1509f8d9f2b05be |
29-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Pattern ISel: fix argument loading for i64s (thanks chris) Simple ISel: fix i64 subtract git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20903 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCISelPattern.cpp
|
ca12a2bd91afd49ccd4084cfe9d9003e4d0a51d2 |
29-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Remove fake instruction 'subc' (mnemonic for subfc). More pattern isel updates git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20902 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCISelPattern.cpp
PCInstrInfo.td
|
9db505ca9dca58421f3b819ced5112789dafba31 |
28-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement proper loads and zero-extends of all types git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20897 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
7532e2f55554b9f7944a358931a22f74f8dd226e |
26-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix that pesky floats in integer regs problem by assigning the f32 type to the correct register class. Also remove the loading of float data into int regs part of varargs; it will need to be implemented differently later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20857 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
f7e43380354107a925dca1a1a4d7d7e70cab04e4 |
26-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Get closer to having varargs working. There's still something strange going on with copies between floating point and integer register files being generated. Once that is solved, varargs will be done. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20856 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
f26226155e2a49fa453f20b850849c5852c3af58 |
26-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Make 64bit args and float args work correct with calls. Thanks to Chris for explaining EXTRACT_ELEMENT to me. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20847 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
307e7443b8e2f4ffb126a33355f0568f07da8421 |
26-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Next round of pattern isel changes, mostly dealing with calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20841 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
c13a7f0eb3af81bb569d415b1dcf678159aae7a1 |
26-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Correct a documention link git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20840 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
c7b09f1f01b31eb8bfbb5ee4adb4d4b8d3b0968c |
25-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Support global addresses and fix call returns. Varargs still aren't handled correctly for floating point arguments, or more than 8 arguemnts. This does however, allow hello world to run. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20832 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
9e3e1b5d444caec0976c8e1de61edfae4b78d3b7 |
25-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement next round of Pattern ISel fixes 1. void returns 2. multiplies 3. calls git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20822 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
7ca541b75aaa5d5caf7efedb32c0e1f91a2a456d |
25-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix an incorrect argument being passed to BuildMI for indirect calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20821 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
2daec457510247c8b931d3f4af8a32066e442dca |
24-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Commit Gabor Greif's patch to use iterators in lowering intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20816 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
1bcb9abb30b81aa6987de5107ff366a3aa33ae8d |
24-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
eliminate dead variables, patch contributed by Gabor Greif! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20812 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC64ISelSimple.cpp
|
5e9666129a0273b73f7a11fbb46acb234a8760c7 |
24-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Implement more of the PPC32 Pattern ISel: 1) dynamic stack alloc 2) loads 3) shifts 4) subtract 5) immediate form of add, and, or, xor 6) change flag from -pattern-isel to -enable-ppc-pattern-isel Remove dead arguments from getGlobalBaseReg in the simple ISel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20810 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCISelPattern.cpp
PCTargetMachine.cpp
|
246fa6316db341a199a1992ea74c16fbb20e3f48 |
24-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
Fix silly "no newline at end of file" warning git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20809 91177308-0d34-0410-b5e6-96231b3b80d8
PCISelPattern.cpp
|
a9795f81e91c02d8824c70533c2ab944b13c14e6 |
24-Mar-2005 |
Nate Begeman <natebegeman@mac.com> |
Addition of the PPC32 Pattern ISel. While it is far from complete, it will be brought up to parity with the current simple ISel in the coming days. Currently, -pattern-isel is required to trigger it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20805 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCISelPattern.cpp
PCTargetMachine.cpp
|
c7cd5e56726d845faf94de6dacbbf62303bf6f70 |
21-Mar-2005 |
Misha Brukman <brukman+llvm@gmail.com> |
We may be adding functions to the Module during initialization, so conservatively, it's modified git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20735 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
e4d5c441e04bdc00ccf1804744af670655123b07 |
15-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
This mega patch converts us from using Function::a{iterator|begin|end} to using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*. This patch is contributed by Gabor Greif, thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20597 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC64ISelSimple.cpp
PCAsmPrinter.cpp
|
411eba0eafd60f54f89623e90992a1c125d2378a |
08-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a crash handling 'undef bool', fixing an llc crash on 186.crafty git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20523 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
4318a3d0e9d7aa9ab36f376e8c98ee61d5465aaa |
02-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
cleanup the cfg after lsr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20410 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
0c7490617a62b0622d52949c0651da907b3d6c04 |
02-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
Add a temporary option for llc-beta: -enable-lsr-for-ppc, which turns on Loop Strength Reduction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20399 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
7a823bd01fafa9393c6aa1e8ded163b9fd8266be |
15-Feb-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a problem where the PPC backend lost track of the fact that it had to save and restore the LR register on entry and exit of a leaf function that needed to access globals or the constant pool. This should hopefully fix oscar from sending the PPC tester spinning out of control. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20197 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
3c707649070b16aae70ac1952f69c2342d0a80e7 |
14-Jan-2005 |
Chris Lattner <sabre@nondot.org> |
Fix Regression/CodeGen/PowerPC/2005-01-14-UndefLong.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19557 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
fbd4de1d9b0d10fcc600bbd4816c09544d5f0628 |
14-Jan-2005 |
Chris Lattner <sabre@nondot.org> |
Fix: Regression/CodeGen/PowerPC/2005-01-14-SetSelectCrash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19555 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
35e5c7c186338c788b5476a0e722db4386b58856 |
03-Jan-2005 |
Chris Lattner <sabre@nondot.org> |
This hunk: - unsigned TrueValue = getReg(TrueVal, BB, BB->begin()); + unsigned TrueValue = getReg(TrueVal); Fixes the PPC regressions from last night. The other hunk is just a clarity improvement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19263 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
6dec0b09d5f01bf2fe4f26209f339310b2de4440 |
01-Jan-2005 |
Chris Lattner <sabre@nondot.org> |
Fix a FIXME: Select instructions on longs were miscompiled. While we're at it, improve codegen of select instructions. For this testcase: int %test(bool %C, int %A, int %B) { %D = select bool %C, int %A, int %B ret int %D } We used to generate this code: _test: cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; b .LBB_test_3 ; .LBB_test_2: ; or r5, r4, r4 .LBB_test_3: ; or r3, r5, r5 blr Now we emit: _test: cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; or r4, r5, r5 .LBB_test_2: ; or r3, r4, r4 blr -Chris git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19214 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
47f9dd14b2c30bbb6c27d8cbb24a21f59e3a92af |
16-Dec-2004 |
Chris Lattner <sabre@nondot.org> |
Specify all of the targets built. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18985 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
be686a88974eecd49673ae1312481d3c0aefeffd |
16-Dec-2004 |
Chris Lattner <sabre@nondot.org> |
Factor out common .td file chunks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18982 91177308-0d34-0410-b5e6-96231b3b80d8
PC32.td
PC64.td
PCInstrInfo.td
owerPC.td
|
869f45937b843cf342865ba5b03196df0601d10b |
12-Dec-2004 |
Chris Lattner <sabre@nondot.org> |
Fix Regression/CodeGen/PowerPC/2004-12-12-ZeroSizeCommon.ll, and all programs when compiled with debug information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18835 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
8363ad6bfc1448d5ad186075ac9e1258d4018f36 |
12-Dec-2004 |
Chris Lattner <sabre@nondot.org> |
CSE calls to getTypeSize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18833 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
3ea78c4276dfbf5a078292ad8fd8dc952c4ff8b9 |
12-Dec-2004 |
Chris Lattner <sabre@nondot.org> |
Use the target triple to pick this target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18830 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
0284628e8eee8a68263ff06f586e6171b2ecbce7 |
30-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix several bugs in 'op x, imm' handling. Foremost is that we now emit addi r3, r3, -1 instead of addi r3, r3, 1 for 'sub int X, 1'. Secondarily, this fixes several cases where we could crash given an unsigned constant. And fixes a couple of minor missed optimization cases, such as xor X, ~0U -> not X git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18379 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
35f2bbe8c644f3c1efbbeb61d2da3695a34aa87b |
30-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix CodeGen/PowerPC/2004-11-30-shr-var-crash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18376 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
e74ed0d53b5c12eb9cb463698df8e81c8a99549d |
30-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix test/Regression/CodeGen/PowerPC/2004-11-29-ShrCrash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18374 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
7747040410fbeb4dcdc0edcdb450302427dd1762 |
30-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix test/Regression/CodeGen/PowerPC/2004-11-30-shift-crash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18371 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
9d0087e043b7f6ab0f4c3ff448c832f5209b489c |
28-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
The LLVM bool type shall have 1 byte alignment on PPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18311 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
3330e08888143e5935c182ac63c1f561bb21648a |
27-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Remove the ISel->AsmPrinter link via the TargetMachine that was put in place to help bring up the PowerPC back end on Darwin. This code is no longer serves any purpose now that the AsmPrinter does the right thing all the time printing GlobalValues. --Cruft. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18267 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCAsmPrinter.cpp
owerPCTargetMachine.h
|
15ee8adb00535834ad7962939868b4a9583577ca |
26-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
There is no reason to store <x,x>, just store <x>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18263 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
d4c8bea47fd3403ff1f3786b99ff11e6e1b5fc09 |
25-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Enable optimization suggested by Chris Lattner to not emit reloc stubs for static global variables whose addresses are taken. This allows us to convert the following code for taking the address of a static function foo addis r2, r30, ha16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb") lwz r3, lo16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb")(r2) which also includes linker stub code emitted at the end of the .s file not shown here, and replace it with this: addis r2, r30, ha16(l1__2E_foo_2-"L00001$pb") la r3, lo16(l1__2E_foo_2-"L00001$pb")(r2) which in addition to not needing linker help, also has no load instruction. For those not up on PowerPC mnemonics, la is shorthand for add immediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18239 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
|
fde839b4ff3c2c3f3658d45b2f7e9806f1d14032 |
25-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix the build on non ppc machines git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18235 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
2a0c0dff0b957cc38c35798dd85aca8838da4977 |
25-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
The JIT works enough git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18228 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
5cbf3bc202c8e1661370af15727d508595d194ed |
25-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix encoding of fsel, fixing olden/power, McCat/bisort and several others. All of Olden passes now! :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18227 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
a1ab451392847efe826f11dadcde26f518342a3a |
25-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix encoding of fneg instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18226 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
cd61ec837feac06f54ba4578ceb3846bb8113589 |
25-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix encoding of swari, fixing several programs, including Olden/mst git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18225 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
b752a97ca41de789434fa792b6de01f6c04fe13e |
25-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
There is not a 1-1 mappign between llvm blocks and PPC blocks, do not use LLVM blocks as the keys for the branch rewriter. This fixes treeadd and many other programs with the JIT. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18223 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
5efb75daed48edfeb03ba62f3f0afe81b86f5d7f |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
* Rename existing relocations to be more specific * Add relocations for refernces to non-lazy darwin stubs and implement them correctly. With this change, we can correctly references external globals, and now all but two UnitTests and all but 1 Regression/C tests pass. More importantly, bugpoint-jit will start giving us useful testcases, instead of always telling us that references to external globals don't work :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18222 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
PCJITInfo.cpp
PCRelocations.h
|
53e4aa57c6bdc9bc99d7d8843e1b2b693a16fbfa |
24-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Add the same optimization that we do loading from fixed alloca slots to storing to fixed alloca slots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18221 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
73278080c8078002beb4706d5b1592e9b9c5f9b3 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Write CompilationCallback as an explicit assembly stub to avoid getting GCC's prolog. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18220 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
892afa9556eabf358ef632f1be0bde1587b3d610 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
When rewriting the original call instruction, make sure to rewrite it to call the right address. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18213 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
fb887e010dea16ecfe5204132dacf453af0d62c2 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Force the intregs ptr into R2 and the FPregs ptr into R3. This fixes a really obscure problem where we were doing: lmw r3,0(r9) which is undefined on PPC. Now we do: lmw r3,0(r2) by force, not relying on the GCC register allocator for luck :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18212 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
69efbdd4f350e94e3f352e34053a12ba6f826e80 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix a few more tests by encoding the extsb and other XForm11 instructions correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18200 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
2f5091ac2ace9e8fd79166810a7d20a9c4692254 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix the encoding of ORi and other DForm4 instructions. This brings us to 36/42 SingleSource/UnitTests passing! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18199 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
00a8c0199901db28ecd2e96f9e1abb017991060c |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Loads are relocatable too git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18198 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
b765ff121958d14d6dcfbd7475938cfc52975dd1 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Calls do not need a MovPCtoLR instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18197 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
b9f26da5dd6c404e0a6eabcb60fb3c61ac0ee173 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Get constant pools working. This fixes even more programs, allowing us to pass 24/42 in UnitTests (up from 20). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18196 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
8599d385a2f1fbafaaead903ea5be5a9b33a6509 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Rewrite branches more closely to correct. This makes more stuff pass, and stops the infinite loops! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18194 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
310a75287291b8a06d27c14849f184716e2aa666 |
24-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Branch instructions explicitly represent CRx in them. bEcause of this, encode them explicitly as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18193 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
3b78e3b6a9865ab5e30fc5dc8fe194a805aebcf6 |
24-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix encoding of bctrl, and remove some unused instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18192 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6f407893e2df521aef5240b1731afa95fdb4634c |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix encoding of blr and bctr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18178 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
65b7f3ed2af7450bb2cd22cd200c04d9493ddd65 |
23-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Use the correct register class as a constaint to gcc's inline assembly, so that we don't end up trying to use r0 as a base register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18176 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
ca6d0f53ffb0a3112b55a665f7a446f86d5cd6dc |
23-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Save/Restore arg regs and nonvolatile regs the compiler might use during CompilationCallback git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18175 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
5afa9af81b63e26a4510e0538e6ce19f01f8abf7 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix the encoding of OR, AND and many other instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18174 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
d162032013dd10d9cf54426fc69e89c57b22ac9a |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Remove argtype and argcount magic, which was used by the old asmprinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18170 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
583e32b653877be4d842fcf3b1a0a34bbcc2780b |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Get rid of flags that are dead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18169 91177308-0d34-0410-b5e6-96231b3b80d8
PC32.td
PC64.td
owerPC.td
owerPCInstrInfo.h
|
89d60de90e2dc809f001e4d9084fcfe21c7f4d6b |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix encoding of rlwinm? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18165 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
943f45208c48505d53b1a024eca0cb460735fa05 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix encodings git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18164 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
9ba12359e3b4ca5bce5469d86ae38eb1237752ee |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Enumerate CR registers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18162 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
d9d06b3af1bf34ca680759c86a142a2c6c732896 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Initial implementation of exiting CompilationCallback This should save all argument registers on entry and restore on exit, despite that, simple things seem to work!!! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18161 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
22cd028eef97ea5ea7193fd69ed109bf0c7c347b |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
This method is dead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18160 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.h
|
05ad23711edc5ab56b302571419314da29d79199 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Remove this method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18159 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
d7fa35c6d2acc2fe95346b1b9eaa3c0a30342c85 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Squelch a bogus warning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18156 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
dd30751654aaa85efa9dbe2f610a90f38a248800 |
23-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Don't return value from void function. This is only temporary anyway while the JIT is made to work! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18155 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
7598bbac664097768aa0841dc54aabd8753269eb |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix a minor bug git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18153 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
c9a6b1f4f6b62ed4dd58bdf9a3772e8d9b12aa37 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Be really paranoid about not breaking stuff yet git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18152 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
e61198b3233f0c46900ced6d856534b11bd3d9f2 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Implement the first hunk of CompilationCallback. The pieces missing are the ones noted, which require funny PPC specific inline assembly. If some angel felt the desire to help me, I think this is that last bit missing for JIT support (however, generic code emitter might night work right with the constant pool yet). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18151 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
7c83dc2714d9d92068cc2c742e0baa90a3fd0363 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Implement the stub needed to get into compilation callback. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18147 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
64729d064a98f5ee7681c0c8cc71f7681d0b3fb3 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Simplify code a bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18146 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
9b3d989cb7b3473fbb7f268dbc02ae32052a9cbb |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Initial implementation of the JIT interfaces. Relocation is done and stubs for external functions work. CompilationCallback has not been written, and stubs for internal functions are not generated yet. This means you can call printf and exit, and use global variables, but cannot call functions local to a module yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18145 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.cpp
|
e94c517bb52095f1ad070bb029617d532af405b8 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Emit relocations for the global variable using instructions. This gets us LA, LOADHiAddr, CALLpcrel, and MovePCtoLR working, though the constant pool probably is not right. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18144 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
163393732a9a781b6b057c39ee6b1e0c96b9d199 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Implement all of the methods git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18142 91177308-0d34-0410-b5e6-96231b3b80d8
PC32JITInfo.h
|
42edd31209a14710196262c728d4863e19a1c5a9 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Initial checkin of the 32-bit PPC relocation types git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18141 91177308-0d34-0410-b5e6-96231b3b80d8
PCRelocations.h
|
e4fce6f19c2f7f4982d9b0a022ddda541e5135fb |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Move JITInfo from PPCTM to PPC32TM git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18140 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
PCTargetMachine.h
|
942d7b5a68d58e05a6dbfc3a83e31274c13d85e6 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Do not provide the non-specialized PowerPCJITInfo object, it is pretty useless. Instead, let derived classes provide specialized ones. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18139 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.h
|
6540c6c344ec09fc2a3e9ffe3424a0a09c225e05 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
LA is really addi. Be consistent with operand ordering to avoid confusing the code emitter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18138 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCInstrInfo.td
|
f2190b39d035dfca78442cdd5ddd1fc6660cc050 |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Remove some dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18136 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
dd99885da319dfc8d8438736b348cdf2bc953d9c |
23-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Comment out a couple of unused instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18135 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
213c969c92ce8cffbc085429a5f4eb08a412d195 |
22-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Disable this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18130 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
99b394db151615414fc3de24e72c199799a05398 |
22-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
This chunk of code needs to be rewritten git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18127 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
486ebfd7049a42682762cc25c368d1a9ce3aed7b |
21-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix Shootout-C++/wc, which was broken by my recent changes to emit fewer reg-reg copies. The necessary conditions for this bug are a GEP that is used outside the basic block in which it is defined, whose components other than the pointer are all constant zero, and where the use is selected before the definition (backwards branch to successsor block). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18084 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
cdc79e37635ef62c6870ac5996fa71d3da107dd5 |
21-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
ignore generated files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18072 91177308-0d34-0410-b5e6-96231b3b80d8
cvsignore
|
1deb74d7ee65308ec08c261482c659e89e3a11f6 |
20-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Remove this method, it's not clear how it could be implemented indep of 32 or 64-bit mode git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18038 91177308-0d34-0410-b5e6-96231b3b80d8
PCJITInfo.h
PCTargetMachine.cpp
|
a8b0fa5172dc46f53cf8b8ef1aa9c9b4e70ff998 |
20-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
getJITStubForFunction is optional and unimplemented, just remove it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18036 91177308-0d34-0410-b5e6-96231b3b80d8
PC32JITInfo.h
PC64CodeEmitter.cpp
PC64JITInfo.h
PCCodeEmitter.cpp
|
bc3a5378d0854f352da38ad3574409103220fc9d |
19-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Eliminate another 6k register copies that the register allocator would just coalesce out of hbd. Speeds up compilation by 2% (0.6s) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17987 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
8531f6f42aa2adfb1acf77c87c629d796f6e0151 |
19-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Generate fewer reg-reg copies for the register allocator to deal with. This eliminates over 2000 in hbd alone. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17973 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
db869aad8c19230060e11494e12db182573eeccc |
18-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Eliminate another common source of moves that the register allocator shouldn't be forced to coalesce for us: folded GEP operations. This too fires thousands of times across the testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17947 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
1f5308e5b54c14deee2e0e981b19bd398cb1f90b |
18-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
When accessing the base register for global variables, use the register directly rather than making a copy for the register allocator to coalesce. This kills thousands of live intervals across the testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17946 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
0113638073ffe734a5fe4ffa1d534c9e044fcb06 |
18-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Clean up and fix cast codegen by removing cases that are handled elsewhere, and properly emitting signed short to unsigned int. This fixes the last regression vs. the CBE, MultiSource/Applications/hbd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17942 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
eea9b134fcd97aa6c11277864fecf2d30640d27f |
16-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Simplify namespaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17870 91177308-0d34-0410-b5e6-96231b3b80d8
PC64CodeEmitter.cpp
PCCodeEmitter.cpp
|
145a5a374631449bd0d483c036a3390150b7dc86 |
15-Nov-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add BCTR and LWZU instruction opcodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17851 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
3a8a42a9b403ac4d25bb405e3577a8ad1f209e25 |
14-Nov-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Handle GhostLinkage (should not ever reach the assembly printing stage!) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17749 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
fc256599b3b64af0ad09c416e12a3479e6534ce6 |
14-Nov-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix build on Linux/PowerPC64 using SuSE GCC (#undef PPC) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17744 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
|
a59145785719462aec77a5995cde54e0a82f8a5b |
09-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Allow hbd to be bugpointable on darwin by fixing common and linkonce codegen git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17637 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
676dee6ae97587768f07f423e3c54057be014114 |
08-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Put int the getReg cast optimization from x86 so that we generate fewer move instructions for the register allocator to coalesce. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17608 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
EADME.txt
|
075cdc655e2466d6b7e98f88d2fccec26223298c |
07-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Disable bogus cast elimination when the cast is used by a setcc instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17583 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
28dd2fc240749d77d4251b4a29b8cace2a65460c |
04-Nov-2004 |
Nate Begeman <natebegeman@mac.com> |
Thanks to sabre for pointing out that we were incorrectly codegen'ing int test(int x) { return 32768 - x; } Fixed by teaching the function that checks a constant's validity to be used as an immediate argument about subtract-from instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17476 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
6cb21d443eff9369e4f9035af28efd627e8f3909 |
28-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Change Library Names Not To Conflict With Others When Installed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17286 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
17304c393e14a9ddb10ae0483d45d7e926c41078 |
26-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Remove file that is no longer used, and move include of MRegisterInfo.h from PowerPCFrameInfo.h to PowerPCAsmPrinter.cpp where it is actually needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17244 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
PCFrameInfo.h
owerPCRegisterInfo.h
|
dfd0e7bc342f1252a2d2088ca5a759b6f04a65d7 |
26-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Eliminate usage of MRegisterInfo::getRegClass(physreg) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17240 91177308-0d34-0410-b5e6-96231b3b80d8
PC64RegisterInfo.cpp
PCRegisterInfo.cpp
|
4a0de07e7814c19e82f51fc785564381f234490c |
26-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Update to-do list git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17235 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
9b508c36196b3cb7f349f6435b02fd7a335831dc |
26-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix treecc. Also fix a latent bug in emitBinaryConstOperation that would allow and const, 0 to be incorrectly codegen'd into a rlwinm instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17234 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
097714b319f6be0f53211e57909de464993739f9 |
25-Oct-2004 |
Chris Lattner <sabre@nondot.org> |
Disable the JIT until it can sorta kinda work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17230 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
905a29152f1d40541c822a505fa7bfff861d670b |
24-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Implement more complete and correct codegen for bitfield inserts, as tested by the recently committed rlwimi.ll test file. Also commit initial code for bitfield extract, although it is turned off until fully debugged. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17207 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
d4b4a99587a0856473b9334455f6cebcb4fe2583 |
24-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Correctly handle the MovePCtoLR pseudo-instr with a bl to next instr * Stop the confusion of using rv and Addr for global addresses: just use rv git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17195 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
40a55e1e291f1e28eadae19e5ce6f9087d99e085 |
23-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add BA, BL, and BLA opcodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17193 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
a4df350ba1193b2f0421d06a135beb21afb80035 |
23-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Do not emit IMPLICIT_DEF pseudo-instructions * Convert register numbers from their opcode value to the real value, e.g. PPC::R1 => 1 and PPC::F1 => 1 * Add correct handling of loading of global values which are PC-relative -- implement ha16() and lo16() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17190 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
bd7780bc6004e8545042e0aaf7d0d98082baf422 |
23-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
DForm_1, particularly used by store instructions, needs the immediate operand to be listed second as that is how the instructions are usually created (and is the correct asm syntax) so that it's assembled correctly from its constituents git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17183 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
da8d96d1a1769d0614c46d9880ac3c21cbc8e74c |
23-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix the SPR field for MTLR, MFLR, MTCTR, and MFCTR instructions. The decimal value given in the manual (8 or 9) really needs to be multiplied by a factor of 32 because of the group of 5 zero bits after the register code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17182 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
15f74b3f4f371d5ef556644a7a2d61a0993a8053 |
23-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
The value of the XO field for MFLR and MFCTR is 339, not 399 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17181 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
bb482494149d96a04b0146a8d6aa8ec5a10a40fa |
23-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove extraneous blank line git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17180 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
3a060e5279e27a3597905d6859407f33ec5009a4 |
23-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Align function arguments in function headers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17178 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
31dfc52b81cc4d03f8b0c87b15b53412229b0154 |
23-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Kill casts from integer types to unsigned byte, when the cast was only used as the shift amount operand to a shift instruction. This was causing us to emit unnecessary clear operations for code such as: int foo(int x) { return 1 << x; } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17175 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
8c2c3152d64aafe24b5b67cd7d670658eb65df18 |
22-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Adjust to changes in Makefile.rules git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17167 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PC32ISelSimple.cpp
|
cac731ecbe6a80e0c607ece2833525a92601db99 |
22-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
We won't use automake git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17155 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.am
akefile.in
|
9691a898c702b5ad6ec122dd38f8b4196316876c |
21-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove debug code emitter from the JIT git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17151 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
4f9a6c30a2a3742a24b23ccefc38c751be92a04a |
21-Oct-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Make this compile. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17150 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
3070e2ff790e106f5969f503487db5e4b8639ce4 |
21-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Added basic support for JITing functions, basic blocks, instruction encoding, including registers, constants, and partial support for global addresses * The JIT is disabled by default to allow building llvm-gcc, which wants to test running programs during configure git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17149 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
0797d4905a2cabd928cf0ffdf80690f4e6c89845 |
20-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Don't clear or sign extend bool->int. This fires a few dozen times on the test suite git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17147 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
86d341b204171d53a470c361ee58811bfc22bf1a |
19-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Initial automake generated Makefile template git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17136 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.in
|
fcf4a42cdf5d34b7761f34e3cb978b4cef93e2cb |
18-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Generate correct stubs for weak-linked symbols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17101 91177308-0d34-0410-b5e6-96231b3b80d8
PCAsmPrinter.cpp
|
761920301dcc873773c697c232e9a365076de937 |
17-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
PPC32GenCodeEmitter instead of PowerPCGenCodeEmitter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17087 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.am
|
1b75022cd3f23ff86d36f5ba92d8bfcbc4d76351 |
17-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Implement bitfield insert by recognizing the following pattern: 1. optional shift left 2. and x, immX 3. and y, immY 4. or z, x, y ==> rlwimi z, x, y, shift, mask begin, mask end where immX == ~immY and immX is a run of set bits. This transformation fires 32 times on voronoi, once on espresso, and probably several dozen times on external benchmarks such as gcc. To put this in terms of actual code generated for struct B { unsigned a : 3; unsigned b : 2; }; void storeA (struct B *b, int v) { b->a = v;} void storeB (struct B *b, int v) { b->b = v;} Old: _storeA: rlwinm r2, r4, 0, 29, 31 lwz r4, 0(r3) rlwinm r4, r4, 0, 0, 28 or r2, r4, r2 stw r2, 0(r3) blr _storeB: rlwinm r2, r4, 3, 0, 28 rlwinm r2, r2, 0, 27, 28 lwz r4, 0(r3) rlwinm r4, r4, 0, 29, 26 or r2, r2, r4 stw r2, 0(r3) blr New: _storeA: lwz r2, 0(r3) rlwimi r2, r4, 0, 29, 31 stw r2, 0(r3) blr _storeB: lwz r2, 0(r3) rlwimi r2, r4, 3, 27, 28 stw r2, 0(r3) blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17078 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
2d4c98d79b5526aaf94b87d21a7d672f35b183a9 |
16-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Finally fix one of the oldest FIXMEs in the PowerPC backend: correctly flag rotate left word immediate then mask insert (rlwimi) as a two-address instruction, and update the ISel usage of the instruction accordingly. This will allow us to properly schedule rlwimi, and use it to efficiently codegen bitfield operations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17068 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCInstrInfo.td
|
289a49ab7de9eef5d0ede1f07272a4c390174613 |
16-Oct-2004 |
Chris Lattner <sabre@nondot.org> |
ADd support for undef and unreachable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17050 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
e0c83a86b0f609e7212fba6679453b8e5bd7fa33 |
15-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Better codegen of binary integer ops with 32 bit immediate operands. This transformation fires a few dozen times across the testsuite. For example, int test2(int X) { return X ^ 0x0FF00FF0; } Old: _test2: lis r2, 4080 ori r2, r2, 4080 xor r3, r3, r2 blr New: _test2: xoris r3, r3, 4080 xori r3, r3, 4080 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17004 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
c982cfad875f64284ae0fb2f822b0867657171eb |
14-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Claim to support machine code emission - return false from addPassesToEmitMachineCode() * Add support for registers and constants in getMachineOpValue() This enables running "int main() { ret 0 }" via the PowerPC JIT. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16983 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
d37faba5b485eefe94e36e0f88da899b8fec42e5 |
14-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Include the real (generated) version of getBinaryCodeForInstr() * Add implementation of getMachineOpValue() for generated code emitter * Convert assert()s in unimplemented functions to abort()s so that non-debug builds fail predictably * Add file header comments git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16981 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
|
bab2adf49691014fedcffe0744e22e0277ddf1b8 |
14-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Make a PPC32-specific code emitter because we have separate classes for 32- and 64-bit code emitters that cannot share code unless we use virtual functions * Identify components being built by tablegen with more detail by assigning them to PowerPC, PPC32, or PPC64 more specifically; also avoids seeing 'building PowerPC XYZ' messages twice, where one is for PPC32 and one for PPC64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16980 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
a671f3b1d43507ed5f24e409f83d0db7f99c25ee |
14-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
There is only one field in an instruction, and that is `Inst', the final view of the instruction binary format, all others are simply operands and should not have the `field' label git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16978 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
315d3341fd9386a55c9f9ca55e9e76ae3fecfb51 |
14-Oct-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
PowerPC instruction definitions use LittleEndian-style encoding [0..31] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16977 91177308-0d34-0410-b5e6-96231b3b80d8
PC32.td
PC64.td
owerPC.td
|
d96cb6eaa0a878467d9594a12dfe3a55466706f0 |
13-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Update to reflect changes in Makefile rules. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16950 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.am
|
81f76b324e0b22731d06ed34641032de983428b1 |
11-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Initial version of automake Makefile.am file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16893 91177308-0d34-0410-b5e6-96231b3b80d8
akefile.am
|
cbb9812d0df6b64d42c3b2687c877050612a7129 |
10-Oct-2004 |
Chris Lattner <sabre@nondot.org> |
bling bling! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16873 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
bdf69847a9448dc64c6aae9abacf65822af016eb |
08-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Implement logical and with an immediate that consists of a contiguous block of one or more 1 bits (may wrap from least significant bit to most significant bit) as the rlwinm rather than andi., andis., or some longer instructons sequence. int andn4(int z) { return z & -4; } int clearhi(int z) { return z & 0x0000FFFF; } int clearlo(int z) { return z & 0xFFFF0000; } int clearmid(int z) { return z & 0x00FFFF00; } int clearwrap(int z) { return z & 0xFF0000FF; } _andn4: rlwinm r3, r3, 0, 0, 29 blr _clearhi: rlwinm r3, r3, 0, 16, 31 blr _clearlo: rlwinm r3, r3, 0, 0, 15 blr _clearmid: rlwinm r3, r3, 0, 8, 23 blr _clearwrap: rlwinm r3, r3, 0, 24, 7 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16832 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
b816f0298d21d258af07d6fe5909589b9b9ecba2 |
08-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Several fixes and enhancements to the PPC32 backend. 1. Fix an illegal argument to getClassB when deciding whether or not to sign extend a byte load. 2. Initial addition of isLoad and isStore flags to the instruction .td file for eventual use in a scheduler. 3. Rewrite of how constants are handled in emitSimpleBinaryOperation so that we can emit the PowerPC shifted immediate instructions far more often. This allows us to emit the following code: int foo(int x) { return x | 0x00F0000; } _foo: .LBB_foo_0: ; entry ; IMPLICIT_DEF oris r3, r3, 15 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16826 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC64ISelSimple.cpp
PCInstrInfo.td
|
cb90de37a720b0b00d6303b49b8df6d5ac5f34f9 |
08-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Add ori reg, reg, 0 as a move instruction. This can be generated from loading a 32bit constant into a register whose low halfword is all zeroes. We now omit the ori after the lis for the following C code: int bar(int y) { return y * 0x00F0000; } _bar: .LBB_bar_0: ; entry ; IMPLICIT_DEF lis r2, 15 mullw r3, r3, r2 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16825 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.cpp
|
5a181c848bc9994265ef27d3f9fc50144968f61b |
08-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Remove unnecessary header include git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16824 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
7c348e1c9f0b905a189e0c6ad870fff5ef296ad0 |
06-Oct-2004 |
Chris Lattner <sabre@nondot.org> |
Correct some typeos git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16770 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
35b020df39c5ddddbb27b5cbebb1def4cae3c28a |
06-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Turning on fsel code gen now that we can do so would be good. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16765 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
087d5d92f1df677848fcf6a8bcb0757e5bddf3fa |
06-Oct-2004 |
Nate Begeman <natebegeman@mac.com> |
Implement floating point select for lt, gt, le, ge using the powerpc fsel instruction. Now, rather than emitting the following loop out of bisect: .LBB_main_19: ; no_exit.0.i rlwinm r3, r2, 3, 0, 28 lfdx f1, r3, r27 addis r3, r30, ha16(.CPI_main_1-"L00000$pb") lfd f2, lo16(.CPI_main_1-"L00000$pb")(r3) fsub f2, f2, f1 addis r3, r30, ha16(.CPI_main_1-"L00000$pb") lfd f4, lo16(.CPI_main_1-"L00000$pb")(r3) fcmpu cr0, f1, f4 bge .LBB_main_64 ; no_exit.0.i .LBB_main_63: ; no_exit.0.i b .LBB_main_65 ; no_exit.0.i .LBB_main_64: ; no_exit.0.i fmr f2, f1 .LBB_main_65: ; no_exit.0.i addi r3, r2, 1 rlwinm r3, r3, 3, 0, 28 lfdx f1, r3, r27 addis r3, r30, ha16(.CPI_main_1-"L00000$pb") lfd f4, lo16(.CPI_main_1-"L00000$pb")(r3) fsub f4, f4, f1 addis r3, r30, ha16(.CPI_main_1-"L00000$pb") lfd f5, lo16(.CPI_main_1-"L00000$pb")(r3) fcmpu cr0, f1, f5 bge .LBB_main_67 ; no_exit.0.i .LBB_main_66: ; no_exit.0.i b .LBB_main_68 ; no_exit.0.i .LBB_main_67: ; no_exit.0.i fmr f4, f1 .LBB_main_68: ; no_exit.0.i fadd f1, f2, f4 addis r3, r30, ha16(.CPI_main_2-"L00000$pb") lfd f2, lo16(.CPI_main_2-"L00000$pb")(r3) fmul f1, f1, f2 rlwinm r3, r2, 3, 0, 28 lfdx f2, r3, r28 fadd f4, f2, f1 fcmpu cr0, f4, f0 bgt .LBB_main_70 ; no_exit.0.i .LBB_main_69: ; no_exit.0.i b .LBB_main_71 ; no_exit.0.i .LBB_main_70: ; no_exit.0.i fmr f0, f4 .LBB_main_71: ; no_exit.0.i fsub f1, f2, f1 addi r2, r2, -1 fcmpu cr0, f1, f3 blt .LBB_main_73 ; no_exit.0.i .LBB_main_72: ; no_exit.0.i b .LBB_main_74 ; no_exit.0.i .LBB_main_73: ; no_exit.0.i fmr f3, f1 .LBB_main_74: ; no_exit.0.i cmpwi cr0, r2, -1 fmr f16, f0 fmr f17, f3 bgt .LBB_main_19 ; no_exit.0.i We emit this instead: .LBB_main_19: ; no_exit.0.i rlwinm r3, r2, 3, 0, 28 lfdx f1, r3, r27 addis r3, r30, ha16(.CPI_main_1-"L00000$pb") lfd f2, lo16(.CPI_main_1-"L00000$pb")(r3) fsub f2, f2, f1 fsel f1, f1, f1, f2 addi r3, r2, 1 rlwinm r3, r3, 3, 0, 28 lfdx f2, r3, r27 addis r3, r30, ha16(.CPI_main_1-"L00000$pb") lfd f4, lo16(.CPI_main_1-"L00000$pb")(r3) fsub f4, f4, f2 fsel f2, f2, f2, f4 fadd f1, f1, f2 addis r3, r30, ha16(.CPI_main_2-"L00000$pb") lfd f2, lo16(.CPI_main_2-"L00000$pb")(r3) fmul f1, f1, f2 rlwinm r3, r2, 3, 0, 28 lfdx f2, r3, r28 fadd f4, f2, f1 fsub f5, f0, f4 fsel f0, f5, f0, f4 fsub f1, f2, f1 addi r2, r2, -1 fsub f2, f1, f3 fsel f3, f2, f3, f1 cmpwi cr0, r2, -1 fmr f16, f0 fmr f17, f3 bgt .LBB_main_19 ; no_exit.0.i git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16764 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
1f49e868aad763540be5e2076b5af6dbff5bf1c1 |
29-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
Generate better code by being far less clever when it comes to the select instruction. Don't create overlapping register lifetimes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16580 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
1b99fd3e8a352c078d52f8648273cc6d1d5cd884 |
29-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
improve Type::BoolTy codegen by eliminating unnecessary clears and sign extends git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16578 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
a41fc77ae40db49d711fc6f9c43b704a3b408e60 |
29-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
To go along with sabre's improved InstCombining, improve recognition of integers that we can use as immediate values in instructions. Example from yacr2: - lis r10, -1 - ori r10, r10, 65535 - add r28, r28, r10 + addi r28, r28, -1 addi r7, r7, 1 addi r9, r9, 1 b .LBB_main_9 ; loopentry.1.i214 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16566 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
da721e74f87c3098bdb1373a7a1c7aef4cf7d574 |
27-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
Correct some BuildMI arguments for the upcoming simple scheduler git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16519 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC64RegisterInfo.cpp
PCRegisterInfo.cpp
|
645495d2e6a36644d9d5e4bd08a7665e6fc195e8 |
23-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix the last of the major PPC GEP folding deficiencies. This will allow the ISel to use indexed and non-zero immediate offsets for GEPs that have more than one use. This is common for instruction sequences such as a load followed by a modify and store to the same address. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16493 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
a2de102a5bd43131dd0ee5c5498cb18ee0ac4282 |
22-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
add optimized code sequences for setcc x, 0 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16478 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCAsmPrinter.cpp
PCInstrInfo.td
|
540c82a7003c09f62cb863a32e8ad49bed18316e |
21-Sep-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
s/ISel/PPC64ISel/ to have unique class names for debugging via gdb because the C++ front-end in gcc does not mangle classes in anonymous namespaces correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16471 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
a1dca55a3ab450ca3b0b361d6a3e6f21116b2f3a |
21-Sep-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
s/ISel/PPC32ISel/ to have unique class names for debugging via gdb because the C++ front-end in gcc does not mangle classes in anonymous namespaces correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16470 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
b228657acc4afbdc74dc523e9f465d08935f9e8d |
14-Sep-2004 |
Chris Lattner <sabre@nondot.org> |
Revamp the Register class, and allow the use of the RegisterGroup class to specify aliases directly in register definitions. Patch contributed by Jason Eckhardt! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16330 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
20136a21ba5ae64f97ed22ee0f59259209fa233c |
06-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
Add 64 bit divide instructions, and use them git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16198 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
PCInstrInfo.td
|
3e0b51ab3ba2b8e411fc9cedb7e762068671691b |
05-Sep-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Change PPC32AsmPrinter => PowerPCAsmPrinter since it is now shared between Darwin and AIX and is not 32- or 64-bit specific * Bring back PowerPC.td as a result, to make it use the `PowerPC' class name * Adjust Makefile accordingly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16174 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PCAsmPrinter.cpp
owerPC.td
|
b986b7de5090d7ae4d91959f508f7a2f171466e8 |
05-Sep-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Renamed PPC32AsmPrinter.cpp => PowerPCAsmPrinter.cpp as the Darwin and AIX asm printers are now unified into one file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16173 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
|
a11c2e8fb99bb93f618894aaa92b5d4c6c2e4ea6 |
04-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
Include MathExtras.h to fix build breakage, thanks to Vladimir git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16164 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
ed42853be1ef530890043da7c8966dc6678cf9bf |
04-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
All PPC instructions are now auto-printed 32 and 64 bit AsmWriters unified Darwin and AIX specific features of AsmWriter split out git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16163 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PC64AsmPrinter.cpp
PCAsmPrinter.cpp
PCInstrFormats.td
PCInstrInfo.td
PCTargetMachine.cpp
PCTargetMachine.h
owerPCTargetMachine.h
EADME.txt
|
b7a8f2cdaa3db15861c7f06238fcacc4b10b74f3 |
02-Sep-2004 |
Nate Begeman <natebegeman@mac.com> |
Convert remaining X-Form and Pseudo instructions over to asm writer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16142 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCInstrFormats.td
PCInstrInfo.td
|
551ccae044b0ff658fe629dd67edd5ffe75d10e8 |
02-Sep-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Changes For Bug 352 Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PC64AsmPrinter.cpp
PC64ISelSimple.cpp
PC64RegisterInfo.cpp
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCCodeEmitter.cpp
PCRegisterInfo.cpp
PCTargetMachine.cpp
|
cc8bd9ca7c4991774e40c9d8974ff48ad1a60d38 |
31-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
convert M and MD form instructions to generated asm writer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16121 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
07aada8b0fcac511424623a632dec909e40cd201 |
30-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Move yet more instructions over to being printed by the generated asm writer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16112 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
PCInstrFormats.td
PCInstrInfo.td
|
6b3dc55ef84946935bda6964352fb6e44a60721c |
30-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Convert A-Form instructions to auto-generated asm writer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16107 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
d332fd54f57e4d91267d7f4e4ee8d35003c7ef78 |
30-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Improvements to int->float cast code for PPC-64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16105 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
PCInstrInfo.td
EADME.txt
|
f2f0781a109f0a9fe0c3597d2bb1c995de2dab4a |
29-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Implement the following missing functionality in the PPC backend: cast fp->bool cast ulong->fp algebraic right shift long by non-constant value These changes tested across most of the test suite. Fixes Regression/casts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16081 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCInstrInfo.td
EADME.txt
|
5709998993cade99e4aeda1c9d44a1bdf54aa720 |
27-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Register sizes are in bits, not bytes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16070 91177308-0d34-0410-b5e6-96231b3b80d8
PC64RegisterInfo.cpp
PCRegisterInfo.cpp
|
0e5e5f56bde3556aa231bf19f7fc9b62c31a2fcc |
22-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Kill a majority of unnecessary sign extensions for byte loads git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15991 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
1f4a132599974d448cbaa4519006d38ce9b1bf16 |
22-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Don't hard code the offset of the saved R31 in functions with frame pointers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15990 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.cpp
|
a96c4af7f1c75ec9b964fe84d980f01ae5c136c1 |
21-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Back out branchless SetCC code. While it helped a lot in some cases, it hurt a lot in others. Instead, improve branching version of SetCC and Select instructions. The old code will be in CVS should we ever need to dig it up again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15979 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
608034ec1a11c5b546f20775736652bcaf30049c |
21-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Switch from bytes to bits for alignment. Also, change GPRC for PPC32 to align on 32-bit boundary instead of 64-bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15975 91177308-0d34-0410-b5e6-96231b3b80d8
PC32RegisterInfo.td
PC64RegisterInfo.td
|
8edcd8465361f3aa29082e1b1f2a1c88afc0836a |
21-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Reduce uses of getRegClass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15968 91177308-0d34-0410-b5e6-96231b3b80d8
PC64RegisterInfo.cpp
PCRegisterInfo.cpp
|
12585baf1a086f7d54e0ac963e3b0e7b6792b80c |
21-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Fix warning git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15964 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
c3306120cc66b1c5bc73bd0e95e1f613e27b12dc |
21-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Move XForm instructions over to the auto-generated asm writer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15962 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
PCInstrFormats.td
PCInstrInfo.td
|
b65eadb7f50c3e4c67efea4901e96b334d69700e |
20-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
remove some things from the todo list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15956 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
f9088885539eb6daab8a5c95e29d609ce4fefaf0 |
20-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Do not register ppc64 yet, as it breaks the SparcV9 backend git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15955 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
b47321ba2bd9dcd45af187bf55e850f2086d9723 |
20-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Implement code to convert SetCC into straight line code where appropriate. Add necessary instructions for this transformation to the .td file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15952 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCInstrInfo.td
|
43f20a56b28c52339d2a007e88043fa42744641b |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix opcodes being printed in caps (the more general fix may be `AsmWriter') git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15932 91177308-0d34-0410-b5e6-96231b3b80d8
PC64AsmPrinter.cpp
|
1601d9c1f0c4045d68e38986780fa2ff4098836c |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Stack space for argument passing is 32 regardless of 32- vs. 64-bit arch. Thanks to Nate Begeman for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15930 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
983e92dc0db2cd86cc53fe03a33fc1d4758b1f43 |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
LR needs to be saved at 16-byte offset on a 64-bit arch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15929 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
PCTargetMachine.cpp
|
4debafbea461a756481eacf72d3372a55ff1d8af |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
On 64-bit PowerPC, pointers are 8 bytes, so parameter area offset is 48, not 24 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15928 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
d2cbb871d06e514ead12aa5b3af47ce44d8ab113 |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
This PHI has 4 additional operands, not 2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15926 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
95ab78af3cf0d440f159c2d549e0564b74f12364 |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Use the appropriate 64-bit register description file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15922 91177308-0d34-0410-b5e6-96231b3b80d8
PC64.td
|
5e9867e71c8a099b470a6ac3b794b161c3035a63 |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix more remaining 32-bit vestiges of PowerPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15919 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
cc55ad5fe9ce5d971d9d88527e551ca84265c646 |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix another vestige of the 32-bit PowerPC backend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15918 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
ab566eaa682484fa94f58ff784d0360ecda031af |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Correct character prepended to global symbols ('.'), use Mangler consistently git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15917 91177308-0d34-0410-b5e6-96231b3b80d8
PC64AsmPrinter.cpp
|
1c514ec89dc1fe01adf591584755d0c3ff622361 |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Eliminate global base register, r2 is used for that on AIX/PowerPC * Fix bug from 32-bit PowerPC days of 2-register long split git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15916 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
85aa4d0cc5ed00b875a8c9814ad25cc39199fbc5 |
19-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Wrap long lines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15915 91177308-0d34-0410-b5e6-96231b3b80d8
PC64RegisterInfo.cpp
|
1e67d4d7bae24793de849a5a97f7e194fd2f741a |
19-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Convert casts that will have no effect into move instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15914 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
81d265d692f0043bdbc9eab9cf833ead06a88ad7 |
19-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Clean up floating point instruction selection. Change int->float cast code to put conversion constants in constant pool. Shorten code sequence for constant pool fp loads. Remove LOADLoDirect/LOADLoIndirect psuedo instructions and tweak asmwriter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15913 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PC64ISelSimple.cpp
PCAsmPrinter.cpp
PCInstrInfo.td
|
f746a7d09b219619b16ffa875e762d6e24868d6f |
18-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Rename var git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15897 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
5069438763391b78a434a6e2a6d04418c4f88530 |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
This file is no longer used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15893 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.td
|
69d485e64689533c80e62f530968ca6bf1eef864 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Start using alignment output routines from AsmPrinter. Changes to make this more similar to the X86 asmprinter Fix overalignment of globals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15891 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
5676310c5dd8c31a6a42eecdf3621df52801558b |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Print comments with ; git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15881 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
07a73755d365af178050d3945c9c3dcdf2576ea0 |
17-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Re-fix hiding the Frame Pointer from the register allocator in functions that have a frame pointer. This change fixes Burg. In addition, make the necessary changes to floating point code gen and constant loading after Chris Lattner's fixes to the asm writer. These changes fix MallocBench/gs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15873 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PC32RegisterInfo.td
PC64RegisterInfo.td
|
79835d9f9fd6890249414c55b5f4fd80a355eb65 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Use the emitGlobalConstant defined in AsmPrinter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15869 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
b462e47d2d706cea7d8035c155b0f4f25d58a8f9 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
New, more general, interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15866 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC64AsmPrinter.cpp
PCAsmPrinter.cpp
|
9e36843964abce1e4f2db23b0b2c3ec8490fe601 |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Rewrite targets/rules to generate files for just PowerPC or PPC{32,64} git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15862 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
8283ec7c1cb7ec34e5393c553df3edbaba671693 |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Register classes are target-dependent git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15861 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
6316181ee0b4a9f1ea992f9b90ff1b48382c0b8a |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
#include <map> is not necessary here git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15860 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
1dcddfefbda4f76730b7d60623370a37d593aed5 |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
`PowerPC' is no longer a real target git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15859 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.td
|
f2f8cfb945e5fc20a3793cf715d380cebd8ade98 |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Move variables and methods which need PPC{32,64}* distinction to subclasses git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15858 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.h
|
66aa3e0e8baeb4074ced9f4427c89145cc91550b |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
No need for an `is64bit' flag git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15857 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
a2a27b3c85d56495268c5426442fb9e356a885f9 |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
PowerPCInstrInfo and PowerPCRegisterInfo have gone away; they are replaced by 32- and 64-bit customized files, named appropriately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15856 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.cpp
owerPCRegisterInfo.cpp
|
08dde0ba85f7f7e70293fd9075a0df99c32de29b |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Consistently name passed with 32 or 64 in their name git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15855 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
|
3d58b8f531a32d329cddb714bffc47914890343c |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
PowerPCRegisterInfo no longer takes a bool to differentiate 32 vs 64 bits git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15854 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.h
|
db50bd3e7ae75f15107740acefb7c0eb357c929f |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
The PowerPCInstrInfo class has gone away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15853 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.h
|
363dd073202c40d019415719bfeaf9a40c9e1cac |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
PowerPCInstrInfo has gone away, PPC32 and PPC64 share opcodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15852 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
adde6994ac8b29ae75ea9edad310c673dfbb96ec |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
PowerPC 32-/64-bit split: Part II, 64-bit customizations on PowerPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15851 91177308-0d34-0410-b5e6-96231b3b80d8
PC64.td
PC64AsmPrinter.cpp
PC64ISelSimple.cpp
PC64InstrInfo.cpp
PC64InstrInfo.h
PC64RegisterInfo.cpp
PC64RegisterInfo.h
PC64RegisterInfo.td
PC64TargetMachine.h
|
f2ccb77ee9d8ab35866dae111fa36929689c7511 |
17-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
PowerPC 32-/64-bit split: Part I, PPC32* bit files, adapted from former PowerPC* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15850 91177308-0d34-0410-b5e6-96231b3b80d8
PC32.td
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PC32RegisterInfo.td
PCAsmPrinter.cpp
PCInstrInfo.cpp
PCInstrInfo.h
PCRegisterInfo.cpp
PCRegisterInfo.h
PCTargetMachine.h
|
469ab79584cd31d9f632988abccefc16c7a215e0 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Print float constants as 4 byte values. Also, fix endianness problems when cross compiling from little-endian host. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15847 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
505e783d8cecda3262eb5ef24326ef2e74da2ce3 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Make sure to put an _ prefix on all identifiers! Also, add some (currently disabled) code to print float's as 32-bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15846 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
416ca3384afcd4277b41c230736eb0a4552165f7 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
More changes to make PPC32 and X86 more similar git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15842 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
36aacdb974a65e1f5c76c38a008a01c3f44202d9 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Minor changes to make the diff be nothing against the X86 version git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15841 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
a3840795a58b3fe3c7d986bfa20951e8d5e1d6e2 |
17-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Finegrainify namespacification Start using the AsmPrinter base class to factor out a bunch of code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15840 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
b6482069f034afebc0355fc438e0351c9a2edf1f |
16-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
There is no need for a cast here git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15810 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
746a49516c7c8a9bb0f5fc1051e1768086c4b8a9 |
16-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Update the current state of the world git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15809 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
7e0fd576d30518d2b68df1d7bf7f6b16387d165c |
16-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix typo of the word 'implicit' I made resolving a CVS conflict. Whoops! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15808 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
1cffdf0798eb2bb495bc234b27f9455dbb476d02 |
16-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix frame pointer handling: Reserve R0 in store/load from stack slot for building >32k offsets from SP or FP. This also requires we use R11 rather than R0 for holding the LR value we want to save or restore. Also, tell the register allocator not to use R31 (our FP) in functions that have a frame pointer. These changes fix Burg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15807 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
owerPCRegisterInfo.cpp
|
865075ed350ec6cee8ccd6723362dc5aa3823b25 |
16-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix mismatched adjust down/up of SP in functions that contain variable sized allocas. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15806 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
6ff3f83ef035e1db026d5e49dca5ad273e58af84 |
16-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Insertion methods now return void instead of #instrs inserted. Also, use more powerful forms of BuildMI to concisify the code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15782 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
owerPCRegisterInfo.h
|
57f1b67c347b9ba1f8a1cdc3a55362d4f2aa8653 |
15-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
These methods no longer take a TargetRegisterClass* operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15774 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
owerPCRegisterInfo.h
|
8c9b4de5744ea6c4ce8b79e8a55130df268761cd |
15-Aug-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Make this compile on gc 3.4.1 (static_cast to non-const type was not allowed). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15766 91177308-0d34-0410-b5e6-96231b3b80d8
PCFrameInfo.h
|
f7bb8c0caa550db44d60637c8ae6cc6dc4a13ad9 |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Add future optimization opportunity git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15760 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
43d64eae53cda02910a68bc211f95daaa1b81e18 |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix float to int codepath by always allocating 8 bytes for the target of a double store; optimize cmplwi generation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15759 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
08eceec98df96a0eb0a8afe8b5667c75b659f0db |
15-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Zimm16 is now dead. Its entry is not removed from the enum, to avoid having to renumber everything. Similar elimination should be applied to other operand enum values that are only used to format printing in the .s file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15755 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC64AsmPrinter.cpp
PCAsmPrinter.cpp
|
0ea3171fbfaf78672264a9299c33c81c63b2a522 |
15-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Convert all of the DForm_6* operations, which makes all of the Zimm16 users dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15754 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
PCInstrFormats.td
PCInstrInfo.td
|
d15575d39f56d1440c7e0005c98094bb6deb6ca4 |
15-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Reenable the CCRC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15752 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
97b2a2e389834ae237641cd068ad03b44eaa1e08 |
15-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Convert the DForm_4 over to the asmprintergen git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15751 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
PCInstrFormats.td
PCInstrInfo.td
|
ad9c242605ae694017e41a4e528a81f9fea291c6 |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Remove dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15750 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
7bb424fafcfc3452c209556cd764e60b45ae6a5d |
15-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Print mflr using the asmwriter generator git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15749 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
PCInstrInfo.td
|
ca068e861b7f1184d31f6c8f26f88feb076badf1 |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Replace PowerPCPEI.cpp with target independant PrologEpilogInserter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15746 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCFrameInfo.h
PCTargetMachine.cpp
owerPCPEI.cpp
owerPCTargetMachine.h
EADME.txt
|
ffde1de597c40ebecdd6479756f101197a844b46 |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Add support for frame pointers, and large offsets from stack and frame pointers. Adopt elimination of MachineFunction& arg from eliminateFrameIndex. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15745 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
owerPCRegisterInfo.h
|
b0b8b93e58f6e09c2471730ad7113f38ce04098e |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Add indexed forms of load doubleword and load word algebraic for 64 bit targets git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15743 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
6d1e2dfd865927d59208ca37cef1a8832619f20b |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix handling of FP constants with single precision, and loading of internal linkage function addresses git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15742 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
e59bf59ba55c6bdba82a7126e91f5bb53118e84c |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Add initial support for using the generated asm writer. Also, fix FP constant printing to always print 8 byte intializers. Move printing of LinkOnce stubs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15741 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
|
14d89d68101e603ff570b9fdbe83a98cf4ee85fc |
15-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Add generation of asm writer from tablegen files to Makefile git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15740 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
1c284ac5ec72c86b9ed787b3f4e1a6978c919370 |
13-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Remove an unneeded header and forward declaration git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15722 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.h
|
b73a711ed7c1da332ae8d22b0defcbdf0411d1a4 |
13-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix siod by switching BoolTy to byte rather than int until CFE changes for Darwin. Also, change asm printer to output proper stubs for external functions whose address is passed as an argument to aid in bugpointing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15721 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PCAsmPrinter.cpp
|
293d88ca8b776f6c8b0d36375458602cb2ae67d5 |
13-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix 177.mesa compilation, don't use floating point regs for base addresses! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15720 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
8cfa427d9c5a95c96658c033e0f348ffd23920f5 |
13-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix llc crasher compiling siod by giving BuildMI the correct number of arguments git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15719 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
5a104b0ec5b392b5f2ba42a774adce4b8668af8a |
13-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Longs are in one register on PowerPC 64; use appropriate instructions to operate on them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15711 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
244e64ead21760aa87438f9d221c6b4f12a7ccf9 |
13-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Add some more 64 bit instructions we need for the PowerPC-64 ISel to the tablegen files git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15710 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
f5f70685b6915682d3f5b89e7c023dea98842b1b |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Disable PPC64 backend by default because LLC cannot choose automatically between SparcV9 and PowerPC64 without target triples, since they are both 64-bit big-endian targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15688 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
a1b6ae9d7cf39e4589192eac4ad2288ec29e2de1 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Correct 64-bit version: blr 1 (not 0) * BuildMI() can build 0-param instructions (e.g., NOP) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15681 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
e4d093c356c7853f7acfd2228dda2ab7c7b3db00 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Print out full names for non-GPR or -FPR registers * BuildMI() really *does* handle 0 params! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15680 91177308-0d34-0410-b5e6-96231b3b80d8
PC64AsmPrinter.cpp
|
cc6b01b1e68cd87807f94a8c51088be9ff096e71 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Pointers are 8 bytes, hence cLong type on 64-bit PPC * Fix loading of GlobalValues git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15678 91177308-0d34-0410-b5e6-96231b3b80d8
PC64ISelSimple.cpp
|
8e63dcebcc3256a9bf656c21f163b478b82e00a6 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Eliminate special-casing 14-bit immediate load/store opcodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15677 91177308-0d34-0410-b5e6-96231b3b80d8
PC64AsmPrinter.cpp
|
c90f2963c4ba579e28acf458966bb18d0fa6cf5b |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Correctly print out ASCII literal strings on AIX git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15674 91177308-0d34-0410-b5e6-96231b3b80d8
PC64AsmPrinter.cpp
|
ef9468cfe5d3ec033fe95dcaad71717938456945 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Mark R2 as available for allocation on Darwin/PPC32, but not AIX/PPC64 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15673 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
1d3527edbf473d357ee79fb8638e24d1bf992831 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Move AIX into the llvm namespace to be accessed from RegisterInfo * Mark InstrInfo with 32 vs. 64 bit flag * Enable the 64-bit isel and asm printer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15672 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
owerPCTargetMachine.h
|
a6ecd9ee47ea0a80362c58c4fbd7b29d9b61ee61 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Set the is64bit flag and propagate it to PowerPCRegisterInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15671 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.cpp
owerPCInstrInfo.h
|
dceb4576075546962ac816a05267afbc606234a6 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Set the is64bit boolean flag in PowerPCRegisterInfo * Doubles are 8 bytes in 64-bit PowerPC, and use the general register class * Use double-word loads and stores for restoring from/saving to stack * Do not allocate R2 if compiling for AIX git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15670 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
owerPCRegisterInfo.cpp
owerPCRegisterInfo.h
|
ca9309f22e626db9019de371cf7b61a7e35d08e2 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
64-bit instruction selector and AIX-specific 64-bit asm printer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15669 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC64AsmPrinter.cpp
PC64ISelSimple.cpp
|
55eee3dc7aa74164e5e223420855e7740141da56 |
12-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix names of 64-bit CMP*D* opcodes, add LWA and STD* opcodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15668 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
f1f6cef161f2005c85b5fb54587dcb0b74c6a82a |
11-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add support for 64-bit CMPDI, CMPLDI, and CMPLD opcodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15667 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
96b611068577140c0619259e5fa09135b1f6d6ed |
11-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add doubleword load/store (64-bit only). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15665 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
9582822341bd8a7847b1f796be19c621a74bd616 |
11-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Hyphenate ##-bit and remove first-person from comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15663 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
7a4fe9be7ee67dafa8d172d16bc6799e599ad495 |
11-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Clean up 32/64bit and Darwin/AIX split. Next steps: 64 bit ISel, AIX asm printer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15662 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32.h
PC32ISelSimple.cpp
PC32JITInfo.h
PC32TargetMachine.cpp
PC64.h
PC64JITInfo.h
PC64TargetMachine.cpp
PC64TargetMachine.h
PCTargetMachine.cpp
PCTargetMachine.h
owerPCTargetMachine.h
|
74a806cd3dc7ba2d64705b91b40616ca53925924 |
11-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Fix a case where constantexprs could leak into the PPC isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15661 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
8d963e602b752f6c071063a5e769f6058018c733 |
11-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix 255.vortex by using getClassB instead of getClass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15648 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
|
0145881cb985b2165bbd1aded733e0183c50e63a |
11-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Breaking up the PowerPC target into 32- and 64-bit subparts, Part III: the rest. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15636 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCJITInfo.h
PCTargetMachine.cpp
owerPCAsmPrinter.cpp
owerPCCodeEmitter.cpp
owerPCISelSimple.cpp
owerPCInstrInfo.h
owerPCTargetMachine.h
|
c0f6420b96d88e67253a20a866236575dccbfd25 |
11-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Breaking up the PowerPC target into 32- and 64-bit subparts: Part II: 64-bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15635 91177308-0d34-0410-b5e6-96231b3b80d8
PC64.h
PC64CodeEmitter.cpp
PC64JITInfo.h
PC64TargetMachine.cpp
PC64TargetMachine.h
|
3d9a6c2842599b9d8659ae97e19c413d435d7b34 |
11-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Breaking up the PowerPC target into 32- and 64-bit subparts, Part I: 32-bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15634 91177308-0d34-0410-b5e6-96231b3b80d8
PC32.h
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PC32JITInfo.h
PC32TargetMachine.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCTargetMachine.h
|
5b5708106e409d2b8bb23335f7de8dda361dca3e |
11-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Renamed PPC32 (namespace for regs, opcodes) to PPC to include 64-bit targets git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15631 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PCAsmPrinter.cpp
PCBranchSelector.cpp
PCInstrFormats.td
PCRegisterInfo.td
owerPCAsmPrinter.cpp
owerPCISelSimple.cpp
owerPCInstrInfo.cpp
owerPCInstrInfo.h
owerPCPEI.cpp
owerPCRegisterInfo.cpp
|
698fbd5b940c7ea0b3855499c879a465385f6f52 |
10-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Fix file header to use tablegen emacs mode instead of c++ * Wrap long line to 80 cols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15630 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.td
|
b64af918cbf6a18d1bed4c588622bee75b1107c8 |
10-Aug-2004 |
Nate Begeman <natebegeman@mac.com> |
Fix casts of float to unsigned long Replace STDX (store 64 bit int indexed) with STFDX (store double indexed) Fix latent bug in indexed load generation Generate indexed loads and stores in many more cases git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15626 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCInstrInfo.td
owerPCISelSimple.cpp
EADME.txt
|
42efb87410b55ad39d1f34257fdc59a5da7e4070 |
10-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
DForm 5/6 extended mneumonics take 3 arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15620 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
a91f53634ccec6df7e63d0488cc6b6c457829215 |
10-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix DForm_4: format is `op r, r, i' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15613 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
b05daff7faf694a8d18f00ef00132384c8207cd4 |
10-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Stub definition of the PowerPC CodeEmitter class; this isn't functional (yet). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15600 91177308-0d34-0410-b5e6-96231b3b80d8
PCCodeEmitter.cpp
owerPCCodeEmitter.cpp
|
7103fba019a8c6e2436d6d5d0e708b98cb5b3f83 |
10-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
CodePrinter -> AsmPrinter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15599 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
PCTargetMachine.cpp
owerPCAsmPrinter.cpp
|
812402019264506bea49749b23d0ead1be9fde7c |
09-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove ClassPrefix variable as it's no longer used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15586 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
929072eb0460f3ea090cf68e4300a5a5e34c6e97 |
09-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Define a ClassPrefix for PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15580 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
f588548a867e3af493054396409020e826a3076e |
09-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Generate a code emitter for PowerPC as well, this will be used in the JIT. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15578 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
4ad7d1bee7405d1eb323e71671026ec7d8cd7405 |
09-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Use instruction formats as defined in the PowerPC ISA manual git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15577 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
524a60587d1505aa441400a0065d60d8203aac82 |
09-Aug-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Fix stack size processing now that the return address isn't an implied push onto the top of the stack like x86, which uses the local area offset. This will allow the removal of PowerPCPEI.cpp soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15573 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
3ea934668b77f5126e8de0648b8d21a128971e11 |
06-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
Changes commited for Nate Begeman: Use a PowerPC specific prolog epilog inserter to control where spilled callee save regs are placed on the stack. Get rid of implicit return address stack slot, save return address reg (LR) in appropriate slot Improve code generated for functions that don't have calls or access globals Note from Chris: PowerPCPEI will eventually be eliminated, once the functionality is merged into CodeGen/PrologEpilogInserter.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15536 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PC32ISelSimple.cpp
PCTargetMachine.cpp
owerPC.td
owerPCISelSimple.cpp
owerPCPEI.cpp
owerPCRegisterInfo.cpp
EADME.txt
|
aaf10ab5a2c2c9ddcc0f4d63dfd5d434118dacc6 |
06-Aug-2004 |
John Criswell <criswell@uiuc.edu> |
Added Louis Gerbarg. Louis is given credit in the CREDITS.TXT file, so I assume Louis also holds copyright. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15534 91177308-0d34-0410-b5e6-96231b3b80d8
ICENSE.TXT
|
2c2ba762a332cd01b898080998422e05e10e6246 |
05-Aug-2004 |
John Criswell <criswell@uiuc.edu> |
Add additional copyright notice for the PowerPC backend. Thanks Nate! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15531 91177308-0d34-0410-b5e6-96231b3b80d8
ICENSE.TXT
|
2f947865cba52eb555728f98c78a1f539552e55b |
05-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Simplify makefile by combining all TableGen dependencies into one variable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15527 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
dee0f9b94c1b61cb36d623605f5ab4cbb3948b33 |
04-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Align dependencies so they don't hurt the eyes to look at them git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15504 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
7338ae5b88cc527d4e763926d9b9adeb997042a0 |
04-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove unused instruction classes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15501 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
db01356c1599220655ad021cb7ea686860362103 |
04-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Make tablegen targets depend on PowerPCInstrFormats.td as well git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15500 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
6173cd9c163de5288aa8c3a241f21515f60c8b20 |
04-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
getValues does not exist git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15495 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
68f34599949d1fdf88833164e9a3b2ca6944a7fb |
03-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove unused opcodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15447 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
37dcae63ebd2b3030468e6bb210c404db1766ae4 |
02-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Use simpler instruction templates to define instructions * Fix several extended opcodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15423 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
c681a4e476acefb08d26c3d221a5cf5e99640a75 |
02-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Replace patterns 0, 4, and 5 with simpler heirarchical definitions that use the official PowerPC instruction format lingo: X- and D-form. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15422 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
|
28791dd17f40d9e71a53f19a06ffacf13ab2b2cb |
02-Aug-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Separate instruction formats from instruction definitions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15414 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrFormats.td
PCInstrInfo.td
|
88f8f9226f5e62ad50acf7683d9c2691aa190103 |
30-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Conditional save/restore of LR disabled as it's not quite correct * sumarray2d fixed: large fixed-size alloca * make is now compileable * Re-organized tests to fit them under proper headings Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15347 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
a9c528f0aa1a4cd27a8fb5feda39c9ccbae73804 |
30-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Do not mark LR as callee-save: not quite correctly done. Patch: Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15346 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.td
|
4ffddc5228f679323599158b77435b39de8e944b |
30-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Temporarily suspend LR save/restore optimization as it is not quite correct * Implement large fixed-size allocas Entire patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15345 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
83660c5aed4902dd218ba0f730dc7801b99b30cb |
28-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Minor corrections git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15309 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
8b88d906a2a5bd4a6824c83ae1ee4f3aae54664d |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add notes on bug involving casting ulong -> double, thanks to Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15307 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
a0af38c46a665a58c733062955e1cb7f244569f7 |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Simplify loading (un)signed constants to registers, patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15306 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
b7697a6dd27b747dd186022d67ff43d45125d365 |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove an extra 8 byte distance penalty. Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15305 91177308-0d34-0410-b5e6-96231b3b80d8
PCBranchSelector.cpp
|
f63bc199c65a19952c480eb4d0c592dfd58c966f |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Find longs by type, not by their primitive size being 64. Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15304 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
8b29776d680f1b80b7471291b7d41df753d28511 |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
LI can only take signed values, so values > 32767 can only be loaded with ORI git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15299 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
b9b8ba58e7024917b6a44e776445cf6649bb83c2 |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Reorganize tests to place them in proper directories. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15298 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
56d38c6ca13d3d2c96af474b39ab7180356134a1 |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
UnitTests 2003-05-26-Shorts and 2003-07-09-LoadShorts have been fixed; 2003-05-22-VarSizeArray is broken. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15297 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
af313fb188a8d03ad863de81fa9f87b0a76579fc |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix printing of immediate operands by looking at their operand types in the TargetInstrInfo. This fixes UnitTests 2003-05-26-Shorts and 2003-07-09-LoadShorts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15296 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
8c02c1cbb89c69a6716ae4201ad62113562cbb69 |
28-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Renamed files: * PowerPCReg.td => PowerPCRegisterinfo.td * PowerPCInstrs.td => PowerPCInstrInfo.td git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15295 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PCInstrInfo.td
PCRegisterInfo.td
owerPC.td
|
4ce5ce25e8d5157225a3d9a36b8d4260fff7b284 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Branch selection support implemented by Nate Begeman for long branches. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15288 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
ab96790f2c343fe9cb97a425825adaf794b1ef98 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Correctly print out long branches, assert on finding pseudo instr COND_BRANCH Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15286 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
bd2c8705396b007dd236629fec1ee90aed37ff5d |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Run the branch selection pass right before the asm printer. Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15285 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
596c23134bbb8e62be1c8cc53f09149f9829454e |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove empty unused method processFunctionBeforeFrameFinalized() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15284 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
owerPCRegisterInfo.h
|
f228fa05803e84f0439d1793125619218fb24154 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add COND_BRANCH pseudo instruction, patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15283 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
fa20a6dfd78c0f53c6a2c69ff1de97b544a303ab |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Build COND_BRANCHes which may become long or short, decided by a later pass. Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15282 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
8aebe9f96cc7a16e4bacb043a4cc022aa706fa1d |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Moved definition of invertPPCBranchOpcode() into PowerPCInstrInfo class. Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15281 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.h
|
999d9cfde515a6735b376071090b89efb25cf8e6 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add PowerPCBranchSelector to discover which are `long' branches. Contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15280 91177308-0d34-0410-b5e6-96231b3b80d8
PC.h
PCBranchSelector.cpp
|
c91bc304366399fab9eecd338725ee90f5519778 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fixed saving/restoring LR unconditionally, only done as necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15275 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
9a771d55fe7de74e3e30421869c665b21c1072a0 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Save and restore LR just like any other register and ONLY if we actually modify it (due to calls or globals access). We now compile `void empty(){}' to `blr'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15274 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
e862f306fb630f0301bb04d8a5a2868db4f7fcd6 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
LR is a 32-bit int reg git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15273 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
53f567817caa1bf3346484a35e2ea69be2dd8210 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
MovePCtoLR (which is `bl' in disguise) modifies LR implicitly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15272 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
08cc7b30bbc1a2885755865073c216794231c9de |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Register LR is callee-saved git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15271 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.td
|
435c785803b98f5e6f837a4564ddc4e78b22d659 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add IMPLICIT_DEF of LR for branch-and-link instrs (calls and global accesses) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15270 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
ab640a572827b40eebc9963f3f409cf3ea273d46 |
27-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Do not store the stack pointer if the stack size is 0. Also, convert C-style comments to C++ and make sure code wraps at 80 cols. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15245 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
3ada3e3f823179f6d077abbb6e7e885222175e7d |
26-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
ADDI can take several forms, including: addi r1, r2, 0 addi r1, <frame index #n>, 0 so we must check for the second parameter being a register for this instruction to be considered a reg-to-reg copy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15244 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.cpp
|
8790d474533ac9b67798241dfb373f68ed37eaff |
26-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
assert() on MachineInstr properties instead of checking them dynamically git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15243 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.cpp
|
774a297c831b35a91a3138ce4c0da45ed189b20d |
26-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Recognize `addi r1, r2, 0' a move instruction * List formats of instructions currently recognized as moves git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15242 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.cpp
|
b097f216b0fe35303f519fda6cf0dceda0587d44 |
26-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Rewrote casts * Implemented GEP folding * Dynamically output global address stuff once per function * Fix casting fp<->short/byte Patch contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15237 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
cf8d24439458ac77e3d3565b51964e0a8802b339 |
26-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Increment the label number in runOnFunction() rather than while printing out some instruction. Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15236 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
bb966a4a592091b7206027a1090c92ad52f0f3e8 |
26-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
More notes on bugs, unimplemented features, and suggested code improvements. Written by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15235 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
3c616b45e7f843c64426da74076e6d9e31f4c904 |
26-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix subtracting values > 2^15 in the prologue/epilogue, by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15234 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
1be339ac4c7f1dcf32cf6f2d35bfe3d9c62a35d1 |
24-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Running list of bugs, unimplemented features, currently broken tests, until we have a nightly tester set up for PowerPC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15147 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
472254485534bb32da9ecab680e523668766a6ac |
24-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Eliminate spurious empty space; make code easier to page through. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15146 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
1245c3593575d0a754cc679f9964fc35f841feee |
23-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Simplify boolean test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15145 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
b160d1f9f7c39e00f103096afb69aca144ef5b6e |
23-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Implement casting a floating point to 32-bit unsigned value git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15143 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
e2eceb5c739285a6c507ac766ab2807429e13101 |
23-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Codegen of GEPs dramatically improved by folding multiplies and adds * Function pointers implemented correctly using appropriate stubs Contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15133 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
owerPCISelSimple.cpp
owerPCTargetMachine.h
|
9accb24c897879f8e0f3f8ecf3389261a7924bc6 |
23-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Bool alignment on MacOSX/PowerPC is 4 bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15122 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
4c14f3384486deea8d8d5c4ce7a1b452a5a1a9a0 |
23-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Change class of BoolTy back to cInt * Fix indentation back to 2 spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15121 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
2ed17cadb4fb2f7867494702ca58813254fff853 |
22-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Change bool from cInt to cByte (for now) * Don't allow negative immediates to users of unsigned immediates * Fix long compares * Support <const int>, op as a potential immediate candidate * Fix sign extension of short and byte loads * Fix and improve integer casts * Fix passing of doubles as vararg functions Patch contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15109 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
a31f1f7cb273156a90aa197db9a97946c0e5812c |
21-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Add the lost fix to define the second reg of a 2-reg representation of longs * Fix opcode RLWNM -> RLWINM since it uses an immediate const shift value git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15087 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
17a9000ac81de110eabe222aa6f93a4f14fbfbfe |
21-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Speed up canUseAsImmediateForOpcode() by comparing Operand before dyn_cast<>ing and checking Constant's value * Convert tabs to spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15086 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
97a296f743c3cb78ae106a8e4800a5daa0ca6fc9 |
21-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Fix printing of signed immediate values (Nate Begeman) * Fix printing of `zeroinitializer' * Fix printing of `linkonce' globals, complete with stubs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15084 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
1013ef52285949d851b5c8782e08c5152f9990a9 |
21-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Fix printing of signed immediate values * Generation of opcodes that take 16 bit immediates * Rewrote multiply to be correct for 64 bit values * Rewrote all the long handling to be correct for PowerPC * Fix visitSelectInst() to define the upper register of the pair of regs representing a long value Patch contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15083 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
e0380e0c4298d6d4c62846dbef4026991cf9336d |
21-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Use addSImm() instead of addImm() for stack offsets, which may be negative. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15081 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
53d9a48855a91d2cb35a4ddd7375fe2d82cbeacf |
21-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add SUBI instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15077 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
cd2273f4a795eacf474adff5b016511032e20a24 |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Shorts are aligned to 2 bytes, bools to 1 byte (in structs). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15048 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
bf417a6d46d6e1e09fd10e20e863d451924bf083 |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Treat external variables similarly to those with weak linkage: load indirect. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15047 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
86ddcf9d4feabad01359e487382fb96c60407c4e |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Differentiate between global and weak symbol loads git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15037 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
ec6319a00c91b000128608c57fd8a7a79adfe51b |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Differentiate between global and weak symbol loads * Fix functions that take more than 32 bytes of args * Alignment of doubles in structs is 4 bytes, not 8 * Fix passing long args: rN = hi, rN+1 = lo * Rewrite signed divide * Rewrite Intrinsic::returnaddress Patch courtesy of Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15036 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
e48178e8a652623c5c675f0f9dc495053ca76d2b |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Differentiate between global and weak symbol loads git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15035 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
5c4544160f9ea80da80ef3f4fd5877284f87981d |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Double alignment in structs is 4 bytes, not 8. Patch by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15034 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
d43b9fd1ae9e46fc52194b06d44c159d9ea148e3 |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix stack frame layout in prologue/epilogue. Patch courtesy of Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15026 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
ba1c1da36ab778fe3c5b9a8c9fb0d0f0b0e0089e |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Move handing of GlobalValues from getReg() to copyConstantToRegister(), this will avoid extra register-to-register copies. Thanks to Chris for the idea. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15019 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
61114619bcd71c11cf0fcd8d4de36be12406b589 |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Fn args passed in registers are now recorded as used by the call instruction `-> asm printer updated to not print out those registers with the call instr All of Shootout tests now work. Great thanks to Nate Begeman for the patch! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15015 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
7e898c3e0409fca30b0b442c76a10971b0636654 |
20-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* cFP class split into cFP32 and cFP64 * Fn args passed in registers are now recorded as used by the call instruction `-> asm printer updated to not print out those registers with the call instr * Stack frame layout in prolog/epilog fixed, spills and vararg fns now work * float/double to signed int codegen now correct * various single precision float codegen bugs fixed * const integer multiply codegen fixed * select and setcc blocks inserted into the correct place in machine CFG * load of integer constant code optimized All of Shootout tests now work. Great thanks to Nate Begeman for the patch! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15014 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
a51e4f63015b59b05dd0be5a1987bdfd074bb267 |
18-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Fix infinite loop git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14971 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
67910e1eb024bb78cab2f4ffb48c3a79b5647f64 |
18-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
CPR Fixes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14961 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
owerPCISelSimple.cpp
|
a57b76fece438af3e18398e890c1146497883402 |
17-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
We don't really need to #include IPO.h into this file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14911 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
bebde759e51bcae46adcc4b6ea328b2355495b61 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Use LI(S) to copy constants into registers intead of ADDI(S) as the latter is a funky way to "use" R0 for a 0-valued operand * Add IMPLICIT_DEFs for incoming function arguments via registers to help the register allocator not clobber those registers * Implement comparisons with longs * Teach emitSelectOperation() to fold the SetCC operation Patch contributed by Nate Begeman git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14901 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
af7f28cdacc68cf155869752a690e03e8675fe7e |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Store all non-volatile int registers R13-31 on the stack, restore on exit * Fix comment formatting git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14900 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
be15f67af735a81f028679b495243f2dceb3d59d |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix code formatting git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14899 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.cpp
|
01d46e9c5562cdc8d7514be66343efd31491ad52 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Implement PowerPCInstrInfo::isMoveInstr(), patch by Nate Begeman git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14898 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.cpp
|
6b4ea88e83e14de84e3ea185dcf5044be53396c2 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add prototype for TargetInstrInfo::isMoveInstr() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14897 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCInstrInfo.h
|
86fd274790383963f33341aa161da4c888d0fe10 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Enable allocation of registers r2-r10 * Allocate registers 13-31 backwards (to be able to store them all at once) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14896 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
2bf54389311e371eac556924ce2926ad0d7a10e7 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add IMPLICIT_DEFS pseudo-instruction; patch by: Nate Begeman git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14895 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
039ba763d1da901bcd1ef0020a2aa97704c7962a |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
The generated instruction selector isn't (yet) functional git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14894 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
|
da2b13f694b3866b7201b6ab9596981c9eaab983 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Output non-lazy linking stubs for external global variables * Get rid of dead and #if 0'd code * Minor for loop speed-up: save end iterator instead of querying every time git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14893 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
6f14ad1ca0647d0111605f2ac78e0a0756be6fd7 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Define double alignment as 8 bytes now that assert(DoubleAlignment == PointerSize) has been eliminated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14891 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
29188c6ff653aa69fac958077b62a06013be98f9 |
16-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Add spaces between words and numbers in comments printed out for longs/floats * Print out IMPLICIT_DEFS as comments in the assembly, patch by Nate Begeman git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14890 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
81d54465d9c245bbc3cdf18ef99a50df470ad773 |
16-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
The powerpc is now gone. However it is now just known as the Skeleton target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14877 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.h
owerPCInstrs.td
owerPCJITInfo.h
owerPCReg.td
owerPCTargetMachine.cpp
|
017fdcb76def65c32083fa7e2e4cb1f69b77eed0 |
15-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Revert stuff that I didn't mean to checkin git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14844 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PCTargetMachine.cpp
|
76e2df264560b6c5aae1b820a6ccfdf0615bb935 |
15-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Patches towards fixing PR341 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14841 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PC32ISelSimple.cpp
PCTargetMachine.cpp
owerPCISelSimple.cpp
|
5f8cce13486dd9c5e7374c5e467750298791bac8 |
14-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Make sure MTSPR instruction is inserted into the BasicBlock git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14822 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
32caa8de629d9872e50264905b9a29b740c44db7 |
14-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Don't define the same register twice when loading a ConstantPointerRef to a reg git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14819 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
8d442c2dc4aaf627969b052f597d101761f2a432 |
14-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Fix multiplication by powers of two and otherwise * Clarify variable name (StoreInst SI instead of LI) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14818 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
a596f8c3aaeba95fa20706bb0c441ff1b3afc8b8 |
13-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Specify that FP arith options have 3 operands * Correctly load FP constants from the constant pool, should be refactored git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14799 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
d9aa7836e23e518388ed7426ce3d19111074e0bc |
13-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Correctly load FP constants out of the constant pool. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14782 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
01eca8d2c2528d16967575320c801930eb9f4e82 |
13-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Implement getModuleMatchQuality and getJITMatchQuality() for PowerPC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14780 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
owerPCTargetMachine.h
|
68905bb6fc8848b6437057f3998b89cbf5d6f837 |
11-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Delete the allocate*TargetMachine function, which is now dead. The shared command line options are now in a header that makes sense. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14757 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
owerPCRegisterInfo.cpp
|
0cf0c3746995e8b95fc055cdf8e7210200cb942d |
11-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Delete the allocate*TargetMachine function, which is now dead . The shared command line options are now in a header that makes sense. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14756 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.cpp
|
71d24aab2d52986cc8203d0c268adb88b0001bc4 |
11-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Make these format a bit nicer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14747 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
owerPCTargetMachine.cpp
|
d36c970a11633414e56ac1e03010dafa4a63b9c4 |
11-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Auto-registrate target git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14745 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
owerPCTargetMachine.cpp
|
98599d098f714c3982e6c096bc21a13bb8d3d055 |
11-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Add compilability git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14744 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
owerPCRegisterInfo.cpp
|
313efcb88635ce3b8f192d56d4c363eebffb219a |
09-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Add support for indexing into structures, thanks to Chris (x86) The large diff is because of indentation of a whole region * Fix querying predecessor blocks in SelectPHINodes(), thanks to Brian (v8) * Add support for external functions malloc() and free() * Fix some code indentation Remember, kids: It's not plagiarism if you "creatively borrow" from your sources. It's called "research"! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14723 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
c1ef127ae2326d0565163169d361b4b9e145d828 |
09-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Read/write the offset value for stack-relative loads via correct instr operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14722 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
f3f63824238b383946e921328e45246f2dd8bfdb |
08-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add support for __fixdfdi(), __floatdisf(), and __floatdidf() external functions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14703 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
0aa97c625bdb47ee6336536222cfdd872a7cd977 |
08-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Use several Function* for external functions instead of a std::map * Non-const FP values must be loaded into int regs (for vararg fns) via memory git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14701 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
fc879c336be0c19981a10c909118c6a522f7eada |
08-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Add support for loading FP constants from the constant pool * Load FP values into int regs as well for vararg functions; without memory ops! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14700 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
05fcd0c891c1cab4b90368094081a96ebf655e96 |
08-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Fix header comment, excise references to X86 * Add suport for printing out references to constant pool indices git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14699 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
2834a4dd1d947461f53df000e2fba65cf99ba63c |
07-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Use a map for caching lookups to external functions (fp div/rem) * Tabs to spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14673 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
e62cd37c2add34dc6caa9cf9a7a0d5b9836694d7 |
07-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Wrap long lines (comments and code) * Tabs to spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14672 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrBuilder.h
|
b093259edde0a0557d27f0925ca06bf10e78ecca |
07-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add fmod() to the Module being compiled so that it gets a stub in the asm file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14670 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
d18a31d2fab7626bc3396106990d982a0b699b38 |
07-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Add support for calling vararg functions (must pass doubles in int regs too) * Make visitSetCondInst() share condition-generating code with EmitComparison() * There are 13 FPRs for function-passing arguments, not 8 * Do not rely on registers being sequential, use an array lookup * In unimplemented switch cases, send an error and abort instead of silent fall-through * Add doInitialization() for adding function prototypes for external math fns * Minor changes: fix indentation, spacing, code clarity git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14653 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
4cf51125007f2c5a32a6de710ba8df094cb441db |
07-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Use the more compact `bl' instead of cryptic (but equivalent) `bcl 20,31' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14652 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
e9c6551fed0a66f050c3c68a6cc0dbe2b254780f |
06-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Add utility functions: convert SetCC => PPC opcode and invert PPC opcode * If SetCondInst is folded into BranchInst (and it is the only user), do not emit code for SetCondInst * Fix assembly opcodes in comments in visitSetCondInst() * Fix codegen of conditional branches git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14643 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
68a9b04e770c8d871bdc2163e7d53e0763e2d722 |
02-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add FIXME notes for spilling int/fp regs (need to calculate stack space). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14581 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
fab96f0b69da768bf837c8042e522d93701ccccf |
02-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Fix all of those problems that the PPC backend has running 176.gcc :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14565 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
452069abccca2a2ea2887220aceeedda8bb6b6d7 |
01-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Follow the PowerPC convention of leaving 24 bytes for linking on the stack. * Also leave space for spilling integer registers (this should be calculated) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14554 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
425ff24bb3cd74a46cad98688547d33a12ea0ab6 |
01-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Get rid of constant-expr handling code: we use the ConstantExpr lowering pass * Use the SetCC handling code in the format of Brian's V8 * Add FIXMEs where calls to functions are being made without adding them to the Module first... they cause missing symbols at assembly-time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14553 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
f233a84b3c8f0e4386c7d24acbd6c4d7016fff57 |
01-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Wrap long line git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14552 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
15eb0a15e568f46d2d2e56f8785b668fe8b48b13 |
01-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Do not allocate r0 as we use it indiscriminantly in the instr selector. * Do not define CR register class because we don't (yet) have the i4 type git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14551 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
4363bdb0e5d20ebfa5b0a1f703c5a8102e637541 |
01-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Check if operand has an allocated reg before requesting it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14550 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
c661c3001ce27bd6c6a2035a3ad68d0530f00269 |
01-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Coalesce the handy CALL* alias opcodes with the standard ones * Congregate more branch-and-link opcodes together * Mark FP, CPR, and special registers as volatile across calls git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14511 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
da7515a37879543e77e7e9e12adb33a3816e7e5e |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Allow more registers to be allocated from the general register pool * Define the condition register class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14510 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
b9e8f97aef725324724d9e59e55dbafec02c79e9 |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Inquire about the number of operands from the instruction directly * Only check for a register if we are sure the instruction has one allocated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14509 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
ce76db9083900d0998fc0a847d215d92b24dba67 |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Always assume a function may have calls because the printer may add `bl' to get the PC in a code sequence for global variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14506 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
14d8c7a6a051e2aaa5f419b0959a0d64c297e7e7 |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Don't save LR when outputting globals: it's already saved on the stack once for the function * Registers aren't necessarily sequential wrt their enums, don't rely on it when emitting function arguments into sequential registers * Remove X86-specific comments about AL/BL/AH/BH/EDX/etc * Add an abort() for an unimplemented signed right shift * The src operand for a GEP was never emitted! Fixed. * We can skip zero-valued GEP indices as they are no-ops. "Hello, World!" now works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14505 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
61297ee1185fd267471a1cb1fa28c585b51c5e08 |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Stop using BBNumbering, we don't really need it * Only increment labelNumber once, because it's used by both Load{hi,lo}Addr * There is no .bss section on PowerPC * Use .align 2 instead of other random numbers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14504 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
cbcdb9c0a777f2f14784193e19454e5aacf28e2a |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Set up the prologue and epilogue to be more like the manual and GCC output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14502 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
5fa2b028b85beebf8f5565315b2b66647d411968 |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Use LA instead of LWZ for LoadLoAddr * Specify the isCall bit and caller-save registers for some call instrs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14501 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
8ee0100880ef6fd414cda4d6d04f5940aa4a1822 |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Only allocate non-volatile registers R13-31 (for now). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14500 91177308-0d34-0410-b5e6-96231b3b80d8
PCRegisterInfo.td
|
60f35813fc4ac2a7b86a03024201c734c6a452de |
30-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Lower ConstantExpressions before the code generator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14497 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
e19ca38a3221a84da03be5d818c879bf53073c77 |
29-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Fix saving LR in function prologue * Adjust epilogue restore sequence to match the PowerPC documentation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14480 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
218bec7bd3a2deb94768e298025f07d7682c4377 |
29-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Assembly syntax/comment fixes by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14479 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
1b17438aa8bfba56ed98e6a40db48c5df40de623 |
29-Jun-2004 |
Chris Lattner <sabre@nondot.org> |
The code generator should work with unreachable blocks. If not, then this is a bug that should be fixed in the code generator, not papered over with the simplifycfg pass. Eliminating this makes bugpoint much more useful git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14477 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
7cd444082e54207fbb8ed0c958c7a23ed334650c |
28-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Can't print out machine code before it is constructed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14472 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
3905b57442ba9c2920ab87b5105f8dfa505a3839 |
28-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix the assembly opcode on LOADLoAddr, courtesy of Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14470 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
b2edb443e03ca5e8723018fb0fad41bc4e3849b3 |
28-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Set isBranch and isTerminator bits on all branch instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14469 91177308-0d34-0410-b5e6-96231b3b80d8
PCInstrInfo.td
|
7e5812cd174c9f29135dc1567aecf7fe3b6450ef |
28-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix loading and storing PC-relative static variables, courtesy of Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14468 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
a6e58b3cfb4b5a9be2512bd4fb936a1cb2010924 |
28-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
No need to generate a lazy-linking stub for internal functions, they can be resolved by the static linker. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14467 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
9c661c8e26e93cbc1080d881e422cbcb4ca02e7b |
28-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Do not set the `link' bit when branching to the first BB of a function, as it will cause an infinite loop. The link bit is only used for calling functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14466 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
bb4a90820c8a5e018c5a67728d0b3e3400cc8e2f |
28-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix spacing around function arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14463 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
34fa8714a47212ca422948e47651fcced4910051 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Allow debugging machine instrs (by printout) before/after isel and regalloc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14416 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
c6cc10f48f5956eee4c1947c7b2417423f818077 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Combine several if stmts with returns into an if-then-elseif-else chain. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14414 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
d47bbf7ce53ada1c6a810de82987a05db725f13d |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Do not move any values into registers for a void return (there isn't anything). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14413 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
1cbb3ee75f3ea86913bd95e9e266663a57c6dd89 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Convert tabs to spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14412 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
972569a22f4add23e03d750a130ebede99575eb0 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix opcode: no immediate in an `or r1, r2, r3' (all registers) instr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14411 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
2bf183c092138e426c7f66bb072d8e0f7de36648 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Be consistent about MachineBB labels and references to them in instr stream * Use MachineBB's built-in numbering system instead of reinventing one git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14408 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
22e12076e9bd62401d28b0c6bae380955a76abff |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Initialize the entire array statically, not member-at-a-time * Remove x86-specific comment re: intel vs. at&t assembly syntax git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14406 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
9ecf3bf7085c818849257f5f3f7d1345bfaba802 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix bug in previous checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14405 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
911afde4aee1d7b30a9c1345a92ec11aa03b7257 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Wrap long lines * Replace silent fall-through FIXME comments with an error to cerr and an abort * No need to set size of statically initialized arrays git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14404 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
179d97cfa3264688ac05a717da91f36bdd2d4373 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Excise X86-specific comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14403 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
75afe1f90472b1605ea05a2d13e615956998f8d1 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add option to print out machine code before register allocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14387 91177308-0d34-0410-b5e6-96231b3b80d8
PCTargetMachine.cpp
|
f3e50bea063c5d2870d210f224693cb636cc9520 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Use DEBUG() guard for printing out debug info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14386 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
e327e499138dac76c85076ba9494dab9500f81fa |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add a `break' in the switch/case statement between the int/fp sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14385 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
7f484a5fff140ade284a1af34641da067bea11ae |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Lowercase the register names * Parenthesize assert() expressions correctly * Fix spacing around for() and if() statements git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14384 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
ca428df792b40a73d904670e03b23080b1cabb1a |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Tabs to spaces * Send an error message to std::cerr before abort()ing git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14381 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
46fd00aec6a674003a565c60ae2894966ccb9a36 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Tabs to spaces * Remove unnecessary parens, braces, clean up code layout git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14379 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
fadb82f920da055d10ddd15744b6803a9b4c2d06 |
25-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Unindent some more code to be consistent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14377 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
1916bf942746b4f41312ce287329af3c6ec8bf6f |
24-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Unindent some code, it only needs 2 spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14376 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
98649d17966f3c32d2f67c16ec2a6183748bb243 |
24-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
In emitting code for a GEP instr, iterate over GEPTypes because there is one more operand in GEPOps than there are types in GEPTypes: the pointer that is the first operand of the GEP instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14375 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
05794498d95903d22e4402d005d1f03fab3bc78a |
24-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Order #includes * Use the DEBUG() guard for debug printouts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14367 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
|
3d357441bf870a2b6774fbc430f932f1a369cf6b |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Spell out `NoFramePointerElim'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14300 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
83eaa0b567156875d8d5f831dec0287627706da2 |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Use the common `NoFPElim' setting instead of our own. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14298 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCRegisterInfo.cpp
|
2fec9905aa5fcd14e156c7520be84d24158b6335 |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
* Make indentation consistent at 2 chars * Doxygenify function comments * Wrap code at 80 cols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14295 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
1e32f79d20e78186d3d54fc347a9713e34632037 |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
This file is no longer applicable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14294 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
|
8c9f520b331af7469934f5e75bc02e79d358fd69 |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
llvm/IntrinsicLowering.h => llvm/CodeGen/IntrinsicLowering.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14292 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
PCTargetMachine.cpp
owerPCISelSimple.cpp
|
a2916ce49a9c7c2e0c6d8b91467baaca61a5f77e |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Intrinsic::isnan has gone away, support for it commented out. Intrinsic::isunordered has arrived, and we just use the standard lowering pass for it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14290 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
422791fa0b860df682138c90cd3f0303b5409445 |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Convert tabs to spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14289 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
358829f1510031794ed9419ac869ab31c31c337f |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Type::getPrimitiveID() -> getTypeID() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14288 91177308-0d34-0410-b5e6-96231b3b80d8
PC32ISelSimple.cpp
owerPCISelSimple.cpp
|
d71bd56caa4bddc1219584fce81af6e8a53c85a1 |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Type::getPrimitiveID() -> getTypeID() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14287 91177308-0d34-0410-b5e6-96231b3b80d8
PC32AsmPrinter.cpp
PCAsmPrinter.cpp
owerPCAsmPrinter.cpp
owerPCRegisterInfo.cpp
|
5dfe3a9c3bd9091f9adecc909665d52bdd4edd8c |
21-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Initial revision git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14283 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
PC.h
PC32AsmPrinter.cpp
PC32ISelSimple.cpp
PCAsmPrinter.cpp
PCCodeEmitter.cpp
PCInstrBuilder.h
PCInstrInfo.td
PCJITInfo.h
PCRegisterInfo.td
PCTargetMachine.cpp
owerPC.td
owerPCAsmPrinter.cpp
owerPCCodeEmitter.cpp
owerPCISelSimple.cpp
owerPCInstrInfo.cpp
owerPCInstrInfo.h
owerPCRegisterInfo.cpp
owerPCRegisterInfo.h
owerPCTargetMachine.h
EADME.txt
|
5478c7a18a949c17c8a605818a0c64e1b58de9c3 |
14-Jun-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Add file comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14172 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCReg.td
|
32305f7763ac0ab7ddad2ee97bd075591962cb3a |
10-Jun-2004 |
Chris Lattner <sabre@nondot.org> |
Fix the fixed stack offset, patch contributed by Vladimir Prus git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14110 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.cpp
|
9a89f37dc7b72ab14a752a65f7e271312f876e9d |
28-Feb-2004 |
Chris Lattner <sabre@nondot.org> |
fine grainify namespacification git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11959 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.cpp
|
c81efdc59cd2ce5410cefd7ab5cb52cfd7ac3aad |
15-Feb-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Add back machine code deleter pass until we get a MachineCode pass that will be responsible for the creation of MachineFunctions and will be required by all MachineFunctionPass passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11453 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.cpp
|
c0b9dc5be79f009d260edb5cd5e1d8346587aaa2 |
12-Feb-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Change MachineBasicBlock's vector of MachineInstr pointers into an ilist of MachineInstr objects. This allows constant time removal and insertion of MachineInstr instances from anywhere in each MachineBasicBlock. It also allows for constant time splicing of MachineInstrs into or out of MachineBasicBlocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11340 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.cpp
|
03f84a969c85aa10dd6096666080ae0868eb30b6 |
02-Feb-2004 |
Brian Gaeke <gaeke@uiuc.edu> |
Include PowerPC.h. Flesh out the stub versions of addPassesToEmitAssembly() and addPassesToJITCompile() slightly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11076 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.cpp
|
b77232d1fc2796a5917f4044dfe82162e32cc0a7 |
02-Feb-2004 |
Brian Gaeke <gaeke@uiuc.edu> |
Add comments describing how you would add prototypes for factory methods for PowerPC-specific passes here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11073 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.h
|
954e3164be831712a6df2620870f80e7f58bf644 |
23-Jan-2004 |
Brian Gaeke <gaeke@uiuc.edu> |
Add the JITInfo object, accessor & initializer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10972 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCTargetMachine.cpp
|
7b0cd6d6cb2a3674156df2a1d388a9e3332b5b3e |
23-Jan-2004 |
Brian Gaeke <gaeke@uiuc.edu> |
Add CodeEmitter and JITInfo stubs. Dump the old PowerPCTargetMachine::addPassesToJITCompile() method, in favor of the TargetJITInfo interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10971 91177308-0d34-0410-b5e6-96231b3b80d8
owerPCJITInfo.h
owerPCTargetMachine.cpp
|
ca78f49234d52fca9d44800dbe6ec1ac387564d7 |
21-Jan-2004 |
Brian Gaeke <gaeke@uiuc.edu> |
Import of skeletal PowerPC backend I have had laying around for months... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10937 91177308-0d34-0410-b5e6-96231b3b80d8
owerPC.h
owerPCInstrs.td
owerPCReg.td
owerPCTargetMachine.cpp
|