diff options
Diffstat (limited to 'test/CodeGen/PowerPC/fabs.ll')
-rw-r--r-- | test/CodeGen/PowerPC/fabs.ll | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/test/CodeGen/PowerPC/fabs.ll b/test/CodeGen/PowerPC/fabs.ll index 36aa23d035504..5a17c838f1b0b 100644 --- a/test/CodeGen/PowerPC/fabs.ll +++ b/test/CodeGen/PowerPC/fabs.ll @@ -1,7 +1,30 @@ -; RUN: llc < %s -mattr=-vsx -march=ppc32 -mtriple=powerpc-apple-darwin | grep "fabs f1, f1" +; RUN: llc < %s -mattr=-vsx -march=ppc32 -mtriple=powerpc-apple-darwin | FileCheck %s define double @fabs(double %f) { -entry: - %tmp2 = tail call double @fabs( double %f ) readnone ; <double> [#uses=1] - ret double %tmp2 +; CHECK-LABEL: fabs: +; CHECK: ; BB#0: +; CHECK-NEXT: fabs f1, f1 +; CHECK-NEXT: blr +; + %t = tail call double @fabs( double %f ) readnone + ret double %t } + +define float @bitcast_fabs(float %x) { +; CHECK-LABEL: bitcast_fabs: +; CHECK: ; BB#0: +; CHECK-NEXT: stfs f1, -8(r1) +; CHECK-NEXT: nop +; CHECK-NEXT: nop +; CHECK-NEXT: lwz r2, -8(r1) +; CHECK-NEXT: clrlwi r2, r2, 1 +; CHECK-NEXT: stw r2, -4(r1) +; CHECK-NEXT: lfs f1, -4(r1) +; CHECK-NEXT: blr +; + %bc1 = bitcast float %x to i32 + %and = and i32 %bc1, 2147483647 + %bc2 = bitcast i32 %and to float + ret float %bc2 +} + |