diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/sad_variations.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/sad_variations.ll | 162 |
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 |