日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

[VC] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP)

發布時間:2024/3/12 c/c++ 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [VC] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從2011年的Sandy Bridge微架構處理器開始,現在支持AVX系列指令集的處理器越來越多了。本文探討如何用VC編寫檢測AVX系列指令集的程序,并利用了先前的CPUIDFIELD方案。

一、AVX系列指令集簡介

  SSE5 指令:SSE5 是一個紙面上的指令集,并沒有最終實現,AMD 在 2007 年 8 月公布 SSE5 指令集規范,在 2009 年 5 月 AMD 推出了 XOP,FMA4 以及 CVT16 來取代 SSE5 指令。
  AVX 指令:2008 年 3 月 Intel 發布了 AVX(Advanced Vector Extensions)指令集規范,首次在 Sandy Bridge 微架構的處理器上使用。AMD 首次在 Bulldozer 微架構的處理器上加入 AVX 指令的支持。
  FMA 指令:FMA 指令是 AVX 指令集中的一部分,Intel 將在 2013 年的 Haswell 微架構處理器上使用。據說AMD將在2012年的Piledriver微架構處理器上支持FMA。
  XOP,FMA4 以及 CVT16 指令:AMD 在 2009 年 5 月發布了 XOP,FMA4 以及 CVT16 指令集規范,這些指令集取代了 SSE5 指令,在原有的 SSE5 指令基礎上,使用了兼容 AVX 指令的設計方案重新進行了設計,因此,XOP,FMA4 以及 CVT16 在指令的編碼方面是兼容于 AVX 的方案。這使得 AVX/FAM4/CVT16 指令與 AVX 指令同時存在,而不會產生沖突。AMD首次在 Bulldozer 微架構的處理器上使用。
  F16C 指令:F16C指令就是AMD的CVT16指令,Intel換了一個名稱,隨后AMD也接收了這一稱呼。Intel 首次在 2012 年的 Ivy Bridge 微架構處理器上使用。
  AVX2 指令:2011 年 6 月,Intel 發布了 AVX2 指令集規范,將在 2013 年的 Haswell 微架構處理器上使用。

二、檢測AVX、AVX2

2.1 應用程序如何檢測AVX

  在Intel手冊第一卷的“13.5 DETECTION OF AVX INSTRUCTIONS”中介紹了AVX指令集的檢測辦法,具體步驟為——
1) Detect CPUID.1:ECX.OSXSAVE[bit 27] = 1 (XGETBV enabled for application use)
2) Issue XGETBV and verify that XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS).
3) detect CPUID.1:ECX.AVX[bit 28] = 1 (AVX instructions supported).
(Step 3 can be done in any order relative to 1 and 2)

  Intel還給出了匯編偽代碼——

INT supports_AVX() { mov eax, 1 cpuid and ecx, 018000000H cmp ecx, 018000000H; check both OSXSAVE and AVX feature flags jne not_supported ; processor supports AVX instructions and XGETBV is enabled by OS mov ecx, 0; specify 0 for XCR0 register XGETBV ; result in EDX:EAX and eax, 06H cmp eax, 06H; check OS has enabled both XMM and YMM state support jne not_supported mov eax, 1 jmp done NOT_SUPPORTED: mov eax, 0 done:

  解釋一下它的檢測步驟——
1) 檢測CPUID.1:ECX.OSXSAVE[bit 27] = 1。該位為1表示操作系統支持XSAVE系列指令,于是在應用程序中可以使用XGETBV等XSAVE系列指令。
2) 使用XGETBV指令獲取XCR0寄存器的值,并檢查第1位至第2位是否都為1。即檢查操作系統是否支持XMM和YMM狀態。
3) 檢測CPUID.1:ECX.OSXSAVE[bit 27] = 1。該位為1表示硬件支持AVX指令集。

  XCR0叫做XFEATURE_ENABLED_MASK寄存器,它是一個64位寄存器。它的第0位是x87 FPU/MMX狀態,第1位是XMM狀態,第2位是YMM狀態。如果操作系統支持AVX指令集,它就會將XMM和YMM狀態均置為1。詳見Intel手冊第3卷的“2.6 EXTENDED CONTROL REGISTERS (INCLUDING XCR0)”——

  AMD對XCR0寄存器做了擴展,第62位是LWP狀態。詳見AMD手冊第3卷的“11.5.2 XFEATURE_ENABLED_MASK”——

2.2 應用程序如何檢測AVX2

  在《Intel? Architecture Instruction Set Extensions Programming Reference》的“2.2.3 Detection of AVX2”中介紹了AVX2指令集的檢測方法和匯編偽代碼,摘錄如下——

Hardware support for AVX2 is indicated by CPUID.(EAX=07H,ECX=0H):EBX.AVX2[bit 5]=1. Application Software must identify that hardware supports AVX as explained in Section 2.2, after that it must also detect support for AVX2 by checking CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]. The recommended pseudocode sequence for detection of AVX2 is: ---------------------------------------------------------------------------------------- INT supports_avx2() { ; result in eax mov eax, 1 cpuid and ecx, 018000000H cmp ecx, 018000000H; check both OSXSAVE and AVX feature flags jne not_supported ; processor supports AVX instructions and XGETBV is enabled by OS mov eax, 7 mov ecx, 0 cpuid and ebx, 20H cmp ebx, 20H; check AVX2 feature flags jne not_supported mov ecx, 0; specify 0 for XFEATURE_ENABLED_MASK register XGETBV; result in EDX:EAX and eax, 06H cmp eax, 06H; check OS has enabled both XMM and YMM state support jne not_supported mov eax, 1 jmp done NOT_SUPPORTED: mov eax, 0 done: }

  可以看出,它是通過三個步奏來檢查AVX2指令集的——
1) 使用cpuid指令的功能1,檢測OSXSAVE和AVX標志。
2) 使用cpuid指令的功能7,檢測AVX2標志。
3) 使用XGETBV指令獲取XCR0寄存器的值,判斷操作系統是否支持XMM和YMM狀態。

2.3 如何獲取XCR0寄存器的值

  官方推薦使用XGETBV指令來獲取XCR0寄存器的值。輸入寄存器是ECX,是XCR系列寄存器的索引,對于XCR0來說應填0。輸出寄存器是EDX和EAX,分別是高32位和低32位。
  XGETBV指令是在任何訪問級別均可調用的指令,即在Ring3的應用程序層也可使用XGETBV指令。
  雖然應用程序層可以使用XGETBV指令,但在實際使用時會遇到問題。這是因為XGETBV是最近才出現的指令,大多數編譯器還不支持XGETBV指令。
  該怎么辦呢?

  cpuid的0Dh號功能(Processor Extended State Enumeration)就是為這種情況設計的。當使用功能號0Dh、子功能號0調用cpuid指令時,返回的EDX和EAX就是XCR0的值。

2.4 編寫檢測函數

  前面我們看到了Intel的檢測AVX與AVX2的匯編偽代碼。雖然將其直接翻譯為VC中的內嵌匯編并不復雜,但存在兩個問題——
1. VC在x64平臺不支持內嵌匯編;
2. 使用不方便。它比較適合在編寫匯編代碼時使用,但對于C語言程序來說,我們希望能以更好的方式組織代碼。

  這時可以參考先前的simd_sse_level函數的設計,函數的返回值是操作系統對AVX指令集的支持級別,還提供一個指針參數來接收硬件對AVX指令集的支持級別。于是,定義了這些常數——

#define SIMD_AVX_NONE 0 // 不支持 #define SIMD_AVX_1 1 // AVX #define SIMD_AVX_2 2 // AVX2   我們可以利用先前的CPUIDFIELD方案來簡化檢測代碼的編寫。先定義好相關的常數—— #define CPUF_AVX CPUIDFIELD_MAKE(1,0,2,28,1) #define CPUF_AVX2 CPUIDFIELD_MAKE(7,0,1,5,1) #define CPUF_XSAVE CPUIDFIELD_MAKE(1,0,2,26,1) #define CPUF_OSXSAVE CPUIDFIELD_MAKE(1,0,2,27,1) #define CPUF_XFeatureSupportedMaskLo CPUIDFIELD_MAKE(0xD,0,0,0,32)   在編寫具體的檢測代碼時,沒必要拘泥于官方的那三個步驟,可以先檢查硬件支持性,然后再檢查操作系統支持性。函數代碼如下—— int simd_avx_level(int* phwavx) { int rt = SIMD_AVX_NONE; // result // check processor support if (0!=getcpuidfield(CPUF_AVX)) { rt = SIMD_AVX_1; if (0!=getcpuidfield(CPUF_AVX2)) { rt = SIMD_AVX_2; } } if (NULL!=phwavx) *phwavx=rt; // check OS support if (0!=getcpuidfield(CPUF_OSXSAVE)) // XGETBV enabled for application use. { UINT32 n = getcpuidfield(CPUF_XFeatureSupportedMaskLo); // XCR0: XFeatureSupportedMask register. if (6==(n&6)) // XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS). { return rt; } } return SIMD_AVX_NONE; }

三、檢測F16C、FMA、FMA4、XOP

  
  在《Intel? Architecture Instruction Set Extensions Programming Reference》的“2.2.1 Detection of FMA”中介紹了FMA指令的檢測方法和匯編偽代碼,摘錄如下——

Hardware support for FMA is indicated by CPUID.1:ECX.FMA[bit 12]=1. Application Software must identify that hardware supports AVX as explained in Section 2.2, after that it must also detect support for FMA by CPUID.1:ECX.FMA[bit 12]. The recommended pseudocode sequence for detection of FMA is: ---------------------------------------------------------------------------------------- INT supports_fma() { ; result in eax mov eax, 1 cpuid and ecx, 018001000H cmp ecx, 018001000H; check OSXSAVE, AVX, FMA feature flags jne not_supported ; processor supports AVX,FMA instructions and XGETBV is enabled by OS mov ecx, 0; specify 0 for XFEATURE_ENABLED_MASK register XGETBV; result in EDX:EAX and eax, 06H cmp eax, 06H; check OS has enabled both XMM and YMM state support jne not_supported mov eax, 1 jmp done NOT_SUPPORTED: mov eax, 0 done: } ------------------------------------------------------------------------------- Note that FMA comprises 256-bit and 128-bit SIMD instructions operating on YMM states.

  可以看出上面的代碼與AVX2的檢測代碼很相似,只是多了對FMA標志位的檢查。
  所以我們可以將其分解為兩個步驟,先調用simd_avx_level檢查AVX的支持性,然后再調用getcpuidfield檢查硬件是否支持FMA,即這樣的代碼——

if (simd_avx_level(NULL)>0) { if (getcpuidfield(CPUF_FMA)) { 支持FMA } }

  這樣就只需定義F16C、FMA、FMA4、XOP的常數就夠了——

#define CPUF_F16C CPUIDFIELD_MAKE(1,0,2,29,1) #define CPUF_FMA CPUIDFIELD_MAKE(1,0,2,12,1) #define CPUF_FMA4 CPUIDFIELD_MAKE(0x80000001,0,2,16,1) #define CPUF_XOP CPUIDFIELD_MAKE(0x80000001,0,2,11,1)

四、全部代碼

  全部代碼——

#include <windows.h> #include <stdio.h> #include <conio.h> #include <tchar.h>#if _MSC_VER >=1400 // VC2005才支持intrin.h #include <intrin.h> // 所有Intrinsics函數 #else #include <emmintrin.h> // MMX, SSE, SSE2 #endif// CPUIDFIELD typedef INT32 CPUIDFIELD;#define CPUIDFIELD_MASK_POS 0x0000001F // 位偏移. 0~31. #define CPUIDFIELD_MASK_LEN 0x000003E0 // 位長. 1~32 #define CPUIDFIELD_MASK_REG 0x00000C00 // 寄存器. 0=EAX, 1=EBX, 2=ECX, 3=EDX. #define CPUIDFIELD_MASK_FIDSUB 0x000FF000 // 子功能號(低8位). #define CPUIDFIELD_MASK_FID 0xFFF00000 // 功能號(最高4位 和 低8位).#define CPUIDFIELD_SHIFT_POS 0 #define CPUIDFIELD_SHIFT_LEN 5 #define CPUIDFIELD_SHIFT_REG 10 #define CPUIDFIELD_SHIFT_FIDSUB 12 #define CPUIDFIELD_SHIFT_FID 20#define CPUIDFIELD_MAKE(fid,fidsub,reg,pos,len) (((fid)&0xF0000000) \| ((fid)<<CPUIDFIELD_SHIFT_FID & 0x0FF00000) \| ((fidsub)<<CPUIDFIELD_SHIFT_FIDSUB & CPUIDFIELD_MASK_FIDSUB) \| ((reg)<<CPUIDFIELD_SHIFT_REG & CPUIDFIELD_MASK_REG) \| ((pos)<<CPUIDFIELD_SHIFT_POS & CPUIDFIELD_MASK_POS) \| (((len)-1)<<CPUIDFIELD_SHIFT_LEN & CPUIDFIELD_MASK_LEN) \) #define CPUIDFIELD_FID(cpuidfield) ( ((cpuidfield)&0xF0000000) | (((cpuidfield) & 0x0FF00000)>>CPUIDFIELD_SHIFT_FID) ) #define CPUIDFIELD_FIDSUB(cpuidfield) ( ((cpuidfield) & CPUIDFIELD_MASK_FIDSUB)>>CPUIDFIELD_SHIFT_FIDSUB ) #define CPUIDFIELD_REG(cpuidfield) ( ((cpuidfield) & CPUIDFIELD_MASK_REG)>>CPUIDFIELD_SHIFT_REG ) #define CPUIDFIELD_POS(cpuidfield) ( ((cpuidfield) & CPUIDFIELD_MASK_POS)>>CPUIDFIELD_SHIFT_POS ) #define CPUIDFIELD_LEN(cpuidfield) ( (((cpuidfield) & CPUIDFIELD_MASK_LEN)>>CPUIDFIELD_SHIFT_LEN) + 1 )// 取得位域 #ifndef __GETBITS32 #define __GETBITS32(src,pos,len) ( ((src)>>(pos)) & (((UINT32)-1)>>(32-len)) ) #endif#define CPUF_SSE4A CPUIDFIELD_MAKE(0x80000001,0,2,6,1) #define CPUF_AES CPUIDFIELD_MAKE(1,0,2,25,1) #define CPUF_PCLMULQDQ CPUIDFIELD_MAKE(1,0,2,1,1)#define CPUF_AVX CPUIDFIELD_MAKE(1,0,2,28,1) #define CPUF_AVX2 CPUIDFIELD_MAKE(7,0,1,5,1) #define CPUF_OSXSAVE CPUIDFIELD_MAKE(1,0,2,27,1) #define CPUF_XFeatureSupportedMaskLo CPUIDFIELD_MAKE(0xD,0,0,0,32) #define CPUF_F16C CPUIDFIELD_MAKE(1,0,2,29,1) #define CPUF_FMA CPUIDFIELD_MAKE(1,0,2,12,1) #define CPUF_FMA4 CPUIDFIELD_MAKE(0x80000001,0,2,16,1) #define CPUF_XOP CPUIDFIELD_MAKE(0x80000001,0,2,11,1)// SSE系列指令集的支持級別. simd_sse_level 函數的返回值。 #define SIMD_SSE_NONE 0 // 不支持 #define SIMD_SSE_1 1 // SSE #define SIMD_SSE_2 2 // SSE2 #define SIMD_SSE_3 3 // SSE3 #define SIMD_SSE_3S 4 // SSSE3 #define SIMD_SSE_41 5 // SSE4.1 #define SIMD_SSE_42 6 // SSE4.2const char* simd_sse_names[] = {"None","SSE","SSE2","SSE3","SSSE3","SSE4.1","SSE4.2", };// AVX系列指令集的支持級別. simd_avx_level 函數的返回值。 #define SIMD_AVX_NONE 0 // 不支持 #define SIMD_AVX_1 1 // AVX #define SIMD_AVX_2 2 // AVX2const char* simd_avx_names[] = {"None","AVX","AVX2" };char szBuf[64]; INT32 dwBuf[4];#if defined(_WIN64) // 64位下不支持內聯匯編. 應使用__cpuid、__cpuidex等Intrinsics函數。 #else #if _MSC_VER < 1600 // VS2010\. 據說VC2008 SP1之后才支持__cpuidex void __cpuidex(INT32 CPUInfo[4], INT32 InfoType, INT32 ECXValue) {if (NULL==CPUInfo) return;_asm{// load. 讀取參數到寄存器mov edi, CPUInfo; // 準備用edi尋址CPUInfomov eax, InfoType;mov ecx, ECXValue;// CPUIDcpuid;// save. 將寄存器保存到CPUInfomov [edi], eax;mov [edi+4], ebx;mov [edi+8], ecx;mov [edi+12], edx;} } #endif // #if _MSC_VER < 1600 // VS2010\. 據說VC2008 SP1之后才支持__cpuidex#if _MSC_VER < 1400 // VC2005才支持__cpuid void __cpuid(INT32 CPUInfo[4], INT32 InfoType) {__cpuidex(CPUInfo, InfoType, 0); } #endif // #if _MSC_VER < 1400 // VC2005才支持__cpuid#endif // #if defined(_WIN64)// 根據CPUIDFIELD從緩沖區中獲取字段. UINT32 getcpuidfield_buf(const INT32 dwBuf[4], CPUIDFIELD cpuf) {return __GETBITS32(dwBuf[CPUIDFIELD_REG(cpuf)], CPUIDFIELD_POS(cpuf), CPUIDFIELD_LEN(cpuf)); }// 根據CPUIDFIELD獲取CPUID字段. UINT32 getcpuidfield(CPUIDFIELD cpuf) {INT32 dwBuf[4];__cpuidex(dwBuf, CPUIDFIELD_FID(cpuf), CPUIDFIELD_FIDSUB(cpuf));return getcpuidfield_buf(dwBuf, cpuf); }// 取得CPU廠商(Vendor) // // result: 成功時返回字符串的長度(一般為12)。失敗時返回0。 // pvendor: 接收廠商信息的字符串緩沖區。至少為13字節。 int cpu_getvendor(char* pvendor) {INT32 dwBuf[4];if (NULL==pvendor) return 0;// Function 0: Vendor-ID and Largest Standard Function__cpuid(dwBuf, 0);// save. 保存到pvendor*(INT32*)&pvendor[0] = dwBuf[1]; // ebx: 前四個字符*(INT32*)&pvendor[4] = dwBuf[3]; // edx: 中間四個字符*(INT32*)&pvendor[8] = dwBuf[2]; // ecx: 最后四個字符pvendor[12] = '\0';return 12; }// 取得CPU商標(Brand) // // result: 成功時返回字符串的長度(一般為48)。失敗時返回0。 // pbrand: 接收商標信息的字符串緩沖區。至少為49字節。 int cpu_getbrand(char* pbrand) {INT32 dwBuf[4];if (NULL==pbrand) return 0;// Function 0x80000000: Largest Extended Function Number__cpuid(dwBuf, 0x80000000);if (dwBuf[0] < 0x80000004) return 0;// Function 80000002h,80000003h,80000004h: Processor Brand String__cpuid((INT32*)&pbrand[0], 0x80000002); // 前16個字符__cpuid((INT32*)&pbrand[16], 0x80000003); // 中間16個字符__cpuid((INT32*)&pbrand[32], 0x80000004); // 最后16個字符pbrand[48] = '\0';return 48; }// 是否支持MMX指令集 BOOL simd_mmx(BOOL* phwmmx) {const INT32 BIT_D_MMX = 0x00800000; // bit 23BOOL rt = FALSE; // resultINT32 dwBuf[4];// check processor support__cpuid(dwBuf, 1); // Function 1: Feature Informationif ( dwBuf[3] & BIT_D_MMX ) rt=TRUE;if (NULL!=phwmmx) *phwmmx=rt;// check OS supportif ( rt ){ #if defined(_WIN64)// VC編譯器不支持64位下的MMX。rt=FALSE; #else__try {_mm_empty(); // MMX instruction: emms}__except (EXCEPTION_EXECUTE_HANDLER){rt=FALSE;} #endif // #if defined(_WIN64)}return rt; }// 檢測SSE系列指令集的支持級別 int simd_sse_level(int* phwsse) {const INT32 BIT_D_SSE = 0x02000000; // bit 25const INT32 BIT_D_SSE2 = 0x04000000; // bit 26const INT32 BIT_C_SSE3 = 0x00000001; // bit 0const INT32 BIT_C_SSSE3 = 0x00000100; // bit 9const INT32 BIT_C_SSE41 = 0x00080000; // bit 19const INT32 BIT_C_SSE42 = 0x00100000; // bit 20int rt = SIMD_SSE_NONE; // resultINT32 dwBuf[4];// check processor support__cpuid(dwBuf, 1); // Function 1: Feature Informationif ( dwBuf[3] & BIT_D_SSE ){rt = SIMD_SSE_1;if ( dwBuf[3] & BIT_D_SSE2 ){rt = SIMD_SSE_2;if ( dwBuf[2] & BIT_C_SSE3 ){rt = SIMD_SSE_3;if ( dwBuf[2] & BIT_C_SSSE3 ){rt = SIMD_SSE_3S;if ( dwBuf[2] & BIT_C_SSE41 ){rt = SIMD_SSE_41;if ( dwBuf[2] & BIT_C_SSE42 ){rt = SIMD_SSE_42;}}}}}}if (NULL!=phwsse) *phwsse=rt;// check OS support__try {__m128 xmm1 = _mm_setzero_ps(); // SSE instruction: xorpsif (0!=*(int*)&xmm1) rt = SIMD_SSE_NONE; // 避免Release模式編譯優化時剔除上一條語句}__except (EXCEPTION_EXECUTE_HANDLER){rt = SIMD_SSE_NONE;}return rt; }// 檢測AVX系列指令集的支持級別. int simd_avx_level(int* phwavx) {int rt = SIMD_AVX_NONE; // result// check processor supportif (0!=getcpuidfield(CPUF_AVX)){rt = SIMD_AVX_1;if (0!=getcpuidfield(CPUF_AVX2)){rt = SIMD_AVX_2;}}if (NULL!=phwavx) *phwavx=rt;// check OS supportif (0!=getcpuidfield(CPUF_OSXSAVE)) // XGETBV enabled for application use.{UINT32 n = getcpuidfield(CPUF_XFeatureSupportedMaskLo); // XCR0: XFeatureSupportedMask register.if (6==(n&6)) // XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS).{return rt;}}return SIMD_AVX_NONE; }int _tmain(int argc, _TCHAR* argv[]) {int i;//__cpuidex(dwBuf, 0,0);//__cpuid(dwBuf, 0);//printf("%.8X\t%.8X\t%.8X\t%.8X\n", dwBuf[0],dwBuf[1],dwBuf[2],dwBuf[3]);cpu_getvendor(szBuf);printf("CPU Vendor:\t%s\n", szBuf);cpu_getbrand(szBuf);printf("CPU Name:\t%s\n", szBuf);BOOL bhwmmx; // 硬件支持MMX.BOOL bmmx; // 操作系統支持MMX.bmmx = simd_mmx(&bhwmmx);printf("MMX: %d\t// hw: %d\n", bmmx, bhwmmx);int nhwsse; // 硬件支持SSE.int nsse; // 操作系統支持SSE.nsse = simd_sse_level(&nhwsse);printf("SSE: %d\t// hw: %d\n", nsse, nhwsse);for(i=1; i<sizeof(simd_sse_names)/sizeof(simd_sse_names[0]); ++i){if (nhwsse>=i) printf("\t%s\n", simd_sse_names[i]);}// test SSE4A/AES/PCLMULQDQprintf("SSE4A: %d\n", getcpuidfield(CPUF_SSE4A));printf("AES: %d\n", getcpuidfield(CPUF_AES));printf("PCLMULQDQ: %d\n", getcpuidfield(CPUF_PCLMULQDQ));// test AVXint nhwavx; // 硬件支持AVX.int navx; // 操作系統支持AVX.navx = simd_avx_level(&nhwavx);printf("AVX: %d\t// hw: %d\n", navx, nhwavx);for(i=1; i<sizeof(simd_avx_names)/sizeof(simd_avx_names[0]); ++i){if (nhwavx>=i) printf("\t%s\n", simd_avx_names[i]);}// test F16C/FMA/FMA4/XOPprintf("F16C: %d\n", getcpuidfield(CPUF_F16C));printf("FMA: %d\n", getcpuidfield(CPUF_FMA));printf("FMA4: %d\n", getcpuidfield(CPUF_FMA4));printf("XOP: %d\n", getcpuidfield(CPUF_XOP));return 0; }

  在以下編譯器中成功編譯——
VC6(32位)
VC2003(32位)
VC2005(32位)
VC2010(32位、64位)

五、測試

  在64位的win7中運行“x64\Release\getcpuidfield_2010.exe”,運行效果——

  利用cmdarg_ui運行“Debug\getcpuidfield.exe”,順便測試WinXP與VC6——

參考文獻——
《Intel? 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes:1, 2A, 2B, 2C, 3A, 3B, and 3C》. May 2012. http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
《Intel? Architecture Instruction Set Extensions Programming Reference》. FEBRUARY 2012. http://software.intel.com/file/41604
《Intel? Processor Identification and the CPUID Instruction》. April 2012. http://developer.intel.com/content/www/us/en/processors/processor-identification-cpuid-instruction-note.html
《AMD64 Architecture Programmer’s Manual Volume 3: General Purpose and System Instructions》. December 2011. http://support.amd.com/us/Processor_TechDocs/24594_APM_v3.pdf
《AMD CPUID Specification》. September 2010. http://support.amd.com/us/Embedded_TechDocs/25481.pdf
《x86 architecture CPUID》. http://www.sandpile.org/x86/cpuid.htm
《Haswell New Instruction Descriptions Now Available! 》. Mark Buxton. http://software.intel.com/en-us/blogs/2011/06/13/haswell-new-instruction-descriptions-now-available/
[IDF2012]ARCS002《Introduction to the upcoming Intel? Advanced Vector Extensions 2 (Intel? AVX2)》. 王有偉, Henry Ou. 2012-4.
[IDF2012]ARCS002《即將推出的英特爾? 高級矢量擴展指令集2(英特爾? AVX2)介紹》. 王有偉, Henry Ou. 2012-4.
《x86/x64 指令系統》. mik(鄧志). http://www.mouseos.com/x64/default.html
《[x86]SIMD指令集發展歷程表(MMX、SSE、AVX等)》. http://www.cnblogs.com/zyl910/archive/2012/02/26/x86_simd_table.html
《如何在各個版本的VC及64位下使用CPUID指令》. http://www.cnblogs.com/zyl910/archive/2012/05/21/vcgetcpuid.html
《[VC兼容32位和64位] 檢查MMX和SSE系列指令集的支持級別》. http://www.cnblogs.com/zyl910/archive/2012/05/25/checksimd64.html
《[VC] CPUIDFIELD:CPUID字段的統一編號、讀取方案。范例:檢查SSE4A、AES、PCLMULQDQ指令》. http://www.cnblogs.com/zyl910/archive/2012/06/29/getcpuidfield.html
《[C#] cmdarg_ui:“簡單參數命令行程序”的通用圖形界面》. http://www.cnblogs.com/zyl910/archive/2012/06/19/cmdarg_ui.html

源碼下載——
http://files.cnblogs.com/zyl910/checkavx.rar

轉自:
https://blog.csdn.net/zyl910/article/details/7715558

總結

以上是生活随笔為你收集整理的[VC] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美91视频 | 黄色免费大全 | 国产在线观看免费av | 不卡视频一区二区三区 | 精品久久久久久国产偷窥 | 97电影在线 | 精品福利国产 | 久久资源总站 | 在线观看播放av | 日本久久99| 涩涩网站在线 | 中文国产成人精品久久一 | 人人爽久久涩噜噜噜网站 | 最近中文字幕免费av | 日韩精品2区 | 丰满少妇在线观看 | 99热99re6国产在线播放 | 亚洲国产视频a | av综合在线观看 | 精品一区二区三区香蕉蜜桃 | 日本黄网站 | 91网在线看 | 在线观看成人 | 最新av中文字幕 | 国产成人不卡 | 在线观看中文字幕dvd播放 | av在线收看 | 97在线视频观看 | 午夜精品剧场 | 人九九精品 | 日韩午夜在线播放 | 久久久久亚洲精品成人网小说 | 久久久亚洲国产精品麻豆综合天堂 | 一本大道久久精品懂色aⅴ 五月婷社区 | 天天爱天天操 | 国产91小视频 | 狠狠干狠狠艹 | 激情视频免费在线 | 国产成人av在线 | 国产精品99视频 | 一区二区三区av在线 | 日韩视频免费观看高清完整版在线 | 日韩中文字幕a | 亚洲午夜精品久久久 | 911国产在线观看 | 国产视频 亚洲视频 | 精品女同一区二区三区在线观看 | 99精品成人 | 国产精品99在线播放 | 免费99精品国产自在在线 | 激情电影影院 | 欧美日韩亚洲精品在线 | 天天操天天爱天天爽 | 久久系列 | 麻豆免费视频 | 天天天色综合 | 中文字幕日本特黄aa毛片 | 国产中文字幕91 | 国产真实在线 | 在线视频亚洲 | 日韩av成人在线观看 | 91视频电影| 国产色网| 色五月激情五月 | 日韩欧美精品在线观看视频 | 91成人网在线观看 | 成年人在线免费看片 | 韩国精品在线 | 日本精品一二区 | 日韩欧美视频在线 | 亚洲精品久久久久中文字幕二区 | 美女久久99 | 日韩av一区二区三区在线观看 | 韩国av在线 | 欧美日韩免费一区二区 | 中文字幕美女免费在线 | 色婷婷啪啪免费在线电影观看 | 国产成人福利片 | 国产视频一区二区在线观看 | 久久艹国产 | 亚洲 欧美 成人 | 日韩精品视 | 亚洲精品资源在线观看 | 国产精品九九九 | 免费国产在线精品 | 天天操天天干天天玩 | 久久精品视频一 | 狠狠操综合网 | 国产97超碰 | 天天操天天爱天天爽 | 99久久久久免费精品国产 | 久久免费毛片视频 | 亚洲国产视频a | 天天综合网久久综合网 | 国产精品一区二区免费 | 亚洲免费av片 | 欧美激情第一区 | 91在线视频 | 91黄色小视频 | 最近更新的中文字幕 | 色婷婷啪啪免费在线电影观看 | 亚洲精品国产视频 | 一级黄色a视频 | www..com黄色片| 国产成人精品一区二区三区 | 992tv人人草| 欧美日韩视频在线 | 亚洲开心激情 | 五月婷视频 | 中文字幕 国产视频 | 日韩黄色大片在线观看 | 天天操天天爽天天干 | 99这里只有久久精品视频 | 日韩一级黄色片 | 91精品久久久久久综合乱菊 | 国产精品女同一区二区三区久久夜 | 亚洲精品一区二区三区在线观看 | 97在线观看免费高清完整版在线观看 | 黄p在线播放 | www.天天色 | 成人a级大片 | 日日碰狠狠躁久久躁综合网 | 亚洲九九九在线观看 | 美女视频黄是免费的 | 96在线| av中文字幕亚洲 | 色婷婷狠狠五月综合天色拍 | 最近的中文字幕大全免费版 | 黄色三几片| 久久久国产精品一区二区三区 | 久草视频首页 | 国产成人在线综合 | 中文字幕久久亚洲 | 亚洲国产成人在线观看 | 成人在线视频你懂的 | 成年人在线 | 黄色精品网站 | 麻豆传媒视频在线播放 | 国产精品视频免费观看 | 香蕉在线播放 | 久久国产手机看片 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 亚洲精品美女久久久 | 久青草影院 | 久久午夜精品 | 九九99| 免费在线观看一区 | 久久久久久久久久伊人 | 91最新在线 | 久久国产网 | 91av在线播放视频 | 成人a视频在线观看 | 久久美女免费视频 | 黄色三级久久 | 在线免费视 | 久久久久久久久久久成人 | 99色| 九九视频网 | 久久免费成人网 | 色橹橹欧美在线观看视频高清 | 午夜av在线免费 | 韩国av不卡| 亚洲最大av网站 | 国产又粗又长的视频 | 久久99久久99久久 | 在线综合色 | 精品五月天 | 婷婷六月久久 | 9797在线看片亚洲精品 | 亚洲资源在线 | 狠狠色狠狠色综合日日92 | 亚洲国内精品在线 | 一区二区三区免费播放 | 亚洲成人av电影在线 | 精品久久久999 | 欧美日韩中文另类 | 日韩精品一区二区在线观看视频 | 国产一线二线三线性视频 | 亚洲人成人天堂h久久 | 蜜臀av夜夜澡人人爽人人桃色 | 国产精品久99 | 婷婷久久精品 | 特级西西444www高清大视频 | 色婷婷狠狠18 | 日韩精品你懂的 | 久日精品 | 日韩精品欧美一区 | 超碰人人射 | 97人人添人澡人人爽超碰动图 | 中文字幕九九 | 国产亚洲精品福利 | 视频二区在线 | 91成人在线观看喷潮 | 成人动漫精品一区二区 | 天天在线免费视频 | 国产精品久久久久久一区二区三区 | 久久久久久综合网天天 | 久久久免费精品国产一区二区 | 免费视频资源 | 亚洲精品国产精品国自产在线 | 久久久999免费视频 日韩网站在线 | 亚洲电影第一页av | 日本一区二区免费在线观看 | 欧美性猛片, | 色婷婷狠狠五月综合天色拍 | 日本精品在线 | 国产69精品久久99不卡的观看体验 | 亚洲国产精品成人综合 | 国产伦理一区 | 夜夜高潮夜夜爽国产伦精品 | 成年人视频在线 | 国产日韩在线一区 | 成人v| 久久99精品国产91久久来源 | 一区二区三区日韩视频在线观看 | 欧美性一级观看 | 欧美日韩精品免费观看视频 | 日韩免费在线观看视频 | 国产国语在线 | 久久久免费高清视频 | 国产精品美女久久久久久网站 | 精品国内自产拍在线观看视频 | 国产精品丝袜 | 欧美在线资源 | 欧美精品久久久久久 | 超碰在线观看97 | 五月婷婷狠狠 | 欧洲视频一区 | 国产精品入口66mio女同 | 午夜18视频在线观看 | 欧美精品亚洲二区 | 日韩大片免费观看 | 国产亚洲aⅴaaaaaa毛片 | 99在线播放 | 国产专区在线视频 | 久久精品视频在线观看免费 | 99视频精品 | 伊人久久电影网 | 天天爱av导航| 黄色网免费 | 国产视频一区在线免费观看 | 黄色大片入口 | 国产人成在线视频 | 香蕉视频久久久 | 国产精品久久久久久久久久久久午夜 | 欧美精品一区二区三区一线天视频 | 九九热只有这里有精品 | 国产日产亚洲精华av | 日韩一区二区免费播放 | 亚洲综合黄色 | 久久9999久久| 国产精品去看片 | 狠狠躁天天躁 | 亚洲高清视频在线观看 | 六月丁香在线观看 | 97麻豆视频| 99精品在线免费在线观看 | 97电影网站 | 夜色资源站国产www在线视频 | 91高清视频在线 | 500部大龄熟乱视频使用方法 | 亚洲在线视频观看 | 久久久受www免费人成 | 97夜夜澡人人双人人人喊 | www亚洲国产| 亚洲另类久久 | 成人av中文字幕在线观看 | 精品在线观看一区二区 | 欧美视频在线观看免费网址 | 亚洲1级片 | 激情网五月婷婷 | 黄色特级一级片 | 999ZYZ玖玖资源站永久 | 日韩久久午夜一级啪啪 | 国产精品国内免费一区二区三区 | 成人免费 在线播放 | 色综合中文字幕 | 日韩精品视频第一页 | 国产又粗又猛又色又黄网站 | 中文字幕视频在线播放 | 免费观看成人 | 国产在线无 | 久99久中文字幕在线 | 免费手机黄色网址 | 久久 亚洲视频 | 国产婷婷 | 成人av免费在线 | 亚洲电影黄色 | 久久国产精彩视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 日韩欧美综合在线视频 | av中文字幕网 | 天天操夜夜操国产精品 | 天天操天操 | 亚洲一级片免费观看 | 久久精品www人人爽人人 | 最近最新中文字幕 | 日韩成人欧美 | 99精品视频在线免费观看 | 日韩视频一区二区三区在线播放免费观看 | 91亚洲精品久久久久图片蜜桃 | 91禁在线看 | 黄色日视频| 国产裸体永久免费视频网站 | 国产精品免费观看久久 | 精品999在线观看 | 国产伦理久久精品久久久久_ | 久久毛片网站 | 99久久久国产精品免费观看 | 97视频在线 | 国产久草在线 | 中文字幕激情 | 日韩黄色软件 | 狠狠干.com | 麻豆视频免费版 | 天天综合人人 | 免费午夜网站 | 色片网站在线观看 | 中文字幕一区av | 福利区在线观看 | 亚洲精品午夜久久久久久久 | 久久精品国产v日韩v亚洲 | 免费看一级特黄a大片 | 最近免费观看的电影完整版 | 国产精品成人aaaaa网站 | 男女精品久久 | 狠狠五月婷婷 | 国产精品久久久久久模特 | www.福利视频 | 日韩在线 | 亚洲永久精品视频 | 欧美精品资源 | 中文字幕在线一区二区三区 | 久一久久 | 国产午夜精品福利视频 | 婷婷综合 | 亚洲专区在线播放 | 欧美性色黄大片在线观看 | 黄色官网在线观看 | 四虎免费av | 久久久国产精华液 | 久久福利国产 | 久久精品99精品国产香蕉 | 婷婷丁香激情 | 欧美精品亚洲精品日韩精品 | 97成人资源 | 成人免费xyz网站 | 久久国产区 | 国产欧美精品一区二区三区 | 国产在线高清 | 亚洲欧洲精品视频 | 在线看一区 | 国产999精品 | 亚洲精品456在线播放乱码 | 日韩高清一 | 亚洲国产成人精品电影在线观看 | 亚洲美女久久 | 美女黄频网站 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 久久久麻豆精品一区二区 | 午夜精品一区二区三区在线 | 99中文字幕视频 | 99re久久资源最新地址 | 91高清视频 | 九九九在线观看 | 五月婷婷欧美视频 | 91精品啪啪| 久久99精品久久久久久秒播蜜臀 | 精品一区二区三区在线播放 | 麻豆小视频在线观看 | 国产黑丝一区二区三区 | 精品久久久久久一区二区里番 | 91精品视频一区 | 91久久奴性调教 | 五月天中文字幕 | 国产一级在线观看 | 亚洲激情六月 | 精品不卡视频 | 久久免费在线视频 | 亚洲综合干 | 你操综合| 天天躁天天狠天天透 | 免费看黄在线 | 亚洲视频 在线观看 | 91精品视频免费看 | 欧美午夜性生活 | 久久久久免费精品国产小说色大师 | 五月婷香蕉久色在线看 | 99精品国产一区二区三区麻豆 | 国产高清精 | 日韩电影在线一区 | 贫乳av女优大全 | 东方av在线免费观看 | 国产日产精品一区二区三区四区的观看方式 | 丁香高清视频在线看看 | 色综合狠狠干 | 在线观看激情av | 色综合久久综合中文综合网 | 粉嫩一区二区三区粉嫩91 | 亚洲专区免费观看 | 国产精品毛片久久久久久久 | 成年人视频免费在线 | 国产精品人人做人人爽人人添 | av网站免费看 | 热久久这里只有精品 | 一级黄色毛片 | 日韩色视频在线观看 | 免费观看黄色av | 麻豆免费在线视频 | 天天插狠狠插 | 国产在线第三页 | 日韩色视频在线观看 | 久久黄色影视 | 欧美欧美 | 一区二区欧美激情 | 伊人网综合在线观看 | 婷婷六月色 | 九七人人干 | 97成人精品 | 香蕉视频久久久 | 欧美日韩一区二区在线 | 中文字幕在线观看国产 | 丁香婷婷在线 | 久久精品黄 | 婷婷在线播放 | 九色porny真实丨国产18 | 五月激情婷婷丁香 | 超碰97在线资源站 | 久久视频在线观看免费 | 成人黄色大片在线观看 | 日韩一区二区三区高清在线观看 | 视频一区二区国产 | 欧美一区二区三区免费观看 | 99精品国产一区二区三区麻豆 | 波多野结衣久久资源 | 一区二区 久久 | av丝袜在线 | 天天插天天干天天操 | av在线之家电影网站 | 四虎在线免费观看 | 日韩高清激情 | 一区二区激情视频 | 999男人的天堂| 中文字幕4| 婷婷精品国产欧美精品亚洲人人爽 | 欧美日韩成人一区 | 日本少妇久久久 | 国产网红在线观看 | 色婷婷播放 | 亚洲精品18p | 欧美在线1区 | 国产精品免费av | 精品国产一区二区三区四区vr | a级免费观看 | 久久66热这里只有精品 | 亚洲欧洲日韩在线观看 | 色视频在线观看 | 久久免费av | 国产成人av片 | 亚洲国产一区二区精品专区 | 91av视频免费在线观看 | 丁香五婷| 欧美日韩二三区 | 91九色最新| 91麻豆精品91久久久久同性 | 免费中文字幕视频 | 绯色av一区| 免费视频你懂得 | 国产特级毛片aaaaaaa高清 | 99精品国产99久久久久久97 | 日韩av线观看 | 精品福利片 | 99精品视频在线免费观看 | 亚洲资源网 | 欧美在线视频精品 | 免费一级片视频 | 深爱激情久久 | 日韩精品欧美专区 | 亚洲免费在线视频 | 国产手机视频在线观看 | 久久精品这里热有精品 | 在线天堂8√| 国产成人免费高清 | 亚洲第一区精品 | 天天色天天 | 热久久免费视频精品 | 国产精品久久一卡二卡 | 国产精品久久久久久久久久久久午夜片 | 91一区啪爱嗯打偷拍欧美 | 国产精品二区三区 | 免费视频久久久久 | 久久99视频免费观看 | 亚洲欧美日韩国产精品一区午夜 | 欧美精品久久久久久久久免 | 日韩精品久久久久久久电影99爱 | 国产成人在线一区 | 中文在线最新版天堂 | 久久久国产精品麻豆 | 中文字幕在线播放日韩 | 人人爽人人爽人人片av免 | 日本久久久久久久久久久 | 在线观看香蕉视频 | 久久综合视频网 | 色com| 欧美孕妇视频 | 99热这里只有精品在线观看 | 成人影片在线免费观看 | 不卡精品视频 | 免费看色的网站 | 成人黄色片在线播放 | 日韩精品一区二区三区免费观看视频 | 青草草在线视频 | 免费国产视频 | 91色综合| 亚洲不卡av一区二区三区 | 五月婷在线视频 | 亚洲激情五月 | 国产一线二线三线性视频 | 看片在线亚洲 | 日日夜夜噜噜噜 | 欧美一级性 | 丰满少妇一级 | 天天爱综合 | 国产成人一区二 | 国产一区高清在线观看 | av天天干| 久久1电影院 | 久久久www成人免费毛片 | 国产精品乱码一区二三区 | 日韩在线在线 | 国产亚洲永久域名 | 99亚洲天堂| 色婷婷色| 日韩丝袜在线观看 | 在线免费观看一区二区三区 | 亚洲人人网 | 免费在线国产 | 国产精品久久久久久久久久久免费 | 日日噜噜噜噜夜夜爽亚洲精品 | 91精品国产乱码在线观看 | 国产在线高清 | 九九九热精品免费视频观看网站 | 狠狠干网站 | 九色在线视频 | 午夜精品久久久久久久久久久 | 久久成人18免费网站 | 99久在线精品99re8热视频 | 国产精品久久久久一区二区三区共 | 国产一级视频在线观看 | aaa毛片视频| 色视频网站在线观看一=区 a视频免费在线观看 | 国产精品美 | 国产黄色免费在线观看 | 色久av| 日韩三级不卡 | 九九九在线观看视频 | 欧美资源| 欧美一级电影在线观看 | 亚洲精品免费在线视频 | 色综合久久久 | 毛片网站在线 | 亚洲 中文字幕av | 狠狠狠狠狠狠干 | 中文字幕一区二区三区乱码在线 | 午夜视频福利 | 亚洲精品国产高清 | 91成人在线视频 | 国产激情久久久 | 六月丁香激情综合 | av在线免费网| 美女视频是黄的免费观看 | 黄免费在线观看 | 人操人| 亚洲国产一区av | 国产黄色片免费在线观看 | 亚洲精品午夜一区人人爽 | 亚洲午夜精品电影 | 成人a视频在线观看 | 成人免费av电影 | 99精品国产免费久久久久久下载 | 亚洲综合色视频在线观看 | 中文字幕乱码一区二区 | 色五月成人 | 国产日产精品一区二区三区四区的观看方式 | 日韩欧美一区二区三区在线 | 中文 一区二区 | 99国产精品一区 | 成人免费在线观看av | 欧美日韩在线网站 | 天天在线操 | 中文字幕在线观看亚洲 | 久草视频免费 | 日本三级中文字幕在线观看 | 国产免费视频一区二区裸体 | 在线免费精品视频 | 丝袜网站在线观看 | 国产免费人成xvideos视频 | 国产精品久久久久9999吃药 | 欧美一区日韩精品 | 狠狠色狠狠色综合日日小说 | 久久免费公开视频 | 久久免费在线视频 | 超碰在线91 | 国产色拍拍拍拍在线精品 | 69久久久久久久 | 在线视频 日韩 | 欧美色图一区 | 福利视频一区二区 | av在线免费网 | 亚洲精品小视频在线观看 | 丁香六月伊人 | 国产精品一区二区av影院萌芽 | 最近最新mv字幕免费观看 | 丁香六月中文字幕 | 丁香六月五月婷婷 | 日韩在线视频网址 | 一区二区三区免费在线播放 | 成人a级大片 | 中文字幕精品一区 | 成人av中文字幕 | 天天摸天天操天天爽 | 天天色天天射天天综合网 | 久久久久免费精品视频 | 日日干天天爽 | 97在线观看视频国产 | 国产成人精品免高潮在线观看 | 免费一级片久久 | 亚洲aⅴ久久精品 | 欧美日韩一区二区三区在线免费观看 | 免费看黄色毛片 | 国产成人精品免高潮在线观看 | 深爱激情亚洲 | 国产精品普通话 | 黄色免费网 | 亚洲播放一区 | 日韩一区二区三免费高清在线观看 | 久久久影院官网 | 国产精品 美女 | 黄色综合 | 日韩黄视频 | 国产在线精品一区二区三区 | 久久久久久久久久久久av | 免费福利在线视频 | 午夜国产福利在线 | 最近2019年日本中文免费字幕 | 久久视频在线看 | 91超级碰碰| 国产精品免费久久久久久久久久中文 | 色五丁香| 日韩精品短视频 | 欧美色黄 | 中文av在线播放 | 在线激情av电影 | 黄色在线免费观看网站 | 成人在线免费观看网站 | 81国产精品久久久久久久久久 | 国产91影院| 久久婷婷一区 | 超碰在线97国产 | 国产二区视频在线观看 | 九九免费在线观看视频 | 国产美女精品久久久 | 国产99久久久国产精品免费看 | 国产精品一区二区在线观看免费 | 夜添久久精品亚洲国产精品 | 久久综合偷偷噜噜噜色 | 亚洲禁18久人片 | 日日夜夜天天干 | 亚洲成人蜜桃 | 亚洲九九九在线观看 | www.亚洲精品视频 | 久久草在线视频国产 | 一区二区三区在线观看免费视频 | 久久久久久久久久网 | 欧美一级电影免费观看 | 免费日韩av电影 | 极品国产91在线网站 | 手机成人免费视频 | 国产日本三级 | 97视频在线观看视频免费视频 | 久久av中文字幕片 | 91资源在线播放 | 在线91观看 | 日韩1页| www.色婷婷| 免费看一级 | 精品久久久久久久久久岛国gif | 成人久久影院 | 亚洲高清视频在线观看免费 | 久久综合久久久 | av网站有哪些 | 99久久综合国产精品二区 | 曰韩精品| 一区二区欧美在线观看 | 免费观看不卡av | 欧美日韩精品电影 | 天天鲁天天干天天射 | 亚洲综合在线五月天 | 成人久久网 | 欧美一级日韩免费不卡 | 国产99自拍 | 国产一卡久久电影永久 | 国产精品视频一二三 | 久草在在线视频 | 91精品免费视频 | 亚洲免费在线视频 | 349k.cc看片app| 国产97碰免费视频 | 五月婷婷六月丁香 | 国产一级黄色电影 | 久久精品国产成人精品 | 久久国产经典视频 | 国产精品对白一区二区三区 | 亚洲午夜精品福利 | 99视频黄| 国产精品自在线 | 久久久精品网 | 精品久久久久免费极品大片 | 亚洲国产成人精品在线观看 | 亚洲国产精品电影在线观看 | 精品一区二区三区在线播放 | 国产精品女人久久久 | 亚洲精品成人 | 国产午夜视频在线观看 | 91丨porny丨九色 | 国产麻豆电影 | 国产精品一码二码三码在线 | 中文字幕观看在线 | 特级西西444www高清大视频 | 国产91精品看黄网站在线观看动漫 | 久久刺激视频 | 97超碰超碰久久福利超碰 | 黄色一级片视频 | 激情综合婷婷 | 中文在线中文资源 | 国产免费作爱视频 | 国产精品不卡av | 婷婷黄色片 | 亚州精品天堂中文字幕 | 爱爱av网站 | 99久久久国产免费 | 日韩国产精品毛片 | 欧美成年人在线观看 | 国产亚洲精品久久久久久久久久 | 久久精品欧美日韩精品 | 手机在线小视频 | 中文字幕av在线 | 欧美性脚交 | 在线观看av免费观看 | www九九热| 国产综合香蕉五月婷在线 | 日本aaaa级毛片在线看 | 成人三级视频 | 国产福利一区二区三区在线观看 | 国产国语在线 | 亚洲欧洲精品视频 | 久久久久亚洲精品国产 | 精品美女久久久久久免费 | 99视频这里只有 | 久久艹艹 | 成人av亚洲| 国产精品影音先锋 | 亚洲成人午夜av | 人人爽人人干 | 玖玖综合网 | 欧美另类z0zx | 日本中文字幕观看 | 狠狠狠色丁香综合久久天下网 | 最近字幕在线观看第一季 | 激情综合一区 | 天天爱天天操 | 永久免费精品视频网站 | 久久久久国产一区二区三区四区 | 国产欧美精品在线观看 | 国产在线污 | 免费激情在线电影 | 国产精品久久久亚洲 | 黄色aa久久 | 国产一区成人 | 国产91探花 | 91精品久久久久久久久久久久久 | 天天插综合网 | 成人黄色片在线播放 | 精品国产一区二区三区四区在线观看 | 最近中文字幕完整高清 | 在线探花| 亚洲国产美女精品久久久久∴ | 麻花豆传媒一二三产区 | 色狠狠久久av五月综合 | 日韩高清一二三区 | 天天操夜夜干 | 国产一区二区精品91 | 国产手机av在线 | 国产视频亚洲视频 | 黄色软件在线观看视频 | 亚州av成人 | 久久久久久久av | 日本韩国精品在线 | 免费黄色在线播放 | 欧美国产一区二区 | 日日夜夜精品免费 | 欧美成人h版电影 | 国产一级黄色免费看 | 国产中文欧美日韩在线 | 色综合久久66 | 成 人 黄 色 片 在线播放 | 九九热在线精品视频 | 国产亚洲一级高清 | 国产日产亚洲精华av | 色五月成人 | 日本中文字幕在线免费观看 | 亚洲第一成网站 | 精品国产视频在线观看 | 91自拍成人 | 日韩欧美在线影院 | 在线激情电影 | 少妇bbb | 久久精品国亚洲 | 又黄又爽又刺激 | 亚洲国产片色 | 久久字幕网 | 精品国产久 | 992tv在线成人免费观看 | 婷婷成人亚洲综合国产xv88 | 国产日本在线播放 | 一区二区三区韩国免费中文网站 | 超碰人人在线 | 一区二区三区久久 | 亚洲,播放| www国产亚洲精品久久麻豆 | 成人一区二区三区在线 | 91精品人成在线观看 | 色av婷婷| 日本一区二区不卡高清 | 亚洲精品www| 亚洲欧美视屏 | 91亚洲国产成人 | 国产成人久久av免费高清密臂 | 99久久精品久久亚洲精品 | 日本成人免费在线观看 | 91精品伦理 | 高清av免费一区中文字幕 | 国产精品一区二区三区视频免费 | 亚洲电影影音先锋 | 91视频最新网址 | 六月丁香婷婷久久 | 亚洲精品乱码久久久久久按摩 | 国产免费视频在线 | 亚洲午夜精品一区 | 国内一级片在线观看 | 精品久久中文 | 亚洲精品综合一二三区在线观看 | 成人99免费视频 | 午夜黄色影院 | 制服丝袜天堂 | 日本三级全黄少妇三2023 | 日韩高清片 | 欧美最猛性xxxx | 麻花豆传媒mv在线观看网站 | 国产一区在线免费观看视频 | 天天天天天天干 | 午夜免费福利视频 | 97色噜噜 | 婷婷色在线视频 | www.国产视频| 日韩电影在线一区 | 亚洲高清国产视频 | 久久99亚洲精品久久久久 | 六月丁香婷| 在线免费观看视频你懂的 | 三级黄色网络 | 久久免费视频在线 | 欧美 日韩 性 | 国产精选视频 | 人人澡人人模 | 91污视频在线观看 | 久久国产精品99久久久久久老狼 | 亚洲精品美女久久久久网站 | 久久99精品国产麻豆宅宅 | 在线色网站 | 中文字幕永久在线 | 正在播放国产一区二区 | www.eeuss影院av撸 | 六月激情久久 | 久久精品中文字幕少妇 | 日韩艹 | 成人丁香花 | 日韩丝袜在线观看 | 五月婷婷香蕉 | 亚洲网站在线 | 久久精品老司机 | 日韩精品国产一区 | 午夜精品一区二区三区在线观看 | 涩涩伊人 | 国内精品视频免费 | 国产高清视频在线免费观看 | 激情综合五月天 | 狠狠干,狠狠操 | 91亚洲精品国偷拍自产在线观看 | 人人草网站 | 国产精品毛片久久久久久久久久99999999 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 中文字幕制服丝袜av久久 | 日韩高清一区 | 久久免费视频国产 | 欧美日一级片 | 国产专区在线播放 | 日韩在线精品 | 久草在线视频免赞 | 色姑娘综合 | 欧美日韩亚洲国产一区 | 国产精品久久综合 | 午夜视频在线观看一区二区三区 | 亚洲激情国产精品 | www.夜夜操 | 日韩高清在线一区 | 精品免费视频. | 久久久久久久久免费 | 国产96在线视频 | 欧美极品xxx | 久久久久久久久久久久影院 | 手机成人在线电影 | 中文字幕在线视频一区二区三区 | 久久 在线 | 五月婷婷综合激情 | 狠狠躁18三区二区一区ai明星 | 就操操久久 | 黄色毛片视频 | 黄色大片日本 | 成人精品福利 | 天天综合成人 | 日韩黄色在线电影 | 午夜丁香视频在线观看 | 亚洲精品视频免费看 | 久久久久久久久久电影 | 欧美激情一区不卡 | 中文字幕色在线 | 激情综合站 | 字幕网在线观看 | 免费看在线看www777 | 日日久视频 | 亚洲观看黄色网 | 欧美日韩有码 | 久草网站在线观看 | 婷婷在线免费观看 | 99精品久久99久久久久 | 日韩精品一区电影 | 免费日p视频 | 天堂网中文在线 | 久久久激情网 | 一区中文字幕电影 | 久久人人97超碰精品888 | 日韩av片免费在线观看 | 久草在线欧美 | 亚洲欧美日韩精品一区二区 | 天天射天天干天天爽 | 色中文字幕在线观看 | 久草在线视频首页 | 美女视频是黄的免费观看 | 国产日韩一区在线 | 免费看片亚洲 | 国产成人三级在线播放 | 日韩在线免费高清视频 | 天天天综合 | 亚洲精品一区二区三区高潮 | 国产在线不卡精品 | 久久99热国产| 免费视频xnxx com | 在线观看国产一区二区 | 韩国av一区二区三区 | 婷婷成人亚洲综合国产xv88 | 夜夜躁狠狠燥 | 久久免费视频网站 | 99热精品国产 | 国产精品系列在线播放 | 免费观看性生交大片3 | 日日夜精品 | 日本久久久久久久久久久 | 色网站在线观看 | 99精品免费在线 | 丁香六月欧美 | 狠狠躁夜夜a产精品视频 | 一区二区在线不卡 | 国产在线一区二区 | 99精品国产成人一区二区 | 亚洲国产三级在线观看 | 久久视频在线视频 | 五月在线视频 | 一区二区三区视频网站 | 日韩一区正在播放 | 夜夜夜夜爽 | 亚洲综合国产精品 | 在线播放日韩 | 久久黄网站| 久草综合在线观看 | 4p变态网欧美系列 | 国产一区二区久久久久 | 免费a视频在线 |