[Sparc][LEON] Test for FixFDIVSQRT erratum fix.
authorChris Dewhurst <chris.dewhurst@lero.ie>
Tue, 1 Nov 2016 14:23:37 +0000 (14:23 +0000)
committerChris Dewhurst <chris.dewhurst@lero.ie>
Tue, 1 Nov 2016 14:23:37 +0000 (14:23 +0000)
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

llvm/test/CodeGen/SPARC/LeonFixAllFDIVSQRTPassUT.ll [new file with mode: 0755]

diff --git a/llvm/test/CodeGen/SPARC/LeonFixAllFDIVSQRTPassUT.ll b/llvm/test/CodeGen/SPARC/LeonFixAllFDIVSQRTPassUT.ll
new file mode 100755 (executable)
index 0000000..c79414d
--- /dev/null
@@ -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
+}
+