]> granicus.if.org Git - llvm/commitdiff
[X86] Add fp128 test cases for ceil/floor/trunc/nearbyint/rint/round libcalls.
authorCraig Topper <craig.topper@intel.com>
Mon, 9 Sep 2019 02:44:46 +0000 (02:44 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 9 Sep 2019 02:44:46 +0000 (02:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371360 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGen/X86/fp128-libcalls.ll

index 046f9ee69365339bd688e246579162c40984bbdd..cd1ace26daae773e4d2dcb6fa9d2b5388714b327 100644 (file)
@@ -235,3 +235,92 @@ entry:
 }
 declare fp128 @llvm.cos.f128(fp128)
 
+define void @Test128Ceil(fp128 %d1) nounwind {
+; CHECK-LABEL: Test128Ceil:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    pushq %rax
+; CHECK-NEXT:    callq ceill
+; CHECK-NEXT:    movaps %xmm0, {{.*}}(%rip)
+; CHECK-NEXT:    popq %rax
+; CHECK-NEXT:    retq
+entry:
+  %sqrt = call fp128 @llvm.ceil.f128(fp128 %d1)
+  store fp128 %sqrt, fp128* @vf128, align 16
+  ret void
+}
+declare fp128 @llvm.ceil.f128(fp128)
+
+define void @Test128Floor(fp128 %d1) nounwind {
+; CHECK-LABEL: Test128Floor:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    pushq %rax
+; CHECK-NEXT:    callq floorl
+; CHECK-NEXT:    movaps %xmm0, {{.*}}(%rip)
+; CHECK-NEXT:    popq %rax
+; CHECK-NEXT:    retq
+entry:
+  %sqrt = call fp128 @llvm.floor.f128(fp128 %d1)
+  store fp128 %sqrt, fp128* @vf128, align 16
+  ret void
+}
+declare fp128 @llvm.floor.f128(fp128)
+
+define void @Test128Trunc(fp128 %d1) nounwind {
+; CHECK-LABEL: Test128Trunc:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    pushq %rax
+; CHECK-NEXT:    callq truncl
+; CHECK-NEXT:    movaps %xmm0, {{.*}}(%rip)
+; CHECK-NEXT:    popq %rax
+; CHECK-NEXT:    retq
+entry:
+  %sqrt = call fp128 @llvm.trunc.f128(fp128 %d1)
+  store fp128 %sqrt, fp128* @vf128, align 16
+  ret void
+}
+declare fp128 @llvm.trunc.f128(fp128)
+
+define void @Test128Nearbyint(fp128 %d1) nounwind {
+; CHECK-LABEL: Test128Nearbyint:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    pushq %rax
+; CHECK-NEXT:    callq nearbyintl
+; CHECK-NEXT:    movaps %xmm0, {{.*}}(%rip)
+; CHECK-NEXT:    popq %rax
+; CHECK-NEXT:    retq
+entry:
+  %sqrt = call fp128 @llvm.nearbyint.f128(fp128 %d1)
+  store fp128 %sqrt, fp128* @vf128, align 16
+  ret void
+}
+declare fp128 @llvm.nearbyint.f128(fp128)
+
+define void @Test128Rint(fp128 %d1) nounwind {
+; CHECK-LABEL: Test128Rint:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    pushq %rax
+; CHECK-NEXT:    callq rintl
+; CHECK-NEXT:    movaps %xmm0, {{.*}}(%rip)
+; CHECK-NEXT:    popq %rax
+; CHECK-NEXT:    retq
+entry:
+  %sqrt = call fp128 @llvm.rint.f128(fp128 %d1)
+  store fp128 %sqrt, fp128* @vf128, align 16
+  ret void
+}
+declare fp128 @llvm.rint.f128(fp128)
+
+define void @Test128Round(fp128 %d1) nounwind {
+; CHECK-LABEL: Test128Round:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    pushq %rax
+; CHECK-NEXT:    callq roundl
+; CHECK-NEXT:    movaps %xmm0, {{.*}}(%rip)
+; CHECK-NEXT:    popq %rax
+; CHECK-NEXT:    retq
+entry:
+  %sqrt = call fp128 @llvm.round.f128(fp128 %d1)
+  store fp128 %sqrt, fp128* @vf128, align 16
+  ret void
+}
+declare fp128 @llvm.round.f128(fp128)