发布于 2022-08-03 08:33:21
不,不幸的是这是不可能的(在撰写本报告时)。__sizeless_struct是Arm添加的一个实验性特性,它是Clang中SVE初始下游实现的一部分。其主要目的是允许像svfloat32x3_t这样的元组类型直接在<arm_sve.h>中定义。但这一特征具有复杂的反趋势语义。它打破了C++的基本规则之一,即所有类对象都具有恒定的大小,因此对于上游编译器来说,这将是一个持续的维护负担。
对于可移植的SIMD框架来说,__sizeless_struct (或类似的东西)可能是不可接受的,因为无大小的结构将继承无大小向量类型的所有限制:没有全局变量,在普通结构中没有用途,或者所有SIMD目标都必须遵守这些限制,或者限制会因目标而不同(限制可移植性)。
对于支持可变长度向量的SIMD框架来说,基于函数的抽象可能是一个比基于类的抽象更好的起点。谷歌高速公路就是这方面的一个例子,它对SVE很有效。
https://stackoverflow.com/questions/73210512
复制相似问题