Any usable SIMD implementation?

Johannes Pfau via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 7 03:04:31 PDT 2016


Am Wed, 6 Apr 2016 17:42:30 -0700
schrieb Walter Bright <newshound2 at digitalmars.com>:

> On 4/6/2016 5:36 AM, Manu via Digitalmars-d wrote:
> > But at very least, the important detail is that the version ID's are
> > standardised and shared among all compilers.  
> 
> It's a reasonable suggestion; some points:
> 
> 1. This has been characterized as a blocker, it is not, as it does
> not impede writing code that takes advantage of various SIMD code
> generation at compile time.
> 
> 2. I'm not sure these global settings are the best approach,
> especially if one is writing applications that dynamically adjusts
> based on the CPU the user is running on. The main trouble comes about
> when different modules are compiled with different settings. What
> happens with template code generation, when the templates are pulled
> from different modules? What happens when COMDAT functions are
> generated? (The linker picks one arbitrarily and discards the
> others.) Which settings wind up in the executable will be not easily
> predictable.
> 

That's my #1 argument why '-version' is dangerous and 'static if' is
better ;-) If you've got a version() block in a template and compile
two modules using the same template with different -version flags you'll
have exactly that problem. Have an enum myFlag = x; in a config module
+ static if => problem solved.

The problem isn't having global settings, the problem is having to
manually specify the same global setting for every source file.


More information about the Digitalmars-d mailing list