[llvm-dev] [GSoC 2016] Parameters of a target architecture
Tobias Grosser via llvm-dev
llvm-dev at lists.llvm.org
Fri Jun 3 04:51:03 PDT 2016
On 06/03/2016 01:41 PM, Michael Kruse wrote:
> 2016-06-02 13:57 GMT+02:00 Roman Gareev via llvm-dev <llvm-dev at lists.llvm.org>:
>> 1. Size of double-precision floating-point number.
>
> By IEEE 754, its always 8 bytes.
>
> Generally, use DataLayout::getTypeAllocSize/getTypeStoreSize to get a
> type's size.
>
>
>> 2. Number of double-precision floating-point numbers that can be hold
>> by a vector register.
>
> TargetTransformInfo::getRegisterBitWidth (divided by 8 if double)
>
>
>> 3. Throughput of vector instructions per clock cycle.
>
> TargetTransformInfo::getArithmeticInstrCost
>
> See LoopVectorizationCostModel::getInstructionCost for how to use it.
>
>
>> 4. Latency of instructions (i.e., the minimum number of cycles between
>> the issuance of two dependent consecutive instructions).
>
> I think latency and throughput cannot be queried separately. They are
> combined as 'cost'.
>
>
>> 5. Paramaters of cache levels (size of cache lines, associativity
>> degrees, sizes).
>
> TargetTransformInfo::getCacheLineSize
>
> That is, available for one level (probably L1 Data Cache) only. I
> think the X86 backend doesn't even define it (returns 0)
>
>
> For the information that is missing, I suggest to use command line
> options to get the information directly from the user. In the long
> term, we could add it TargetTransformInfo as well.
Perfect. That's what I would suggest as well.
Best,
Tobias
More information about the llvm-dev
mailing list