From: Sanjay Patel Date: Tue, 20 Mar 2018 16:08:47 +0000 (+0000) Subject: [AArch64] add fabs tests for PR36600; NFC X-Git-Tag: android-x86-7.1-r4~3532 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=90166272c164d461d215ffcf1b15003b36f4271b;p=android-x86%2Fexternal-llvm.git [AArch64] add fabs tests for PR36600; NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327995 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/AArch64/fabs.ll b/test/CodeGen/AArch64/fabs.ll new file mode 100644 index 00000000000..0508fdd582c --- /dev/null +++ b/test/CodeGen/AArch64/fabs.ll @@ -0,0 +1,33 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=aarch64-unknown-unknown | FileCheck %s + +; FIXME: +; PR36600: https://bugs.llvm.org/show_bug.cgi?id=36600 +; This is not fabs. If X = -0.0, it should return -0.0 not 0.0. + +define double @not_fabs(double %x) #0 { +; CHECK-LABEL: not_fabs: +; CHECK: // %bb.0: +; CHECK-NEXT: fabs d0, d0 +; CHECK-NEXT: ret + %cmp = fcmp nnan ole double %x, 0.0 + %sub = fsub nnan double -0.0, %x + %cond = select i1 %cmp, double %sub, double %x + ret double %cond +} + +; Try again with different type, predicate, and compare constant. + +define float @still_not_fabs(float %x) #0 { +; CHECK-LABEL: still_not_fabs: +; CHECK: // %bb.0: +; CHECK-NEXT: fabs s0, s0 +; CHECK-NEXT: ret + %cmp = fcmp nnan oge float %x, -0.0 + %sub = fsub nnan float -0.0, %x + %cond = select i1 %cmp, float %x, float %sub + ret float %cond +} + +attributes #0 = { "no-nans-fp-math"="true" } +