diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/vector-idiv.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-idiv.ll | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/X86/vector-idiv.ll b/llvm/test/CodeGen/X86/vector-idiv.ll index 0d43b96163d..06af3434b1a 100644 --- a/llvm/test/CodeGen/X86/vector-idiv.ll +++ b/llvm/test/CodeGen/X86/vector-idiv.ll @@ -1,4 +1,4 @@ -; RUN: llc -march=x86-64 -mcpu=core2 < %s | FileCheck %s -check-prefix=SSE +; RUN: llc -march=x86-64 -mcpu=corei7 < %s | FileCheck %s -check-prefix=SSE ; RUN: llc -march=x86-64 -mcpu=core-avx2 < %s | FileCheck %s -check-prefix=AVX define <4 x i32> @test1(<4 x i32> %a) { @@ -103,4 +103,51 @@ define <16 x i16> @test6(<16 x i16> %a) { ; AVX-NOT: vpmulhw } -; TODO: sdiv -> pmuldq +define <16 x i8> @test7(<16 x i8> %a) { + %div = sdiv <16 x i8> %a, <i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7> + ret <16 x i8> %div +} + +define <4 x i32> @test8(<4 x i32> %a) { + %div = sdiv <4 x i32> %a, <i32 7, i32 7, i32 7, i32 7> + ret <4 x i32> %div + +; SSE-LABEL: test8: +; SSE: pmuldq +; SSE: pshufd $57 +; SSE: pmuldq +; SSE: shufps $-35 +; SSE: pshufd $-40 +; SSE: padd +; SSE: psrld $31 +; SSE: psrad $2 +; SSE: padd + +; AVX-LABEL: test8: +; AVX: vpmuldq +; AVX: vpshufd $57 +; AVX: vpmuldq +; AVX: vshufps $-35 +; AVX: vpshufd $-40 +; AVX: vpadd +; AVX: vpsrld $31 +; AVX: vpsrad $2 +; AVX: vpadd +} + +define <8 x i32> @test9(<8 x i32> %a) { + %div = sdiv <8 x i32> %a, <i32 7, i32 7, i32 7, i32 7,i32 7, i32 7, i32 7, i32 7> + ret <8 x i32> %div + +; AVX-LABEL: test9: +; AVX: vpermd +; AVX: vpmuldq +; AVX: vshufps $-35 +; AVX: vpmuldq +; AVX: vshufps $-35 +; AVX: vpshufd $-40 +; AVX: vpadd +; AVX: vpsrld $31 +; AVX: vpsrad $2 +; AVX: vpadd +} |

