SSE2指令 __m128i类型的解析

本文详细介绍了SSE类型等价表及其应用,并以XLC/C++编译器为例讲解如何使用向量技术编程。此外,深入探讨了__m128i类型的具体含义和理解方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

__m128i *__cdecl sub_C10BE0(__m128i *a1, unsigned __int8 a2, unsigned int a3) { unsigned int v3; // ecx __m128i *v4; // edi unsigned int v5; // eax __m128i v7; // xmm0 __m128i *v8; // edi v3 = a3; v4 = a1; if ( !a3 ) return a1; v5 = 16843009 * a2; if ( a3 <= 0x20 ) goto LABEL_16; if ( a3 >= 0x80 ) { if ( _bittest(&dword_E3FE64, 1u) ) { memset(a1, a2, a3); return a1; } if ( !_bittest(&dword_E1F884, 1u) ) goto LABEL_16; v7 = _mm_shuffle_epi32(_mm_cvtsi32_si128(v5), 0); *a1 = v7; v4 = (__m128i *)((unsigned int)&a1[1] & 0xFFFFFFF0); v3 = &a1->m128i_i8[a3] - (__int8 *)v4; if ( v3 > 0x80 ) { do { _mm_store_si128(v4, v7); _mm_store_si128(v4 + 1, v7); _mm_store_si128(v4 + 2, v7); _mm_store_si128(v4 + 3, v7); _mm_store_si128(v4 + 4, v7); _mm_store_si128(v4 + 5, v7); _mm_store_si128(v4 + 6, v7); _mm_store_si128(v4 + 7, v7); v4 += 8; v3 -= 128; } while ( v3 & 0xFFFFFF00 ); goto LABEL_12; } } if ( !_bittest(&dword_E1F884, 1u) ) { LABEL_16: while ( v3 & 3 ) { LOBYTE(v4->m128i_i32[0]) = a2; v4 = (__m128i *)((char *)v4 + 1); --v3; } if ( v3 & 4 ) { v4->m128i_i32[0] = v5; v4 = (__m128i *)((char *)v4 + 4); v3 -= 4; } for ( ; v3 & 0xFFFFFFF8; v3 -= 8 ) { v4->m128i_i32[0] = v5; v4->m128i_i32[1] = v5; v4 = (__m128i *)((char *)v4 + 8); } return a1; } v7 = _mm_shuffle_epi32(_mm_cvtsi32_si128(v5), 0); LABEL_12: if ( v3 < 0x20 ) goto LABEL_25; do { _mm_storeu_si128(v4, v7); _mm_storeu_si128(v4 + 1, v7); v4 += 2; v3 -= 32; } while ( v3 >= 0x20 ); if ( v3 & 0x1F ) { LABEL_25: v8 = (__m128i *)((char *)v4 + v3 - 32); _mm_storeu_si128(v8, v7); _mm_storeu_si128(v8 + 1, v7); return a1; } return a1; }这个函数是不是就是memset
最新发布
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值