summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/sad_variations.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/sad_variations.ll')
-rw-r--r--llvm/test/CodeGen/X86/sad_variations.ll162
1 files changed, 54 insertions, 108 deletions
diff --git a/llvm/test/CodeGen/X86/sad_variations.ll b/llvm/test/CodeGen/X86/sad_variations.ll
index cea86091a2b..bbd71ae8fbf 100644
--- a/llvm/test/CodeGen/X86/sad_variations.ll
+++ b/llvm/test/CodeGen/X86/sad_variations.ll
@@ -1,7 +1,9 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX512F
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE2
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX2
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVX512,AVX512F
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefixes=AVX,AVX512,AVX512BW
define i32 @sad8_32bit_icmp_sge(i8* nocapture readonly %cur, i8* nocapture readonly %ref, i32 %stride) local_unnamed_addr #0 {
; SSE2-LABEL: sad8_32bit_icmp_sge:
@@ -12,21 +14,13 @@ define i32 @sad8_32bit_icmp_sge(i8* nocapture readonly %cur, i8* nocapture reado
; SSE2-NEXT: movd %xmm1, %eax
; SSE2-NEXT: retq
;
-; AVX2-LABEL: sad8_32bit_icmp_sge:
-; AVX2: # %bb.0: # %entry
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX2-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX2-NEXT: vmovd %xmm0, %eax
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: sad8_32bit_icmp_sge:
-; AVX512F: # %bb.0: # %entry
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX512F-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX512F-NEXT: vmovd %xmm0, %eax
-; AVX512F-NEXT: retq
+; AVX-LABEL: sad8_32bit_icmp_sge:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
+; AVX-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
+; AVX-NEXT: vmovd %xmm0, %eax
+; AVX-NEXT: retq
entry:
%idx.ext = zext i32 %stride to i64
@@ -62,21 +56,13 @@ define i32 @sad8_32bit_icmp_sgt(i8* nocapture readonly %cur, i8* nocapture reado
; SSE2-NEXT: movd %xmm1, %eax
; SSE2-NEXT: retq
;
-; AVX2-LABEL: sad8_32bit_icmp_sgt:
-; AVX2: # %bb.0: # %entry
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX2-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX2-NEXT: vmovd %xmm0, %eax
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: sad8_32bit_icmp_sgt:
-; AVX512F: # %bb.0: # %entry
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX512F-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX512F-NEXT: vmovd %xmm0, %eax
-; AVX512F-NEXT: retq
+; AVX-LABEL: sad8_32bit_icmp_sgt:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
+; AVX-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
+; AVX-NEXT: vmovd %xmm0, %eax
+; AVX-NEXT: retq
entry:
%idx.ext = zext i32 %stride to i64
br label %for.body
@@ -111,21 +97,13 @@ define i32 @sad8_32bit_icmp_sle(i8* nocapture readonly %cur, i8* nocapture reado
; SSE2-NEXT: movd %xmm1, %eax
; SSE2-NEXT: retq
;
-; AVX2-LABEL: sad8_32bit_icmp_sle:
-; AVX2: # %bb.0: # %entry
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX2-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX2-NEXT: vmovd %xmm0, %eax
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: sad8_32bit_icmp_sle:
-; AVX512F: # %bb.0: # %entry
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX512F-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX512F-NEXT: vmovd %xmm0, %eax
-; AVX512F-NEXT: retq
+; AVX-LABEL: sad8_32bit_icmp_sle:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
+; AVX-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
+; AVX-NEXT: vmovd %xmm0, %eax
+; AVX-NEXT: retq
entry:
%idx.ext = zext i32 %stride to i64
br label %for.body
@@ -160,21 +138,13 @@ define i32 @sad8_32bit_icmp_slt(i8* nocapture readonly %cur, i8* nocapture reado
; SSE2-NEXT: movd %xmm1, %eax
; SSE2-NEXT: retq
;
-; AVX2-LABEL: sad8_32bit_icmp_slt:
-; AVX2: # %bb.0: # %entry
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX2-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX2-NEXT: vmovd %xmm0, %eax
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: sad8_32bit_icmp_slt:
-; AVX512F: # %bb.0: # %entry
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX512F-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX512F-NEXT: vmovd %xmm0, %eax
-; AVX512F-NEXT: retq
+; AVX-LABEL: sad8_32bit_icmp_slt:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
+; AVX-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
+; AVX-NEXT: vmovd %xmm0, %eax
+; AVX-NEXT: retq
entry:
%idx.ext = zext i32 %stride to i64
br label %for.body
@@ -209,21 +179,13 @@ define i64 @sad8_64bit_icmp_sext_slt(i8* nocapture readonly %cur, i8* nocapture
; SSE2-NEXT: movq %xmm1, %rax
; SSE2-NEXT: retq
;
-; AVX2-LABEL: sad8_64bit_icmp_sext_slt:
-; AVX2: # %bb.0: # %entry
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX2-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX2-NEXT: vmovq %xmm0, %rax
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: sad8_64bit_icmp_sext_slt:
-; AVX512F: # %bb.0: # %entry
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX512F-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX512F-NEXT: vmovq %xmm0, %rax
-; AVX512F-NEXT: retq
+; AVX-LABEL: sad8_64bit_icmp_sext_slt:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
+; AVX-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
+; AVX-NEXT: vmovq %xmm0, %rax
+; AVX-NEXT: retq
entry:
br label %for.body
@@ -258,21 +220,13 @@ define i64 @sad8_64bit_icmp_zext_slt(i8* nocapture readonly %cur, i8* nocapture
; SSE2-NEXT: movq %xmm1, %rax
; SSE2-NEXT: retq
;
-; AVX2-LABEL: sad8_64bit_icmp_zext_slt:
-; AVX2: # %bb.0: # %entry
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX2-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX2-NEXT: vmovq %xmm0, %rax
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: sad8_64bit_icmp_zext_slt:
-; AVX512F: # %bb.0: # %entry
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX512F-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX512F-NEXT: vmovq %xmm0, %rax
-; AVX512F-NEXT: retq
+; AVX-LABEL: sad8_64bit_icmp_zext_slt:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
+; AVX-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
+; AVX-NEXT: vmovq %xmm0, %rax
+; AVX-NEXT: retq
entry:
br label %for.body
@@ -307,21 +261,13 @@ define i64 @sad8_early_64bit_icmp_zext_slt(i8* nocapture readonly %cur, i8* noca
; SSE2-NEXT: movq %xmm1, %rax
; SSE2-NEXT: retq
;
-; AVX2-LABEL: sad8_early_64bit_icmp_zext_slt:
-; AVX2: # %bb.0: # %entry
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX2-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX2-NEXT: vmovq %xmm0, %rax
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: sad8_early_64bit_icmp_zext_slt:
-; AVX512F: # %bb.0: # %entry
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
-; AVX512F-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
-; AVX512F-NEXT: vmovq %xmm0, %rax
-; AVX512F-NEXT: retq
+; AVX-LABEL: sad8_early_64bit_icmp_zext_slt:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
+; AVX-NEXT: vpsadbw %xmm0, %xmm1, %xmm0
+; AVX-NEXT: vmovq %xmm0, %rax
+; AVX-NEXT: retq
entry:
br label %for.body
OpenPOWER on IntegriCloud