summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2009-08-22 02:28:46 +0000
committerBob Wilson <bob.wilson@apple.com>2009-08-22 02:28:46 +0000
commitabd97fe1b122cbf4cad9cf0f04d1c27770205ffb (patch)
tree131c06e2b9e2bd193c5d7c8f8d2ca591b56b0ab0
parenta16e4b73809b4715543d490d636de4141abc142b (diff)
downloadbcm5719-llvm-abd97fe1b122cbf4cad9cf0f04d1c27770205ffb.tar.gz
bcm5719-llvm-abd97fe1b122cbf4cad9cf0f04d1c27770205ffb.zip
Add new intrinsics for Neon vldN_lane and vstN_lane operations.
llvm-svn: 79716
-rw-r--r--llvm/include/llvm/IntrinsicsARM.td32
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/include/llvm/IntrinsicsARM.td b/llvm/include/llvm/IntrinsicsARM.td
index e9dbb490b47..c408a2f374e 100644
--- a/llvm/include/llvm/IntrinsicsARM.td
+++ b/llvm/include/llvm/IntrinsicsARM.td
@@ -326,6 +326,23 @@ let TargetPrefix = "arm" in {
LLVMMatchType<0>, LLVMMatchType<0>],
[llvm_ptr_ty], [IntrReadArgMem]>;
+ // Vector load N-element structure to one lane.
+ def int_arm_neon_vld2lane : Intrinsic<[llvm_anyvector_ty, LLVMMatchType<0>],
+ [llvm_ptr_ty, LLVMMatchType<0>,
+ LLVMMatchType<0>, llvm_i32_ty],
+ [IntrReadArgMem]>;
+ def int_arm_neon_vld3lane : Intrinsic<[llvm_anyvector_ty, LLVMMatchType<0>,
+ LLVMMatchType<0>],
+ [llvm_ptr_ty, LLVMMatchType<0>,
+ LLVMMatchType<0>, LLVMMatchType<0>,
+ llvm_i32_ty], [IntrReadArgMem]>;
+ def int_arm_neon_vld4lane : Intrinsic<[llvm_anyvector_ty, LLVMMatchType<0>,
+ LLVMMatchType<0>, LLVMMatchType<0>],
+ [llvm_ptr_ty, LLVMMatchType<0>,
+ LLVMMatchType<0>, LLVMMatchType<0>,
+ LLVMMatchType<0>, llvm_i32_ty],
+ [IntrReadArgMem]>;
+
// Interleaving vector stores from N-element structures.
def int_arm_neon_vst1 : Intrinsic<[llvm_void_ty],
[llvm_ptr_ty, llvm_anyvector_ty],
@@ -341,4 +358,19 @@ let TargetPrefix = "arm" in {
[llvm_ptr_ty, llvm_anyvector_ty,
LLVMMatchType<0>, LLVMMatchType<0>,
LLVMMatchType<0>], [IntrWriteArgMem]>;
+
+ // Vector store N-element structure from one lane.
+ def int_arm_neon_vst2lane : Intrinsic<[llvm_void_ty],
+ [llvm_ptr_ty, llvm_anyvector_ty,
+ LLVMMatchType<0>, llvm_i32_ty],
+ [IntrWriteArgMem]>;
+ def int_arm_neon_vst3lane : Intrinsic<[llvm_void_ty],
+ [llvm_ptr_ty, llvm_anyvector_ty,
+ LLVMMatchType<0>, LLVMMatchType<0>,
+ llvm_i32_ty], [IntrWriteArgMem]>;
+ def int_arm_neon_vst4lane : Intrinsic<[llvm_void_ty],
+ [llvm_ptr_ty, llvm_anyvector_ty,
+ LLVMMatchType<0>, LLVMMatchType<0>,
+ LLVMMatchType<0>, llvm_i32_ty],
+ [IntrWriteArgMem]>;
}
OpenPOWER on IntegriCloud