1 ; Test the MSA ctcmsa and cfcmsa intrinsics (which are encoded with the ELM
4 ; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s
5 ; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s | FileCheck %s
7 define i32 @msa_ir_cfcmsa_test() nounwind {
9 %0 = tail call i32 @llvm.mips.cfcmsa(i32 0)
13 ; CHECK: msa_ir_cfcmsa_test:
14 ; CHECK: cfcmsa $[[R1:[0-9]+]], $0
15 ; CHECK: .size msa_ir_cfcmsa_test
17 define i32 @msa_csr_cfcmsa_test() nounwind {
19 %0 = tail call i32 @llvm.mips.cfcmsa(i32 1)
23 ; CHECK: msa_csr_cfcmsa_test:
24 ; CHECK: cfcmsa $[[R1:[0-9]+]], $1
25 ; CHECK: .size msa_csr_cfcmsa_test
27 define i32 @msa_access_cfcmsa_test() nounwind {
29 %0 = tail call i32 @llvm.mips.cfcmsa(i32 2)
33 ; CHECK: msa_access_cfcmsa_test:
34 ; CHECK: cfcmsa $[[R1:[0-9]+]], $2
35 ; CHECK: .size msa_access_cfcmsa_test
37 define i32 @msa_save_cfcmsa_test() nounwind {
39 %0 = tail call i32 @llvm.mips.cfcmsa(i32 3)
43 ; CHECK: msa_save_cfcmsa_test:
44 ; CHECK: cfcmsa $[[R1:[0-9]+]], $3
45 ; CHECK: .size msa_save_cfcmsa_test
47 define i32 @msa_modify_cfcmsa_test() nounwind {
49 %0 = tail call i32 @llvm.mips.cfcmsa(i32 4)
53 ; CHECK: msa_modify_cfcmsa_test:
54 ; CHECK: cfcmsa $[[R1:[0-9]+]], $4
55 ; CHECK: .size msa_modify_cfcmsa_test
57 define i32 @msa_request_cfcmsa_test() nounwind {
59 %0 = tail call i32 @llvm.mips.cfcmsa(i32 5)
63 ; CHECK: msa_request_cfcmsa_test:
64 ; CHECK: cfcmsa $[[R1:[0-9]+]], $5
65 ; CHECK: .size msa_request_cfcmsa_test
67 define i32 @msa_map_cfcmsa_test() nounwind {
69 %0 = tail call i32 @llvm.mips.cfcmsa(i32 6)
73 ; CHECK: msa_map_cfcmsa_test:
74 ; CHECK: cfcmsa $[[R1:[0-9]+]], $6
75 ; CHECK: .size msa_map_cfcmsa_test
77 define i32 @msa_unmap_cfcmsa_test() nounwind {
79 %0 = tail call i32 @llvm.mips.cfcmsa(i32 7)
83 ; CHECK: msa_unmap_cfcmsa_test:
84 ; CHECK: cfcmsa $[[R1:[0-9]+]], $7
85 ; CHECK: .size msa_unmap_cfcmsa_test
87 define void @msa_ir_ctcmsa_test() nounwind {
89 tail call void @llvm.mips.ctcmsa(i32 0, i32 1)
93 ; CHECK: msa_ir_ctcmsa_test:
95 ; CHECK: .size msa_ir_ctcmsa_test
97 define void @msa_csr_ctcmsa_test() nounwind {
99 tail call void @llvm.mips.ctcmsa(i32 1, i32 1)
103 ; CHECK: msa_csr_ctcmsa_test:
105 ; CHECK: .size msa_csr_ctcmsa_test
107 define void @msa_access_ctcmsa_test() nounwind {
109 tail call void @llvm.mips.ctcmsa(i32 2, i32 1)
113 ; CHECK: msa_access_ctcmsa_test:
115 ; CHECK: .size msa_access_ctcmsa_test
117 define void @msa_save_ctcmsa_test() nounwind {
119 tail call void @llvm.mips.ctcmsa(i32 3, i32 1)
123 ; CHECK: msa_save_ctcmsa_test:
125 ; CHECK: .size msa_save_ctcmsa_test
127 define void @msa_modify_ctcmsa_test() nounwind {
129 tail call void @llvm.mips.ctcmsa(i32 4, i32 1)
133 ; CHECK: msa_modify_ctcmsa_test:
135 ; CHECK: .size msa_modify_ctcmsa_test
137 define void @msa_request_ctcmsa_test() nounwind {
139 tail call void @llvm.mips.ctcmsa(i32 5, i32 1)
143 ; CHECK: msa_request_ctcmsa_test:
145 ; CHECK: .size msa_request_ctcmsa_test
147 define void @msa_map_ctcmsa_test() nounwind {
149 tail call void @llvm.mips.ctcmsa(i32 6, i32 1)
153 ; CHECK: msa_map_ctcmsa_test:
155 ; CHECK: .size msa_map_ctcmsa_test
157 define void @msa_unmap_ctcmsa_test() nounwind {
159 tail call void @llvm.mips.ctcmsa(i32 7, i32 1)
163 ; CHECK: msa_unmap_ctcmsa_test:
165 ; CHECK: .size msa_unmap_ctcmsa_test
167 declare i32 @llvm.mips.cfcmsa(i32) nounwind
168 declare void @llvm.mips.ctcmsa(i32, i32) nounwind