[llvm] r266603 - [ARM] AArch32 v8 NEON is still not IEEE-754 compliant
Renato Golin via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 18 05:06:53 PDT 2016
Author: rengolin
Date: Mon Apr 18 07:06:47 2016
New Revision: 266603
URL: http://llvm.org/viewvc/llvm-project?rev=266603&view=rev
Log:
[ARM] AArch32 v8 NEON is still not IEEE-754 compliant
Modified:
llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h
llvm/trunk/test/Transforms/LoopVectorize/ARM/arm-ieee-vectorize.ll
Modified: llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h?rev=266603&r1=266602&r2=266603&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h (original)
+++ llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h Mon Apr 18 07:06:47 2016
@@ -54,8 +54,11 @@ public:
bool enableInterleavedAccessVectorization() { return true; }
+ /// Floating-point computation using ARMv8 AArch32 Advanced
+ /// SIMD instructions remains unchanged from ARMv7. Only AArch64 SIMD
+ /// is IEEE-754 compliant, but it's not covered in this target.
bool isFPVectorizationPotentiallyUnsafe() {
- return !ST->hasFPARMv8() && !ST->isTargetDarwin();
+ return !ST->isTargetDarwin();
}
/// \name Scalar TTI Implementations
Modified: llvm/trunk/test/Transforms/LoopVectorize/ARM/arm-ieee-vectorize.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/ARM/arm-ieee-vectorize.ll?rev=266603&r1=266602&r2=266603&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/LoopVectorize/ARM/arm-ieee-vectorize.ll (original)
+++ llvm/trunk/test/Transforms/LoopVectorize/ARM/arm-ieee-vectorize.ll Mon Apr 18 07:06:47 2016
@@ -1,5 +1,5 @@
-; RUN: opt -mtriple armv7-linux-gnueabihf -loop-vectorize -S %s -debug-only=loop-vectorize -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=LINUX-V7
-; RUN: opt -mtriple armv8-linux-gnu -loop-vectorize -S %s -debug-only=loop-vectorize -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=LINUX-V8
+; RUN: opt -mtriple armv7-linux-gnueabihf -loop-vectorize -S %s -debug-only=loop-vectorize -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=LINUX
+; RUN: opt -mtriple armv8-linux-gnu -loop-vectorize -S %s -debug-only=loop-vectorize -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=LINUX
; RUN: opt -mtriple armv7-unknwon-darwin -loop-vectorize -S %s -debug-only=loop-vectorize -o /dev/null 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=DARWIN
; REQUIRES: asserts
@@ -42,10 +42,8 @@ for.end:
}
; Floating-point loops need fast-math to be vectorizeable
-; LINUX-V7: Checking a loop in "sumf"
-; LINUX-V7: Potentially unsafe FP op prevents vectorization
-; LINUX-V8: Checking a loop in "sumf"
-; LINUX-V8: We can vectorize this loop!
+; LINUX: Checking a loop in "sumf"
+; LINUX: Potentially unsafe FP op prevents vectorization
; DARWIN: Checking a loop in "sumf"
; DARWIN: We can vectorize this loop!
define void @sumf(float* noalias nocapture readonly %A, float* noalias nocapture readonly %B, float* noalias nocapture %C, i32 %N) {
@@ -110,10 +108,8 @@ for.end:
}
; Floating-point loops need fast-math to be vectorizeable
-; LINUX-V7: Checking a loop in "redf"
-; LINUX-V7: Potentially unsafe FP op prevents vectorization
-; LINUX-V8: Checking a loop in "redf"
-; LINUX-V8: We can vectorize this loop!
+; LINUX: Checking a loop in "redf"
+; LINUX: Potentially unsafe FP op prevents vectorization
; DARWIN: Checking a loop in "redf"
; DARWIN: We can vectorize this loop!
define float @redf(float* noalias nocapture readonly %a, float* noalias nocapture readonly %b, i32 %N) {
@@ -147,10 +143,8 @@ for.end:
}
; Make sure calls that turn into builtins are also covered
-; LINUX-V7: Checking a loop in "fabs"
-; LINUX-V7: Potentially unsafe FP op prevents vectorization
-; LINUX-V8: Checking a loop in "fabs"
-; LINUX-V8: We can vectorize this loop!
+; LINUX: Checking a loop in "fabs"
+; LINUX: Potentially unsafe FP op prevents vectorization
; DARWIN: Checking a loop in "fabs"
; DARWIN: We can vectorize this loop!
define void @fabs(float* noalias nocapture readonly %A, float* noalias nocapture readonly %B, float* noalias nocapture %C, i32 %N) {
More information about the llvm-commits
mailing list