[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / xcvmac.ll
blob68efdf7210f7f53018f790a08025ed62cceb3a91
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+m -mattr=+xcvmac -verify-machineinstrs < %s \
3 ; RUN:   | FileCheck %s
5 declare i32 @llvm.riscv.cv.mac.mac(i32, i32, i32)
7 define i32 @test.mac(i32 %a, i32 %b, i32 %c) {
8 ; CHECK-LABEL: test.mac:
9 ; CHECK:       # %bb.0:
10 ; CHECK-NEXT:    cv.mac a2, a0, a1
11 ; CHECK-NEXT:    mv a0, a2
12 ; CHECK-NEXT:    ret
13   %1 = call i32 @llvm.riscv.cv.mac.mac(i32 %a, i32 %b, i32 %c)
14   ret i32 %1
17 declare i32 @llvm.riscv.cv.mac.msu(i32, i32, i32)
19 define i32 @test.msu(i32 %a, i32 %b, i32 %c) {
20 ; CHECK-LABEL: test.msu:
21 ; CHECK:       # %bb.0:
22 ; CHECK-NEXT:    cv.msu a2, a0, a1
23 ; CHECK-NEXT:    mv a0, a2
24 ; CHECK-NEXT:    ret
25   %1 = call i32 @llvm.riscv.cv.mac.msu(i32 %a, i32 %b, i32 %c)
26   ret i32 %1
29 declare i32 @llvm.riscv.cv.mac.muluN(i32, i32, i32)
31 define i32 @test.muluN(i32 %a, i32 %b) {
32 ; CHECK-LABEL: test.muluN:
33 ; CHECK:       # %bb.0:
34 ; CHECK-NEXT:    cv.mulun a0, a0, a1, 5
35 ; CHECK-NEXT:    ret
36   %1 = call i32 @llvm.riscv.cv.mac.muluN(i32 %a, i32 %b, i32 5)
37   ret i32 %1
40 declare i32 @llvm.riscv.cv.mac.mulhhuN(i32, i32, i32)
42 define i32 @test.mulhhuN(i32 %a, i32 %b) {
43 ; CHECK-LABEL: test.mulhhuN:
44 ; CHECK:       # %bb.0:
45 ; CHECK-NEXT:    cv.mulhhun a0, a0, a1, 5
46 ; CHECK-NEXT:    ret
47   %1 = call i32 @llvm.riscv.cv.mac.mulhhuN(i32 %a, i32 %b, i32 5)
48   ret i32 %1
51 declare i32 @llvm.riscv.cv.mac.mulsN(i32, i32, i32)
53 define i32 @test.mulsN(i32 %a, i32 %b) {
54 ; CHECK-LABEL: test.mulsN:
55 ; CHECK:       # %bb.0:
56 ; CHECK-NEXT:    cv.mulsn a0, a0, a1, 5
57 ; CHECK-NEXT:    ret
58   %1 = call i32 @llvm.riscv.cv.mac.mulsN(i32 %a, i32 %b, i32 5)
59   ret i32 %1
62 declare i32 @llvm.riscv.cv.mac.mulhhsN(i32, i32, i32)
64 define i32 @test.mulhhsN(i32 %a, i32 %b) {
65 ; CHECK-LABEL: test.mulhhsN:
66 ; CHECK:       # %bb.0:
67 ; CHECK-NEXT:    cv.mulhhsn a0, a0, a1, 5
68 ; CHECK-NEXT:    ret
69   %1 = call i32 @llvm.riscv.cv.mac.mulhhsN(i32 %a, i32 %b, i32 5)
70   ret i32 %1
73 declare i32 @llvm.riscv.cv.mac.muluRN(i32, i32, i32)
75 define i32 @test.muluRN(i32 %a, i32 %b) {
76 ; CHECK-LABEL: test.muluRN:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    cv.mulurn a0, a0, a1, 5
79 ; CHECK-NEXT:    ret
80   %1 = call i32 @llvm.riscv.cv.mac.muluRN(i32 %a, i32 %b, i32 5)
81   ret i32 %1
84 declare i32 @llvm.riscv.cv.mac.mulhhuRN(i32, i32, i32)
86 define i32 @test.mulhhuRN(i32 %a, i32 %b) {
87 ; CHECK-LABEL: test.mulhhuRN:
88 ; CHECK:       # %bb.0:
89 ; CHECK-NEXT:    cv.mulhhurn a0, a0, a1, 5
90 ; CHECK-NEXT:    ret
91   %1 = call i32 @llvm.riscv.cv.mac.mulhhuRN(i32 %a, i32 %b, i32 5)
92   ret i32 %1
95 declare i32 @llvm.riscv.cv.mac.mulsRN(i32, i32, i32)
97 define i32 @test.mulsRN(i32 %a, i32 %b) {
98 ; CHECK-LABEL: test.mulsRN:
99 ; CHECK:       # %bb.0:
100 ; CHECK-NEXT:    cv.mulsrn a0, a0, a1, 5
101 ; CHECK-NEXT:    ret
102   %1 = call i32 @llvm.riscv.cv.mac.mulsRN(i32 %a, i32 %b, i32 5)
103   ret i32 %1
106 declare i32 @llvm.riscv.cv.mac.mulhhsRN(i32, i32, i32)
108 define i32 @test.mulhhsRN(i32 %a, i32 %b) {
109 ; CHECK-LABEL: test.mulhhsRN:
110 ; CHECK:       # %bb.0:
111 ; CHECK-NEXT:    cv.mulhhsrn a0, a0, a1, 5
112 ; CHECK-NEXT:    ret
113   %1 = call i32 @llvm.riscv.cv.mac.mulhhsRN(i32 %a, i32 %b, i32 5)
114   ret i32 %1
117 declare i32 @llvm.riscv.cv.mac.macuN(i32, i32, i32, i32)
119 define i32 @test.macuN(i32 %a, i32 %b, i32 %c) {
120 ; CHECK-LABEL: test.macuN:
121 ; CHECK:       # %bb.0:
122 ; CHECK-NEXT:    cv.macun a2, a0, a1, 5
123 ; CHECK-NEXT:    mv a0, a2
124 ; CHECK-NEXT:    ret
125   %1 = call i32 @llvm.riscv.cv.mac.macuN(i32 %a, i32 %b, i32 %c, i32 5)
126   ret i32 %1
129 declare i32 @llvm.riscv.cv.mac.machhuN(i32, i32, i32, i32)
131 define i32 @test.machhuN(i32 %a, i32 %b, i32 %c) {
132 ; CHECK-LABEL: test.machhuN:
133 ; CHECK:       # %bb.0:
134 ; CHECK-NEXT:    cv.machhun a2, a0, a1, 5
135 ; CHECK-NEXT:    mv a0, a2
136 ; CHECK-NEXT:    ret
137   %1 = call i32 @llvm.riscv.cv.mac.machhuN(i32 %a, i32 %b, i32 %c, i32 5)
138   ret i32 %1
141 declare i32 @llvm.riscv.cv.mac.macsN(i32, i32, i32, i32)
143 define i32 @test.macsN(i32 %a, i32 %b, i32 %c) {
144 ; CHECK-LABEL: test.macsN:
145 ; CHECK:       # %bb.0:
146 ; CHECK-NEXT:    cv.macsn a2, a0, a1, 5
147 ; CHECK-NEXT:    mv a0, a2
148 ; CHECK-NEXT:    ret
149   %1 = call i32 @llvm.riscv.cv.mac.macsN(i32 %a, i32 %b, i32 %c, i32 5)
150   ret i32 %1
153 declare i32 @llvm.riscv.cv.mac.machhsN(i32, i32, i32, i32)
155 define i32 @test.machhsN(i32 %a, i32 %b, i32 %c) {
156 ; CHECK-LABEL: test.machhsN:
157 ; CHECK:       # %bb.0:
158 ; CHECK-NEXT:    cv.machhsn a2, a0, a1, 5
159 ; CHECK-NEXT:    mv a0, a2
160 ; CHECK-NEXT:    ret
161   %1 = call i32 @llvm.riscv.cv.mac.machhsN(i32 %a, i32 %b, i32 %c, i32 5)
162   ret i32 %1
165 declare i32 @llvm.riscv.cv.mac.macuRN(i32, i32, i32, i32)
167 define i32 @test.macuRN(i32 %a, i32 %b, i32 %c) {
168 ; CHECK-LABEL: test.macuRN:
169 ; CHECK:       # %bb.0:
170 ; CHECK-NEXT:    cv.macurn a2, a0, a1, 5
171 ; CHECK-NEXT:    mv a0, a2
172 ; CHECK-NEXT:    ret
173   %1 = call i32 @llvm.riscv.cv.mac.macuRN(i32 %a, i32 %b, i32 %c, i32 5)
174   ret i32 %1
177 declare i32 @llvm.riscv.cv.mac.machhuRN(i32, i32, i32, i32)
179 define i32 @test.machhuRN(i32 %a, i32 %b, i32 %c) {
180 ; CHECK-LABEL: test.machhuRN:
181 ; CHECK:       # %bb.0:
182 ; CHECK-NEXT:    cv.machhurn a2, a0, a1, 5
183 ; CHECK-NEXT:    mv a0, a2
184 ; CHECK-NEXT:    ret
185   %1 = call i32 @llvm.riscv.cv.mac.machhuRN(i32 %a, i32 %b, i32 %c, i32 5)
186   ret i32 %1
189 declare i32 @llvm.riscv.cv.mac.macsRN(i32, i32, i32, i32)
191 define i32 @test.macsRN(i32 %a, i32 %b, i32 %c) {
192 ; CHECK-LABEL: test.macsRN:
193 ; CHECK:       # %bb.0:
194 ; CHECK-NEXT:    cv.macsrn a2, a0, a1, 5
195 ; CHECK-NEXT:    mv a0, a2
196 ; CHECK-NEXT:    ret
197   %1 = call i32 @llvm.riscv.cv.mac.macsRN(i32 %a, i32 %b, i32 %c, i32 5)
198   ret i32 %1
201 declare i32 @llvm.riscv.cv.mac.machhsRN(i32, i32, i32, i32)
203 define i32 @test.machhsRN(i32 %a, i32 %b, i32 %c) {
204 ; CHECK-LABEL: test.machhsRN:
205 ; CHECK:       # %bb.0:
206 ; CHECK-NEXT:    cv.machhsrn a2, a0, a1, 5
207 ; CHECK-NEXT:    mv a0, a2
208 ; CHECK-NEXT:    ret
209   %1 = call i32 @llvm.riscv.cv.mac.machhsRN(i32 %a, i32 %b, i32 %c, i32 5)
210   ret i32 %1