diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 18 | ||||
| -rw-r--r-- | clang/lib/Headers/avx2intrin.h | 8 | ||||
| -rw-r--r-- | clang/lib/Headers/avx512bwintrin.h | 4 | ||||
| -rw-r--r-- | clang/lib/Headers/emmintrin.h | 8 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 14 | 
5 files changed, 24 insertions, 28 deletions
| diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 08175b3dfc4..2393957e1b6 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -9690,11 +9690,10 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,                                         "vperm");    } -  case X86::BI__builtin_ia32_pslldqi128: -  case X86::BI__builtin_ia32_pslldqi256: -  case X86::BI__builtin_ia32_pslldqi512: { -    // Shift value is in bits so divide by 8. -    unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue() >> 3; +  case X86::BI__builtin_ia32_pslldqi128_byteshift: +  case X86::BI__builtin_ia32_pslldqi256_byteshift: +  case X86::BI__builtin_ia32_pslldqi512_byteshift: { +    unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue();      llvm::Type *ResultType = Ops[0]->getType();      // Builtin type is vXi64 so multiply by 8 to get bytes.      unsigned NumElts = ResultType->getVectorNumElements() * 8; @@ -9721,11 +9720,10 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,                                              "pslldq");      return Builder.CreateBitCast(SV, Ops[0]->getType(), "cast");    } -  case X86::BI__builtin_ia32_psrldqi128: -  case X86::BI__builtin_ia32_psrldqi256: -  case X86::BI__builtin_ia32_psrldqi512: { -    // Shift value is in bits so divide by 8. -    unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue() >> 3; +  case X86::BI__builtin_ia32_psrldqi128_byteshift: +  case X86::BI__builtin_ia32_psrldqi256_byteshift: +  case X86::BI__builtin_ia32_psrldqi512_byteshift: { +    unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue();      llvm::Type *ResultType = Ops[0]->getType();      // Builtin type is vXi64 so multiply by 8 to get bytes.      unsigned NumElts = ResultType->getVectorNumElements() * 8; diff --git a/clang/lib/Headers/avx2intrin.h b/clang/lib/Headers/avx2intrin.h index 7af494a0ab0..22c00f9b8ea 100644 --- a/clang/lib/Headers/avx2intrin.h +++ b/clang/lib/Headers/avx2intrin.h @@ -515,10 +515,10 @@ _mm256_sign_epi32(__m256i __a, __m256i __b)  }  #define _mm256_slli_si256(a, imm) \ -  (__m256i)__builtin_ia32_pslldqi256((__v4di)(__m256i)(a), (int)(imm) * 8) +  (__m256i)__builtin_ia32_pslldqi256_byteshift((__v4di)(__m256i)(a), (int)(imm))  #define _mm256_bslli_epi128(a, imm) \ -  (__m256i)__builtin_ia32_pslldqi256((__v4di)(__m256i)(a), (int)(imm) * 8) +  (__m256i)__builtin_ia32_pslldqi256_byteshift((__v4di)(__m256i)(a), (int)(imm))  static __inline__ __m256i __DEFAULT_FN_ATTRS  _mm256_slli_epi16(__m256i __a, int __count) @@ -581,10 +581,10 @@ _mm256_sra_epi32(__m256i __a, __m128i __count)  }  #define _mm256_srli_si256(a, imm) \ -  (__m256i)__builtin_ia32_psrldqi256((__m256i)(a), (int)(imm) * 8) +  (__m256i)__builtin_ia32_psrldqi256_byteshift((__m256i)(a), (int)(imm))  #define _mm256_bsrli_epi128(a, imm) \ -  (__m256i)__builtin_ia32_psrldqi256((__m256i)(a), (int)(imm) * 8) +  (__m256i)__builtin_ia32_psrldqi256_byteshift((__m256i)(a), (int)(imm))  static __inline__ __m256i __DEFAULT_FN_ATTRS  _mm256_srli_epi16(__m256i __a, int __count) diff --git a/clang/lib/Headers/avx512bwintrin.h b/clang/lib/Headers/avx512bwintrin.h index 471ec38191a..444df35c3e6 100644 --- a/clang/lib/Headers/avx512bwintrin.h +++ b/clang/lib/Headers/avx512bwintrin.h @@ -1387,7 +1387,7 @@ _mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B)  }  #define _mm512_bslli_epi128(a, imm) \ -  (__m512i)__builtin_ia32_pslldqi512((__v8di)(__m512i)(a), (int)(imm) * 8) +  (__m512i)__builtin_ia32_pslldqi512_byteshift((__v8di)(__m512i)(a), (int)(imm))  static __inline__ __m512i __DEFAULT_FN_ATTRS  _mm512_srlv_epi16(__m512i __A, __m512i __B) @@ -1522,7 +1522,7 @@ _mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)  }  #define _mm512_bsrli_epi128(a, imm) \ -  (__m512i)__builtin_ia32_psrldqi512((__v8di)(__m512i)(a), (int)(imm) * 8) +  (__m512i)__builtin_ia32_psrldqi512_byteshift((__v8di)(__m512i)(a), (int)(imm))  static __inline__ __m512i __DEFAULT_FN_ATTRS  _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A) diff --git a/clang/lib/Headers/emmintrin.h b/clang/lib/Headers/emmintrin.h index 6c64d41517a..df98a81d05c 100644 --- a/clang/lib/Headers/emmintrin.h +++ b/clang/lib/Headers/emmintrin.h @@ -2794,10 +2794,10 @@ _mm_xor_si128(__m128i __a, __m128i __b)  ///    \a a.  /// \returns A 128-bit integer vector containing the left-shifted value.  #define _mm_slli_si128(a, imm) \ -  (__m128i)__builtin_ia32_pslldqi128((__v2di)(__m128i)(a), (int)(imm) * 8) +  (__m128i)__builtin_ia32_pslldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))  #define _mm_bslli_si128(a, imm) \ -  (__m128i)__builtin_ia32_pslldqi128((__v2di)(__m128i)(a), (int)(imm) * 8) +  (__m128i)__builtin_ia32_pslldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))  /// Left-shifts each 16-bit value in the 128-bit integer vector operand  ///    by the specified number of bits. Low-order bits are cleared. @@ -3011,10 +3011,10 @@ _mm_sra_epi32(__m128i __a, __m128i __count)  ///    \a a.  /// \returns A 128-bit integer vector containing the right-shifted value.  #define _mm_srli_si128(a, imm) \ -  (__m128i)__builtin_ia32_psrldqi128((__v2di)(__m128i)(a), (int)(imm) * 8) +  (__m128i)__builtin_ia32_psrldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))  #define _mm_bsrli_si128(a, imm) \ -  (__m128i)__builtin_ia32_psrldqi128((__v2di)(__m128i)(a), (int)(imm) * 8) +  (__m128i)__builtin_ia32_psrldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))  /// Right-shifts each of 16-bit values in the 128-bit integer vector  ///    operand by the specified number of bits. High-order bits are cleared. diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index dfe4373f33b..9de512c7008 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -2821,6 +2821,12 @@ bool Sema::CheckX86BuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {    case X86::BI__builtin_ia32_fpclasspd512_mask:    case X86::BI__builtin_ia32_fpclasssd_mask:    case X86::BI__builtin_ia32_fpclassss_mask: +  case X86::BI__builtin_ia32_pslldqi128_byteshift: +  case X86::BI__builtin_ia32_pslldqi256_byteshift: +  case X86::BI__builtin_ia32_pslldqi512_byteshift: +  case X86::BI__builtin_ia32_psrldqi128_byteshift: +  case X86::BI__builtin_ia32_psrldqi256_byteshift: +  case X86::BI__builtin_ia32_psrldqi512_byteshift:      i = 1; l = 0; u = 255;      break;    case X86::BI__builtin_ia32_vperm2f128_pd256: @@ -2917,14 +2923,6 @@ bool Sema::CheckX86BuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {    case X86::BI__builtin_ia32_rndscaless_round_mask:      i = 4; l = 0; u = 255;      break; -  case X86::BI__builtin_ia32_pslldqi128: -  case X86::BI__builtin_ia32_pslldqi256: -  case X86::BI__builtin_ia32_pslldqi512: -  case X86::BI__builtin_ia32_psrldqi128: -  case X86::BI__builtin_ia32_psrldqi256: -  case X86::BI__builtin_ia32_psrldqi512: -    i = 1; l = 0; u = 2047; -    break;    }    return SemaBuiltinConstantArgRange(TheCall, i, l, u);  } | 

