[英]How do I pass an immediate 4 bit value to the last argument of _mm256_blend_pd
我正在嘗試使用_mm256_blend_pd,但是我一直遇到編譯器錯誤。 在這種情況下,錯誤是gcc希望“最后一個參數必須是4位立即數”。 我可以成功傳遞一個硬編碼值,但是任何計算出的值都會產生錯誤。
這是一個人為設計且無用的程序,用於演示錯誤。 我遇到了gcc 4.6.3和gcc 4.8.3錯誤。
#include <immintrin.h>
#include <stdlib.h>
int main() {
__m256d zeroHit = {0};
int j=rand()%3;
int imm=(0x01);
// This line will compile
_mm256_store_pd(0,_mm256_blend_pd(zeroHit,*reinterpret_cast<__m256d*>(0),imm&0x0F));
imm=(0x01 & (j!=0));
// This line will produce the error
_mm256_store_pd(0,_mm256_blend_pd(zeroHit,*reinterpret_cast<__m256d*>(0),imm&0x0F));
return 0;
}
出於某種原因,它被稱為“立即”。 它必須是一個編譯時間常數。 –神秘
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.