]> granicus.if.org Git - clang/commitdiff
[Headers][X86] Fix stream_load (movntdqa) to accept const*.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Fri, 2 Oct 2015 23:29:26 +0000 (23:29 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Fri, 2 Oct 2015 23:29:26 +0000 (23:29 +0000)
Per Intel intrinsics guide:
- _mm256_stream_load_si256 takes `__m256i const *'
- _mm_stream_load_si128 takes `__m128i *', for no good reason.

Let's accept const* for both.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249213 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsX86.def
lib/Headers/avx2intrin.h
lib/Headers/smmintrin.h
test/CodeGen/avx2-builtins.c
test/CodeGen/sse41-builtins.c

index 12c27e98bfda76eb31b4db64bdb896d4d6fbfdc0..53f7fe6f3277ef93913f48940a3955ab394a41a1 100644 (file)
@@ -390,7 +390,7 @@ TARGET_BUILTIN(__builtin_ia32_roundsd, "V2dV2dV2di", "", "sse4.1")
 TARGET_BUILTIN(__builtin_ia32_roundpd, "V2dV2di", "", "sse4.1")
 TARGET_BUILTIN(__builtin_ia32_dpps, "V4fV4fV4fIc", "", "sse4.1")
 TARGET_BUILTIN(__builtin_ia32_dppd, "V2dV2dV2dIc", "", "sse4.1")
-TARGET_BUILTIN(__builtin_ia32_movntdqa, "V2LLiV2LLi*", "", "sse4.1")
+TARGET_BUILTIN(__builtin_ia32_movntdqa, "V2LLiV2LLiC*", "", "sse4.1")
 TARGET_BUILTIN(__builtin_ia32_ptestz128, "iV2LLiV2LLi", "", "sse4.1")
 TARGET_BUILTIN(__builtin_ia32_ptestc128, "iV2LLiV2LLi", "", "sse4.1")
 TARGET_BUILTIN(__builtin_ia32_ptestnzc128, "iV2LLiV2LLi", "", "sse4.1")
@@ -594,7 +594,7 @@ TARGET_BUILTIN(__builtin_ia32_psrldi256, "V8iV8ii", "", "avx2")
 TARGET_BUILTIN(__builtin_ia32_psrld256, "V8iV8iV4i", "", "avx2")
 TARGET_BUILTIN(__builtin_ia32_psrlqi256, "V4LLiV4LLii", "", "avx2")
 TARGET_BUILTIN(__builtin_ia32_psrlq256, "V4LLiV4LLiV2LLi", "", "avx2")
-TARGET_BUILTIN(__builtin_ia32_movntdqa256, "V4LLiV4LLi*", "", "avx2")
+TARGET_BUILTIN(__builtin_ia32_movntdqa256, "V4LLiV4LLiC*", "", "avx2")
 TARGET_BUILTIN(__builtin_ia32_permvarsi256, "V8iV8iV8i", "", "avx2")
 TARGET_BUILTIN(__builtin_ia32_permvarsf256, "V8fV8fV8f", "", "avx2")
 TARGET_BUILTIN(__builtin_ia32_permti256, "V4LLiV4LLiV4LLiIc", "", "avx2")
index 90b8530126d00029c8d8c196f59cb4137d5ca268..b2a92f12b0f93ef6e23a25cfe64afb4dcd8bbbaf 100644 (file)
@@ -754,9 +754,9 @@ _mm256_xor_si256(__m256i __a, __m256i __b)
 }
 
 static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_stream_load_si256(__m256i *__V)
+_mm256_stream_load_si256(__m256i const *__V)
 {
-  return (__m256i)__builtin_ia32_movntdqa256((__v4di *)__V);
+  return (__m256i)__builtin_ia32_movntdqa256((const __v4di *)__V);
 }
 
 static __inline__ __m128 __DEFAULT_FN_ATTRS
index 90ba9970cdb45ed3e3ee990b7727433787a36d9c..89db27f20c2dcbbd8885db9fd086b016972736e2 100644 (file)
@@ -151,9 +151,9 @@ _mm_mul_epi32 (__m128i __V1, __m128i __V2)
 
 /* SSE4 Streaming Load Hint Instruction.  */
 static __inline__  __m128i __DEFAULT_FN_ATTRS
-_mm_stream_load_si128 (__m128i *__V)
+_mm_stream_load_si128 (__m128i const *__V)
 {
-  return (__m128i) __builtin_ia32_movntdqa ((__v2di *) __V);
+  return (__m128i) __builtin_ia32_movntdqa ((const __v2di *) __V);
 }
 
 /* SSE4 Packed Integer Min/Max Instructions.  */
index a29e59ff2240483f2d4dc4375a653619ff07fb4a..0fc0a74776fba0d3e0f5d63a46113d152db17ec0 100644 (file)
@@ -728,7 +728,7 @@ __m256i test_mm256_unpacklo_epi64(__m256i a, __m256i b) {
   return _mm256_unpacklo_epi64(a, b);
 }
 
-__m256i test_mm256_stream_load_si256(__m256i *a) {
+__m256i test_mm256_stream_load_si256(__m256i const *a) {
   // CHECK: @llvm.x86.avx2.movntdqa
   // CHECK-ASM: vmovntdqa (%rdi), %ymm{{.*}}
   return _mm256_stream_load_si256(a);
index 486c8a30a9236f0c56577ba1a2018bb9c5400459..0acb31a0859e1b9367c4049c0e5bd6c14e920b46 100644 (file)
@@ -385,7 +385,7 @@ __m128 test_mm_round_ss(__m128 x, __m128 y) {
   return _mm_round_ss(x, y, 2);
 }
 
-__m128i test_mm_stream_load_si128(__m128i *a) {
+__m128i test_mm_stream_load_si128(__m128i const *a) {
   // CHECK-LABEL: test_mm_stream_load_si128
   // CHECK: call <2 x i64> @llvm.x86.sse41.movntdqa
   // CHECK-ASM: movntdqa