[LLVMdev] Dragonegg + IR + llc = Dragonegg directly

Martin Apel martin.apel at SIMPACK.de
Wed Apr 18 00:55:33 PDT 2012


Hi Duncan,

I tried it with llc -mcpu=i386 and now the results are the same. Thanks
for the tip.
I am in the process of writing an optimization pass involving constant
propagation,
and I want to be sure, that this pass does not modify the numerical results.

Martin

On 17/04/12 17:18, Duncan Sands wrote:
> Hi Martin,
>
>> thanks for the quick reply. I understand, that the generated code is different
>> between the two approaches.
>> But I would still expect IEEE rules to be respected in any case. I do not see
>> any reason why -fPIC -fomit-frame-pointer
>> and the like should have any impact on the results computed by the generated code.
> probably in the direct case you are using the x86 floating point stack and in
> the llc case you are using xmm registers.  This is because dragonegg picks up
> what gcc thinks the target is, and gcc is very conservative, while llc defaults
> to targeting the host machine.
>
>> Are there any options I can set on the command line of llc to force the
>> identical behaviour with respect to numerical stability?
> Try llc -mcpu=i386
>
> You may also need to turn off some cpu attributes like SSE, I don't recall, see
>    llc -mcpu=help test.ll
> for a list.
>
> Ciao, Duncan.
>
>> I tried the some of the llc options lik**e --disable-excess-fp-precision and
>> --disable-fp-elim, but without success.
>>
>> Martin
>>
>> On 17/04/12 15:12, Duncan Sands wrote:
>>> Hi Martin,
>>>
>>>> I tried using dragonegg to compile some numerical software of ours. I
>>>> tried out two different approaches expecting both would yield the same
>>>> results:
>>>> 1. gfortran-4.6 -fplugin=dragonegg-3.0 -o test.o test.f   (I ommitted a
>>>> bunch of additional arguments for brevity)
>>>> 2. gfortran-4.6 -fplugin=dragonegg-3.0 -fplugin-arg-dragonegg-emit-ir -S
>>>> -o test.ll test.f
>>>>      llc -O0 -o test.s test.ll
>>>>      as -o test.o test.s
>>>>
>>>> When comparing the results of our software compiled with gfortran-4.6
>>>> without LLVM with approach 1, I get the same results for both versions.
>>>> However, when I use approach 2, the computation results differ from the
>>>> original version.
>>>>
>>>> I expected that using the dragonegg plugin to generate native code
>>>> directly would internally do more or less the same as the explicit step of
>>>> approach 2, but this does not seem to be the case. Any ideas why this
>>>> happens?
>>> different arguments are being passed to the code generators.  In the
>>> CreateTargetMachine function in Backend.cpp options like -fPIC,
>>> -fomit-frame-pointer and so on are transformed into LLVM languages
>>> and passed to the code generators.  Same goes for feature strings
>>> (whether you are targeting a machine supporting SSE and so on).  A
>>> few more generic codegen options are set in ConfigureLLVM.
>>>
>>> Ciao, Duncan.
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu  <mailto:LLVMdev at cs.uiuc.edu>          http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>> --
>>
>> Martin Apel
>> Software Architect
>> Phone:   + 49 8105 77266-53
>> E-Mail:martin.apel at simpack.de  <mailto:martin.apel at simpack.de>
>>
>> SIMPACK AG
>> Friedrichshafener Strasse 1, 82205 Gilching, Germany
>> info at simpack.de  <mailto:info at simpack.de>,www.simpack.com  <http://www.simpack.com>
>> Phone: + 49 8105 77266-0
>> Fax:   + 49 8105 77266-11
>>
>>
>> Executive Board: Dr. Alexander Eichberger, Dr. Lutz Mauer
>> Chair of Supervisory Board: Silvia Förster (CPA)
>> Commercial Register München HRB 181 229
>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev


-- 

Martin Apel                                    
Software Architect                              
Phone:   + 49 8105 77266-53
E-Mail:  martin.apel at simpack.de

SIMPACK AG
Friedrichshafener Strasse 1, 82205 Gilching, Germany
info at simpack.de, www.simpack.com
Phone: + 49 8105 77266-0
Fax:   + 49 8105 77266-11


Executive Board: Dr. Alexander Eichberger, Dr. Lutz Mauer
Chair of Supervisory Board: Silvia Förster (CPA)
Commercial Register München HRB 181 229




More information about the llvm-dev mailing list