• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            c++初學者

            專注技術開發

            簡單介紹SSE指令的功能

            ADDPS

            格式:ADDPS xmm1, xmm2/m128

            功能:兩組單精度數相加

            算法:

            DEST[31-0]   = DEST[31-0]   + SRC/m128[31-0]  ;
            DEST[63-32]  = DEST[63-32]  + SRC/m128[63-32] ;
            DEST[95-64]  = DEST[95-64]  + SRC/m128[95-64] ;
            DEST[127-96] = DEST[127-96] + SRC/m128[127-96];

            ADDSS

            格式:ADDSS xmm1, xmm2/m32

            功能:低位單精度數相加

            算法:

            DEST[31-0]   = DEST[31-0] + SRC/m32[31-0];
            DEST[63-32]  = DEST[63-32] ;
            DEST[95-64]  = DEST[95-64] ;
            DEST[127-96] = DEST[127-96];
               
            ANDNPS

            格式:ANDNPS xmm1, xmm2/m128

            功能:xmm1“取反”再和 xmm2/m128 求“與”運算

            算法:

            DEST[127-0] = NOT (DEST[127-0]) AND SRC/m128[127-0];

            ANDPS

            格式:ANDPS xmm1, xmm2/m128

            功能:進行兩個寄存器的邏輯“與”操作

            算法:

            DEST[127-0] AND= SRC/m128[127-0];

            CMPPS

            格式:CMPPS xmm1, xmm2/m128, imm8

            功能:比較兩個寄存器的數值,根據imm8的不同數值采用不同的比較方法

            imm8 == 0, ==; imm8 == 1,  <; imm8 == 2,  <=; imm8 == 3,  ?;
            imm8 == 4, !=; imm8 == 5, !<; imm8 == 6, !<=; imm8 == 7, !?;

            算法:

            IF     (imm8 = 0) THEN
                OP = "EQ";
            ELSEIF (imm8 = 1) THEN
                OP = "LT";
            ELSEIF (imm8 = 2) THEN
                OP = "LE";
            ELSEIF (imm8 = 3) THEN
                OP = "UNORD";
            ELSEIF (imm8 = 4) THEN
                OP = "NE";
            ELSEIF (imm8 = 5) THEN
                OP = "NLT";
            ELSEIF (imm8 = 6) THEN
                OP = "NLE";
            ELSEIF (imm8 = 7) THEN
                OP = "ORD";
            FI

            CMP0 = DEST[31-0]   OP SRC/m128[31-0];
            CMP1 = DEST[63-32]  OP SRC/m128[63-32];
            CMP2 = DEST [95-64] OP SRC/m128[95-64];
            CMP3 = DEST[127-96] OP SRC/m128[127-96];

            IF (CMP0 = TRUE) THEN
                DEST[31-0] = 0XFFFFFFFF;
            ELSE
                DEST[31-0] = 0X00000000;
            FI
            IF (CMP1 = TRUE) THEN
                DEST[63-32] = 0XFFFFFFFF;
            ELSE
                DEST[63-32] = 0X00000000;
            FI
            IF (CMP2 = TRUE) THEN
                DEST[95-64] = 0XFFFFFFFF;
            ELSE
                DEST[95-64] = 0X00000000;
            FI
            IF (CMP3 = TRUE) THEN
                DEST[127-96] = 0XFFFFFFFF;
            ELSE
                DEST[127-96] = 0X00000000;
            FI

            其它:你可以使用下面的可讀性良好的指令

            指令                        實現
            CMPEQPS    xmm1, xmm2;     CMPPS xmm1,xmm2, 0
            CMPLTPS    xmm1, xmm2;     CMPPS xmm1,xmm2, 1
            CMPLEPS    xmm1, xmm2;     CMPPS xmm1,xmm2, 2
            CMPUNORDPS xmm1, xmm2;     CMPPS xmm1,xmm2, 3
            CMPNEQPS   xmm1, xmm2;     CMPPS xmm1,xmm2, 4
            CMPNLTPS   xmm1, xmm2;     CMPPS xmm1,xmm2, 5
            CMPNLEPS   xmm1, xmm2;     CMPPS xmm1,xmm2, 6
            CMPORDPS   xmm1, xmm2;     CMPPS xmm1,xmm2, 7

            CMPSS

            格式:CMPSS xmm1, xmm2/m32, imm8

            功能:低位單精度數做比較

            算法:算法同CMPPS相似,只不過只是針對DEST[31-0]進行操作。

            同樣也可以利用可讀性更好的指令

            指令                        實現
            CMPEQSS    xmm1, xmm2       CMPSS xmm1,xmm2, 0
            CMPLTSS    xmm1, xmm2       CMPSS xmm1,xmm2, 1
            CMPLESS    xmm1, xmm2       CMPSS xmm1,xmm2, 2
            CMPUNORDSS xmm1, xmm2       CMPSS xmm1,xmm2, 3
            CMPNEQSS   xmm1, xmm2       CMPSS xmm1,xmm2, 4
            CMPNLTSS   xmm1, xmm2       CMPSS xmm1,xmm2, 5
            CMPNLESS   xmm1, xmm2       CMPSS xmm1,xmm2, 6
            CMPORDSS   xmm1, xmm2       CMPSS xmm1,xmm2, 7

            COMISS

            格式:COMISS xmm1, xmm2/m32

            功能:比較低位數并且設置標識位

            算法:

            OF = 0;
            SF = 0;
            AF = 0;
            IF     ((DEST[31-0] UNORD SRC/m32[31-0]) = TRUE) THEN
                ZF = 1;
                PF = 1;
                CF = 1;
            ELSEIF ((DEST[31-0] GTRTHAN SRC/m32[31-0]) = TRUE)THEN
                ZF = 0;
                PF = 0;
                CF = 0;
            ELSEIF ((DEST[31-0] LESSTHAN SRC/m32[31-0]) = TRUE THEN
                ZF = 0;
                PF = 0;
                CF = 1;
            ELSE
                ZF = 1;
                PF = 0;
                CF = 0;
            FI

            CVTPI2PS

            格式:CVTPI2PS xmm, mm/m64

            功能:32位整數轉變為浮點數

            算法:

            DEST[31-0]   = (float) (SRC/m64[31-0]) ;
            DEST[63-32]  = (float) (SRC/m64[63-32]);
            DEST[95-64]  = DEST[95-64] ;
            DEST[127-96] = DEST[127-96];
            CVTPS2PI

            格式:CVTPS2PI mm, xmm/m64

            功能:低位的兩個浮點數轉變為整數

            算法:

            DEST[31-0] = (int) (SRC/m64[31-0]);
            DEST[63-32]= (int) (SRC/m64[63-32]);

            CVTSI2SS

            格式:CVTSI2SS xmm, r/m32

            功能:32位整數轉變為浮點數,存入低位

            算法:

            DEST[31-0]   = (float) (R/m32);
            DEST[63-32]  = DEST[63-32] ;
            DEST[95-64]  = DEST[95-64] ;
            DEST[127-96] = DEST[127-96];

            CVTSS2SI

            格式:CVTSS2SI r32, xmm/m32

            功能:低位的浮點數轉變為32位整數

            算法:

            r32 = (int) (SRC/m32[31-0]);

            CVTTPS2PI

            格式:CVTTPS2PI mm, xmm/m64

            功能:低位的兩個浮點數轉變為整數,并且舍位

            算法:

            DEST[31-0]  = (int) (SRC/m64[31-0]) ;
            DEST[63-32] = (int) (SRC/m64[63-32]);

            CVTTSS2SI

            格式:CVTTSS2SI r32, xmm/ m32

            功能:將最低位浮點數轉換為整數,并舍位。

            算法:

            r32 = (INT) (SRC/m32[31-0]);

            DIVPS

            格式:DIVPS xmm1, xmm2/m128

            功能:單精度數除法運算

            算法:

            DEST[31-0]   = DEST[31-0]   / (SRC/m128[31-0])  ;
            DEST[63-32]  = DEST[63-32]  / (SRC/m128[63-32]) ;
            DEST[95-64]  = DEST[95-64]  / (SRC/m128[95-64]) ;
            DEST[127-96] = DEST[127-96] / (SRC/m128[127-96]);

            DIVSS

            格式:DIVSS xmm1, xmm2/m32

            功能:低位單精度數除法

            算法:

            DEST[31-0]   = DEST[31-0] / (SRC/m32[31-0]);
            DEST[63-32]  = DEST[63-32] ;
            DEST[95-64]  = DEST[95-64] ;
            DEST[127-96] = DEST[127-96];

            EMMS

            格式:EMMS

            功能:將浮點標識字置空

            算法:

            FPUTagWord <- FFFF

            FXRSTOR

            格式:FXRSTOR m512byte

            功能:從m512byte中裝入FP,MMX,以及SSE的狀態

            算法:

            FP and MMX state and Streaming SIMD Extension state = m512byte;

            FXSAVE

            格式:FXSAVE m512byte

            功能:向m512byte中存入FP,MMX,以及SSE的狀態

            算法:

            m512byte = FP and MMX state and Streaming SIMD Extension state;

            LDMXCSR

            格式:LDMXCSR m32

            功能:裝入SSE的狀態控制字

            算法:

            MXCSR = m32;

            MAXPS

            格式:MAXPS xmm1, xmm2/m128

            功能:返回最大值

            算法:

            IF (DEST[31-0]=NaN) THEN
                DEST[31-0] = SRC[31-0];
            ELSEIF (SRC[31-0] = NaN) THEN
                DEST[31-0] = SRC[31-0];
            ELSEIF (DEST[31-0] > SRC/m128[31-0]) THEN
                DEST[31-0] = DEST[31-0];
            ELSE
                DEST[31-0] = SRC/m128[31-0];
            FI
            IF (DEST[63-32]=NaN) THEN
                DEST[63-32] = SRC[63-32];
            ELSEIF (SRC[63-32] = NaN) THEN
                DEST[63-32] = SRC[63-32];
            ELSEIF (DEST[63-32] > SRC/m128[63-32]) THEN
                DEST[63-32] = DEST[63-32];
            ELSE
                DEST[63-32] = SRC/m128[63-32];
            FI
            IF (DEST[95-64]=NaN) THEN
                DEST[95-64] = SRC[95-64];
            ELSEIF (SRC[95-64] = NaN) THEN
                DEST[95-64] = SRC[95-64];
            ELSEIF (DEST[95-64] > SRC/m128[95-64]) THEN
                DEST[95-64] = DEST[95-64];
            ELSE
                DEST[95-64] = SRC/m128[95-64];
            FI
            IF (DEST[127-96]=NaN) THEN
                DEST[127-96] = SRC[127-96];
            ELSEIF (SRC[127-96] = NaN) THEN
                DEST[127-96] = SRC[127-96];
            ELSEIF (DEST[127-96] > SRC/m128[127-96]) THEN
                DEST[127-96] = DEST[127-96];
            ELSE
                DEST[127-96] = SRC/m128[127-96];
            FI

            MAXSS

            格式:MAXSS xmm1, xmm2/m32

            功能:返回低位最大值

            算法:同上面類似,區別在于只對DEST[31-0]進行操作

            MINPS

            格式:MINPS xmm1, xmm2/m128

            功能:返回最小值

            算法:略

            MINSS

            格式:MINSS xmm1, xmm2/m32

            功能:返回低位最小值

            算法:略

            MOVAPS

            格式:MOVAPS xmm1, xmm2/m128 或 MOVAPS xmm2/m128, xmm1

            功能:對齊的數據傳輸指令

            算法:

            IF (destination = DEST) THEN
                IF (SRC = m128)THEN (* load instruction *)
                    DEST[127-0] = m128;
                ELSE(* move instruction *)
                    DEST[127=0] = SRC[127-0];
                FI;
            ELSE
                IF (destination = m128)THEN (* store instruction *)
                    m128 = SRC[127-0];
                ELSE(* move instruction *)
                    DEST[127-0] = SRC[127-0];
                FI;
            FI;
               
            MOVHLPS

            格式:MOVHLPS xmm1, xmm2

            功能:高位的兩個數傳向低位

            算法:

            DEST[127-64] = DEST[127-64];
            DEST[63-0]   = SRC[127-64] ;

            MOVHPS

            格式:MOVHPS xmm, m64 或 MOVHPS m64, xmm

            功能:高位數據傳輸指令

            算法:

            IF (destination = DEST) THEN(* load instruction *)
                DEST[127-64] = m64;
                DEST[31-0] = DEST[31-0];
                DEST[63-32] = DEST[63-32];
                ELSE (* store instruction *)
                m64 = SRC[127-64];
            FI;
               
            MOVLPS

            格式:MOVLPS xmm, m64 或 MOVLPS m64, xmm

            功能:低位數據傳輸指令

            算法:

            IF (destination = DEST) THEN(* load instruction *)
                DEST[63-0] = m64;
                DEST[95-64] = DEST[95-64];
                DEST[127-96] = DEST[127-96];
            ELSE(* store instruction *)
                m64 = DEST[63-0];
            FI
               
            MOVLHPS

            格式:MOVLHPS xmm1, xmm2

            功能:低位的兩個數傳向高位

            算法:

            DEST[127-64] = SRC[63-0];
            DEST[63-0]   = DEST[63-0];

            MOVMSKPS

            格式:MOVMSKPS r32, xmm

            功能:掩碼移入32位寄存器

            算法:

            r32[0]     = SRC[31] ;
            r32[1]     = SRC[63] ;
            r32[2]     = SRC[95] ;
            r32[3]     = SRC[127];
            r32[7-4]   = 0X0     ;
            r32[15-8]  = 0X00    ;
            r32[31-16] = 0X0000  ;

            MOVNTPS

            格式:MOVNTPS m128, xmm

            功能:將數據直接存入內存,減小對緩存的壓力

            算法:

            m128 = SRC;

            MOVSS

            格式:MOVSS xmm1, xmm2/m32 或 MOVSS xmm2/m32, xmm1

            功能:最低位數據的傳輸指令

            算法:

            IF (destination = DEST) THEN
                IF (SRC == m32) THEN(* load instruction *)
                    DEST[31-0] = m32;
                    DEST [63-32] = 0X00000000;
                    DEST [95-64] = 0X00000000;
                    DEST [127-96] = 0X00000000;
                ELSE(* move instruction *)
                    DEST [31-0] = SRC[31-0];
                    DEST [63-32] = DEST [63-32];
                    DEST [95-64] = DEST [95-64];
                    DEST [127-96] = DEST [127-96];
                FI
            ELSE
                IF (destination = m32) THEN(* store instruction *)
                    m32 = SRC[31-0];
                ELSE (* move instruction *)
                    DEST [31-0] = SRC[31-0]
                    DEST [63-32] = DEST[63-32];
                    DEST [95-64] = DEST [95-64];
                    DEST [127-96] = DEST [127-96];
                FI
            FI

            MOVUPS

            格式:MOVUPS xmm1, xmm2/m128 或 MOVUPS xmm2/m128, xmm1

            功能:非對齊數據的傳輸指令

            算法:

            IF (destination = xmm) THEN
                IF (SRC = m128)THEN(* load instruction *)
                    DEST[127-0] = m128;
                ELSE (* move instruction *)
                    DEST[127-0] = SRC[127-0];
                FI
            ELSE
                IF (destination = m128) THEN(* store instruction *)
                    m128 = SRC[127-0];
                ELSE (* move instruction *)
                    DEST[127-0] = SRC[127-0];
                FI
            FI

            MULPS

            格式:MULPS xmm1, xmm2/m128

            功能:單精度數相乘

            算法:

            DEST[31-0]   = DEST[31-0]   * SRC/m128[31-0]  ;
            DEST[63-32]  = DEST[63-32]  * SRC/m128[63-32] ;
            DEST[95-64]  = DEST[95-64]  * SRC/m128[95-64] ;
            DEST[127-96] = DEST[127-96] * SRC/m128[127-96];

            MULSS

            格式:MULSS xmm1, xmm2/m32

            功能:最低位的單精度數相乘

            算法:

            DEST[31-0]   = DEST[31-0] * SRC/m32[31-0];
            DEST[63-32]  = DEST[63-32] ;
            DEST[95-64]  = DEST[95-64] ;
            DEST[127-96] = DEST[127-96];

            ORPS

            格式:ORPS xmm1, xmm2/m128

            功能:求或運算

            算法:

            DEST[127-0] |= SRC/m128[127-0];
            RCPPS

            格式:RCPPS xmm1, xmm2/m128

            功能:求倒數的近似值

            算法:

            DEST[31-0]   = APPROX (1.0/(SRC/m128[31-0]))  ;
            DEST[63-32]  = APPROX (1.0/(SRC/m128[63-32])) ;
            DEST[95-64]  = APPROX (1.0/(SRC/m128[95-64])) ;
            DEST[127-96] = APPROX (1.0/(SRC/m128[127-96]));

            RCPSS

            格式:RCPSS xmm1, xmm2/m32

            功能:求最低位的倒數的近似值

            算法:

            DEST[31-0]   = APPROX (1.0/(SRC/m32[31-0]));
            DEST[63-32]  = DEST[63-32] ;
            DEST[95-64]  = DEST[95-64] ;
            DEST[127-96] = DEST[127-96];

            RSQRTPS

            格式:RSQRTPS xmm1, xmm2/m128

            功能:求倒數平方根的近似值

            算法:

            DEST[31-0] = APPROX (1.0/SQRT(SRC/m128[31-0]))    ;
            DEST[63-32] = APPROX (1.0/SQRT(SRC/m128[63-32]))  ;
            DEST[95-64] = APPROX (1.0/SQRT(SRC/m128[95-64]))  ;
            DEST[127-96] = APPROX (1.0/SQRT(SRC/m128[127-96]));

            RSQRTSS

            格式:RSQRTSS xmm1, xmm2/m32

            功能:求最低位倒數平方根的近似值

            算法:

            DEST[31-0]   = APPROX (1.0/SQRT(SRC/m32[31-0]));
            DEST[63-32]  = DEST[63-32] ;
            DEST[95-64]  = DEST[95-64] ;
            DEST[127-96] = DEST[127-96];

            SHUFPS

            格式:SHUFPS xmm1, xmm2/m128, imm8

            功能:打亂順序

            算法:

            FP_SELECT = (imm8 >> 0) AND 0X3;
            IF (FP_SELECT = 0) THEN
                DEST[31-0] = DEST[31-0];
            ELSEIF (FP_SELECT = 1) THEN
                DEST[31-0] = DEST[63-32];
            ELSEIF (FP_SELECT = 2) THEN
                DEST[31-0] = DEST[95-64];
            ELSE
                DEST[31-0] = DEST[127-96];
            FI

            FP_SELECT = (imm8 >> 2) AND 0X3;
            IF (FP_SELECT = 0) THEN
                DEST[63-32] = DEST[31-0];
            ELSEIF (FP_SELECT = 1) THEN
                DEST[63-32] = DEST[63-32];
            ELSEIF (FP_SELECT = 2) THEN
                DEST[63-32] = DEST[95-64];
            ELSE
                DEST[63-32] = DEST[127-96];
            FI

            FP_SELECT = (imm8 >> 4) AND 0X3;
            IF (FP_SELECT = 0) THEN
                DEST[95-64] = SRC/m128[31-0];
            ELSEIF (FP_SELECT = 1) THEN
                DEST[95-64] = SRC/m128 [63-32];
            ELSEIF (FP_SELECT = 2) THEN
                DEST[95-64] = SRC/m128 [95-64];
            ELSE
                DEST[95-64] = SRC/m128 [127-96];
            FI

            FP_SELECT = (imm8 >> 6) AND 0X3;
            IF (FP_SELECT = 0) THEN
                DEST[127-96] = SRC/m128 [31-0];
            ELSEIF (FP_SELECT = 1) THEN
                DEST[127-96] = SRC/m128 [63-32];
            ELSEIF (FP_SELECT = 2) THEN
                DEST[127-96] = SRC/m128 [95-64];
            ELSE
                DEST[127-96] = SRC/m128 [127-96];
            FI

            SQRTPS

            格式:SQRTPS xmm1, xmm2/m128

            功能:求平方根

            算法:

            DEST[31-0]   = SQRT (SRC/m128[31-0] );
            DEST[63-32]  = SQRT (SRC/m128[63-32]);
            DEST[95-64]  = SQRT (SRC/m128[95-64]);
            DEST[127-96] = SQRT (SRC/m128[127-96]);

            SQRTSS

            格式:SQRTSS xmm1, xmm2/m32

            功能:最低位數求平方根

            算法:

            DEST[31-0]   = SQRT (SRC/m32[31-0]);
            DEST[63-32]  = DEST[63-32];
            DEST[95-64]  = DEST[95-64];
            DEST[127-96] = DEST[127-96];

            STMXCSR

            格式:STMXCSR m32

            功能:存儲SSE控制字

            算法:

            m32 = MXCSR;

            SUBPS

            格式:SUBPS xmm1, xmm2/m128

            功能:單精度數的減法運算

            算法:

            DEST[31-0]   = DEST[31-0]   - SRC/m128[31-0] ;
            DEST[63-32]  = DEST[63-32]  - SRC/m128[63-32];
            DEST[95-64]  = DEST[95-64]  - SRC/m128[95-64];
            DEST[127-96] = DEST[127-96] - SRC/m128[127-96];

            SUBSS

            格式:SUBSS xmm1, xmm2/m32

            功能:最低位數相減

            算法:

            DEST[31-0] = DEST[31-0] - SRC/m32[31-0];
            DEST[63-32] = DEST[63-32];
            DEST[95-64] = DEST[95-64];
            DEST[127-96] = DEST[127-96];

            UCOMISS

            格式:UCOMISS xmm1, xmm2/m32

            功能:比較低位數并且設置標志位

            算法:

            OF = 0;
            SF = 0;
            AF = 0;
            IF ((DEST[31-0] UNORD SRC/m32[31-0]) = TRUE) THEN
                ZF = 1;
                PF = 1;
                CF = 1;
            ELSEIF ((DEST[31-0] GTRTHAN SRC/m32[31-0]) = TRUE)THEN
                ZF = 0;
                PF = 0;
                CF = 0;
            ELSEIF ((DEST[31-0] LESSTHAN SRC/m32[31-0]) = TRUE THEN
                ZF = 0;
                PF = 0;
                CF = 1;
            ELSE
                ZF = 1;
                PF = 0;
                CF = 0;
            FI

            UNPCKHPS

            格式:UNPCKHPS xmm1, xmm2/m128

            功能:高位兩數交替傳輸

            算法:

            DEST[31-0] = DEST[95-64];
            DEST[63-32] = SRC/m128[95-64];
            DEST[95-64] = DEST[127-96];
            DEST[127-96] = SRC/m128[127-96];

            UNPCKLPS

            格式:UNPCKLPS xmm1, xmm2/m128

            功能:低位兩數交替傳輸

            算法:

            DEST[31-0] = DEST[31-0];
            DEST[63-32] = SRC/m128[31-0];
            DEST[95-64] = DEST[63-32];
            DEST[127-96] = SRC/m128[63-32];

            XORPS

            格式:XORPS xmm1, xmm2/m128

            功能:異或運算

            算法:

            DEST[127-0] = DEST/m128[127-0] XOR SRC/m128[127-0]

            posted on 2008-09-02 18:17 大海 閱讀(1377) 評論(0)  編輯 收藏 引用 所屬分類: 匯編語言

            国内精品免费久久影院| 99久久精品免费看国产一区二区三区| 亚洲精品蜜桃久久久久久| 亚洲AⅤ优女AV综合久久久| 久久人人爽人人爽人人片AV不 | 久久久久无码精品国产不卡| 久久久久人妻精品一区二区三区| 日本一区精品久久久久影院| 亚洲精品视频久久久| 蜜臀av性久久久久蜜臀aⅴ| 国产高清美女一级a毛片久久w| 久久一区二区三区免费| 久久久久久精品免费看SSS| 精品一区二区久久| 精品国产乱码久久久久久呢| 国产精品99久久99久久久| 久久免费视频一区| 久久综合九色综合欧美狠狠| 波多野结衣久久| 很黄很污的网站久久mimi色| 无码AV中文字幕久久专区| 久久99精品免费一区二区| 国产精品久久免费| 欧美牲交A欧牲交aⅴ久久| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 少妇精品久久久一区二区三区| 久久国产精品偷99| 久久综合亚洲欧美成人| 2021国产精品久久精品| 国产高潮国产高潮久久久91 | 狠狠综合久久AV一区二区三区| 成人精品一区二区久久| 久久99精品久久久久久久不卡| 思思久久99热只有频精品66| 久久国产视频网| 九九久久精品无码专区| 国产成人无码精品久久久久免费| 国产精品久久久久久影院| 国产99精品久久| 97久久国产亚洲精品超碰热| 久久精品国产精品亚洲毛片|