summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Dewhurst <chris.dewhurst@lero.ie>2016-11-01 14:23:37 +0000
committerChris Dewhurst <chris.dewhurst@lero.ie>2016-11-01 14:23:37 +0000
commit30de1de14449fdaf03606058cd0ae68091e541b0 (patch)
treee18f12f60d236e0bb838eaad5969a193de1e5eb6
parent092d3b7f3bb21b05979d1e99759f510adbe64987 (diff)
downloadbcm5719-llvm-30de1de14449fdaf03606058cd0ae68091e541b0.tar.gz
bcm5719-llvm-30de1de14449fdaf03606058cd0ae68091e541b0.zip
[Sparc][LEON] Test for FixFDIVSQRT erratum fix.
Note: Test is per differential review, but the other changed code in the review was for an optimisation that din't quite work. Nevertheless, the test is valid for the unoptimised version of the fix. Differential Review: https://reviews.llvm.org/D24658 llvm-svn: 285692
-rwxr-xr-xllvm/test/CodeGen/SPARC/LeonFixAllFDIVSQRTPassUT.ll59
1 files changed, 59 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SPARC/LeonFixAllFDIVSQRTPassUT.ll b/llvm/test/CodeGen/SPARC/LeonFixAllFDIVSQRTPassUT.ll
new file mode 100755
index 00000000000..c79414d2791
--- /dev/null
+++ b/llvm/test/CodeGen/SPARC/LeonFixAllFDIVSQRTPassUT.ll
@@ -0,0 +1,59 @@
+; RUN: llc %s -O0 -march=sparc -mcpu=leon3 -mattr=+fixallfdivsqrt -o - | FileCheck %s
+; RUN: llc %s -O0 -march=sparc -mcpu=ut699 -o - | FileCheck %s
+
+; CHECK-LABEL: test_1
+; CHECK: nop
+; CHECK: nop
+; CHECK: fdivd
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+define double @test_1(double* byval %a, double* byval %b) {
+entry:
+ %0 = load double, double* %a, align 8
+ %1 = load double, double* %b, align 8
+ %res = fdiv double %0, %1
+ ret double %res
+}
+
+declare double @llvm.sqrt.f64(double) nounwind readonly
+
+; CHECK-LABEL: test_2
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK: nop
+; CHECK: fsqrtd
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+; CHECK-NEXT: nop
+define double @test_2(double* byval %a) {
+entry:
+ %0 = load double, double* %a, align 8
+ %1 = call double @llvm.sqrt.f64(double %0) nounwind
+ ret double %1
+}
+
OpenPOWER on IntegriCloud