簡體   English   中英

與GCC中的NEON內在函數對齊加載/存儲

[英]Aligned load/store with NEON intrinsics in GCC

如何讓GCC為對齊訪問生成加載/存儲指令?

如果我們有類似的東西:

uint8_t* p;
uint8x8x4_t r = vld4_u8(p);

如何讓GCC生成一個需要32字節對齊的加載指令?

我想你可以使用__builtin_assume_aligned(ptr,size);

例如

#include <arm_neon.h>

void blend4(uint8_t *src, uint8_t *dst)
{
    uint8_t *aligned_src = __builtin_assume_aligned(src, 16);
    uint8_t *aligned_dst = __builtin_assume_aligned(dst, 16);
    uint8x8x4_t temp = vld4_u8(aligned_src);
    vst4_u8(aligned_dst, temp);
}

產生:

vld4.8  {d16-d19}, [r0:128]
vst4.8  {d16-d19}, [r1:128]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM