From 8c221b3f76ea833a92e521c641a7322a7417c02a Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Thu, 10 Jan 2019 14:26:15 +0000 Subject: [PATCH] [X86] Add SSE41 vector abs tests llvm-svn: 350822 --- llvm/test/CodeGen/X86/viabs.ll | 92 +++++++++++++++++++++++++++++++--- 1 file changed, 86 insertions(+), 6 deletions(-) diff --git a/llvm/test/CodeGen/X86/viabs.ll b/llvm/test/CodeGen/X86/viabs.ll index af7e7964173f..7241cd1fc9fb 100644 --- a/llvm/test/CodeGen/X86/viabs.ll +++ b/llvm/test/CodeGen/X86/viabs.ll @@ -1,10 +1,11 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2 -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSE --check-prefix=SSSE3 -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --check-prefix=AVX1 -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2 -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx512vl --show-mc-encoding | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512F --check-prefix=AVX512VL -; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx512vl,+avx512bw --show-mc-encoding | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512BW +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,SSE2 +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ssse3 | FileCheck %s --check-prefixes=SSE,SSSE3 +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse4.1 | FileCheck %s --check-prefixes=SSE,SSE41 +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1 +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX2 +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx512vl --show-mc-encoding | FileCheck %s --check-prefixes=AVX,AVX512,AVX512F,AVX512VL +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx512vl,+avx512bw --show-mc-encoding | FileCheck %s --check-prefixes=AVX,AVX512,AVX512BW define <4 x i32> @test_abs_gt_v4i32(<4 x i32> %a) nounwind { ; SSE2-LABEL: test_abs_gt_v4i32: @@ -20,6 +21,11 @@ define <4 x i32> @test_abs_gt_v4i32(<4 x i32> %a) nounwind { ; SSSE3-NEXT: pabsd %xmm0, %xmm0 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_gt_v4i32: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsd %xmm0, %xmm0 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_gt_v4i32: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsd %xmm0, %xmm0 @@ -54,6 +60,11 @@ define <4 x i32> @test_abs_ge_v4i32(<4 x i32> %a) nounwind { ; SSSE3-NEXT: pabsd %xmm0, %xmm0 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_ge_v4i32: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsd %xmm0, %xmm0 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_ge_v4i32: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsd %xmm0, %xmm0 @@ -88,6 +99,11 @@ define <8 x i16> @test_abs_gt_v8i16(<8 x i16> %a) nounwind { ; SSSE3-NEXT: pabsw %xmm0, %xmm0 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_gt_v8i16: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsw %xmm0, %xmm0 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_gt_v8i16: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsw %xmm0, %xmm0 @@ -127,6 +143,11 @@ define <16 x i8> @test_abs_lt_v16i8(<16 x i8> %a) nounwind { ; SSSE3-NEXT: pabsb %xmm0, %xmm0 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_lt_v16i8: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsb %xmm0, %xmm0 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_lt_v16i8: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsb %xmm0, %xmm0 @@ -166,6 +187,11 @@ define <4 x i32> @test_abs_le_v4i32(<4 x i32> %a) nounwind { ; SSSE3-NEXT: pabsd %xmm0, %xmm0 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_le_v4i32: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsd %xmm0, %xmm0 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_le_v4i32: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsd %xmm0, %xmm0 @@ -205,6 +231,12 @@ define <8 x i32> @test_abs_gt_v8i32(<8 x i32> %a) nounwind { ; SSSE3-NEXT: pabsd %xmm1, %xmm1 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_gt_v8i32: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsd %xmm0, %xmm0 +; SSE41-NEXT: pabsd %xmm1, %xmm1 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_gt_v8i32: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsd %xmm0, %xmm1 @@ -247,6 +279,12 @@ define <8 x i32> @test_abs_ge_v8i32(<8 x i32> %a) nounwind { ; SSSE3-NEXT: pabsd %xmm1, %xmm1 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_ge_v8i32: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsd %xmm0, %xmm0 +; SSE41-NEXT: pabsd %xmm1, %xmm1 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_ge_v8i32: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsd %xmm0, %xmm1 @@ -289,6 +327,12 @@ define <16 x i16> @test_abs_gt_v16i16(<16 x i16> %a) nounwind { ; SSSE3-NEXT: pabsw %xmm1, %xmm1 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_gt_v16i16: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsw %xmm0, %xmm0 +; SSE41-NEXT: pabsw %xmm1, %xmm1 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_gt_v16i16: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsw %xmm0, %xmm1 @@ -336,6 +380,12 @@ define <32 x i8> @test_abs_lt_v32i8(<32 x i8> %a) nounwind { ; SSSE3-NEXT: pabsb %xmm1, %xmm1 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_lt_v32i8: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsb %xmm0, %xmm0 +; SSE41-NEXT: pabsb %xmm1, %xmm1 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_lt_v32i8: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsb %xmm0, %xmm1 @@ -383,6 +433,12 @@ define <8 x i32> @test_abs_le_v8i32(<8 x i32> %a) nounwind { ; SSSE3-NEXT: pabsd %xmm1, %xmm1 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_le_v8i32: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsd %xmm0, %xmm0 +; SSE41-NEXT: pabsd %xmm1, %xmm1 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_le_v8i32: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsd %xmm0, %xmm1 @@ -435,6 +491,14 @@ define <16 x i32> @test_abs_le_16i32(<16 x i32> %a) nounwind { ; SSSE3-NEXT: pabsd %xmm3, %xmm3 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_le_16i32: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsd %xmm0, %xmm0 +; SSE41-NEXT: pabsd %xmm1, %xmm1 +; SSE41-NEXT: pabsd %xmm2, %xmm2 +; SSE41-NEXT: pabsd %xmm3, %xmm3 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_le_16i32: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsd %xmm0, %xmm2 @@ -717,6 +781,14 @@ define <64 x i8> @test_abs_lt_v64i8(<64 x i8> %a) nounwind { ; SSSE3-NEXT: pabsb %xmm3, %xmm3 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_lt_v64i8: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsb %xmm0, %xmm0 +; SSE41-NEXT: pabsb %xmm1, %xmm1 +; SSE41-NEXT: pabsb %xmm2, %xmm2 +; SSE41-NEXT: pabsb %xmm3, %xmm3 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_lt_v64i8: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsb %xmm0, %xmm2 @@ -780,6 +852,14 @@ define <32 x i16> @test_abs_gt_v32i16(<32 x i16> %a) nounwind { ; SSSE3-NEXT: pabsw %xmm3, %xmm3 ; SSSE3-NEXT: retq ; +; SSE41-LABEL: test_abs_gt_v32i16: +; SSE41: # %bb.0: +; SSE41-NEXT: pabsw %xmm0, %xmm0 +; SSE41-NEXT: pabsw %xmm1, %xmm1 +; SSE41-NEXT: pabsw %xmm2, %xmm2 +; SSE41-NEXT: pabsw %xmm3, %xmm3 +; SSE41-NEXT: retq +; ; AVX1-LABEL: test_abs_gt_v32i16: ; AVX1: # %bb.0: ; AVX1-NEXT: vpabsw %xmm0, %xmm2