CostModelAnalysis for 3.0 release

Hi All,
I wanted to do some basic cost estimation of Instruction/BB. There’re CostModelAnalysis and CodeMetrics available in 3.1 and 3.2 releases.
I’ve been using 3.0 for a while. I’m wondering whether similar analysis can be done in the old 3.0 release, e.g. back porting the implementation.

Thank you!

Best,
Ryan

Hi Ryan,

I think that it would be difficult to back port the CostModel back to LLVM3.0 because it uses the new TargetTransformInfo analysis. I also wanted to mention that only _lowering_ passes (target-specific optimization passes) may use TTI and the cost model. Higher-level canonicalization passes should not use it.

Thanks,
Nadav

Thanks a lot for the reply, Nadav!
I see that using the cost model in target-independent analysis is not good. But I really like the idea of having instruction
cost estimation available. Also the reason I can’t directly move to 3.2 code base is that it fails to compile(produce bc files) big
project like MySQL, where 3.0 has no problem.

Right now, I’m trying to hard code a particular target, and copy part of the TargetTransformInfo and X86TargetTransformInfo
to a simple LLVM 3.0 project to try out. So far I’m stuck in instantiating X86TargetMachine and wondering whether it can be
created from instances of TargetMachine or TargetData.

Thanks a lot for the reply, Nadav!
I see that using the cost model in target-independent analysis is not good. But I really like the idea of having instruction
cost estimation available. Also the reason I can't directly move to 3.2 code base is that it fails to compile(produce bc files) big
project like MySQL, where 3.0 has no problem.

Is this a known problem ? Can you please file a bugzilla ? LLVM should be able to compiler MySQL …

Right now, I'm trying to hard code a particular target, and copy part of the TargetTransformInfo and X86TargetTransformInfo
to a simple LLVM 3.0 project to try out. So far I'm stuck in instantiating X86TargetMachine and wondering whether it can be
created from instances of TargetMachine or TargetData.

Look at tools/opt/opt.cpp or tools/llc/llc.cpp. They both initialize the target machine using the target data.

> Thanks a lot for the reply, Nadav!
> I see that using the cost model in target-independent analysis is not
good. But I really like the idea of having instruction
> cost estimation available. Also the reason I can't directly move to 3.2
code base is that it fails to compile(produce bc files) big
> project like MySQL, where 3.0 has no problem.
>

Is this a known problem ? Can you please file a bugzilla ? LLVM should be
able to compiler MySQL …

OK. I didn't find much on the internet related to the

clang compilation error. Just filed the bug report
http://llvm.org/bugs/show_bug.cgi?id=15206

> Right now, I'm trying to hard code a particular target, and copy part of
the TargetTransformInfo and X86TargetTransformInfo
> to a simple LLVM 3.0 project to try out. So far I'm stuck in
instantiating X86TargetMachine and wondering whether it can be
> created from instances of TargetMachine or TargetData.
>

Look at tools/opt/opt.cpp or tools/llc/llc.cpp. They both initialize the
target machine using the target data.

Thanks a lot for the pointer. I'll take a look!

Best regards,
Ryan

>
>
> > Thanks a lot for the reply, Nadav!
> > I see that using the cost model in target-independent analysis is not
> good. But I really like the idea of having instruction
> > cost estimation available. Also the reason I can't directly move to 3.2
> code base is that it fails to compile(produce bc files) big
> > project like MySQL, where 3.0 has no problem.
> >
>
> Is this a known problem ? Can you please file a bugzilla ? LLVM should be
> able to compiler MySQL …
>
> OK. I didn't find much on the internet related to the
clang compilation error. Just filed the bug report
http://llvm.org/bugs/show_bug.cgi?id=15206

FYI, MacPorts has clang blacklisted for MySql prior to 5.5...

FYI, MacPorts has clang blacklisted for MySql prior to 5.5...

All right...But MySQL 5.1 is not that old to not to support... :slight_smile: