1 ; Test the MSA ctcmsa and cfcmsa intrinsics (which are encoded with the ELM
4 ; RUN: llc -march=mips -mattr=+msa < %s | FileCheck %s
6 define i32 @msa_ir_cfcmsa_test() nounwind {
8 %0 = tail call i32 @llvm.mips.cfcmsa(i32 0)
12 ; CHECK: msa_ir_cfcmsa_test:
13 ; CHECK: cfcmsa $[[R1:[0-9]+]], $0
14 ; CHECK: .size msa_ir_cfcmsa_test
16 define i32 @msa_csr_cfcmsa_test() nounwind {
18 %0 = tail call i32 @llvm.mips.cfcmsa(i32 1)
22 ; CHECK: msa_csr_cfcmsa_test:
23 ; CHECK: cfcmsa $[[R1:[0-9]+]], $1
24 ; CHECK: .size msa_csr_cfcmsa_test
26 define i32 @msa_access_cfcmsa_test() nounwind {
28 %0 = tail call i32 @llvm.mips.cfcmsa(i32 2)
32 ; CHECK: msa_access_cfcmsa_test:
33 ; CHECK: cfcmsa $[[R1:[0-9]+]], $2
34 ; CHECK: .size msa_access_cfcmsa_test
36 define i32 @msa_save_cfcmsa_test() nounwind {
38 %0 = tail call i32 @llvm.mips.cfcmsa(i32 3)
42 ; CHECK: msa_save_cfcmsa_test:
43 ; CHECK: cfcmsa $[[R1:[0-9]+]], $3
44 ; CHECK: .size msa_save_cfcmsa_test
46 define i32 @msa_modify_cfcmsa_test() nounwind {
48 %0 = tail call i32 @llvm.mips.cfcmsa(i32 4)
52 ; CHECK: msa_modify_cfcmsa_test:
53 ; CHECK: cfcmsa $[[R1:[0-9]+]], $4
54 ; CHECK: .size msa_modify_cfcmsa_test
56 define i32 @msa_request_cfcmsa_test() nounwind {
58 %0 = tail call i32 @llvm.mips.cfcmsa(i32 5)
62 ; CHECK: msa_request_cfcmsa_test:
63 ; CHECK: cfcmsa $[[R1:[0-9]+]], $5
64 ; CHECK: .size msa_request_cfcmsa_test
66 define i32 @msa_map_cfcmsa_test() nounwind {
68 %0 = tail call i32 @llvm.mips.cfcmsa(i32 6)
72 ; CHECK: msa_map_cfcmsa_test:
73 ; CHECK: cfcmsa $[[R1:[0-9]+]], $6
74 ; CHECK: .size msa_map_cfcmsa_test
76 define i32 @msa_unmap_cfcmsa_test() nounwind {
78 %0 = tail call i32 @llvm.mips.cfcmsa(i32 7)
82 ; CHECK: msa_unmap_cfcmsa_test:
83 ; CHECK: cfcmsa $[[R1:[0-9]+]], $7
84 ; CHECK: .size msa_unmap_cfcmsa_test
86 define void @msa_ir_ctcmsa_test() nounwind {
88 tail call void @llvm.mips.ctcmsa(i32 0, i32 1)
92 ; CHECK: msa_ir_ctcmsa_test:
94 ; CHECK: .size msa_ir_ctcmsa_test
96 define void @msa_csr_ctcmsa_test() nounwind {
98 tail call void @llvm.mips.ctcmsa(i32 1, i32 1)
102 ; CHECK: msa_csr_ctcmsa_test:
104 ; CHECK: .size msa_csr_ctcmsa_test
106 define void @msa_access_ctcmsa_test() nounwind {
108 tail call void @llvm.mips.ctcmsa(i32 2, i32 1)
112 ; CHECK: msa_access_ctcmsa_test:
114 ; CHECK: .size msa_access_ctcmsa_test
116 define void @msa_save_ctcmsa_test() nounwind {
118 tail call void @llvm.mips.ctcmsa(i32 3, i32 1)
122 ; CHECK: msa_save_ctcmsa_test:
124 ; CHECK: .size msa_save_ctcmsa_test
126 define void @msa_modify_ctcmsa_test() nounwind {
128 tail call void @llvm.mips.ctcmsa(i32 4, i32 1)
132 ; CHECK: msa_modify_ctcmsa_test:
134 ; CHECK: .size msa_modify_ctcmsa_test
136 define void @msa_request_ctcmsa_test() nounwind {
138 tail call void @llvm.mips.ctcmsa(i32 5, i32 1)
142 ; CHECK: msa_request_ctcmsa_test:
144 ; CHECK: .size msa_request_ctcmsa_test
146 define void @msa_map_ctcmsa_test() nounwind {
148 tail call void @llvm.mips.ctcmsa(i32 6, i32 1)
152 ; CHECK: msa_map_ctcmsa_test:
154 ; CHECK: .size msa_map_ctcmsa_test
156 define void @msa_unmap_ctcmsa_test() nounwind {
158 tail call void @llvm.mips.ctcmsa(i32 7, i32 1)
162 ; CHECK: msa_unmap_ctcmsa_test:
164 ; CHECK: .size msa_unmap_ctcmsa_test
166 declare i32 @llvm.mips.cfcmsa(i32) nounwind
167 declare void @llvm.mips.ctcmsa(i32, i32) nounwind