From b8fa4d72747eb1d54d2e20f33890d57d0d3d7ce1 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Mon, 23 May 2016 12:53:09 +0000 Subject: [PATCH] [X86][SSE] Regenerated scalar load folding tests llvm-svn: 270431 --- test/CodeGen/X86/vec_ss_load_fold.ll | 68 +++++++++++++++++++--------- 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/test/CodeGen/X86/vec_ss_load_fold.ll b/test/CodeGen/X86/vec_ss_load_fold.ll index ab5031e267d..87c62df7743 100644 --- a/test/CodeGen/X86/vec_ss_load_fold.ll +++ b/test/CodeGen/X86/vec_ss_load_fold.ll @@ -1,9 +1,19 @@ -; RUN: llc < %s -march=x86 -mattr=+sse,+sse2,+sse4.1 | FileCheck %s +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: llc < %s -mtriple=i686-apple-darwin8.7.2 -mattr=+sse,+sse2,+sse4.1 | FileCheck %s target datalayout = "e-p:32:32" -target triple = "i686-apple-darwin8.7.2" define i16 @test1(float %f) nounwind { +; CHECK-LABEL: test1: +; CHECK: ## BB#0: +; CHECK-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero +; CHECK-NEXT: xorps %xmm1, %xmm1 +; CHECK-NEXT: subss LCPI0_0, %xmm0 +; CHECK-NEXT: mulss LCPI0_1, %xmm0 +; CHECK-NEXT: minss LCPI0_2, %xmm0 +; CHECK-NEXT: maxss %xmm1, %xmm0 +; CHECK-NEXT: cvttss2si %xmm0, %eax +; CHECK-NEXT: retl %tmp = insertelement <4 x float> undef, float %f, i32 0 ; <<4 x float>> [#uses=1] %tmp10 = insertelement <4 x float> %tmp, float 0.000000e+00, i32 1 ; <<4 x float>> [#uses=1] %tmp11 = insertelement <4 x float> %tmp10, float 0.000000e+00, i32 2 ; <<4 x float>> [#uses=1] @@ -15,13 +25,19 @@ define i16 @test1(float %f) nounwind { %tmp.upgrd.1 = tail call i32 @llvm.x86.sse.cvttss2si( <4 x float> %tmp59 ) ; [#uses=1] %tmp69 = trunc i32 %tmp.upgrd.1 to i16 ; [#uses=1] ret i16 %tmp69 -; CHECK-LABEL: test1: -; CHECK: subss LCPI0_ -; CHECK: mulss LCPI0_ -; CHECK: minss LCPI0_ } define i16 @test2(float %f) nounwind { +; CHECK-LABEL: test2: +; CHECK: ## BB#0: +; CHECK-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero +; CHECK-NEXT: addss LCPI1_0, %xmm0 +; CHECK-NEXT: mulss LCPI1_1, %xmm0 +; CHECK-NEXT: minss LCPI1_2, %xmm0 +; CHECK-NEXT: xorps %xmm1, %xmm1 +; CHECK-NEXT: maxss %xmm1, %xmm0 +; CHECK-NEXT: cvttss2si %xmm0, %eax +; CHECK-NEXT: retl %tmp28 = fsub float %f, 1.000000e+00 ; [#uses=1] %tmp37 = fmul float %tmp28, 5.000000e-01 ; [#uses=1] %tmp375 = insertelement <4 x float> undef, float %tmp37, i32 0 ; <<4 x float>> [#uses=1] @@ -30,10 +46,6 @@ define i16 @test2(float %f) nounwind { %tmp = tail call i32 @llvm.x86.sse.cvttss2si( <4 x float> %tmp59 ) ; [#uses=1] %tmp69 = trunc i32 %tmp to i16 ; [#uses=1] ret i16 %tmp69 -; CHECK-LABEL: test2: -; CHECK: addss LCPI1_ -; CHECK: mulss LCPI1_ -; CHECK: minss LCPI1_ } declare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) @@ -46,41 +58,53 @@ declare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) declare i32 @llvm.x86.sse.cvttss2si(<4 x float>) - declare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) + declare <4 x float> @f() define <4 x float> @test3(<4 x float> %A, float *%b, i32 %C) nounwind { +; CHECK-LABEL: test3: +; CHECK: ## BB#0: +; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax +; CHECK-NEXT: roundss $4, (%eax), %xmm0 +; CHECK-NEXT: retl %a = load float , float *%b %B = insertelement <4 x float> undef, float %a, i32 0 %X = call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %A, <4 x float> %B, i32 4) ret <4 x float> %X -; CHECK-LABEL: test3: -; CHECK: roundss $4, (%eax), %xmm0 } define <4 x float> @test4(<4 x float> %A, float *%b, i32 %C) nounwind { +; CHECK-LABEL: test4: +; CHECK: ## BB#0: +; CHECK-NEXT: subl $28, %esp +; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax +; CHECK-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero +; CHECK-NEXT: movaps %xmm0, (%esp) ## 16-byte Spill +; CHECK-NEXT: calll L_f$stub +; CHECK-NEXT: movaps (%esp), %xmm1 ## 16-byte Reload +; CHECK-NEXT: roundss $4, %xmm1, %xmm0 +; CHECK-NEXT: addl $28, %esp +; CHECK-NEXT: retl %a = load float , float *%b %B = insertelement <4 x float> undef, float %a, i32 0 %q = call <4 x float> @f() %X = call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %q, <4 x float> %B, i32 4) ret <4 x float> %X -; CHECK-LABEL: test4: -; CHECK: movss (%eax), %xmm -; CHECK: call -; CHECK: roundss $4, %xmm{{.*}}, %xmm0 } -; PR13576 +; PR13576 define <2 x double> @test5() nounwind uwtable readnone noinline { +; CHECK-LABEL: test5: +; CHECK: ## BB#0: ## %entry +; CHECK-NEXT: movaps {{.*#+}} xmm0 = [4.569870e+02,1.233210e+02] +; CHECK-NEXT: movl $128, %eax +; CHECK-NEXT: cvtsi2sdl %eax, %xmm0 +; CHECK-NEXT: retl entry: %0 = tail call <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double> , i32 128) nounwind readnone ret <2 x double> %0 -; CHECK-LABEL: test5: -; CHECK: mov -; CHECK: mov -; CHECK: cvtsi2sd } declare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone