[llvm-commits] [llvm] r52818 - in /llvm/trunk: include/llvm/Target/TargetRegisterInfo.h lib/Target/TargetRegisterInfo.cpp
Owen Anderson
resistor at mac.com
Fri Jun 27 00:27:43 PDT 2008
I thought this was the approach we'd agreed on at the end of today? I
don't know how to have tblgen create this information without
attaching it to each TargetRegisterDesc, which will be very costly in
terms of memory footprint.
--Owen
On Jun 27, 2008, at 12:19 AM, Evan Cheng wrote:
> Is this really the right approach? I thought we want tblgen at build
> time to create these matrices to speed up queries. Suppose we are
> compiling a bunch of small programs. We'd be recomputing the set
> everytime.
>
> Evan
>
> On Jun 26, 2008, at 11:56 PM, Owen Anderson wrote:
>
>> Author: resistor
>> Date: Fri Jun 27 01:56:04 2008
>> New Revision: 52818
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=52818&view=rev
>> Log:
>> Cache subregister relationships in a set in TargetRegisterInfo to
>> allow faster lookups.
>> This speeds up LiveVariables from 0.6279s to 0.6165s on kimwitu++.
>>
>> Modified:
>> llvm/trunk/include/llvm/Target/TargetRegisterInfo.h
>> llvm/trunk/lib/Target/TargetRegisterInfo.cpp
>>
>> Modified: llvm/trunk/include/llvm/Target/TargetRegisterInfo.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetRegisterInfo.h?rev=52818&r1=52817&r2=52818&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/include/llvm/Target/TargetRegisterInfo.h (original)
>> +++ llvm/trunk/include/llvm/Target/TargetRegisterInfo.h Fri Jun 27
>> 01:56:04 2008
>> @@ -21,6 +21,7 @@
>> #include "llvm/CodeGen/ValueTypes.h"
>> #include <cassert>
>> #include <functional>
>> +#include <set>
>>
>> namespace llvm {
>>
>> @@ -285,6 +286,7 @@
>> regclass_iterator RegClassBegin, RegClassEnd; // List of
>> regclasses
>>
>> int CallFrameSetupOpcode, CallFrameDestroyOpcode;
>> + std::set<std::pair<unsigned, unsigned> > Subregs;
>> protected:
>> TargetRegisterInfo(const TargetRegisterDesc *D, unsigned NR,
>> regclass_iterator RegClassBegin,
>> @@ -419,9 +421,7 @@
>> /// isSubRegister - Returns true if regB is a sub-register of regA.
>> ///
>> bool isSubRegister(unsigned regA, unsigned regB) const {
>> - for (const unsigned *SR = getSubRegisters(regA); *SR; ++SR)
>> - if (*SR == regB) return true;
>> - return false;
>> + return Subregs.count(std::make_pair(regA, regB));
>> }
>>
>> /// isSuperRegister - Returns true if regB is a super-register of
>> regA.
>>
>> Modified: llvm/trunk/lib/Target/TargetRegisterInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetRegisterInfo.cpp?rev=52818&r1=52817&r2=52818&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/lib/Target/TargetRegisterInfo.cpp (original)
>> +++ llvm/trunk/lib/Target/TargetRegisterInfo.cpp Fri Jun 27 01:56:04
>> 2008
>> @@ -29,6 +29,16 @@
>>
>> CallFrameSetupOpcode = CFSO;
>> CallFrameDestroyOpcode = CFDO;
>> +
>> + for (unsigned i = 0; i < NumRegs; ++i) {
>> + const TargetRegisterDesc* CurrReg = Desc + i;
>> +
>> + // Initialize the Subregs set, which stores pairs (a, b) where
>> + // b is a subreg of a.
>> + if (CurrReg->SubRegs)
>> + for (const unsigned* CurrSR = CurrReg->SubRegs; *CurrSR; +
>> +CurrSR)
>> + Subregs.insert(std::make_pair(i, *CurrSR));
>> + }
>> }
>>
>> TargetRegisterInfo::~TargetRegisterInfo() {}
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4260 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20080627/40d7be14/attachment.bin>
More information about the llvm-commits
mailing list