blob: b96499c1523599baddf0fbb9cec34638537c9316 [file] [log] [blame]
Daniel Sandersf9aa1d12013-08-28 10:26:24 +00001; Test the MSA ctcmsa and cfcmsa intrinsics (which are encoded with the ELM
2; instruction format).
3
Daniel Sandersd2a49ec2016-06-14 09:11:33 +00004; RUN: llc -march=mips -mattr=+msa,+fp64 -verify-machineinstrs < %s | FileCheck %s
5; RUN: llc -march=mipsel -mattr=+msa,+fp64 -verify-machineinstrs < %s | FileCheck %s
Daniel Sandersf9aa1d12013-08-28 10:26:24 +00006
7define i32 @msa_ir_cfcmsa_test() nounwind {
8entry:
9 %0 = tail call i32 @llvm.mips.cfcmsa(i32 0)
10 ret i32 %0
11}
12
13; CHECK: msa_ir_cfcmsa_test:
14; CHECK: cfcmsa $[[R1:[0-9]+]], $0
15; CHECK: .size msa_ir_cfcmsa_test
16;
17define i32 @msa_csr_cfcmsa_test() nounwind {
18entry:
19 %0 = tail call i32 @llvm.mips.cfcmsa(i32 1)
20 ret i32 %0
21}
22
23; CHECK: msa_csr_cfcmsa_test:
24; CHECK: cfcmsa $[[R1:[0-9]+]], $1
25; CHECK: .size msa_csr_cfcmsa_test
26;
27define i32 @msa_access_cfcmsa_test() nounwind {
28entry:
29 %0 = tail call i32 @llvm.mips.cfcmsa(i32 2)
30 ret i32 %0
31}
32
33; CHECK: msa_access_cfcmsa_test:
34; CHECK: cfcmsa $[[R1:[0-9]+]], $2
35; CHECK: .size msa_access_cfcmsa_test
36;
37define i32 @msa_save_cfcmsa_test() nounwind {
38entry:
39 %0 = tail call i32 @llvm.mips.cfcmsa(i32 3)
40 ret i32 %0
41}
42
43; CHECK: msa_save_cfcmsa_test:
44; CHECK: cfcmsa $[[R1:[0-9]+]], $3
45; CHECK: .size msa_save_cfcmsa_test
46;
47define i32 @msa_modify_cfcmsa_test() nounwind {
48entry:
49 %0 = tail call i32 @llvm.mips.cfcmsa(i32 4)
50 ret i32 %0
51}
52
53; CHECK: msa_modify_cfcmsa_test:
54; CHECK: cfcmsa $[[R1:[0-9]+]], $4
55; CHECK: .size msa_modify_cfcmsa_test
56;
57define i32 @msa_request_cfcmsa_test() nounwind {
58entry:
59 %0 = tail call i32 @llvm.mips.cfcmsa(i32 5)
60 ret i32 %0
61}
62
63; CHECK: msa_request_cfcmsa_test:
64; CHECK: cfcmsa $[[R1:[0-9]+]], $5
65; CHECK: .size msa_request_cfcmsa_test
66;
67define i32 @msa_map_cfcmsa_test() nounwind {
68entry:
69 %0 = tail call i32 @llvm.mips.cfcmsa(i32 6)
70 ret i32 %0
71}
72
73; CHECK: msa_map_cfcmsa_test:
74; CHECK: cfcmsa $[[R1:[0-9]+]], $6
75; CHECK: .size msa_map_cfcmsa_test
76;
77define i32 @msa_unmap_cfcmsa_test() nounwind {
78entry:
79 %0 = tail call i32 @llvm.mips.cfcmsa(i32 7)
80 ret i32 %0
81}
82
83; CHECK: msa_unmap_cfcmsa_test:
84; CHECK: cfcmsa $[[R1:[0-9]+]], $7
85; CHECK: .size msa_unmap_cfcmsa_test
86;
87define void @msa_ir_ctcmsa_test() nounwind {
88entry:
89 tail call void @llvm.mips.ctcmsa(i32 0, i32 1)
90 ret void
91}
92
93; CHECK: msa_ir_ctcmsa_test:
94; CHECK: ctcmsa $0
95; CHECK: .size msa_ir_ctcmsa_test
96;
97define void @msa_csr_ctcmsa_test() nounwind {
98entry:
99 tail call void @llvm.mips.ctcmsa(i32 1, i32 1)
100 ret void
101}
102
103; CHECK: msa_csr_ctcmsa_test:
104; CHECK: ctcmsa $1
105; CHECK: .size msa_csr_ctcmsa_test
106;
107define void @msa_access_ctcmsa_test() nounwind {
108entry:
109 tail call void @llvm.mips.ctcmsa(i32 2, i32 1)
110 ret void
111}
112
113; CHECK: msa_access_ctcmsa_test:
114; CHECK: ctcmsa $2
115; CHECK: .size msa_access_ctcmsa_test
116;
117define void @msa_save_ctcmsa_test() nounwind {
118entry:
119 tail call void @llvm.mips.ctcmsa(i32 3, i32 1)
120 ret void
121}
122
123; CHECK: msa_save_ctcmsa_test:
124; CHECK: ctcmsa $3
125; CHECK: .size msa_save_ctcmsa_test
126;
127define void @msa_modify_ctcmsa_test() nounwind {
128entry:
129 tail call void @llvm.mips.ctcmsa(i32 4, i32 1)
130 ret void
131}
132
133; CHECK: msa_modify_ctcmsa_test:
134; CHECK: ctcmsa $4
135; CHECK: .size msa_modify_ctcmsa_test
136;
137define void @msa_request_ctcmsa_test() nounwind {
138entry:
139 tail call void @llvm.mips.ctcmsa(i32 5, i32 1)
140 ret void
141}
142
143; CHECK: msa_request_ctcmsa_test:
144; CHECK: ctcmsa $5
145; CHECK: .size msa_request_ctcmsa_test
146;
147define void @msa_map_ctcmsa_test() nounwind {
148entry:
149 tail call void @llvm.mips.ctcmsa(i32 6, i32 1)
150 ret void
151}
152
153; CHECK: msa_map_ctcmsa_test:
154; CHECK: ctcmsa $6
155; CHECK: .size msa_map_ctcmsa_test
156;
157define void @msa_unmap_ctcmsa_test() nounwind {
158entry:
159 tail call void @llvm.mips.ctcmsa(i32 7, i32 1)
160 ret void
161}
162
163; CHECK: msa_unmap_ctcmsa_test:
164; CHECK: ctcmsa $7
165; CHECK: .size msa_unmap_ctcmsa_test
166;
167declare i32 @llvm.mips.cfcmsa(i32) nounwind
168declare void @llvm.mips.ctcmsa(i32, i32) nounwind