176 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+m -mattr=+xcvmac -verify-machineinstrs < %s \3; RUN: | FileCheck %s4 5define i32 @test.mac(i32 %a, i32 %b, i32 %c) {6; CHECK-LABEL: test.mac:7; CHECK: # %bb.0:8; CHECK-NEXT: cv.mac a2, a0, a19; CHECK-NEXT: mv a0, a210; CHECK-NEXT: ret11 %1 = call i32 @llvm.riscv.cv.mac.mac(i32 %a, i32 %b, i32 %c)12 ret i32 %113}14 15define i32 @test.msu(i32 %a, i32 %b, i32 %c) {16; CHECK-LABEL: test.msu:17; CHECK: # %bb.0:18; CHECK-NEXT: cv.msu a2, a0, a119; CHECK-NEXT: mv a0, a220; CHECK-NEXT: ret21 %1 = call i32 @llvm.riscv.cv.mac.msu(i32 %a, i32 %b, i32 %c)22 ret i32 %123}24 25define i32 @test.muluN(i32 %a, i32 %b) {26; CHECK-LABEL: test.muluN:27; CHECK: # %bb.0:28; CHECK-NEXT: cv.mulun a0, a0, a1, 529; CHECK-NEXT: ret30 %1 = call i32 @llvm.riscv.cv.mac.muluN(i32 %a, i32 %b, i32 5)31 ret i32 %132}33 34define i32 @test.mulhhuN(i32 %a, i32 %b) {35; CHECK-LABEL: test.mulhhuN:36; CHECK: # %bb.0:37; CHECK-NEXT: cv.mulhhun a0, a0, a1, 538; CHECK-NEXT: ret39 %1 = call i32 @llvm.riscv.cv.mac.mulhhuN(i32 %a, i32 %b, i32 5)40 ret i32 %141}42 43define i32 @test.mulsN(i32 %a, i32 %b) {44; CHECK-LABEL: test.mulsN:45; CHECK: # %bb.0:46; CHECK-NEXT: cv.mulsn a0, a0, a1, 547; CHECK-NEXT: ret48 %1 = call i32 @llvm.riscv.cv.mac.mulsN(i32 %a, i32 %b, i32 5)49 ret i32 %150}51 52define i32 @test.mulhhsN(i32 %a, i32 %b) {53; CHECK-LABEL: test.mulhhsN:54; CHECK: # %bb.0:55; CHECK-NEXT: cv.mulhhsn a0, a0, a1, 556; CHECK-NEXT: ret57 %1 = call i32 @llvm.riscv.cv.mac.mulhhsN(i32 %a, i32 %b, i32 5)58 ret i32 %159}60 61define i32 @test.muluRN(i32 %a, i32 %b) {62; CHECK-LABEL: test.muluRN:63; CHECK: # %bb.0:64; CHECK-NEXT: cv.mulurn a0, a0, a1, 565; CHECK-NEXT: ret66 %1 = call i32 @llvm.riscv.cv.mac.muluRN(i32 %a, i32 %b, i32 5)67 ret i32 %168}69 70define i32 @test.mulhhuRN(i32 %a, i32 %b) {71; CHECK-LABEL: test.mulhhuRN:72; CHECK: # %bb.0:73; CHECK-NEXT: cv.mulhhurn a0, a0, a1, 574; CHECK-NEXT: ret75 %1 = call i32 @llvm.riscv.cv.mac.mulhhuRN(i32 %a, i32 %b, i32 5)76 ret i32 %177}78 79define i32 @test.mulsRN(i32 %a, i32 %b) {80; CHECK-LABEL: test.mulsRN:81; CHECK: # %bb.0:82; CHECK-NEXT: cv.mulsrn a0, a0, a1, 583; CHECK-NEXT: ret84 %1 = call i32 @llvm.riscv.cv.mac.mulsRN(i32 %a, i32 %b, i32 5)85 ret i32 %186}87 88define i32 @test.mulhhsRN(i32 %a, i32 %b) {89; CHECK-LABEL: test.mulhhsRN:90; CHECK: # %bb.0:91; CHECK-NEXT: cv.mulhhsrn a0, a0, a1, 592; CHECK-NEXT: ret93 %1 = call i32 @llvm.riscv.cv.mac.mulhhsRN(i32 %a, i32 %b, i32 5)94 ret i32 %195}96 97define i32 @test.macuN(i32 %a, i32 %b, i32 %c) {98; CHECK-LABEL: test.macuN:99; CHECK: # %bb.0:100; CHECK-NEXT: cv.macun a2, a0, a1, 5101; CHECK-NEXT: mv a0, a2102; CHECK-NEXT: ret103 %1 = call i32 @llvm.riscv.cv.mac.macuN(i32 %a, i32 %b, i32 %c, i32 5)104 ret i32 %1105}106 107define i32 @test.machhuN(i32 %a, i32 %b, i32 %c) {108; CHECK-LABEL: test.machhuN:109; CHECK: # %bb.0:110; CHECK-NEXT: cv.machhun a2, a0, a1, 5111; CHECK-NEXT: mv a0, a2112; CHECK-NEXT: ret113 %1 = call i32 @llvm.riscv.cv.mac.machhuN(i32 %a, i32 %b, i32 %c, i32 5)114 ret i32 %1115}116 117define i32 @test.macsN(i32 %a, i32 %b, i32 %c) {118; CHECK-LABEL: test.macsN:119; CHECK: # %bb.0:120; CHECK-NEXT: cv.macsn a2, a0, a1, 5121; CHECK-NEXT: mv a0, a2122; CHECK-NEXT: ret123 %1 = call i32 @llvm.riscv.cv.mac.macsN(i32 %a, i32 %b, i32 %c, i32 5)124 ret i32 %1125}126 127define i32 @test.machhsN(i32 %a, i32 %b, i32 %c) {128; CHECK-LABEL: test.machhsN:129; CHECK: # %bb.0:130; CHECK-NEXT: cv.machhsn a2, a0, a1, 5131; CHECK-NEXT: mv a0, a2132; CHECK-NEXT: ret133 %1 = call i32 @llvm.riscv.cv.mac.machhsN(i32 %a, i32 %b, i32 %c, i32 5)134 ret i32 %1135}136 137define i32 @test.macuRN(i32 %a, i32 %b, i32 %c) {138; CHECK-LABEL: test.macuRN:139; CHECK: # %bb.0:140; CHECK-NEXT: cv.macurn a2, a0, a1, 5141; CHECK-NEXT: mv a0, a2142; CHECK-NEXT: ret143 %1 = call i32 @llvm.riscv.cv.mac.macuRN(i32 %a, i32 %b, i32 %c, i32 5)144 ret i32 %1145}146 147define i32 @test.machhuRN(i32 %a, i32 %b, i32 %c) {148; CHECK-LABEL: test.machhuRN:149; CHECK: # %bb.0:150; CHECK-NEXT: cv.machhurn a2, a0, a1, 5151; CHECK-NEXT: mv a0, a2152; CHECK-NEXT: ret153 %1 = call i32 @llvm.riscv.cv.mac.machhuRN(i32 %a, i32 %b, i32 %c, i32 5)154 ret i32 %1155}156 157define i32 @test.macsRN(i32 %a, i32 %b, i32 %c) {158; CHECK-LABEL: test.macsRN:159; CHECK: # %bb.0:160; CHECK-NEXT: cv.macsrn a2, a0, a1, 5161; CHECK-NEXT: mv a0, a2162; CHECK-NEXT: ret163 %1 = call i32 @llvm.riscv.cv.mac.macsRN(i32 %a, i32 %b, i32 %c, i32 5)164 ret i32 %1165}166 167define i32 @test.machhsRN(i32 %a, i32 %b, i32 %c) {168; CHECK-LABEL: test.machhsRN:169; CHECK: # %bb.0:170; CHECK-NEXT: cv.machhsrn a2, a0, a1, 5171; CHECK-NEXT: mv a0, a2172; CHECK-NEXT: ret173 %1 = call i32 @llvm.riscv.cv.mac.machhsRN(i32 %a, i32 %b, i32 %c, i32 5)174 ret i32 %1175}176