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 \
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:
10 ; CHECK-NEXT: cv.mac a2, a0, a1
11 ; CHECK-NEXT: mv a0, a2
13 %1 = call i32 @llvm.riscv.cv.mac.mac(i32 %a, i32 %b, i32 %c)
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:
22 ; CHECK-NEXT: cv.msu a2, a0, a1
23 ; CHECK-NEXT: mv a0, a2
25 %1 = call i32 @llvm.riscv.cv.mac.msu(i32 %a, i32 %b, i32 %c)
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:
34 ; CHECK-NEXT: cv.mulun a0, a0, a1, 5
36 %1 = call i32 @llvm.riscv.cv.mac.muluN(i32 %a, i32 %b, i32 5)
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:
45 ; CHECK-NEXT: cv.mulhhun a0, a0, a1, 5
47 %1 = call i32 @llvm.riscv.cv.mac.mulhhuN(i32 %a, i32 %b, i32 5)
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:
56 ; CHECK-NEXT: cv.mulsn a0, a0, a1, 5
58 %1 = call i32 @llvm.riscv.cv.mac.mulsN(i32 %a, i32 %b, i32 5)
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:
67 ; CHECK-NEXT: cv.mulhhsn a0, a0, a1, 5
69 %1 = call i32 @llvm.riscv.cv.mac.mulhhsN(i32 %a, i32 %b, i32 5)
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:
78 ; CHECK-NEXT: cv.mulurn a0, a0, a1, 5
80 %1 = call i32 @llvm.riscv.cv.mac.muluRN(i32 %a, i32 %b, i32 5)
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:
89 ; CHECK-NEXT: cv.mulhhurn a0, a0, a1, 5
91 %1 = call i32 @llvm.riscv.cv.mac.mulhhuRN(i32 %a, i32 %b, i32 5)
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:
100 ; CHECK-NEXT: cv.mulsrn a0, a0, a1, 5
102 %1 = call i32 @llvm.riscv.cv.mac.mulsRN(i32 %a, i32 %b, i32 5)
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:
111 ; CHECK-NEXT: cv.mulhhsrn a0, a0, a1, 5
113 %1 = call i32 @llvm.riscv.cv.mac.mulhhsRN(i32 %a, i32 %b, i32 5)
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:
122 ; CHECK-NEXT: cv.macun a2, a0, a1, 5
123 ; CHECK-NEXT: mv a0, a2
125 %1 = call i32 @llvm.riscv.cv.mac.macuN(i32 %a, i32 %b, i32 %c, i32 5)
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:
134 ; CHECK-NEXT: cv.machhun a2, a0, a1, 5
135 ; CHECK-NEXT: mv a0, a2
137 %1 = call i32 @llvm.riscv.cv.mac.machhuN(i32 %a, i32 %b, i32 %c, i32 5)
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:
146 ; CHECK-NEXT: cv.macsn a2, a0, a1, 5
147 ; CHECK-NEXT: mv a0, a2
149 %1 = call i32 @llvm.riscv.cv.mac.macsN(i32 %a, i32 %b, i32 %c, i32 5)
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:
158 ; CHECK-NEXT: cv.machhsn a2, a0, a1, 5
159 ; CHECK-NEXT: mv a0, a2
161 %1 = call i32 @llvm.riscv.cv.mac.machhsN(i32 %a, i32 %b, i32 %c, i32 5)
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:
170 ; CHECK-NEXT: cv.macurn a2, a0, a1, 5
171 ; CHECK-NEXT: mv a0, a2
173 %1 = call i32 @llvm.riscv.cv.mac.macuRN(i32 %a, i32 %b, i32 %c, i32 5)
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:
182 ; CHECK-NEXT: cv.machhurn a2, a0, a1, 5
183 ; CHECK-NEXT: mv a0, a2
185 %1 = call i32 @llvm.riscv.cv.mac.machhuRN(i32 %a, i32 %b, i32 %c, i32 5)
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:
194 ; CHECK-NEXT: cv.macsrn a2, a0, a1, 5
195 ; CHECK-NEXT: mv a0, a2
197 %1 = call i32 @llvm.riscv.cv.mac.macsRN(i32 %a, i32 %b, i32 %c, i32 5)
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:
206 ; CHECK-NEXT: cv.machhsrn a2, a0, a1, 5
207 ; CHECK-NEXT: mv a0, a2
209 %1 = call i32 @llvm.riscv.cv.mac.machhsRN(i32 %a, i32 %b, i32 %c, i32 5)