![](/img/trans.png)
[英]Does ARM and Intel intrinsics use the same subkey schedule for AES?
[英]Intel / ARM intrinsics equivalence
我有一個使用英特爾內部函數的C應用程序,例如:
__m128 _mm_add_ps (__m128 a, __m128 b)
__m128 _mm_sub_ps (__m128 a, __m128 b)
__m128 _mm_mul_ps (__m128 a, __m128 b)
__m128 _mm_set_ps (float e3, float e2, float e1, float e0)
void _mm_store_ps (float* mem_addr, __m128 a)
__m128 _mm_load_ps (float const* mem_addr)
現在,我試圖使用名為Gem5的模擬器來修改我的應用程序,以使其在ARMv8上運行 。 因此,我開始四處尋找ARM內在函數,並找到了本手冊《 ARM®NEON™Intrinsics Reference》。
好吧,我發現了算術內在函數,但是我對設置,存儲和加載指令有些迷失。
任何具有ARM內部函數經驗的人都可以告訴我正確的內部函數嗎?
以下是一些等效的入門指南:
SSE ARM
__m128 float32x4_t // 4 x 32 bits floats in a vector
_mm_load_ps vld1q_f32 // load float vector from memory
_mm_store_ps vst1q_f32 // store float vector to memory
_mm_add_ps vaddq_f32 // add float vectors
至於初始化向量,就像您在SSE中使用_mm_set_ps
,例如gcc和clang的編譯器就可以通過類似於Neon數據類型的C方式進行此操作,例如
const float32x4_t v = { 1.0f, 2.0f, 3.0f, 4.0f };
但是,如果編譯器不支持此方法,則可能必須使用等效的Neon內部函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.