Why don't we switch to C like floating pointed arithmetic instead of automatic expansion to reals?
Ilya Yaroshenko via Digitalmars-d
digitalmars-d at puremagic.com
Sat Aug 6 04:30:27 PDT 2016
On Saturday, 6 August 2016 at 11:10:18 UTC, Iain Buclaw wrote:
> On 6 August 2016 at 12:07, Ilya Yaroshenko via Digitalmars-d
> <digitalmars-d at puremagic.com> wrote:
>> On Saturday, 6 August 2016 at 10:02:25 UTC, Iain Buclaw wrote:
>>>
>>> On 6 August 2016 at 11:48, Ilya Yaroshenko via Digitalmars-d
>>> <digitalmars-d at puremagic.com> wrote:
>>>>
>>>> On Saturday, 6 August 2016 at 09:35:32 UTC, Walter Bright
>>>> wrote:
>>>>>
>>>>> [...]
>>>>
>>>>
>>>>
>>>> OK, then we need a third pragma,`pragma(ieeeRound)`. But
>>>> `pragma(fusedMath)`
>>>> and `pragma(fastMath)` should be presented too.
>>>>
>>>>> [...]
>>>>
>>>>
>>>>
>>>> It allows a compiler to replace two arithmetic operations
>>>> with single composed one, see AVX2 (FMA3 for intel and FMA4
>>>> for AMD) instruction set.
>>>
>>>
>>> No pragmas tied to a specific architecture should be allowed
>>> in the language spec, please.
>>
>>
>> Then probably Mir will drop all compilers, but LDC
>> LLVM is tied for real world, so we can tied D for real world
>> too. If a
>> compiler can not implement optimization pragma, then this
>> pragma can be just
>> ignored by the compiler.
>
> If you need a function to work with an exclusive instruction
> set or something as specific as use of composed/fused
> instructions, then it is common to use an indirect function
> resolver to choose the most relevant implementation for the
> system that's running the code (a la @ifunc), then for the
> targetted fusedMath implementation, do it yourself.
What do you mean by "do it yourself"? Write code using FMA GCC
intrinsics? Why I need to do something that can be automated by a
compiler? Modern approach is to give a hint to the compiler
instead of write specialised code for different architectures.
It seems you have misunderstood me. I don't want to force
compiler to use explicit instruction sets. Instead, I want to
give a hint to a compiler, about what math _transformations_ are
allowed. And this hints are architecture independent. A compiler
may a may not use this hints to optimise code.
More information about the Digitalmars-d
mailing list