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