相关疑难解决方法(0)

使用__m64引用将C++项目转换为x64

因此,当我开始转换并将目标设置为'x64'时,我得到7个未解析的外部.两个例子:

error LNK2001: unresolved external symbol _m_empty    ...CONVOLUTION_2D_USHORT.obj  CONVOLUTION_2D_USHORT
error LNK2001: unresolved external symbol _mm_setzero_si64  ...CONVOLUTION_2D_USHORT.obj    CONVOLUTION_2D_USHORT
Run Code Online (Sandbox Code Playgroud)

所以我试着更深入地研究这些,我发现它不喜欢头文件中的__m64:特别是mmintrin.h(可能还有其他的).在我使用C++的业余时间,因为我多年来没有弄乱语言,(我通常在C#部门),我试图编辑头文件,并用__m128i替换__m64 !! !! 不知道什么是正确的路由,让这个和其他DLL编译对MachineX64.编辑并将标题源放在我的本地目录后,它仍然不允许我通过右键单击...再次 - 业余小时编译.有几个人问过类似的问题,但我找不到合适的问题.

以下是'mmintrin.h'的示例,其中包含不受支持的__m64 ...

typedef union __declspec(intrin_type)_CRT_ALIGN(8) __m64
{
unsigned __int64    m64_u64;
float               m64_f32[2];
__int8              m64_i8[8];
__int16             m64_i16[4];
__int32             m64_i32[2];
__int64             m64_i64;
unsigned __int8     m64_u8[8];
unsigned __int16    m64_u16[4];
unsigned __int32    m64_u32[2];
} __m64;

/* General support intrinsics */
void  _m_empty(void);
__m64 _m_from_int(int _I);
int   _m_to_int(__m64 _M);
__m64 _m_packsswb(__m64 _MM1, __m64 _MM2);
__m64 _m_packssdw(__m64 _MM1, __m64 _MM2);
__m64 _m_packuswb(__m64 _MM1, …
Run Code Online (Sandbox Code Playgroud)

c++ 64-bit x86 visual-c++ mmx

10
推荐指数
1
解决办法
1104
查看次数

内在向量元素类型(如 epi64x 或 pi32)的名称和含义是什么?

英特尔内在函数的名称中内置了向量的子类型。例如,_mm_set1_ps是 a ps,即packed single-precisionaka。A float。尽管它们中的大多数的含义是明确的,但它们的“全名”packed single-precision从功能描述中并不总是清晰的。我创建了下表。不幸的是,有些条目丢失了。它们有何价值?其他问题见表下方。

缩写 全名 C/++ 等效项
附注 压缩单精度 漂浮
酸碱度 压缩半精度 没有任何**
PD 压缩双精度 双倍的
个人电脑 压缩半精度复数 没有任何**
pi8 ??? int8_t
PI16 ??? int16_t
pi32 ??? int32_t
Epi8 ??? int8_t
表观16 ??? int16_t
表观32 ??? int32_t
表观64 ??? int64_t
外延64x ??? int64_t

附加问题:

  1. 我有错过任何吗?
  2. epiX和 和有什么区别piX?
  3. 为什么不pi64存在?
  4. epi64和 和有什么区别epi64x?

** 我发现了这个,但似乎没有标准方法来表示 C/++ 中的半精度(复数)值。如果这有任何改变,请纠正我。

sse intel intrinsics sse2 mmx

5
推荐指数
1
解决办法
1178
查看次数

标签 统计

mmx ×2

64-bit ×1

c++ ×1

intel ×1

intrinsics ×1

sse ×1

sse2 ×1

visual-c++ ×1

x86 ×1