首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D/ DLang / GDC -结构中SIMD场的对齐

D/ DLang / GDC -结构中SIMD场的对齐
EN

Stack Overflow用户
提问于 2017-03-01 17:22:39
回答 1查看 175关注 0票数 1
代码语言:javascript
复制
struct vec_struct {
    alias field this;
    bool b;
    int8 field; // ymm 
    }

在这段代码中,当您查看GDC生成的x64代码时,它似乎做得很好,因为它对256位YMM字段的偏移量是正确的。

Q:D会自动将字段上的对齐限制传播到堆栈上静态结构或结构的分配吗?

在这种情况下-

代码语言:javascript
复制
struct vec_struct {
    bool b2;
    struct {
        alias field this;
        bool b;
        int8 field; // umm
        }
    }

“字段”的偏移量似乎不再正确地对齐--偏移量在GDC中是40字节。我不认为编译器只会使用未对齐的指令?无论如何,如果我已经理解了D文档,那么我可以获取字段的地址,然后将其传递给希望获得具有保证正确对齐的东西的人。Q:这是正确的-一个严重的坏问题,还是我是愚蠢的?

请不要咬人。我对D都是新手,我希望我已经理解了x86 SIMD指令的文档。(非常有经验的专业asm和C程序员,但v过时了。)

Noob问:我注意到GDC操作码看起来有点奇怪,例如编译器生成256位未对齐的获取,然后是对齐的二进制操作(我认为),例如movdqu后面跟着vpaddd r,ymm ptr blah --后者是只对齐的吗?抱歉,如果我弄错了,就得把它念一遍。有人能好好检查一下我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-02 07:55:50

D是否自动将字段上的对齐限制传播到堆栈上静态结构或结构的分配?

我认为应该是这样的,GDC/LDC应该已经支持正确的堆栈对齐。在这方面,DMD可能有一些bug:bug.cgi?id=16098

“字段”的偏移量似乎不再正确地对齐--偏移量在GDC中是40字节。

正如Iain已经在D.learn线程中回答的那样,这是共享DMD/GDC代码库中的一个bug。

Bug报告:bug.cgi?id=17237

DMD:https://github.com/dlang/dmd/pull/6582

支持GDC:https://github.com/D-Programming-GDC/GDC/pull/408

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42538132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档