llvm.org GIT mirror llvm / d30dbb6
[ARM] AArch32 v8 NEON is still not IEEE-754 compliant git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266603 91177308-0d34-0410-b5e6-96231b3b80d8 Renato Golin 4 years ago
2 changed file(s) with 12 addition(s) and 15 deletion(s). Raw diff Collapse all Expand all
5353
5454 bool enableInterleavedAccessVectorization() { return true; }
5555
56 /// Floating-point computation using ARMv8 AArch32 Advanced
57 /// SIMD instructions remains unchanged from ARMv7. Only AArch64 SIMD
58 /// is IEEE-754 compliant, but it's not covered in this target.
5659 bool isFPVectorizationPotentiallyUnsafe() {
57 return !ST->hasFPARMv8() && !ST->isTargetDarwin();
60 return !ST->isTargetDarwin();
5861 }
5962
6063 /// \name Scalar TTI Implementations
None ; 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
1 ; 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
0 ; 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
1 ; 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
22 ; 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
33 ; REQUIRES: asserts
44
4141 }
4242
4343 ; Floating-point loops need fast-math to be vectorizeable
44 ; LINUX-V7: Checking a loop in "sumf"
45 ; LINUX-V7: Potentially unsafe FP op prevents vectorization
46 ; LINUX-V8: Checking a loop in "sumf"
47 ; LINUX-V8: We can vectorize this loop!
44 ; LINUX: Checking a loop in "sumf"
45 ; LINUX: Potentially unsafe FP op prevents vectorization
4846 ; DARWIN: Checking a loop in "sumf"
4947 ; DARWIN: We can vectorize this loop!
5048 define void @sumf(float* noalias nocapture readonly %A, float* noalias nocapture readonly %B, float* noalias nocapture %C, i32 %N) {
109107 }
110108
111109 ; Floating-point loops need fast-math to be vectorizeable
112 ; LINUX-V7: Checking a loop in "redf"
113 ; LINUX-V7: Potentially unsafe FP op prevents vectorization
114 ; LINUX-V8: Checking a loop in "redf"
115 ; LINUX-V8: We can vectorize this loop!
110 ; LINUX: Checking a loop in "redf"
111 ; LINUX: Potentially unsafe FP op prevents vectorization
116112 ; DARWIN: Checking a loop in "redf"
117113 ; DARWIN: We can vectorize this loop!
118114 define float @redf(float* noalias nocapture readonly %a, float* noalias nocapture readonly %b, i32 %N) {
146142 }
147143
148144 ; Make sure calls that turn into builtins are also covered
149 ; LINUX-V7: Checking a loop in "fabs"
150 ; LINUX-V7: Potentially unsafe FP op prevents vectorization
151 ; LINUX-V8: Checking a loop in "fabs"
152 ; LINUX-V8: We can vectorize this loop!
145 ; LINUX: Checking a loop in "fabs"
146 ; LINUX: Potentially unsafe FP op prevents vectorization
153147 ; DARWIN: Checking a loop in "fabs"
154148 ; DARWIN: We can vectorize this loop!
155149 define void @fabs(float* noalias nocapture readonly %A, float* noalias nocapture readonly %B, float* noalias nocapture %C, i32 %N) {