diff options
author | Jim Grosbach <grosbach@apple.com> | 2012-09-21 00:18:20 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2012-09-21 00:18:20 +0000 |
commit | ced674e470bb949d0adce90d79563789439333a8 (patch) | |
tree | 2882d1ce74924c07a1228e276526e1f3b0d23857 /include/llvm/IntrinsicsARM.td | |
parent | e6e2d8cd90ceb5190aa646dc06584027f7d492d0 (diff) | |
download | llvm-ced674e470bb949d0adce90d79563789439333a8.tar.gz llvm-ced674e470bb949d0adce90d79563789439333a8.tar.bz2 llvm-ced674e470bb949d0adce90d79563789439333a8.tar.xz |
ARM: Use a dedicated intrinsic for vector bitwise select.
The expression based expansion too often results in IR level optimizations
splitting the intermediate values into separate basic blocks, preventing
the formation of the VBSL instruction as the code author intended. In
particular, LICM would often hoist part of the computation out of a loop.
rdar://11011471
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164340 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/IntrinsicsARM.td')
-rw-r--r-- | include/llvm/IntrinsicsARM.td | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/llvm/IntrinsicsARM.td b/include/llvm/IntrinsicsARM.td index 790fce6109..93b1ae1dc8 100644 --- a/include/llvm/IntrinsicsARM.td +++ b/include/llvm/IntrinsicsARM.td @@ -421,4 +421,9 @@ def int_arm_neon_vst4lane : Intrinsic<[], LLVMMatchType<0>, llvm_i32_ty, llvm_i32_ty], [IntrReadWriteArgMem]>; +// Vector bitwise select. +def int_arm_neon_vbsl : Intrinsic<[llvm_anyvector_ty], + [LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>], + [IntrNoMem]>; + } // end TargetPrefix |