<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Because when I wrote the initial llvm fast-isel tests I based it off the wrong clang builtin implementation (it treated _mm_storeu_* as a basic store call and not the store intrinsic) and then managed not to update it when I fixed the clang builtins….. <div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 30 May 2016, at 20:09, Craig Topper <<a href="mailto:craig.topper@gmail.com" class="">craig.topper@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">And why wasn't the <span style="font-size:12.8px" class="">_mm256_storeu_pd using the storeu intrinsic before?</span></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Mon, May 30, 2016 at 11:58 AM, Craig Topper <span dir="ltr" class=""><<a href="mailto:craig.topper@gmail.com" target="_blank" class="">craig.topper@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Do we have a script that generates these or are these maintained by hand?</div><div class="gmail_extra"><div class=""><div class="h5"><br class=""><div class="gmail_quote">On Mon, May 30, 2016 at 11:42 AM, Simon Pilgrim via llvm-commits <span dir="ltr" class=""><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rksimon<br class="">
Date: Mon May 30 13:42:51 2016<br class="">
New Revision: 271222<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=271222&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=271222&view=rev</a><br class="">
Log:<br class="">
[X86][SSE] Updated storeu fast-isel tests to match clang builtin tests<br class="">
<br class="">
Since rL271214 the headers have no longer used the storeu intrinsic<br class="">
<br class="">
Modified:<br class="">
    llvm/trunk/test/CodeGen/X86/avx-intrinsics-fast-isel.ll<br class="">
    llvm/trunk/test/CodeGen/X86/sse-intrinsics-fast-isel.ll<br class="">
    llvm/trunk/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll<br class="">
<br class="">
Modified: llvm/trunk/test/CodeGen/X86/avx-intrinsics-fast-isel.ll<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-intrinsics-fast-isel.ll?rev=271222&r1=271221&r2=271222&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-intrinsics-fast-isel.ll?rev=271222&r1=271221&r2=271222&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/CodeGen/X86/avx-intrinsics-fast-isel.ll (original)<br class="">
+++ llvm/trunk/test/CodeGen/X86/avx-intrinsics-fast-isel.ll Mon May 30 13:42:51 2016<br class="">
@@ -3144,15 +3144,14 @@ define void @test_mm256_storeu2_m128(flo<br class="">
 ; X64-NEXT:    vmovups %xmm0, (%rsi)<br class="">
 ; X64-NEXT:    vzeroupper<br class="">
 ; X64-NEXT:    retq<br class="">
-  %arg0 = bitcast float* %a0 to i8*<br class="">
+  %arg0 = bitcast float* %a0 to <4 x float>*<br class="">
   %lo = shufflevector <8 x float> %a2, <8 x float> %a2, <4 x i32> <i32 0, i32 1, i32 2, i32 3><br class="">
-  call void @<a href="http://llvm.x86.sse.storeu.ps/" rel="noreferrer" target="_blank" class="">llvm.x86.sse.storeu.ps</a>(i8* %arg0, <4 x float> %lo)<br class="">
-  %arg1 = bitcast float* %a1 to i8*<br class="">
+  store <4 x float> %lo, <4 x float>* %arg0, align 1<br class="">
+  %arg1 = bitcast float* %a1 to <4 x float>*<br class="">
   %hi = shufflevector <8 x float> %a2, <8 x float> %a2, <4 x i32> <i32 4, i32 5, i32 6, i32 7><br class="">
-  call void @<a href="http://llvm.x86.sse.storeu.ps/" rel="noreferrer" target="_blank" class="">llvm.x86.sse.storeu.ps</a>(i8* %arg1, <4 x float> %hi)<br class="">
+  store <4 x float> %hi, <4 x float>* %arg1, align 1<br class="">
   ret void<br class="">
 }<br class="">
-declare void @<a href="http://llvm.x86.sse.storeu.ps/" rel="noreferrer" target="_blank" class="">llvm.x86.sse.storeu.ps</a>(i8*, <4 x float>) nounwind readnone<br class="">
<br class="">
 define void @test_mm256_storeu2_m128d(double* %a0, double* %a1, <4 x double> %a2) nounwind {<br class="">
 ; X32-LABEL: test_mm256_storeu2_m128d:<br class="">
@@ -3172,15 +3171,14 @@ define void @test_mm256_storeu2_m128d(do<br class="">
 ; X64-NEXT:    vmovups %xmm0, (%rsi)<br class="">
 ; X64-NEXT:    vzeroupper<br class="">
 ; X64-NEXT:    retq<br class="">
-  %arg0 = bitcast double* %a0 to i8*<br class="">
+  %arg0 = bitcast double* %a0 to <2 x double>*<br class="">
   %lo = shufflevector <4 x double> %a2, <4 x double> %a2, <2 x i32> <i32 0, i32 1><br class="">
-  call void @llvm.x86.sse2.storeu.pd(i8* %arg0, <2 x double> %lo)<br class="">
-  %arg1 = bitcast double* %a1 to i8*<br class="">
+  store <2 x double> %lo, <2 x double>* %arg0, align 1<br class="">
+  %arg1 = bitcast double* %a1 to <2 x double>*<br class="">
   %hi = shufflevector <4 x double> %a2, <4 x double> %a2, <2 x i32> <i32 2, i32 3><br class="">
-  call void @llvm.x86.sse2.storeu.pd(i8* %arg1, <2 x double> %hi)<br class="">
+  store <2 x double> %hi, <2 x double>* %arg1, align 1<br class="">
   ret void<br class="">
 }<br class="">
-declare void @llvm.x86.sse2.storeu.pd(i8*, <2 x double>) nounwind readnone<br class="">
<br class="">
 define void @test_mm256_storeu2_m128i(<2 x i64>* %a0, <2 x i64>* %a1, <4 x i64> %a2) nounwind {<br class="">
 ; X32-LABEL: test_mm256_storeu2_m128i:<br class="">
@@ -3200,17 +3198,14 @@ define void @test_mm256_storeu2_m128i(<2<br class="">
 ; X64-NEXT:    vmovups %xmm0, (%rsi)<br class="">
 ; X64-NEXT:    vzeroupper<br class="">
 ; X64-NEXT:    retq<br class="">
-  %arg0 = bitcast <2 x i64>* %a0 to i8*<br class="">
-  %lo2 = shufflevector <4 x i64> %a2, <4 x i64> %a2, <2 x i32> <i32 0, i32 1><br class="">
-  %lo = bitcast <2 x i64> %lo2 to <16 x i8><br class="">
-  call void @llvm.x86.sse2.storeu.dq(i8* %arg0, <16 x i8> %lo)<br class="">
-  %arg1 = bitcast <2 x i64>* %a1 to i8*<br class="">
-  %hi2 = shufflevector <4 x i64> %a2, <4 x i64> %a2, <2 x i32> <i32 2, i32 3><br class="">
-  %hi = bitcast <2 x i64> %hi2 to <16 x i8><br class="">
-  call void @llvm.x86.sse2.storeu.dq(i8* %arg1, <16 x i8> %hi)<br class="">
+  %arg0 = bitcast <2 x i64>* %a0 to <2 x i64>*<br class="">
+  %lo = shufflevector <4 x i64> %a2, <4 x i64> %a2, <2 x i32> <i32 0, i32 1><br class="">
+  store <2 x i64> %lo, <2 x i64>* %arg0, align 1<br class="">
+  %arg1 = bitcast <2 x i64>* %a1 to <2 x i64>*<br class="">
+  %hi = shufflevector <4 x i64> %a2, <4 x i64> %a2, <2 x i32> <i32 2, i32 3><br class="">
+  store <2 x i64> %hi, <2 x i64>* %arg1, align 1<br class="">
   ret void<br class="">
 }<br class="">
-declare void @llvm.x86.sse2.storeu.dq(i8*, <16 x i8>) nounwind readnone<br class="">
<br class="">
 define void @test_mm256_stream_pd(double *%a0, <4 x double> %a1) nounwind {<br class="">
 ; X32-LABEL: test_mm256_stream_pd:<br class="">
<br class="">
Modified: llvm/trunk/test/CodeGen/X86/sse-intrinsics-fast-isel.ll<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse-intrinsics-fast-isel.ll?rev=271222&r1=271221&r2=271222&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse-intrinsics-fast-isel.ll?rev=271222&r1=271221&r2=271222&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/CodeGen/X86/sse-intrinsics-fast-isel.ll (original)<br class="">
+++ llvm/trunk/test/CodeGen/X86/sse-intrinsics-fast-isel.ll Mon May 30 13:42:51 2016<br class="">
@@ -1920,11 +1920,10 @@ define void @test_mm_storeu_ps(float *%a<br class="">
 ; X64:       # BB#0:<br class="">
 ; X64-NEXT:    movups %xmm0, (%rdi)<br class="">
 ; X64-NEXT:    retq<br class="">
-  %arg0 = bitcast float* %a0 to i8*<br class="">
-  call void @<a href="http://llvm.x86.sse.storeu.ps/" rel="noreferrer" target="_blank" class="">llvm.x86.sse.storeu.ps</a>(i8* %arg0, <4 x float> %a1)<br class="">
+  %arg0 = bitcast float* %a0 to <4 x float>*<br class="">
+  store <4 x float> %a1, <4 x float>* %arg0, align 1<br class="">
   ret void<br class="">
 }<br class="">
-declare void @<a href="http://llvm.x86.sse.storeu.ps/" rel="noreferrer" target="_blank" class="">llvm.x86.sse.storeu.ps</a>(i8*, <4 x float>) nounwind<br class="">
<br class="">
 define void @test_mm_stream_ps(float *%a0, <4 x float> %a1) {<br class="">
 ; X32-LABEL: test_mm_stream_ps:<br class="">
<br class="">
Modified: llvm/trunk/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll?rev=271222&r1=271221&r2=271222&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll?rev=271222&r1=271221&r2=271222&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll (original)<br class="">
+++ llvm/trunk/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll Mon May 30 13:42:51 2016<br class="">
@@ -3255,11 +3255,10 @@ define void @test_mm_storeu_pd(double *%<br class="">
 ; X64:       # BB#0:<br class="">
 ; X64-NEXT:    movups %xmm0, (%rdi)<br class="">
 ; X64-NEXT:    retq<br class="">
-  %arg0 = bitcast double* %a0 to i8*<br class="">
-  call void @llvm.x86.sse2.storeu.pd(i8* %arg0, <2 x double> %a1)<br class="">
+  %arg0 = bitcast double* %a0 to <2 x double>*<br class="">
+  store <2 x double> %a1, <2 x double>* %arg0, align 1<br class="">
   ret void<br class="">
 }<br class="">
-declare void @llvm.x86.sse2.storeu.pd(i8*, <2 x double>) nounwind<br class="">
<br class="">
 define void @test_mm_storeu_si128(<2 x i64> *%a0, <2 x i64> %a1) {<br class="">
 ; X32-LABEL: test_mm_storeu_si128:<br class="">
@@ -3272,12 +3271,9 @@ define void @test_mm_storeu_si128(<2 x i<br class="">
 ; X64:       # BB#0:<br class="">
 ; X64-NEXT:    movups %xmm0, (%rdi)<br class="">
 ; X64-NEXT:    retq<br class="">
-  %arg0 = bitcast <2 x i64>* %a0 to i8*<br class="">
-  %arg1 = bitcast <2 x i64> %a1 to <16 x i8><br class="">
-  call void @llvm.x86.sse2.storeu.dq(i8* %arg0, <16 x i8> %arg1)<br class="">
+  store <2 x i64> %a1, <2 x i64>* %a0, align 1<br class="">
   ret void<br class="">
 }<br class="">
-declare void @llvm.x86.sse2.storeu.dq(i8*, <16 x i8>) nounwind<br class="">
<br class="">
 define void @test_mm_stream_pd(double *%a0, <2 x double> %a1) {<br class="">
 ; X32-LABEL: test_mm_stream_pd:<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="">
</blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div></div></div><span class="HOEnZb"><font color="#888888" class="">-- <br class=""><div class="">~Craig</div>
</font></span></div>
</blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature">~Craig</div>
</div>
</div></blockquote></div><br class=""></div></body></html>