Skip to content

Comments

fix errors with AVX vector code generation#6394

Merged
andralex merged 1 commit intodlang:masterfrom
WalterBright:cgxmm-32
Jan 3, 2017
Merged

fix errors with AVX vector code generation#6394
andralex merged 1 commit intodlang:masterfrom
WalterBright:cgxmm-32

Conversation

@WalterBright
Copy link
Member

I was initially mystified how dmd could pass the test suite with these bugs, since the test suite was failing when I tried them. But then I remembered Brad had said that many (most?) of the test machines do not have AVX-capable CPUs, and hence the AVX tests did not run.

if (config.avx &&
((e1->Eoper == OPind && !e1->Ecount) || e1->Eoper == OPvar && !isregvar(e1,&varregm,&varreg)) ||
tysize(ty) == 32
tysize(ty) == 32 && !isregvar(e1,&varregm,&varreg)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

space... the final frontier...

@andralex
Copy link
Member

andralex commented Jan 3, 2017

Auto-merge toggled on

@andralex andralex merged commit c14fcf1 into dlang:master Jan 3, 2017
@WalterBright WalterBright deleted the cgxmm-32 branch January 3, 2017 18:32
@MartinNowak
Copy link
Member

MartinNowak commented Jun 13, 2017

Forcing SIMD loads to go through the stack is obviously a really bad idea.
Why didn't you just imitate what GCC/Clang use for broadcasting scalar values to vectors?
Would have also avoided Issue 17484 – high penalty for vbroadcastsd with -mcpu=avx.
Also please avoid using float instructions for integer vectors (or vice versa), see Do I get a performance penalty when mixing SSE integer/float SIMD instructions.

@MartinNowak MartinNowak mentioned this pull request Jul 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants