diff options
author | Daniel Sanders <daniel.sanders@imgtec.com> | 2013-08-28 10:26:24 +0000 |
---|---|---|
committer | Daniel Sanders <daniel.sanders@imgtec.com> | 2013-08-28 10:26:24 +0000 |
commit | a6c3a4ee76ef8464d3c83472e15af521ade7eeb4 (patch) | |
tree | 6d7144112fadae9faaac8e994ad687bddc7a582d /test/CodeGen | |
parent | f00539cc5a5e66ce6b7ce3779b00fd381e2d2dee (diff) | |
download | external_llvm-a6c3a4ee76ef8464d3c83472e15af521ade7eeb4.zip external_llvm-a6c3a4ee76ef8464d3c83472e15af521ade7eeb4.tar.gz external_llvm-a6c3a4ee76ef8464d3c83472e15af521ade7eeb4.tar.bz2 |
[mips][msa] Added cfcmsa, and ctcmsa
The MSA control registers have been added as reserved registers,
and are only used via ISD::Copy(To|From)Reg. The intrinsics are lowered
into these nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189468 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/Mips/msa/elm_cxcmsa.ll | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/test/CodeGen/Mips/msa/elm_cxcmsa.ll b/test/CodeGen/Mips/msa/elm_cxcmsa.ll new file mode 100644 index 0000000..383c4ae --- /dev/null +++ b/test/CodeGen/Mips/msa/elm_cxcmsa.ll @@ -0,0 +1,167 @@ +; Test the MSA ctcmsa and cfcmsa intrinsics (which are encoded with the ELM +; instruction format). + +; RUN: llc -march=mips -mattr=+msa < %s | FileCheck %s + +define i32 @msa_ir_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 0) + ret i32 %0 +} + +; CHECK: msa_ir_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $0 +; CHECK: .size msa_ir_cfcmsa_test +; +define i32 @msa_csr_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 1) + ret i32 %0 +} + +; CHECK: msa_csr_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $1 +; CHECK: .size msa_csr_cfcmsa_test +; +define i32 @msa_access_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 2) + ret i32 %0 +} + +; CHECK: msa_access_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $2 +; CHECK: .size msa_access_cfcmsa_test +; +define i32 @msa_save_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 3) + ret i32 %0 +} + +; CHECK: msa_save_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $3 +; CHECK: .size msa_save_cfcmsa_test +; +define i32 @msa_modify_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 4) + ret i32 %0 +} + +; CHECK: msa_modify_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $4 +; CHECK: .size msa_modify_cfcmsa_test +; +define i32 @msa_request_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 5) + ret i32 %0 +} + +; CHECK: msa_request_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $5 +; CHECK: .size msa_request_cfcmsa_test +; +define i32 @msa_map_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 6) + ret i32 %0 +} + +; CHECK: msa_map_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $6 +; CHECK: .size msa_map_cfcmsa_test +; +define i32 @msa_unmap_cfcmsa_test() nounwind { +entry: + %0 = tail call i32 @llvm.mips.cfcmsa(i32 7) + ret i32 %0 +} + +; CHECK: msa_unmap_cfcmsa_test: +; CHECK: cfcmsa $[[R1:[0-9]+]], $7 +; CHECK: .size msa_unmap_cfcmsa_test +; +define void @msa_ir_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 0, i32 1) + ret void +} + +; CHECK: msa_ir_ctcmsa_test: +; CHECK: ctcmsa $0 +; CHECK: .size msa_ir_ctcmsa_test +; +define void @msa_csr_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 1, i32 1) + ret void +} + +; CHECK: msa_csr_ctcmsa_test: +; CHECK: ctcmsa $1 +; CHECK: .size msa_csr_ctcmsa_test +; +define void @msa_access_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 2, i32 1) + ret void +} + +; CHECK: msa_access_ctcmsa_test: +; CHECK: ctcmsa $2 +; CHECK: .size msa_access_ctcmsa_test +; +define void @msa_save_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 3, i32 1) + ret void +} + +; CHECK: msa_save_ctcmsa_test: +; CHECK: ctcmsa $3 +; CHECK: .size msa_save_ctcmsa_test +; +define void @msa_modify_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 4, i32 1) + ret void +} + +; CHECK: msa_modify_ctcmsa_test: +; CHECK: ctcmsa $4 +; CHECK: .size msa_modify_ctcmsa_test +; +define void @msa_request_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 5, i32 1) + ret void +} + +; CHECK: msa_request_ctcmsa_test: +; CHECK: ctcmsa $5 +; CHECK: .size msa_request_ctcmsa_test +; +define void @msa_map_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 6, i32 1) + ret void +} + +; CHECK: msa_map_ctcmsa_test: +; CHECK: ctcmsa $6 +; CHECK: .size msa_map_ctcmsa_test +; +define void @msa_unmap_ctcmsa_test() nounwind { +entry: + tail call void @llvm.mips.ctcmsa(i32 7, i32 1) + ret void +} + +; CHECK: msa_unmap_ctcmsa_test: +; CHECK: ctcmsa $7 +; CHECK: .size msa_unmap_ctcmsa_test +; +declare i32 @llvm.mips.cfcmsa(i32) nounwind +declare void @llvm.mips.ctcmsa(i32, i32) nounwind |