<div dir="ltr">This test fails on Windows:<div><a href="http://lab.llvm.org:8011/builders/clang-x86-win2008-selfhost/builds/9916/steps/ninja%20check%202/logs/FAIL%3A%20LLVM%3A%3Avec_fabs.ll">http://lab.llvm.org:8011/builders/clang-x86-win2008-selfhost/builds/9916/steps/ninja%20check%202/logs/FAIL%3A%20LLVM%3A%3Avec_fabs.ll</a><br></div><br>C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\test\CodeGen\X86\vec_fabs.ll:138:17: error: expected string not found in input<br>; X32_AVX-NEXT: vmovaps {{.*#+}} ymm2 = [nan,nan,nan,nan]<br>                ^<br><stdin>:99:2: note: scanning from here<br> vmovaps .LCPI4_0, %ymm2 # ymm2 = [1.#QNAN0e+00,1.#QNAN0e+00,1.#QNAN0e+00,1.#QNAN0e+00]<div><br></div><div>So apparently the MSVC CRT prints NaNs in a unique way.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Aug 28, 2016 at 9:49 PM, Craig Topper via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ctopper<br>
Date: Sun Aug 28 23:49:24 2016<br>
New Revision: 279956<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=279956&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=279956&view=rev</a><br>
Log:<br>
[AVX-512] Add 512-bit fabs tests with and without AVX512DQ.<br>
<br>
Modified:<br>
    llvm/trunk/test/CodeGen/X86/<wbr>vec_fabs.ll<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/<wbr>vec_fabs.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vec_fabs.ll?rev=279956&r1=279955&r2=279956&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>CodeGen/X86/vec_fabs.ll?rev=<wbr>279956&r1=279955&r2=279956&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/CodeGen/X86/<wbr>vec_fabs.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/<wbr>vec_fabs.ll Sun Aug 28 23:49:24 2016<br>
@@ -1,8 +1,10 @@<br>
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.<wbr>py<br>
-; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=X32<br>
-; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=X32<br>
-; RUN: llc < %s -mtriple=x86_64-unknown-<wbr>unknown -mattr=+avx | FileCheck %s --check-prefix=X64<br>
-; RUN: llc < %s -mtriple=x86_64-unknown-<wbr>unknown -mattr=+avx512f | FileCheck %s --check-prefix=X64<br>
+; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=X32 --check-prefix=X32_AVX<br>
+; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefix=X32 --check-prefix=X32_AVX512VL<br>
+; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefix=X32 --check-prefix=X32_AVX512VLDQ<br>
+; RUN: llc < %s -mtriple=x86_64-unknown-<wbr>unknown -mattr=+avx | FileCheck %s --check-prefix=X64 --check-prefix=X64_AVX<br>
+; RUN: llc < %s -mtriple=x86_64-unknown-<wbr>unknown -mattr=+avx512vl | FileCheck %s --check-prefix=X64 --check-prefix=X64_AVX512VL<br>
+; RUN: llc < %s -mtriple=x86_64-unknown-<wbr>unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefix=X64 --check-prefix=X64_AVX512VLDQ<br>
<br>
 define <2 x double> @fabs_v2f64(<2 x double> %p) {<br>
 ; X32-LABEL: fabs_v2f64:<br>
@@ -64,6 +66,84 @@ define <8 x float> @fabs_v8f32(<8 x floa<br>
 }<br>
 declare <8 x float> @llvm.fabs.v8f32(<8 x float> %p)<br>
<br>
+define <8 x double> @fabs_v8f64(<8 x double> %p) {<br>
+; X32_AVX-LABEL: fabs_v8f64:<br>
+; X32_AVX:       # BB#0:<br>
+; X32_AVX-NEXT:    vmovaps {{.*#+}} ymm2 = [9223372036854775807,<wbr>9223372036854775807,<wbr>9223372036854775807,<wbr>9223372036854775807]<br>
+; X32_AVX-NEXT:    vandps %ymm2, %ymm0, %ymm0<br>
+; X32_AVX-NEXT:    vandps %ymm2, %ymm1, %ymm1<br>
+; X32_AVX-NEXT:    retl<br>
+;<br>
+; X32_AVX512VL-LABEL: fabs_v8f64:<br>
+; X32_AVX512VL:       # BB#0:<br>
+; X32_AVX512VL-NEXT:    vpandq {{\.LCPI.*}}, %zmm0, %zmm0<br>
+; X32_AVX512VL-NEXT:    retl<br>
+;<br>
+; X32_AVX512VLDQ-LABEL: fabs_v8f64:<br>
+; X32_AVX512VLDQ:       # BB#0:<br>
+; X32_AVX512VLDQ-NEXT:    vandps {{\.LCPI.*}}, %zmm0, %zmm0<br>
+; X32_AVX512VLDQ-NEXT:    retl<br>
+;<br>
+; X64_AVX-LABEL: fabs_v8f64:<br>
+; X64_AVX:       # BB#0:<br>
+; X64_AVX-NEXT:    vmovaps {{.*#+}} ymm2 = [9223372036854775807,<wbr>9223372036854775807,<wbr>9223372036854775807,<wbr>9223372036854775807]<br>
+; X64_AVX-NEXT:    vandps %ymm2, %ymm0, %ymm0<br>
+; X64_AVX-NEXT:    vandps %ymm2, %ymm1, %ymm1<br>
+; X64_AVX-NEXT:    retq<br>
+;<br>
+; X64_AVX512VL-LABEL: fabs_v8f64:<br>
+; X64_AVX512VL:       # BB#0:<br>
+; X64_AVX512VL-NEXT:    vpandq {{.*}}(%rip), %zmm0, %zmm0<br>
+; X64_AVX512VL-NEXT:    retq<br>
+;<br>
+; X64_AVX512VLDQ-LABEL: fabs_v8f64:<br>
+; X64_AVX512VLDQ:       # BB#0:<br>
+; X64_AVX512VLDQ-NEXT:    vandps {{.*}}(%rip), %zmm0, %zmm0<br>
+; X64_AVX512VLDQ-NEXT:    retq<br>
+  %t = call <8 x double> @llvm.fabs.v8f64(<8 x double> %p)<br>
+  ret <8 x double> %t<br>
+}<br>
+declare <8 x double> @llvm.fabs.v8f64(<8 x double> %p)<br>
+<br>
+define <16 x float> @fabs_v16f32(<16 x float> %p) {<br>
+; X32_AVX-LABEL: fabs_v16f32:<br>
+; X32_AVX:       # BB#0:<br>
+; X32_AVX-NEXT:    vmovaps {{.*#+}} ymm2 = [2147483647,2147483647,<wbr>2147483647,2147483647,<wbr>2147483647,2147483647,<wbr>2147483647,2147483647]<br>
+; X32_AVX-NEXT:    vandps %ymm2, %ymm0, %ymm0<br>
+; X32_AVX-NEXT:    vandps %ymm2, %ymm1, %ymm1<br>
+; X32_AVX-NEXT:    retl<br>
+;<br>
+; X32_AVX512VL-LABEL: fabs_v16f32:<br>
+; X32_AVX512VL:       # BB#0:<br>
+; X32_AVX512VL-NEXT:    vpandq {{\.LCPI.*}}, %zmm0, %zmm0<br>
+; X32_AVX512VL-NEXT:    retl<br>
+;<br>
+; X32_AVX512VLDQ-LABEL: fabs_v16f32:<br>
+; X32_AVX512VLDQ:       # BB#0:<br>
+; X32_AVX512VLDQ-NEXT:    vandps {{\.LCPI.*}}, %zmm0, %zmm0<br>
+; X32_AVX512VLDQ-NEXT:    retl<br>
+;<br>
+; X64_AVX-LABEL: fabs_v16f32:<br>
+; X64_AVX:       # BB#0:<br>
+; X64_AVX-NEXT:    vmovaps {{.*#+}} ymm2 = [2147483647,2147483647,<wbr>2147483647,2147483647,<wbr>2147483647,2147483647,<wbr>2147483647,2147483647]<br>
+; X64_AVX-NEXT:    vandps %ymm2, %ymm0, %ymm0<br>
+; X64_AVX-NEXT:    vandps %ymm2, %ymm1, %ymm1<br>
+; X64_AVX-NEXT:    retq<br>
+;<br>
+; X64_AVX512VL-LABEL: fabs_v16f32:<br>
+; X64_AVX512VL:       # BB#0:<br>
+; X64_AVX512VL-NEXT:    vpandq {{.*}}(%rip), %zmm0, %zmm0<br>
+; X64_AVX512VL-NEXT:    retq<br>
+;<br>
+; X64_AVX512VLDQ-LABEL: fabs_v16f32:<br>
+; X64_AVX512VLDQ:       # BB#0:<br>
+; X64_AVX512VLDQ-NEXT:    vandps {{.*}}(%rip), %zmm0, %zmm0<br>
+; X64_AVX512VLDQ-NEXT:    retq<br>
+  %t = call <16 x float> @llvm.fabs.v16f32(<16 x float> %p)<br>
+  ret <16 x float> %t<br>
+}<br>
+declare <16 x float> @llvm.fabs.v16f32(<16 x float> %p)<br>
+<br>
 ; PR20354: when generating code for a vector fabs op,<br>
 ; make sure that we're only turning off the sign bit of each float value.<br>
 ; No constant pool loads or vector ops are needed for the fabs of a<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>