|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32 |
| 2 | +; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32,RV32NOM |
3 | 3 | ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,RV64NOM
|
4 | 4 |
|
5 |
| -; RUN: llc -mtriple=riscv32 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32 |
| 5 | +; RUN: llc -mtriple=riscv32 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32,RV32M |
6 | 6 | ; RUN: llc -mtriple=riscv64 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,RV64M
|
7 | 7 |
|
8 | 8 | define <vscale x 1 x i8> @vmul_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb) {
|
@@ -864,13 +864,44 @@ define <vscale x 8 x i64> @vmul_vi_nxv8i64_2(<vscale x 8 x i64> %va) {
|
864 | 864 | }
|
865 | 865 |
|
866 | 866 | define <vscale x 8 x i64> @vmul_xx_nxv8i64(i64 %a, i64 %b) nounwind {
|
| 867 | +; RV32NOM-LABEL: vmul_xx_nxv8i64: |
| 868 | +; RV32NOM: # %bb.0: |
| 869 | +; RV32NOM-NEXT: addi sp, sp, -16 |
| 870 | +; RV32NOM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill |
| 871 | +; RV32NOM-NEXT: call __muldi3 |
| 872 | +; RV32NOM-NEXT: sw a1, 4(sp) |
| 873 | +; RV32NOM-NEXT: sw a0, 0(sp) |
| 874 | +; RV32NOM-NEXT: mv a0, sp |
| 875 | +; RV32NOM-NEXT: vsetvli a1, zero, e64, m8, ta, ma |
| 876 | +; RV32NOM-NEXT: vlse64.v v8, (a0), zero |
| 877 | +; RV32NOM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload |
| 878 | +; RV32NOM-NEXT: addi sp, sp, 16 |
| 879 | +; RV32NOM-NEXT: ret |
| 880 | +; |
867 | 881 | ; RV64NOM-LABEL: vmul_xx_nxv8i64:
|
868 | 882 | ; RV64NOM: # %bb.0:
|
869 | 883 | ; RV64NOM-NEXT: vsetvli a2, zero, e64, m8, ta, ma
|
870 | 884 | ; RV64NOM-NEXT: vmv.v.x v8, a0
|
871 | 885 | ; RV64NOM-NEXT: vmul.vx v8, v8, a1
|
872 | 886 | ; RV64NOM-NEXT: ret
|
873 | 887 | ;
|
| 888 | +; RV32M-LABEL: vmul_xx_nxv8i64: |
| 889 | +; RV32M: # %bb.0: |
| 890 | +; RV32M-NEXT: addi sp, sp, -16 |
| 891 | +; RV32M-NEXT: mul a4, a0, a2 |
| 892 | +; RV32M-NEXT: sw a4, 8(sp) |
| 893 | +; RV32M-NEXT: mul a3, a0, a3 |
| 894 | +; RV32M-NEXT: mulhu a0, a0, a2 |
| 895 | +; RV32M-NEXT: add a0, a0, a3 |
| 896 | +; RV32M-NEXT: mul a1, a1, a2 |
| 897 | +; RV32M-NEXT: add a0, a0, a1 |
| 898 | +; RV32M-NEXT: sw a0, 12(sp) |
| 899 | +; RV32M-NEXT: addi a0, sp, 8 |
| 900 | +; RV32M-NEXT: vsetvli a1, zero, e64, m8, ta, ma |
| 901 | +; RV32M-NEXT: vlse64.v v8, (a0), zero |
| 902 | +; RV32M-NEXT: addi sp, sp, 16 |
| 903 | +; RV32M-NEXT: ret |
| 904 | +; |
874 | 905 | ; RV64M-LABEL: vmul_xx_nxv8i64:
|
875 | 906 | ; RV64M: # %bb.0:
|
876 | 907 | ; RV64M-NEXT: mul a0, a0, a1
|
|
0 commit comments