1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvksh \ 3; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK 4; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvksh \ 5; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK 6 7declare <vscale x 8 x i32> @llvm.riscv.vsm3me.nxv8i32.nxv8i32( 8 <vscale x 8 x i32>, 9 <vscale x 8 x i32>, 10 <vscale x 8 x i32>, 11 iXLen) 12 13define <vscale x 8 x i32> @intrinsic_vsm3me_vv_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind { 14; CHECK-LABEL: intrinsic_vsm3me_vv_nxv8i32_nxv8i32: 15; CHECK: # %bb.0: # %entry 16; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 17; CHECK-NEXT: vsm3me.vv v8, v8, v12 18; CHECK-NEXT: ret 19entry: 20 %a = call <vscale x 8 x i32> @llvm.riscv.vsm3me.nxv8i32.nxv8i32( 21 <vscale x 8 x i32> undef, 22 <vscale x 8 x i32> %0, 23 <vscale x 8 x i32> %1, 24 iXLen %2) 25 26 ret <vscale x 8 x i32> %a 27} 28 29declare <vscale x 16 x i32> @llvm.riscv.vsm3me.nxv16i32.nxv16i32( 30 <vscale x 16 x i32>, 31 <vscale x 16 x i32>, 32 <vscale x 16 x i32>, 33 iXLen) 34 35define <vscale x 16 x i32> @intrinsic_vsm3me_vv_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind { 36; CHECK-LABEL: intrinsic_vsm3me_vv_nxv16i32_nxv16i32: 37; CHECK: # %bb.0: # %entry 38; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma 39; CHECK-NEXT: vsm3me.vv v8, v8, v16 40; CHECK-NEXT: ret 41entry: 42 %a = call <vscale x 16 x i32> @llvm.riscv.vsm3me.nxv16i32.nxv16i32( 43 <vscale x 16 x i32> undef, 44 <vscale x 16 x i32> %0, 45 <vscale x 16 x i32> %1, 46 iXLen %2) 47 48 ret <vscale x 16 x i32> %a 49} 50