提问人:ature 提问时间:9/27/2023 最后编辑:Peter Cordesature 更新时间:9/27/2023 访问量:35
如何在 SVE Gather-Load 内部函数中处理具有 32 位通道寄存器的 64 位指针?
How to Handle 64-Bit Pointers with 32-Bit Lane Registers in SVE Gather-Load Intrinsics?
问:
SVE 提供各种聚集加载内部函数。例如,加载到 .svuint32_t m = svld1_gather_u32_offset_u32(svbool_t pg, const uint32_t *base, svuint32_t offsets)
base[i]
i
m
或者,您可以使用 将元素加载到 .每个基数通道都包含一个 32 位内存地址,因为基数的类型为 。但是,AArch64(SVE 需要)指针是 64 位。64 位指针如何适应 32 位通道?svuint32_t k = svld1_gather_u32base_u32(svbool_t pg, svuint32_t bases)
k
svuint32_t
我假设只有当指针碰巧适合 32 位时才能使用第二种变体。由于无法保证这一点,那么第二种方法的实用性如何?
我试图阅读生成的汇编代码,但由于这不是我的强项,因此对我没有进一步的帮助。
答: 暂无答案
评论
vpgatherqd
base
mmap(MAP_32BIT)
u32base
xzr