diff --git a/test/CodeGen/X86/rounding-ops.ll b/test/CodeGen/X86/rounding-ops.ll index 15a11d1d6a9..b920be4c887 100644 --- a/test/CodeGen/X86/rounding-ops.ll +++ b/test/CodeGen/X86/rounding-ops.ll @@ -1,132 +1,163 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=x86_64-apple-macosx -mattr=+sse4.1 | FileCheck -check-prefix=CHECK-SSE %s ; RUN: llc < %s -mtriple=x86_64-apple-macosx -mattr=+avx | FileCheck -check-prefix=CHECK-AVX %s define float @test1(float %x) nounwind { +; CHECK-SSE-LABEL: test1: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundss $9, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test1: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundss $9, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call float @floorf(float %x) nounwind readnone ret float %call - -; CHECK-SSE-LABEL: test1: -; CHECK-SSE: roundss $9 - -; CHECK-AVX-LABEL: test1: -; CHECK-AVX: vroundss $9 } declare float @floorf(float) nounwind readnone define double @test2(double %x) nounwind { +; CHECK-SSE-LABEL: test2: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundsd $9, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test2: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundsd $9, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call double @floor(double %x) nounwind readnone ret double %call - -; CHECK-SSE-LABEL: test2: -; CHECK-SSE: roundsd $9 - -; CHECK-AVX-LABEL: test2: -; CHECK-AVX: vroundsd $9 } declare double @floor(double) nounwind readnone define float @test3(float %x) nounwind { +; CHECK-SSE-LABEL: test3: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundss $12, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test3: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundss $12, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call float @nearbyintf(float %x) nounwind readnone ret float %call - -; CHECK-SSE-LABEL: test3: -; CHECK-SSE: roundss $12 - -; CHECK-AVX-LABEL: test3: -; CHECK-AVX: vroundss $12 } declare float @nearbyintf(float) nounwind readnone define double @test4(double %x) nounwind { +; CHECK-SSE-LABEL: test4: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundsd $12, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test4: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundsd $12, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call double @nearbyint(double %x) nounwind readnone ret double %call - -; CHECK-SSE-LABEL: test4: -; CHECK-SSE: roundsd $12 - -; CHECK-AVX-LABEL: test4: -; CHECK-AVX: vroundsd $12 } declare double @nearbyint(double) nounwind readnone define float @test5(float %x) nounwind { +; CHECK-SSE-LABEL: test5: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundss $10, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test5: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundss $10, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call float @ceilf(float %x) nounwind readnone ret float %call - -; CHECK-SSE-LABEL: test5: -; CHECK-SSE: roundss $10 - -; CHECK-AVX-LABEL: test5: -; CHECK-AVX: vroundss $10 } declare float @ceilf(float) nounwind readnone define double @test6(double %x) nounwind { +; CHECK-SSE-LABEL: test6: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundsd $10, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test6: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundsd $10, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call double @ceil(double %x) nounwind readnone ret double %call - -; CHECK-SSE-LABEL: test6: -; CHECK-SSE: roundsd $10 - -; CHECK-AVX-LABEL: test6: -; CHECK-AVX: vroundsd $10 } declare double @ceil(double) nounwind readnone define float @test7(float %x) nounwind { +; CHECK-SSE-LABEL: test7: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundss $4, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test7: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundss $4, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call float @rintf(float %x) nounwind readnone ret float %call - -; CHECK-SSE-LABEL: test7: -; CHECK-SSE: roundss $4 - -; CHECK-AVX-LABEL: test7: -; CHECK-AVX: vroundss $4 } declare float @rintf(float) nounwind readnone define double @test8(double %x) nounwind { +; CHECK-SSE-LABEL: test8: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundsd $4, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test8: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundsd $4, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call double @rint(double %x) nounwind readnone ret double %call - -; CHECK-SSE-LABEL: test8: -; CHECK-SSE: roundsd $4 - -; CHECK-AVX-LABEL: test8: -; CHECK-AVX: vroundsd $4 } declare double @rint(double) nounwind readnone define float @test9(float %x) nounwind { +; CHECK-SSE-LABEL: test9: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundss $11, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test9: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundss $11, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call float @truncf(float %x) nounwind readnone ret float %call - -; CHECK-SSE-LABEL: test9: -; CHECK-SSE: roundss $11 - -; CHECK-AVX-LABEL: test9: -; CHECK-AVX: vroundss $11 } declare float @truncf(float) nounwind readnone define double @test10(double %x) nounwind { +; CHECK-SSE-LABEL: test10: +; CHECK-SSE: ## BB#0: +; CHECK-SSE-NEXT: roundsd $11, %xmm0, %xmm0 +; CHECK-SSE-NEXT: retq +; +; CHECK-AVX-LABEL: test10: +; CHECK-AVX: ## BB#0: +; CHECK-AVX-NEXT: vroundsd $11, %xmm0, %xmm0, %xmm0 +; CHECK-AVX-NEXT: retq %call = tail call double @trunc(double %x) nounwind readnone ret double %call - -; CHECK-SSE-LABEL: test10: -; CHECK-SSE: roundsd $11 - -; CHECK-AVX-LABEL: test10: -; CHECK-AVX: vroundsd $11 } declare double @trunc(double) nounwind readnone